Skip to content

Commit 96a8604

Browse files
netoptimizerAlexei Starovoitov
authored andcommitted
bnxt_en: setup xdp_rxq_info
Driver hook points for xdp_rxq_info: * reg : bnxt_alloc_rx_rings * unreg: bnxt_free_rx_rings This driver should be updated to re-register when changing allocation mode of RX rings. Tested on actual hardware. Cc: Andy Gospodarek <[email protected]> Cc: Michael Chan <[email protected]> Signed-off-by: Jesper Dangaard Brouer <[email protected]> Signed-off-by: Alexei Starovoitov <[email protected]>
1 parent ae75415 commit 96a8604

File tree

3 files changed

+13
-0
lines changed

3 files changed

+13
-0
lines changed

drivers/net/ethernet/broadcom/bnxt/bnxt.c

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2247,6 +2247,9 @@ static void bnxt_free_rx_rings(struct bnxt *bp)
22472247
if (rxr->xdp_prog)
22482248
bpf_prog_put(rxr->xdp_prog);
22492249

2250+
if (xdp_rxq_info_is_reg(&rxr->xdp_rxq))
2251+
xdp_rxq_info_unreg(&rxr->xdp_rxq);
2252+
22502253
kfree(rxr->rx_tpa);
22512254
rxr->rx_tpa = NULL;
22522255

@@ -2280,6 +2283,10 @@ static int bnxt_alloc_rx_rings(struct bnxt *bp)
22802283

22812284
ring = &rxr->rx_ring_struct;
22822285

2286+
rc = xdp_rxq_info_reg(&rxr->xdp_rxq, bp->dev, i);
2287+
if (rc < 0)
2288+
return rc;
2289+
22832290
rc = bnxt_alloc_ring(bp, ring);
22842291
if (rc)
22852292
return rc;
@@ -2834,6 +2841,9 @@ void bnxt_set_ring_params(struct bnxt *bp)
28342841
bp->cp_ring_mask = bp->cp_bit - 1;
28352842
}
28362843

2844+
/* Changing allocation mode of RX rings.
2845+
* TODO: Update when extending xdp_rxq_info to support allocation modes.
2846+
*/
28372847
int bnxt_set_rx_skb_mode(struct bnxt *bp, bool page_mode)
28382848
{
28392849
if (page_mode) {

drivers/net/ethernet/broadcom/bnxt/bnxt.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
#include <net/devlink.h>
2424
#include <net/dst_metadata.h>
2525
#include <net/switchdev.h>
26+
#include <net/xdp.h>
2627

2728
struct tx_bd {
2829
__le32 tx_bd_len_flags_type;
@@ -664,6 +665,7 @@ struct bnxt_rx_ring_info {
664665

665666
struct bnxt_ring_struct rx_ring_struct;
666667
struct bnxt_ring_struct rx_agg_ring_struct;
668+
struct xdp_rxq_info xdp_rxq;
667669
};
668670

669671
struct bnxt_cp_ring_info {

drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ bool bnxt_rx_xdp(struct bnxt *bp, struct bnxt_rx_ring_info *rxr, u16 cons,
9696
xdp.data = *data_ptr;
9797
xdp_set_data_meta_invalid(&xdp);
9898
xdp.data_end = *data_ptr + *len;
99+
xdp.rxq = &rxr->xdp_rxq;
99100
orig_data = xdp.data;
100101
mapping = rx_buf->mapping - bp->rx_dma_offset;
101102

0 commit comments

Comments
 (0)