bnxt: Detach page from page pool before sending up the stack
authorJonathan Lemon <jonathan.lemon@gmail.com>
Thu, 9 Jan 2020 19:35:42 +0000 (11:35 -0800)
committerDavid S. Miller <davem@davemloft.net>
Sat, 11 Jan 2020 07:03:44 +0000 (23:03 -0800)
When running in XDP mode, pages come from the page pool, and should
be freed back to the same pool or specifically detached.  Currently,
when the driver re-initializes, the page pool destruction is delayed
forever since it thinks there are oustanding pages.

Fixes: 322b87ca55f2 ("bnxt_en: add page_pool support")
Signed-off-by: Jonathan Lemon <jonathan.lemon@gmail.com>
Reviewed-by: Andy Gospodarek <gospo@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/broadcom/bnxt/bnxt.c

index 39d4309..33eb8cd 100644 (file)
@@ -944,6 +944,7 @@ static struct sk_buff *bnxt_rx_page_skb(struct bnxt *bp,
        dma_addr -= bp->rx_dma_offset;
        dma_unmap_page_attrs(&bp->pdev->dev, dma_addr, PAGE_SIZE, bp->rx_dir,
                             DMA_ATTR_WEAK_ORDERING);
+       page_pool_release_page(rxr->page_pool, page);
 
        if (unlikely(!payload))
                payload = eth_get_headlen(bp->dev, data_ptr, len);