Commit c4bf2450 authored by Florian Fainelli's avatar Florian Fainelli Committed by David S. Miller

liquidio: Implement ndo_get_port_parent_id()

Liquidio only supports SWITCHDEV_ATTR_ID_PORT_PARENT_ID, which makes it
a great candidate to be converted to use the ndo_get_port_parent_id()
NDO instead of implementing switchdev_port_attr_get().
Acked-by: default avatarJiri Pirko <jiri@mellanox.com>
Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 52d5254a
...@@ -21,7 +21,6 @@ ...@@ -21,7 +21,6 @@
#include <linux/firmware.h> #include <linux/firmware.h>
#include <net/vxlan.h> #include <net/vxlan.h>
#include <linux/kthread.h> #include <linux/kthread.h>
#include <net/switchdev.h>
#include "liquidio_common.h" #include "liquidio_common.h"
#include "octeon_droq.h" #include "octeon_droq.h"
#include "octeon_iq.h" #include "octeon_iq.h"
...@@ -3184,7 +3183,8 @@ static const struct devlink_ops liquidio_devlink_ops = { ...@@ -3184,7 +3183,8 @@ static const struct devlink_ops liquidio_devlink_ops = {
}; };
static int static int
lio_pf_switchdev_attr_get(struct net_device *dev, struct switchdev_attr *attr) liquidio_get_port_parent_id(struct net_device *dev,
struct netdev_phys_item_id *ppid)
{ {
struct lio *lio = GET_LIO(dev); struct lio *lio = GET_LIO(dev);
struct octeon_device *oct = lio->oct_dev; struct octeon_device *oct = lio->oct_dev;
...@@ -3192,24 +3192,12 @@ lio_pf_switchdev_attr_get(struct net_device *dev, struct switchdev_attr *attr) ...@@ -3192,24 +3192,12 @@ lio_pf_switchdev_attr_get(struct net_device *dev, struct switchdev_attr *attr)
if (oct->eswitch_mode != DEVLINK_ESWITCH_MODE_SWITCHDEV) if (oct->eswitch_mode != DEVLINK_ESWITCH_MODE_SWITCHDEV)
return -EOPNOTSUPP; return -EOPNOTSUPP;
switch (attr->id) { ppid->id_len = ETH_ALEN;
case SWITCHDEV_ATTR_ID_PORT_PARENT_ID: ether_addr_copy(ppid->id, (void *)&lio->linfo.hw_addr + 2);
attr->u.ppid.id_len = ETH_ALEN;
ether_addr_copy(attr->u.ppid.id,
(void *)&lio->linfo.hw_addr + 2);
break;
default:
return -EOPNOTSUPP;
}
return 0; return 0;
} }
static const struct switchdev_ops lio_pf_switchdev_ops = {
.switchdev_port_attr_get = lio_pf_switchdev_attr_get,
};
static int liquidio_get_vf_stats(struct net_device *netdev, int vfidx, static int liquidio_get_vf_stats(struct net_device *netdev, int vfidx,
struct ifla_vf_stats *vf_stats) struct ifla_vf_stats *vf_stats)
{ {
...@@ -3259,6 +3247,7 @@ static const struct net_device_ops lionetdevops = { ...@@ -3259,6 +3247,7 @@ static const struct net_device_ops lionetdevops = {
.ndo_set_vf_trust = liquidio_set_vf_trust, .ndo_set_vf_trust = liquidio_set_vf_trust,
.ndo_set_vf_link_state = liquidio_set_vf_link_state, .ndo_set_vf_link_state = liquidio_set_vf_link_state,
.ndo_get_vf_stats = liquidio_get_vf_stats, .ndo_get_vf_stats = liquidio_get_vf_stats,
.ndo_get_port_parent_id = liquidio_get_port_parent_id,
}; };
/** \brief Entry point for the liquidio module /** \brief Entry point for the liquidio module
...@@ -3534,7 +3523,6 @@ static int setup_nic_devices(struct octeon_device *octeon_dev) ...@@ -3534,7 +3523,6 @@ static int setup_nic_devices(struct octeon_device *octeon_dev)
* netdev tasks. * netdev tasks.
*/ */
netdev->netdev_ops = &lionetdevops; netdev->netdev_ops = &lionetdevops;
SWITCHDEV_SET_OPS(netdev, &lio_pf_switchdev_ops);
retval = netif_set_real_num_rx_queues(netdev, num_oqueues); retval = netif_set_real_num_rx_queues(netdev, num_oqueues);
if (retval) { if (retval) {
......
...@@ -25,7 +25,6 @@ ...@@ -25,7 +25,6 @@
#include "octeon_nic.h" #include "octeon_nic.h"
#include "octeon_main.h" #include "octeon_main.h"
#include "octeon_network.h" #include "octeon_network.h"
#include <net/switchdev.h>
#include "lio_vf_rep.h" #include "lio_vf_rep.h"
static int lio_vf_rep_open(struct net_device *ndev); static int lio_vf_rep_open(struct net_device *ndev);
...@@ -38,6 +37,8 @@ static int lio_vf_rep_phys_port_name(struct net_device *dev, ...@@ -38,6 +37,8 @@ static int lio_vf_rep_phys_port_name(struct net_device *dev,
static void lio_vf_rep_get_stats64(struct net_device *dev, static void lio_vf_rep_get_stats64(struct net_device *dev,
struct rtnl_link_stats64 *stats64); struct rtnl_link_stats64 *stats64);
static int lio_vf_rep_change_mtu(struct net_device *ndev, int new_mtu); static int lio_vf_rep_change_mtu(struct net_device *ndev, int new_mtu);
static int lio_vf_get_port_parent_id(struct net_device *dev,
struct netdev_phys_item_id *ppid);
static const struct net_device_ops lio_vf_rep_ndev_ops = { static const struct net_device_ops lio_vf_rep_ndev_ops = {
.ndo_open = lio_vf_rep_open, .ndo_open = lio_vf_rep_open,
...@@ -47,6 +48,7 @@ static const struct net_device_ops lio_vf_rep_ndev_ops = { ...@@ -47,6 +48,7 @@ static const struct net_device_ops lio_vf_rep_ndev_ops = {
.ndo_get_phys_port_name = lio_vf_rep_phys_port_name, .ndo_get_phys_port_name = lio_vf_rep_phys_port_name,
.ndo_get_stats64 = lio_vf_rep_get_stats64, .ndo_get_stats64 = lio_vf_rep_get_stats64,
.ndo_change_mtu = lio_vf_rep_change_mtu, .ndo_change_mtu = lio_vf_rep_change_mtu,
.ndo_get_port_parent_id = lio_vf_get_port_parent_id,
}; };
static int static int
...@@ -443,31 +445,19 @@ lio_vf_rep_pkt_xmit(struct sk_buff *skb, struct net_device *ndev) ...@@ -443,31 +445,19 @@ lio_vf_rep_pkt_xmit(struct sk_buff *skb, struct net_device *ndev)
return NETDEV_TX_OK; return NETDEV_TX_OK;
} }
static int static int lio_vf_get_port_parent_id(struct net_device *dev,
lio_vf_rep_attr_get(struct net_device *dev, struct switchdev_attr *attr) struct netdev_phys_item_id *ppid)
{ {
struct lio_vf_rep_desc *vf_rep = netdev_priv(dev); struct lio_vf_rep_desc *vf_rep = netdev_priv(dev);
struct net_device *parent_ndev = vf_rep->parent_ndev; struct net_device *parent_ndev = vf_rep->parent_ndev;
struct lio *lio = GET_LIO(parent_ndev); struct lio *lio = GET_LIO(parent_ndev);
switch (attr->id) { ppid->id_len = ETH_ALEN;
case SWITCHDEV_ATTR_ID_PORT_PARENT_ID: ether_addr_copy(ppid->id, (void *)&lio->linfo.hw_addr + 2);
attr->u.ppid.id_len = ETH_ALEN;
ether_addr_copy(attr->u.ppid.id,
(void *)&lio->linfo.hw_addr + 2);
break;
default:
return -EOPNOTSUPP;
}
return 0; return 0;
} }
static const struct switchdev_ops lio_vf_rep_switchdev_ops = {
.switchdev_port_attr_get = lio_vf_rep_attr_get,
};
static void static void
lio_vf_rep_fetch_stats(struct work_struct *work) lio_vf_rep_fetch_stats(struct work_struct *work)
{ {
...@@ -524,7 +514,6 @@ lio_vf_rep_create(struct octeon_device *oct) ...@@ -524,7 +514,6 @@ lio_vf_rep_create(struct octeon_device *oct)
ndev->min_mtu = LIO_MIN_MTU_SIZE; ndev->min_mtu = LIO_MIN_MTU_SIZE;
ndev->max_mtu = LIO_MAX_MTU_SIZE; ndev->max_mtu = LIO_MAX_MTU_SIZE;
ndev->netdev_ops = &lio_vf_rep_ndev_ops; ndev->netdev_ops = &lio_vf_rep_ndev_ops;
SWITCHDEV_SET_OPS(ndev, &lio_vf_rep_switchdev_ops);
vf_rep = netdev_priv(ndev); vf_rep = netdev_priv(ndev);
memset(vf_rep, 0, sizeof(*vf_rep)); memset(vf_rep, 0, sizeof(*vf_rep));
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment