Skip to content

Commit ff9b85d

Browse files
ogerlitzSaeed Mahameed
authored andcommitted
net/mlx5e: Add some ethtool port control entries to the uplink rep netdev
Some of the ethtool entries to control the port should be supported by the uplink rep netdev in switchdev mode, add them. While here, add also the get/set coalesce entries for all reps. Signed-off-by: Or Gerlitz <[email protected]> Signed-off-by: Saeed Mahameed <[email protected]>
1 parent 371289b commit ff9b85d

File tree

1 file changed

+73
-2
lines changed
  • drivers/net/ethernet/mellanox/mlx5/core

1 file changed

+73
-2
lines changed

drivers/net/ethernet/mellanox/mlx5/core/en_rep.c

Lines changed: 73 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -292,6 +292,22 @@ static int mlx5e_rep_set_channels(struct net_device *dev,
292292
return 0;
293293
}
294294

295+
static int mlx5e_rep_get_coalesce(struct net_device *netdev,
296+
struct ethtool_coalesce *coal)
297+
{
298+
struct mlx5e_priv *priv = netdev_priv(netdev);
299+
300+
return mlx5e_ethtool_get_coalesce(priv, coal);
301+
}
302+
303+
static int mlx5e_rep_set_coalesce(struct net_device *netdev,
304+
struct ethtool_coalesce *coal)
305+
{
306+
struct mlx5e_priv *priv = netdev_priv(netdev);
307+
308+
return mlx5e_ethtool_set_coalesce(priv, coal);
309+
}
310+
295311
static u32 mlx5e_rep_get_rxfh_key_size(struct net_device *netdev)
296312
{
297313
struct mlx5e_priv *priv = netdev_priv(netdev);
@@ -306,7 +322,55 @@ static u32 mlx5e_rep_get_rxfh_indir_size(struct net_device *netdev)
306322
return mlx5e_ethtool_get_rxfh_indir_size(priv);
307323
}
308324

309-
static const struct ethtool_ops mlx5e_rep_ethtool_ops = {
325+
static void mlx5e_uplink_rep_get_pauseparam(struct net_device *netdev,
326+
struct ethtool_pauseparam *pauseparam)
327+
{
328+
struct mlx5e_priv *priv = netdev_priv(netdev);
329+
330+
mlx5e_ethtool_get_pauseparam(priv, pauseparam);
331+
}
332+
333+
static int mlx5e_uplink_rep_set_pauseparam(struct net_device *netdev,
334+
struct ethtool_pauseparam *pauseparam)
335+
{
336+
struct mlx5e_priv *priv = netdev_priv(netdev);
337+
338+
return mlx5e_ethtool_set_pauseparam(priv, pauseparam);
339+
}
340+
341+
static int mlx5e_uplink_rep_get_link_ksettings(struct net_device *netdev,
342+
struct ethtool_link_ksettings *link_ksettings)
343+
{
344+
struct mlx5e_priv *priv = netdev_priv(netdev);
345+
346+
return mlx5e_ethtool_get_link_ksettings(priv, link_ksettings);
347+
}
348+
349+
static int mlx5e_uplink_rep_set_link_ksettings(struct net_device *netdev,
350+
const struct ethtool_link_ksettings *link_ksettings)
351+
{
352+
struct mlx5e_priv *priv = netdev_priv(netdev);
353+
354+
return mlx5e_ethtool_set_link_ksettings(priv, link_ksettings);
355+
}
356+
357+
static const struct ethtool_ops mlx5e_vf_rep_ethtool_ops = {
358+
.get_drvinfo = mlx5e_rep_get_drvinfo,
359+
.get_link = ethtool_op_get_link,
360+
.get_strings = mlx5e_rep_get_strings,
361+
.get_sset_count = mlx5e_rep_get_sset_count,
362+
.get_ethtool_stats = mlx5e_rep_get_ethtool_stats,
363+
.get_ringparam = mlx5e_rep_get_ringparam,
364+
.set_ringparam = mlx5e_rep_set_ringparam,
365+
.get_channels = mlx5e_rep_get_channels,
366+
.set_channels = mlx5e_rep_set_channels,
367+
.get_coalesce = mlx5e_rep_get_coalesce,
368+
.set_coalesce = mlx5e_rep_set_coalesce,
369+
.get_rxfh_key_size = mlx5e_rep_get_rxfh_key_size,
370+
.get_rxfh_indir_size = mlx5e_rep_get_rxfh_indir_size,
371+
};
372+
373+
static const struct ethtool_ops mlx5e_uplink_rep_ethtool_ops = {
310374
.get_drvinfo = mlx5e_rep_get_drvinfo,
311375
.get_link = ethtool_op_get_link,
312376
.get_strings = mlx5e_rep_get_strings,
@@ -316,8 +380,14 @@ static const struct ethtool_ops mlx5e_rep_ethtool_ops = {
316380
.set_ringparam = mlx5e_rep_set_ringparam,
317381
.get_channels = mlx5e_rep_get_channels,
318382
.set_channels = mlx5e_rep_set_channels,
383+
.get_coalesce = mlx5e_rep_get_coalesce,
384+
.set_coalesce = mlx5e_rep_set_coalesce,
385+
.get_link_ksettings = mlx5e_uplink_rep_get_link_ksettings,
386+
.set_link_ksettings = mlx5e_uplink_rep_set_link_ksettings,
319387
.get_rxfh_key_size = mlx5e_rep_get_rxfh_key_size,
320388
.get_rxfh_indir_size = mlx5e_rep_get_rxfh_indir_size,
389+
.get_pauseparam = mlx5e_uplink_rep_get_pauseparam,
390+
.set_pauseparam = mlx5e_uplink_rep_set_pauseparam,
321391
};
322392

323393
static int mlx5e_attr_get(struct net_device *dev, struct switchdev_attr *attr)
@@ -1295,18 +1365,19 @@ static void mlx5e_build_rep_netdev(struct net_device *netdev)
12951365
netdev->netdev_ops = &mlx5e_netdev_ops_uplink_rep;
12961366
/* we want a persistent mac for the uplink rep */
12971367
mlx5_query_nic_vport_mac_address(mdev, 0, netdev->dev_addr);
1368+
netdev->ethtool_ops = &mlx5e_uplink_rep_ethtool_ops;
12981369
#ifdef CONFIG_MLX5_CORE_EN_DCB
12991370
if (MLX5_CAP_GEN(mdev, qos))
13001371
netdev->dcbnl_ops = &mlx5e_dcbnl_ops;
13011372
#endif
13021373
} else {
13031374
netdev->netdev_ops = &mlx5e_netdev_ops_vf_rep;
13041375
eth_hw_addr_random(netdev);
1376+
netdev->ethtool_ops = &mlx5e_vf_rep_ethtool_ops;
13051377
}
13061378

13071379
netdev->watchdog_timeo = 15 * HZ;
13081380

1309-
netdev->ethtool_ops = &mlx5e_rep_ethtool_ops;
13101381

13111382
netdev->switchdev_ops = &mlx5e_rep_switchdev_ops;
13121383

0 commit comments

Comments
 (0)