Fix xdp in ena driver
Subsystems (3)
v2 cover Fix xdp in ena driver
From: Sameeh Jubran <[email protected]>
This patchset includes 2 XDP related bug fixes
Difference from v1:
* Fixed "Fixes" tag
Sameeh Jubran (2):
net: ena: xdp: XDP_TX: fix memory leak
net: ena: xdp: update napi budget for DROP and ABORTED
drivers/net/ethernet/amazon/ena/ena_netdev.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-)
Signature · 1 line
2.24.1.AMZN
PATCH v2 1/2 net: ena: xdp: XDP_TX: fix memory leak
From: Sameeh Jubran <[email protected]>
When sending very high packet rate, the XDP tx queues can get full and start dropping packets. In this case we don't free the pages which results in ena driver draining the system memory.
Fix:
Simply free the pages when necessary.
--- drivers/net/ethernet/amazon/ena/ena_netdev.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/net/ethernet/amazon/ena/ena_netdev.c +1 -1
@@ -355,7 +355,7 @@ error_unmap_dma:ena_unmap_tx_buff (xdp_ring, tx_info); tx_info->xdpf =NULL ; error_drop_packet: - +__free_page (tx_info->xdp_rx_page);return NETDEV_TX_OK ; }
Signature · 1 line
2.24.1.AMZN
PATCH v2 2/2 net: ena: xdp: update napi budget for DROP and ABORTED
In reply to [email protected]From: Sameeh Jubran <[email protected]>
This patch fixes two issues with XDP:
1. If the XDP verdict is XDP_ABORTED we break the loop, which results in us handling one buffer per napi cycle instead of the total budget (usually 64). To overcome this simply change the xdp_verdict check to != XDP_PASS. When the verdict is XDP_PASS, the skb is not expected to be NULL.
2. Update the residual budget for XDP_DROP and XDP_ABORTED, since packets are handled in these cases.
--- drivers/net/ethernet/amazon/ena/ena_netdev.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
drivers/net/ethernet/amazon/ena/ena_netdev.c +4 -4
@@ -1638,11 +1638,9 @@ static int ena_clean_rx_irq(struct ena_ring *rx_ring, struct napi_struct *napi, &next_to_clean);if (unlikely (!skb)) { -if (xdp_verdict ==XDP_TX ) { +if (xdp_verdict ==XDP_TX )ena_free_rx_page (rx_ring, &rx_ring->rx_buffer_info[rx_ring->ena_bufs[0 ].req_id]); - res_budget--; - }for (i =0 ; i < ena_rx_ctx.descs; i++) { rx_ring->free_ids[next_to_clean] = rx_ring->ena_bufs[i].req_id;
@@ -1650,8 +1648,10 @@ static int ena_clean_rx_irq(struct ena_ring *rx_ring, struct napi_struct *napi,ENA_RX_RING_IDX_NEXT (next_to_clean, rx_ring->ring_size); } -if (xdp_verdict ==XDP_TX || xdp_verdict ==XDP_DROP ) +if (xdp_verdict !=XDP_PASS ) { + res_budget--;continue ; + }break ; }
Signature · 1 line
2.24.1.AMZN
Quoted 3 lines · On Wed, 3 Jun 2020 08:50:21 +0000 [email protected] wrote:
From: Sameeh Jubran <[email protected]>
This patchset includes 2 XDP related bug fixes
All clean now :)
Quoted 7 lines · On Wed, 3 Jun 2020 08:50:21 +0000 <[email protected]> wrote:
From: Sameeh Jubran <[email protected]>
This patchset includes 2 XDP related bug fixes
Difference from v1:
* Fixed "Fixes" tag
Quoted 6 lines
Sameeh Jubran (2):
net: ena: xdp:XDP_TX: fix memory leak
net: ena: xdp: update napi budget for DROP and ABORTEDdrivers/net/ethernet/amazon/ena/ena_netdev.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-)
LGTM
Signature · 4 lines
Best regards, Jesper Dangaard Brouer MSc.CS, Principal Kernel Engineer at Red Hat LinkedIn: http://www.linkedin.com/in/brouer
David Miller
maintainerFrom: <[email protected]>
Date: Wed, 3 Jun 2020 08:50:21 +0000
Quoted 6 lines
From: Sameeh Jubran <[email protected]>
This patchset includes 2 XDP related bug fixes
Difference from v1:
* Fixed "Fixes" tag
Series applied, thanks.