Skip to content

Commit 0082dd8

Browse files
committed
Merge tag 'mlx5-updates-2020-07-28' of git://git.kernel.org/pub/scm/linux/kernel/git/saeed/linux
Saeed Mahameed says: ==================== mlx5-updates-2020-07-28 Misc and small update to mlx5 driver: 1) Aya adds PCIe relaxed ordering support for mlx5 netdev queues. 2) Eran Refactors pages data base to be per vf/function to speedup unload time. 3) Parav changes eswitch steering initialization to account for tota_vports rather than for only active vports and Link non uplink representors to PCI device, for uniform naming scheme. 4) Tariq, trivial RX code improvements and missing inidirect calls wrappers. 5) Small cleanup patches ==================== Signed-off-by: David S. Miller <[email protected]>
2 parents f21bbd6 + 22f9d2f commit 0082dd8

File tree

26 files changed

+302
-213
lines changed

26 files changed

+302
-213
lines changed

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

Lines changed: 11 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -530,6 +530,8 @@ typedef struct sk_buff *
530530
typedef bool (*mlx5e_fp_post_rx_wqes)(struct mlx5e_rq *rq);
531531
typedef void (*mlx5e_fp_dealloc_wqe)(struct mlx5e_rq*, u16);
532532

533+
int mlx5e_rq_set_handlers(struct mlx5e_rq *rq, struct mlx5e_params *params, bool xsk);
534+
533535
enum mlx5e_rq_flag {
534536
MLX5E_RQ_FLAG_XDP_XMIT,
535537
MLX5E_RQ_FLAG_XDP_REDIRECT,
@@ -812,6 +814,13 @@ struct mlx5e_priv {
812814
struct mlx5e_scratchpad scratchpad;
813815
};
814816

817+
struct mlx5e_rx_handlers {
818+
mlx5e_fp_handle_rx_cqe handle_rx_cqe;
819+
mlx5e_fp_handle_rx_cqe handle_rx_cqe_mpwqe;
820+
};
821+
822+
extern const struct mlx5e_rx_handlers mlx5e_rx_handlers_nic;
823+
815824
struct mlx5e_profile {
816825
int (*init)(struct mlx5_core_dev *mdev,
817826
struct net_device *netdev,
@@ -828,58 +837,17 @@ struct mlx5e_profile {
828837
void (*update_carrier)(struct mlx5e_priv *priv);
829838
unsigned int (*stats_grps_num)(struct mlx5e_priv *priv);
830839
mlx5e_stats_grp_t *stats_grps;
831-
struct {
832-
mlx5e_fp_handle_rx_cqe handle_rx_cqe;
833-
mlx5e_fp_handle_rx_cqe handle_rx_cqe_mpwqe;
834-
} rx_handlers;
840+
const struct mlx5e_rx_handlers *rx_handlers;
835841
int max_tc;
836842
u8 rq_groups;
837843
};
838844

839845
void mlx5e_build_ptys2ethtool_map(void);
840846

841-
u16 mlx5e_select_queue(struct net_device *dev, struct sk_buff *skb,
842-
struct net_device *sb_dev);
843-
netdev_tx_t mlx5e_xmit(struct sk_buff *skb, struct net_device *dev);
844-
void mlx5e_sq_xmit(struct mlx5e_txqsq *sq, struct sk_buff *skb,
845-
struct mlx5e_tx_wqe *wqe, u16 pi, bool xmit_more);
846-
847-
void mlx5e_trigger_irq(struct mlx5e_icosq *sq);
848-
void mlx5e_completion_event(struct mlx5_core_cq *mcq, struct mlx5_eqe *eqe);
849-
void mlx5e_cq_error_event(struct mlx5_core_cq *mcq, enum mlx5_event event);
850-
int mlx5e_napi_poll(struct napi_struct *napi, int budget);
851-
bool mlx5e_poll_tx_cq(struct mlx5e_cq *cq, int napi_budget);
852-
int mlx5e_poll_rx_cq(struct mlx5e_cq *cq, int budget);
853-
void mlx5e_free_txqsq_descs(struct mlx5e_txqsq *sq);
854-
855847
bool mlx5e_check_fragmented_striding_rq_cap(struct mlx5_core_dev *mdev);
856848
bool mlx5e_striding_rq_possible(struct mlx5_core_dev *mdev,
857849
struct mlx5e_params *params);
858850

859-
void mlx5e_page_dma_unmap(struct mlx5e_rq *rq, struct mlx5e_dma_info *dma_info);
860-
void mlx5e_page_release_dynamic(struct mlx5e_rq *rq,
861-
struct mlx5e_dma_info *dma_info,
862-
bool recycle);
863-
void mlx5e_handle_rx_cqe(struct mlx5e_rq *rq, struct mlx5_cqe64 *cqe);
864-
void mlx5e_handle_rx_cqe_mpwrq(struct mlx5e_rq *rq, struct mlx5_cqe64 *cqe);
865-
bool mlx5e_post_rx_wqes(struct mlx5e_rq *rq);
866-
int mlx5e_poll_ico_cq(struct mlx5e_cq *cq);
867-
bool mlx5e_post_rx_mpwqes(struct mlx5e_rq *rq);
868-
void mlx5e_dealloc_rx_wqe(struct mlx5e_rq *rq, u16 ix);
869-
void mlx5e_dealloc_rx_mpwqe(struct mlx5e_rq *rq, u16 ix);
870-
struct sk_buff *
871-
mlx5e_skb_from_cqe_mpwrq_linear(struct mlx5e_rq *rq, struct mlx5e_mpw_info *wi,
872-
u16 cqe_bcnt, u32 head_offset, u32 page_idx);
873-
struct sk_buff *
874-
mlx5e_skb_from_cqe_mpwrq_nonlinear(struct mlx5e_rq *rq, struct mlx5e_mpw_info *wi,
875-
u16 cqe_bcnt, u32 head_offset, u32 page_idx);
876-
struct sk_buff *
877-
mlx5e_skb_from_cqe_linear(struct mlx5e_rq *rq, struct mlx5_cqe64 *cqe,
878-
struct mlx5e_wqe_frag_info *wi, u32 cqe_bcnt);
879-
struct sk_buff *
880-
mlx5e_skb_from_cqe_nonlinear(struct mlx5e_rq *rq, struct mlx5_cqe64 *cqe,
881-
struct mlx5e_wqe_frag_info *wi, u32 cqe_bcnt);
882-
883851
void mlx5e_get_stats(struct net_device *dev, struct rtnl_link_stats64 *stats);
884852
void mlx5e_fold_sw_stats64(struct mlx5e_priv *priv, struct rtnl_link_stats64 *s);
885853

@@ -982,8 +950,6 @@ void mlx5e_init_rq_type_params(struct mlx5_core_dev *mdev,
982950
int mlx5e_modify_rq_state(struct mlx5e_rq *rq, int curr_state, int next_state);
983951
void mlx5e_activate_rq(struct mlx5e_rq *rq);
984952
void mlx5e_deactivate_rq(struct mlx5e_rq *rq);
985-
void mlx5e_free_rx_descs(struct mlx5e_rq *rq);
986-
void mlx5e_free_rx_in_progress_descs(struct mlx5e_rq *rq);
987953
void mlx5e_activate_icosq(struct mlx5e_icosq *icosq);
988954
void mlx5e_deactivate_icosq(struct mlx5e_icosq *icosq);
989955

@@ -1008,6 +974,7 @@ int mlx5e_create_mdev_resources(struct mlx5_core_dev *mdev);
1008974
void mlx5e_destroy_mdev_resources(struct mlx5_core_dev *mdev);
1009975
int mlx5e_refresh_tirs(struct mlx5e_priv *priv, bool enable_uc_lb,
1010976
bool enable_mc_lb);
977+
void mlx5e_mkey_set_relaxed_ordering(struct mlx5_core_dev *mdev, void *mkc);
1011978

1012979
/* common netdev helpers */
1013980
void mlx5e_create_q_counters(struct mlx5e_priv *priv);

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

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
#define __MLX5_EN_TXRX_H___
66

77
#include "en.h"
8+
#include <linux/indirect_call_wrapper.h>
89

910
#define INL_HDR_START_SZ (sizeof(((struct mlx5_wqe_eth_seg *)NULL)->inline_hdr.start))
1011

@@ -18,6 +19,33 @@ enum mlx5e_icosq_wqe_type {
1819
#endif
1920
};
2021

22+
/* General */
23+
void mlx5e_trigger_irq(struct mlx5e_icosq *sq);
24+
void mlx5e_completion_event(struct mlx5_core_cq *mcq, struct mlx5_eqe *eqe);
25+
void mlx5e_cq_error_event(struct mlx5_core_cq *mcq, enum mlx5_event event);
26+
int mlx5e_napi_poll(struct napi_struct *napi, int budget);
27+
int mlx5e_poll_ico_cq(struct mlx5e_cq *cq);
28+
29+
/* RX */
30+
void mlx5e_page_dma_unmap(struct mlx5e_rq *rq, struct mlx5e_dma_info *dma_info);
31+
void mlx5e_page_release_dynamic(struct mlx5e_rq *rq,
32+
struct mlx5e_dma_info *dma_info,
33+
bool recycle);
34+
INDIRECT_CALLABLE_DECLARE(bool mlx5e_post_rx_wqes(struct mlx5e_rq *rq));
35+
INDIRECT_CALLABLE_DECLARE(bool mlx5e_post_rx_mpwqes(struct mlx5e_rq *rq));
36+
int mlx5e_poll_rx_cq(struct mlx5e_cq *cq, int budget);
37+
void mlx5e_free_rx_descs(struct mlx5e_rq *rq);
38+
void mlx5e_free_rx_in_progress_descs(struct mlx5e_rq *rq);
39+
40+
/* TX */
41+
u16 mlx5e_select_queue(struct net_device *dev, struct sk_buff *skb,
42+
struct net_device *sb_dev);
43+
netdev_tx_t mlx5e_xmit(struct sk_buff *skb, struct net_device *dev);
44+
void mlx5e_sq_xmit(struct mlx5e_txqsq *sq, struct sk_buff *skb,
45+
struct mlx5e_tx_wqe *wqe, u16 pi, bool xmit_more);
46+
bool mlx5e_poll_tx_cq(struct mlx5e_cq *cq, int napi_budget);
47+
void mlx5e_free_txqsq_descs(struct mlx5e_txqsq *sq);
48+
2149
static inline bool
2250
mlx5e_wqc_has_room_for(struct mlx5_wq_cyc *wq, u16 cc, u16 pc, u16 n)
2351
{
@@ -360,7 +388,7 @@ mlx5e_set_eseg_swp(struct sk_buff *skb, struct mlx5_wqe_eth_seg *eseg,
360388
switch (swp_spec->tun_l4_proto) {
361389
case IPPROTO_UDP:
362390
eseg->swp_flags |= MLX5_ETH_WQE_SWP_INNER_L4_UDP;
363-
/* fall through */
391+
fallthrough;
364392
case IPPROTO_TCP:
365393
eseg->swp_inner_l4_offset = skb_inner_transport_offset(skb) / 2;
366394
break;

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@
3434
#include <net/xdp_sock_drv.h>
3535
#include "en/xdp.h"
3636
#include "en/params.h"
37-
#include <linux/indirect_call_wrapper.h>
3837

3938
int mlx5e_xdp_max_mtu(struct mlx5e_params *params, struct mlx5e_xsk_param *xsk)
4039
{
@@ -153,11 +152,11 @@ bool mlx5e_xdp_handle(struct mlx5e_rq *rq, struct mlx5e_dma_info *di,
153152
return true;
154153
default:
155154
bpf_warn_invalid_xdp_action(act);
156-
/* fall through */
155+
fallthrough;
157156
case XDP_ABORTED:
158157
xdp_abort:
159158
trace_xdp_exception(rq->netdev, prog, act);
160-
/* fall through */
159+
fallthrough;
161160
case XDP_DROP:
162161
rq->stats->xdp_drop++;
163162
return true;

drivers/net/ethernet/mellanox/mlx5/core/en/xsk/setup.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
#include "setup.h"
55
#include "en/params.h"
6+
#include "en/txrx.h"
67

78
/* It matches XDP_UMEM_MIN_CHUNK_SIZE, but as this constant is private and may
89
* change unexpectedly, and mlx5e has a minimum valid stride size for striding

drivers/net/ethernet/mellanox/mlx5/core/en/xsk/tx.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
#include "en/xdp.h"
77
#include "en/params.h"
88
#include <net/xdp_sock_drv.h>
9-
#include <linux/indirect_call_wrapper.h>
109

1110
int mlx5e_xsk_wakeup(struct net_device *dev, u32 qid, u32 flags)
1211
{

drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_rxtx.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@
4747

4848
struct sk_buff *mlx5e_ipsec_handle_rx_skb(struct net_device *netdev,
4949
struct sk_buff *skb, u32 *cqe_bcnt);
50-
void mlx5e_ipsec_handle_rx_cqe(struct mlx5e_rq *rq, struct mlx5_cqe64 *cqe);
5150

5251
void mlx5e_ipsec_inverse_table_init(void);
5352
bool mlx5e_ipsec_feature_check(struct sk_buff *skb, struct net_device *netdev,

drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls_tx.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -470,7 +470,7 @@ bool mlx5e_ktls_handle_tx_skb(struct tls_context *tls_ctx, struct mlx5e_txqsq *s
470470
if (likely(!skb->decrypted))
471471
goto out;
472472
WARN_ON_ONCE(1);
473-
/* fall-through */
473+
fallthrough;
474474
case MLX5E_KTLS_SYNC_FAIL:
475475
goto err_out;
476476
}

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

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,16 @@ void mlx5e_destroy_tir(struct mlx5_core_dev *mdev,
6060
mutex_unlock(&mdev->mlx5e_res.td.list_lock);
6161
}
6262

63+
void mlx5e_mkey_set_relaxed_ordering(struct mlx5_core_dev *mdev, void *mkc)
64+
{
65+
bool ro_pci_enable = pcie_relaxed_ordering_enabled(mdev->pdev);
66+
bool ro_write = MLX5_CAP_GEN(mdev, relaxed_ordering_write);
67+
bool ro_read = MLX5_CAP_GEN(mdev, relaxed_ordering_read);
68+
69+
MLX5_SET(mkc, mkc, relaxed_ordering_read, ro_pci_enable && ro_read);
70+
MLX5_SET(mkc, mkc, relaxed_ordering_write, ro_pci_enable && ro_write);
71+
}
72+
6373
static int mlx5e_create_mkey(struct mlx5_core_dev *mdev, u32 pdn,
6474
struct mlx5_core_mkey *mkey)
6575
{
@@ -76,7 +86,7 @@ static int mlx5e_create_mkey(struct mlx5_core_dev *mdev, u32 pdn,
7686
MLX5_SET(mkc, mkc, access_mode_1_0, MLX5_MKC_ACCESS_MODE_PA);
7787
MLX5_SET(mkc, mkc, lw, 1);
7888
MLX5_SET(mkc, mkc, lr, 1);
79-
89+
mlx5e_mkey_set_relaxed_ordering(mdev, mkc);
8090
MLX5_SET(mkc, mkc, pd, pdn);
8191
MLX5_SET(mkc, mkc, length64, 1);
8292
MLX5_SET(mkc, mkc, qpn, 0xffffff);

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,7 @@ int mlx5e_ethtool_get_sset_count(struct mlx5e_priv *priv, int sset)
243243
return MLX5E_NUM_PFLAGS;
244244
case ETH_SS_TEST:
245245
return mlx5e_self_test_num(priv);
246-
/* fallthrough */
246+
fallthrough;
247247
default:
248248
return -EOPNOTSUPP;
249249
}

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

Lines changed: 6 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@
4545
#include "en_tc.h"
4646
#include "en_rep.h"
4747
#include "en_accel/ipsec.h"
48-
#include "en_accel/ipsec_rxtx.h"
4948
#include "en_accel/en_accel.h"
5049
#include "en_accel/tls.h"
5150
#include "accel/ipsec.h"
@@ -65,7 +64,6 @@
6564
#include "en/hv_vhca_stats.h"
6665
#include "en/devlink.h"
6766
#include "lib/mlx5.h"
68-
#include "fpga/ipsec.h"
6967

7068
bool mlx5e_check_fragmented_striding_rq_cap(struct mlx5_core_dev *mdev)
7169
{
@@ -276,7 +274,7 @@ static int mlx5e_create_umr_mkey(struct mlx5_core_dev *mdev,
276274
MLX5_SET(mkc, mkc, lw, 1);
277275
MLX5_SET(mkc, mkc, lr, 1);
278276
MLX5_SET(mkc, mkc, access_mode_1_0, MLX5_MKC_ACCESS_MODE_MTT);
279-
277+
mlx5e_mkey_set_relaxed_ordering(mdev, mkc);
280278
MLX5_SET(mkc, mkc, qpn, 0xffffff);
281279
MLX5_SET(mkc, mkc, pd, mdev->mlx5e_res.pdn);
282280
MLX5_SET64(mkc, mkc, len, npages << page_shift);
@@ -428,29 +426,6 @@ static int mlx5e_alloc_rq(struct mlx5e_channel *c,
428426
pool_size = MLX5_MPWRQ_PAGES_PER_WQE <<
429427
mlx5e_mpwqe_get_log_rq_size(params, xsk);
430428

431-
rq->post_wqes = mlx5e_post_rx_mpwqes;
432-
rq->dealloc_wqe = mlx5e_dealloc_rx_mpwqe;
433-
434-
rq->handle_rx_cqe = c->priv->profile->rx_handlers.handle_rx_cqe_mpwqe;
435-
#ifdef CONFIG_MLX5_EN_IPSEC
436-
if (MLX5_IPSEC_DEV(mdev)) {
437-
err = -EINVAL;
438-
netdev_err(c->netdev, "MPWQE RQ with IPSec offload not supported\n");
439-
goto err_rq_wq_destroy;
440-
}
441-
#endif
442-
if (!rq->handle_rx_cqe) {
443-
err = -EINVAL;
444-
netdev_err(c->netdev, "RX handler of MPWQE RQ is not set, err %d\n", err);
445-
goto err_rq_wq_destroy;
446-
}
447-
448-
rq->mpwqe.skb_from_cqe_mpwrq = xsk ?
449-
mlx5e_xsk_skb_from_cqe_mpwrq_linear :
450-
mlx5e_rx_mpwqe_is_linear_skb(mdev, params, NULL) ?
451-
mlx5e_skb_from_cqe_mpwrq_linear :
452-
mlx5e_skb_from_cqe_mpwrq_nonlinear;
453-
454429
rq->mpwqe.log_stride_sz = mlx5e_mpwqe_get_log_stride_size(mdev, params, xsk);
455430
rq->mpwqe.num_strides =
456431
BIT(mlx5e_mpwqe_get_log_num_strides(mdev, params, xsk));
@@ -492,30 +467,13 @@ static int mlx5e_alloc_rq(struct mlx5e_channel *c,
492467
if (err)
493468
goto err_free;
494469

495-
rq->post_wqes = mlx5e_post_rx_wqes;
496-
rq->dealloc_wqe = mlx5e_dealloc_rx_wqe;
497-
498-
#ifdef CONFIG_MLX5_EN_IPSEC
499-
if ((mlx5_fpga_ipsec_device_caps(mdev) & MLX5_ACCEL_IPSEC_CAP_DEVICE) &&
500-
c->priv->ipsec)
501-
rq->handle_rx_cqe = mlx5e_ipsec_handle_rx_cqe;
502-
else
503-
#endif
504-
rq->handle_rx_cqe = c->priv->profile->rx_handlers.handle_rx_cqe;
505-
if (!rq->handle_rx_cqe) {
506-
err = -EINVAL;
507-
netdev_err(c->netdev, "RX handler of RQ is not set, err %d\n", err);
508-
goto err_free;
509-
}
510-
511-
rq->wqe.skb_from_cqe = xsk ?
512-
mlx5e_xsk_skb_from_cqe_linear :
513-
mlx5e_rx_is_linear_skb(params, NULL) ?
514-
mlx5e_skb_from_cqe_linear :
515-
mlx5e_skb_from_cqe_nonlinear;
516470
rq->mkey_be = c->mkey_be;
517471
}
518472

473+
err = mlx5e_rq_set_handlers(rq, params, xsk);
474+
if (err)
475+
goto err_free;
476+
519477
if (xsk) {
520478
err = xdp_rxq_info_reg_mem_model(&rq->xdp_rxq,
521479
MEM_TYPE_XSK_BUFF_POOL, NULL);
@@ -5288,8 +5246,7 @@ static const struct mlx5e_profile mlx5e_nic_profile = {
52885246
.update_rx = mlx5e_update_nic_rx,
52895247
.update_stats = mlx5e_update_ndo_stats,
52905248
.update_carrier = mlx5e_update_carrier,
5291-
.rx_handlers.handle_rx_cqe = mlx5e_handle_rx_cqe,
5292-
.rx_handlers.handle_rx_cqe_mpwqe = mlx5e_handle_rx_cqe_mpwrq,
5249+
.rx_handlers = &mlx5e_rx_handlers_nic,
52935250
.max_tc = MLX5E_MAX_NUM_TC,
52945251
.rq_groups = MLX5E_NUM_RQ_GROUPS(XSK),
52955252
.stats_grps = mlx5e_nic_stats_grps,

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

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
#include "esw/chains.h"
4343
#include "en.h"
4444
#include "en_rep.h"
45+
#include "en/txrx.h"
4546
#include "en_tc.h"
4647
#include "en/rep/tc.h"
4748
#include "en/rep/neigh.h"
@@ -699,8 +700,8 @@ static void mlx5e_build_rep_netdev(struct net_device *netdev)
699700
struct mlx5_eswitch_rep *rep = rpriv->rep;
700701
struct mlx5_core_dev *mdev = priv->mdev;
701702

703+
SET_NETDEV_DEV(netdev, mdev->device);
702704
if (rep->vport == MLX5_VPORT_UPLINK) {
703-
SET_NETDEV_DEV(netdev, mdev->device);
704705
netdev->netdev_ops = &mlx5e_netdev_ops_uplink_rep;
705706
/* we want a persistent mac for the uplink rep */
706707
mlx5_query_mac_address(mdev, netdev->dev_addr);
@@ -1143,8 +1144,7 @@ static const struct mlx5e_profile mlx5e_rep_profile = {
11431144
.enable = mlx5e_rep_enable,
11441145
.update_rx = mlx5e_update_rep_rx,
11451146
.update_stats = mlx5e_update_ndo_stats,
1146-
.rx_handlers.handle_rx_cqe = mlx5e_handle_rx_cqe_rep,
1147-
.rx_handlers.handle_rx_cqe_mpwqe = mlx5e_handle_rx_cqe_mpwrq_rep,
1147+
.rx_handlers = &mlx5e_rx_handlers_rep,
11481148
.max_tc = 1,
11491149
.rq_groups = MLX5E_NUM_RQ_GROUPS(REGULAR),
11501150
.stats_grps = mlx5e_rep_stats_grps,
@@ -1163,8 +1163,7 @@ static const struct mlx5e_profile mlx5e_uplink_rep_profile = {
11631163
.update_rx = mlx5e_update_rep_rx,
11641164
.update_stats = mlx5e_update_ndo_stats,
11651165
.update_carrier = mlx5e_update_carrier,
1166-
.rx_handlers.handle_rx_cqe = mlx5e_handle_rx_cqe_rep,
1167-
.rx_handlers.handle_rx_cqe_mpwqe = mlx5e_handle_rx_cqe_mpwrq_rep,
1166+
.rx_handlers = &mlx5e_rx_handlers_rep,
11681167
.max_tc = MLX5E_MAX_NUM_TC,
11691168
.rq_groups = MLX5E_NUM_RQ_GROUPS(REGULAR),
11701169
.stats_grps = mlx5e_ul_rep_stats_grps,

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

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@
4141
#include "lib/port_tun.h"
4242

4343
#ifdef CONFIG_MLX5_ESWITCH
44+
extern const struct mlx5e_rx_handlers mlx5e_rx_handlers_rep;
45+
4446
struct mlx5e_neigh_update_table {
4547
struct rhashtable neigh_ht;
4648
/* Save the neigh hash entries in a list in addition to the hash table
@@ -223,10 +225,6 @@ bool mlx5e_is_uplink_rep(struct mlx5e_priv *priv);
223225
int mlx5e_add_sqs_fwd_rules(struct mlx5e_priv *priv);
224226
void mlx5e_remove_sqs_fwd_rules(struct mlx5e_priv *priv);
225227

226-
void mlx5e_handle_rx_cqe_rep(struct mlx5e_rq *rq, struct mlx5_cqe64 *cqe);
227-
void mlx5e_handle_rx_cqe_mpwrq_rep(struct mlx5e_rq *rq,
228-
struct mlx5_cqe64 *cqe);
229-
230228
void mlx5e_rep_queue_neigh_stats_work(struct mlx5e_priv *priv);
231229

232230
bool mlx5e_eswitch_vf_rep(struct net_device *netdev);

0 commit comments

Comments
 (0)