net/mlx5e: Use nic mode netdev ndos and ethtool ops for uplink representor
Remove dedicated uplink rep netdev ndos and ethtools ops. We will re-use the native NIC port net device instance and ethtool ops for the Uplink representor. Signed-off-by: Roi Dayan <roid@nvidia.com> Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
This commit is contained in:
parent
ee5260307c
commit
c97a2c0691
|
@ -69,16 +69,6 @@ static void mlx5e_rep_get_drvinfo(struct net_device *dev,
|
|||
fw_rev_sub(mdev), mdev->board_id);
|
||||
}
|
||||
|
||||
static void mlx5e_uplink_rep_get_drvinfo(struct net_device *dev,
|
||||
struct ethtool_drvinfo *drvinfo)
|
||||
{
|
||||
struct mlx5e_priv *priv = netdev_priv(dev);
|
||||
|
||||
mlx5e_rep_get_drvinfo(dev, drvinfo);
|
||||
strlcpy(drvinfo->bus_info, pci_name(priv->mdev->pdev),
|
||||
sizeof(drvinfo->bus_info));
|
||||
}
|
||||
|
||||
static const struct counter_desc sw_rep_stats_desc[] = {
|
||||
{ MLX5E_DECLARE_STAT(struct mlx5e_sw_stats, rx_packets) },
|
||||
{ MLX5E_DECLARE_STAT(struct mlx5e_sw_stats, rx_bytes) },
|
||||
|
@ -285,46 +275,6 @@ static u32 mlx5e_rep_get_rxfh_indir_size(struct net_device *netdev)
|
|||
return mlx5e_ethtool_get_rxfh_indir_size(priv);
|
||||
}
|
||||
|
||||
static void mlx5e_uplink_rep_get_pause_stats(struct net_device *netdev,
|
||||
struct ethtool_pause_stats *stats)
|
||||
{
|
||||
struct mlx5e_priv *priv = netdev_priv(netdev);
|
||||
|
||||
mlx5e_stats_pause_get(priv, stats);
|
||||
}
|
||||
|
||||
static void mlx5e_uplink_rep_get_pauseparam(struct net_device *netdev,
|
||||
struct ethtool_pauseparam *pauseparam)
|
||||
{
|
||||
struct mlx5e_priv *priv = netdev_priv(netdev);
|
||||
|
||||
mlx5e_ethtool_get_pauseparam(priv, pauseparam);
|
||||
}
|
||||
|
||||
static int mlx5e_uplink_rep_set_pauseparam(struct net_device *netdev,
|
||||
struct ethtool_pauseparam *pauseparam)
|
||||
{
|
||||
struct mlx5e_priv *priv = netdev_priv(netdev);
|
||||
|
||||
return mlx5e_ethtool_set_pauseparam(priv, pauseparam);
|
||||
}
|
||||
|
||||
static int mlx5e_uplink_rep_get_link_ksettings(struct net_device *netdev,
|
||||
struct ethtool_link_ksettings *link_ksettings)
|
||||
{
|
||||
struct mlx5e_priv *priv = netdev_priv(netdev);
|
||||
|
||||
return mlx5e_ethtool_get_link_ksettings(priv, link_ksettings);
|
||||
}
|
||||
|
||||
static int mlx5e_uplink_rep_set_link_ksettings(struct net_device *netdev,
|
||||
const struct ethtool_link_ksettings *link_ksettings)
|
||||
{
|
||||
struct mlx5e_priv *priv = netdev_priv(netdev);
|
||||
|
||||
return mlx5e_ethtool_set_link_ksettings(priv, link_ksettings);
|
||||
}
|
||||
|
||||
static const struct ethtool_ops mlx5e_rep_ethtool_ops = {
|
||||
.supported_coalesce_params = ETHTOOL_COALESCE_USECS |
|
||||
ETHTOOL_COALESCE_MAX_FRAMES |
|
||||
|
@ -344,34 +294,6 @@ static const struct ethtool_ops mlx5e_rep_ethtool_ops = {
|
|||
.get_rxfh_indir_size = mlx5e_rep_get_rxfh_indir_size,
|
||||
};
|
||||
|
||||
static const struct ethtool_ops mlx5e_uplink_rep_ethtool_ops = {
|
||||
.supported_coalesce_params = ETHTOOL_COALESCE_USECS |
|
||||
ETHTOOL_COALESCE_MAX_FRAMES |
|
||||
ETHTOOL_COALESCE_USE_ADAPTIVE,
|
||||
.get_drvinfo = mlx5e_uplink_rep_get_drvinfo,
|
||||
.get_link = ethtool_op_get_link,
|
||||
.get_strings = mlx5e_rep_get_strings,
|
||||
.get_sset_count = mlx5e_rep_get_sset_count,
|
||||
.get_ethtool_stats = mlx5e_rep_get_ethtool_stats,
|
||||
.get_ringparam = mlx5e_rep_get_ringparam,
|
||||
.set_ringparam = mlx5e_rep_set_ringparam,
|
||||
.get_channels = mlx5e_rep_get_channels,
|
||||
.set_channels = mlx5e_rep_set_channels,
|
||||
.get_coalesce = mlx5e_rep_get_coalesce,
|
||||
.set_coalesce = mlx5e_rep_set_coalesce,
|
||||
.get_link_ksettings = mlx5e_uplink_rep_get_link_ksettings,
|
||||
.set_link_ksettings = mlx5e_uplink_rep_set_link_ksettings,
|
||||
.get_rxfh_key_size = mlx5e_rep_get_rxfh_key_size,
|
||||
.get_rxfh_indir_size = mlx5e_rep_get_rxfh_indir_size,
|
||||
.get_rxfh = mlx5e_get_rxfh,
|
||||
.set_rxfh = mlx5e_set_rxfh,
|
||||
.get_rxnfc = mlx5e_get_rxnfc,
|
||||
.set_rxnfc = mlx5e_set_rxnfc,
|
||||
.get_pause_stats = mlx5e_uplink_rep_get_pause_stats,
|
||||
.get_pauseparam = mlx5e_uplink_rep_get_pauseparam,
|
||||
.set_pauseparam = mlx5e_uplink_rep_set_pauseparam,
|
||||
};
|
||||
|
||||
static void mlx5e_sqs2vport_stop(struct mlx5_eswitch *esw,
|
||||
struct mlx5_eswitch_rep *rep)
|
||||
{
|
||||
|
@ -568,34 +490,6 @@ static int mlx5e_rep_change_mtu(struct net_device *netdev, int new_mtu)
|
|||
return mlx5e_change_mtu(netdev, new_mtu, NULL);
|
||||
}
|
||||
|
||||
static int mlx5e_uplink_rep_change_mtu(struct net_device *netdev, int new_mtu)
|
||||
{
|
||||
return mlx5e_change_mtu(netdev, new_mtu, mlx5e_set_dev_port_mtu_ctx);
|
||||
}
|
||||
|
||||
static int mlx5e_uplink_rep_set_mac(struct net_device *netdev, void *addr)
|
||||
{
|
||||
struct sockaddr *saddr = addr;
|
||||
|
||||
if (!is_valid_ether_addr(saddr->sa_data))
|
||||
return -EADDRNOTAVAIL;
|
||||
|
||||
ether_addr_copy(netdev->dev_addr, saddr->sa_data);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int mlx5e_uplink_rep_set_vf_vlan(struct net_device *dev, int vf, u16 vlan, u8 qos,
|
||||
__be16 vlan_proto)
|
||||
{
|
||||
netdev_warn_once(dev, "legacy vf vlan setting isn't supported in switchdev mode\n");
|
||||
|
||||
if (vlan != 0)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
/* allow setting 0-vid for compatibility with libvirt */
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct devlink_port *mlx5e_rep_get_devlink_port(struct net_device *netdev)
|
||||
{
|
||||
struct mlx5e_priv *priv = netdev_priv(netdev);
|
||||
|
@ -641,29 +535,10 @@ static const struct net_device_ops mlx5e_netdev_ops_rep = {
|
|||
.ndo_change_carrier = mlx5e_rep_change_carrier,
|
||||
};
|
||||
|
||||
static const struct net_device_ops mlx5e_netdev_ops_uplink_rep = {
|
||||
.ndo_open = mlx5e_open,
|
||||
.ndo_stop = mlx5e_close,
|
||||
.ndo_start_xmit = mlx5e_xmit,
|
||||
.ndo_set_mac_address = mlx5e_uplink_rep_set_mac,
|
||||
.ndo_setup_tc = mlx5e_rep_setup_tc,
|
||||
.ndo_get_devlink_port = mlx5e_rep_get_devlink_port,
|
||||
.ndo_get_stats64 = mlx5e_get_stats,
|
||||
.ndo_has_offload_stats = mlx5e_rep_has_offload_stats,
|
||||
.ndo_get_offload_stats = mlx5e_rep_get_offload_stats,
|
||||
.ndo_change_mtu = mlx5e_uplink_rep_change_mtu,
|
||||
.ndo_features_check = mlx5e_features_check,
|
||||
.ndo_set_vf_mac = mlx5e_set_vf_mac,
|
||||
.ndo_set_vf_rate = mlx5e_set_vf_rate,
|
||||
.ndo_get_vf_config = mlx5e_get_vf_config,
|
||||
.ndo_get_vf_stats = mlx5e_get_vf_stats,
|
||||
.ndo_set_vf_vlan = mlx5e_uplink_rep_set_vf_vlan,
|
||||
.ndo_set_features = mlx5e_set_features,
|
||||
};
|
||||
|
||||
bool mlx5e_eswitch_uplink_rep(struct net_device *netdev)
|
||||
{
|
||||
return netdev->netdev_ops == &mlx5e_netdev_ops_uplink_rep;
|
||||
return netdev->netdev_ops == &mlx5e_netdev_ops &&
|
||||
mlx5e_is_uplink_rep(netdev_priv(netdev));
|
||||
}
|
||||
|
||||
bool mlx5e_eswitch_vf_rep(struct net_device *netdev)
|
||||
|
@ -718,10 +593,10 @@ static void mlx5e_build_rep_netdev(struct net_device *netdev,
|
|||
{
|
||||
SET_NETDEV_DEV(netdev, mdev->device);
|
||||
if (rep->vport == MLX5_VPORT_UPLINK) {
|
||||
netdev->netdev_ops = &mlx5e_netdev_ops_uplink_rep;
|
||||
netdev->netdev_ops = &mlx5e_netdev_ops;
|
||||
/* we want a persistent mac for the uplink rep */
|
||||
mlx5_query_mac_address(mdev, netdev->dev_addr);
|
||||
netdev->ethtool_ops = &mlx5e_uplink_rep_ethtool_ops;
|
||||
netdev->ethtool_ops = &mlx5e_ethtool_ops;
|
||||
mlx5e_dcbnl_build_rep_netdev(netdev);
|
||||
} else {
|
||||
netdev->netdev_ops = &mlx5e_netdev_ops_rep;
|
||||
|
|
Loading…
Reference in New Issue