Skip to content

Commit c27971d

Browse files
roidayanSaeed Mahameed
authored andcommitted
net/mlx5: Move devlink port from mlx5e priv to mlx5e resources
We re-use the native NIC port net device instance for the Uplink representor, and the devlink port. When changing profiles we reset the mlx5e priv but we should still use the devlink port so move it to mlx5e resources. Signed-off-by: Roi Dayan <[email protected]> Signed-off-by: Saeed Mahameed <[email protected]>
1 parent c276aae commit c27971d

File tree

7 files changed

+29
-9
lines changed

7 files changed

+29
-9
lines changed

drivers/net/ethernet/mellanox/mlx5/core/en.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -880,7 +880,6 @@ struct mlx5e_priv {
880880
#endif
881881
struct devlink_health_reporter *tx_reporter;
882882
struct devlink_health_reporter *rx_reporter;
883-
struct devlink_port dl_port;
884883
struct mlx5e_xsk xsk;
885884
#if IS_ENABLED(CONFIG_PCI_HYPERV_INTERFACE)
886885
struct mlx5e_hv_vhca_stats_agent stats_agent;

drivers/net/ethernet/mellanox/mlx5/core/en/devlink.c

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ int mlx5e_devlink_port_register(struct mlx5e_priv *priv)
1919
struct devlink *devlink = priv_to_devlink(priv->mdev);
2020
struct devlink_port_attrs attrs = {};
2121
struct netdev_phys_item_id ppid = {};
22+
struct devlink_port *dl_port;
2223
unsigned int dl_port_index;
2324

2425
if (mlx5_core_is_pf(priv->mdev)) {
@@ -36,24 +37,30 @@ int mlx5e_devlink_port_register(struct mlx5e_priv *priv)
3637
dl_port_index = mlx5_esw_vport_to_devlink_port_index(priv->mdev, 0);
3738
}
3839

39-
devlink_port_attrs_set(&priv->dl_port, &attrs);
40+
dl_port = mlx5e_devlink_get_dl_port(priv);
41+
memset(dl_port, 0, sizeof(*dl_port));
42+
devlink_port_attrs_set(dl_port, &attrs);
4043

41-
return devlink_port_register(devlink, &priv->dl_port, dl_port_index);
44+
return devlink_port_register(devlink, dl_port, dl_port_index);
4245
}
4346

4447
void mlx5e_devlink_port_type_eth_set(struct mlx5e_priv *priv)
4548
{
46-
devlink_port_type_eth_set(&priv->dl_port, priv->netdev);
49+
struct devlink_port *dl_port = mlx5e_devlink_get_dl_port(priv);
50+
51+
devlink_port_type_eth_set(dl_port, priv->netdev);
4752
}
4853

4954
void mlx5e_devlink_port_unregister(struct mlx5e_priv *priv)
5055
{
51-
devlink_port_unregister(&priv->dl_port);
56+
struct devlink_port *dl_port = mlx5e_devlink_get_dl_port(priv);
57+
58+
devlink_port_unregister(dl_port);
5259
}
5360

5461
struct devlink_port *mlx5e_get_devlink_port(struct net_device *dev)
5562
{
5663
struct mlx5e_priv *priv = netdev_priv(dev);
5764

58-
return &priv->dl_port;
65+
return mlx5e_devlink_get_dl_port(priv);
5966
}

drivers/net/ethernet/mellanox/mlx5/core/en/devlink.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,10 @@ void mlx5e_devlink_port_unregister(struct mlx5e_priv *priv);
1212
void mlx5e_devlink_port_type_eth_set(struct mlx5e_priv *priv);
1313
struct devlink_port *mlx5e_get_devlink_port(struct net_device *dev);
1414

15+
static inline struct devlink_port *
16+
mlx5e_devlink_get_dl_port(struct mlx5e_priv *priv)
17+
{
18+
return &priv->mdev->mlx5e_res.dl_port;
19+
}
20+
1521
#endif

drivers/net/ethernet/mellanox/mlx5/core/en/reporter_rx.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
#include "health.h"
55
#include "params.h"
66
#include "txrx.h"
7+
#include "devlink.h"
78

89
static int mlx5e_query_rq_state(struct mlx5_core_dev *dev, u32 rqn, u8 *state)
910
{
@@ -615,9 +616,10 @@ static const struct devlink_health_reporter_ops mlx5_rx_reporter_ops = {
615616

616617
void mlx5e_reporter_rx_create(struct mlx5e_priv *priv)
617618
{
619+
struct devlink_port *dl_port = mlx5e_devlink_get_dl_port(priv);
618620
struct devlink_health_reporter *reporter;
619621

620-
reporter = devlink_port_health_reporter_create(&priv->dl_port, &mlx5_rx_reporter_ops,
622+
reporter = devlink_port_health_reporter_create(dl_port, &mlx5_rx_reporter_ops,
621623
MLX5E_REPORTER_RX_GRACEFUL_PERIOD, priv);
622624
if (IS_ERR(reporter)) {
623625
netdev_warn(priv->netdev, "Failed to create rx reporter, err = %ld\n",

drivers/net/ethernet/mellanox/mlx5/core/en/reporter_tx.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
#include "health.h"
55
#include "en/ptp.h"
6+
#include "en/devlink.h"
67

78
static int mlx5e_wait_for_sq_flush(struct mlx5e_txqsq *sq)
89
{
@@ -572,9 +573,10 @@ static const struct devlink_health_reporter_ops mlx5_tx_reporter_ops = {
572573

573574
void mlx5e_reporter_tx_create(struct mlx5e_priv *priv)
574575
{
576+
struct devlink_port *dl_port = mlx5e_devlink_get_dl_port(priv);
575577
struct devlink_health_reporter *reporter;
576578

577-
reporter = devlink_port_health_reporter_create(&priv->dl_port, &mlx5_tx_reporter_ops,
579+
reporter = devlink_port_health_reporter_create(dl_port, &mlx5_tx_reporter_ops,
578580
MLX5_REPORTER_TX_GRACEFUL_PERIOD, priv);
579581
if (IS_ERR(reporter)) {
580582
netdev_warn(priv->netdev,

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@
5252
#include "en/health.h"
5353
#include "en/params.h"
5454
#include "devlink.h"
55+
#include "en/devlink.h"
5556

5657
static struct sk_buff *
5758
mlx5e_skb_from_cqe_mpwrq_linear(struct mlx5e_rq *rq, struct mlx5e_mpw_info *wi,
@@ -1823,6 +1824,7 @@ static void mlx5e_trap_handle_rx_cqe(struct mlx5e_rq *rq, struct mlx5_cqe64 *cqe
18231824
struct mlx5e_priv *priv = netdev_priv(rq->netdev);
18241825
struct mlx5_wq_cyc *wq = &rq->wqe.wq;
18251826
struct mlx5e_wqe_frag_info *wi;
1827+
struct devlink_port *dl_port;
18261828
struct sk_buff *skb;
18271829
u32 cqe_bcnt;
18281830
u16 trap_id;
@@ -1845,7 +1847,8 @@ static void mlx5e_trap_handle_rx_cqe(struct mlx5e_rq *rq, struct mlx5_cqe64 *cqe
18451847
mlx5e_complete_rx_cqe(rq, cqe, cqe_bcnt, skb);
18461848
skb_push(skb, ETH_HLEN);
18471849

1848-
mlx5_devlink_trap_report(rq->mdev, trap_id, skb, &priv->dl_port);
1850+
dl_port = mlx5e_devlink_get_dl_port(priv);
1851+
mlx5_devlink_trap_report(rq->mdev, trap_id, skb, dl_port);
18491852
dev_kfree_skb_any(skb);
18501853

18511854
free_wqe:

include/linux/mlx5/driver.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -650,6 +650,7 @@ struct mlx5e_resources {
650650
struct mlx5_core_mkey mkey;
651651
struct mlx5_sq_bfreg bfreg;
652652
} hw_objs;
653+
struct devlink_port dl_port;
653654
};
654655

655656
enum mlx5_sw_icm_type {

0 commit comments

Comments
 (0)