diff options
author | Andy Gospodarek <gospo@broadcom.com> | 2019-07-09 00:53:04 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2019-07-09 01:15:25 +0300 |
commit | 322b87ca55f2f3936ec9f9de438ef9b2115b5c9b (patch) | |
tree | 2ced73155ffeb72ede9390ea938019a0477ba5df /drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c | |
parent | f18c2b77b2e4eec2313d519ba125bd6a069513cf (diff) | |
download | linux-322b87ca55f2f3936ec9f9de438ef9b2115b5c9b.tar.xz |
bnxt_en: add page_pool support
This removes contention over page allocation for XDP_REDIRECT actions by
adding page_pool support per queue for the driver. The performance for
XDP_REDIRECT actions scales linearly with the number of cores performing
redirect actions when using the page pools instead of the standard page
allocator.
v2: Fix up the error path from XDP registration, noted by Ilias Apalodimas.
Signed-off-by: Andy Gospodarek <gospo@broadcom.com>
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c')
-rw-r--r-- | drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c index 12489d235eb9..c6f6f2033880 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c @@ -15,6 +15,7 @@ #include <linux/bpf.h> #include <linux/bpf_trace.h> #include <linux/filter.h> +#include <net/page_pool.h> #include "bnxt_hsi.h" #include "bnxt.h" #include "bnxt_xdp.h" @@ -191,7 +192,7 @@ bool bnxt_rx_xdp(struct bnxt *bp, struct bnxt_rx_ring_info *rxr, u16 cons, if (xdp_do_redirect(bp->dev, &xdp, xdp_prog)) { trace_xdp_exception(bp->dev, xdp_prog, act); - __free_page(page); + page_pool_recycle_direct(rxr->page_pool, page); return true; } |