bnxt_en: Add page_pool_destroy() during RX ring cleanup.
authorMichael Chan <michael.chan@broadcom.com>
Tue, 9 Jul 2019 07:50:07 +0000 (03:50 -0400)
committerDavid S. Miller <davem@davemloft.net>
Tue, 9 Jul 2019 19:17:54 +0000 (12:17 -0700)
Add page_pool_destroy() in bnxt_free_rx_rings() during normal RX ring
cleanup, as Ilias has informed us that the following commit has been
merged:

1da4bbeffe41 ("net: core: page_pool: add user refcnt and reintroduce page_pool_destroy")

The special error handling code to call page_pool_free() can now be
removed.  bnxt_free_rx_rings() will always be called during normal
shutdown or any error paths.

Fixes: 322b87ca55f2 ("bnxt_en: add page_pool support")
Cc: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Cc: Andy Gospodarek <gospo@broadcom.com>
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
Acked-by: Andy Gospodarek <gospo@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/broadcom/bnxt/bnxt.c

index e9d3bd80f2dd390d9f6870cb024b1020d4f88286..2b5b0ab8961ae6ab92ba4992f35dd28f63edf3a3 100644 (file)
@@ -2500,6 +2500,7 @@ static void bnxt_free_rx_rings(struct bnxt *bp)
                if (xdp_rxq_info_is_reg(&rxr->xdp_rxq))
                        xdp_rxq_info_unreg(&rxr->xdp_rxq);
 
+               page_pool_destroy(rxr->page_pool);
                rxr->page_pool = NULL;
 
                kfree(rxr->rx_tpa);
@@ -2560,19 +2561,14 @@ static int bnxt_alloc_rx_rings(struct bnxt *bp)
                        return rc;
 
                rc = xdp_rxq_info_reg(&rxr->xdp_rxq, bp->dev, i);
-               if (rc < 0) {
-                       page_pool_free(rxr->page_pool);
-                       rxr->page_pool = NULL;
+               if (rc < 0)
                        return rc;
-               }
 
                rc = xdp_rxq_info_reg_mem_model(&rxr->xdp_rxq,
                                                MEM_TYPE_PAGE_POOL,
                                                rxr->page_pool);
                if (rc) {
                        xdp_rxq_info_unreg(&rxr->xdp_rxq);
-                       page_pool_free(rxr->page_pool);
-                       rxr->page_pool = NULL;
                        return rc;
                }