@@ -292,6 +292,22 @@ static int mlx5e_rep_set_channels(struct net_device *dev,
292
292
return 0 ;
293
293
}
294
294
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
+
295
311
static u32 mlx5e_rep_get_rxfh_key_size (struct net_device * netdev )
296
312
{
297
313
struct mlx5e_priv * priv = netdev_priv (netdev );
@@ -306,7 +322,55 @@ static u32 mlx5e_rep_get_rxfh_indir_size(struct net_device *netdev)
306
322
return mlx5e_ethtool_get_rxfh_indir_size (priv );
307
323
}
308
324
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 = {
310
374
.get_drvinfo = mlx5e_rep_get_drvinfo ,
311
375
.get_link = ethtool_op_get_link ,
312
376
.get_strings = mlx5e_rep_get_strings ,
@@ -316,8 +380,14 @@ static const struct ethtool_ops mlx5e_rep_ethtool_ops = {
316
380
.set_ringparam = mlx5e_rep_set_ringparam ,
317
381
.get_channels = mlx5e_rep_get_channels ,
318
382
.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 ,
319
387
.get_rxfh_key_size = mlx5e_rep_get_rxfh_key_size ,
320
388
.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 ,
321
391
};
322
392
323
393
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)
1295
1365
netdev -> netdev_ops = & mlx5e_netdev_ops_uplink_rep ;
1296
1366
/* we want a persistent mac for the uplink rep */
1297
1367
mlx5_query_nic_vport_mac_address (mdev , 0 , netdev -> dev_addr );
1368
+ netdev -> ethtool_ops = & mlx5e_uplink_rep_ethtool_ops ;
1298
1369
#ifdef CONFIG_MLX5_CORE_EN_DCB
1299
1370
if (MLX5_CAP_GEN (mdev , qos ))
1300
1371
netdev -> dcbnl_ops = & mlx5e_dcbnl_ops ;
1301
1372
#endif
1302
1373
} else {
1303
1374
netdev -> netdev_ops = & mlx5e_netdev_ops_vf_rep ;
1304
1375
eth_hw_addr_random (netdev );
1376
+ netdev -> ethtool_ops = & mlx5e_vf_rep_ethtool_ops ;
1305
1377
}
1306
1378
1307
1379
netdev -> watchdog_timeo = 15 * HZ ;
1308
1380
1309
- netdev -> ethtool_ops = & mlx5e_rep_ethtool_ops ;
1310
1381
1311
1382
netdev -> switchdev_ops = & mlx5e_rep_switchdev_ops ;
1312
1383
0 commit comments