rxr->page_pool->p.napi = NULL;
        rxr->page_pool = NULL;
+       memset(&rxr->xdp_rxq, 0, sizeof(struct xdp_rxq_info));
 
        ring = &rxr->rx_ring_struct;
        rmem = &ring->ring_mem;
        if (rc)
                return rc;
 
+       rc = xdp_rxq_info_reg(&clone->xdp_rxq, bp->dev, idx, 0);
+       if (rc < 0)
+               goto err_page_pool_destroy;
+
+       rc = xdp_rxq_info_reg_mem_model(&clone->xdp_rxq,
+                                       MEM_TYPE_PAGE_POOL,
+                                       clone->page_pool);
+       if (rc)
+               goto err_rxq_info_unreg;
+
        ring = &clone->rx_ring_struct;
        rc = bnxt_alloc_ring(bp, &ring->ring_mem);
        if (rc)
        bnxt_free_ring(bp, &clone->rx_agg_ring_struct.ring_mem);
 err_free_rx_ring:
        bnxt_free_ring(bp, &clone->rx_ring_struct.ring_mem);
+err_rxq_info_unreg:
+       xdp_rxq_info_unreg(&clone->xdp_rxq);
+err_page_pool_destroy:
        clone->page_pool->p.napi = NULL;
        page_pool_destroy(clone->page_pool);
        clone->page_pool = NULL;
        bnxt_free_one_rx_ring(bp, rxr);
        bnxt_free_one_rx_agg_ring(bp, rxr);
 
+       xdp_rxq_info_unreg(&rxr->xdp_rxq);
+
        page_pool_destroy(rxr->page_pool);
        rxr->page_pool = NULL;
 
        rxr->rx_sw_agg_prod = clone->rx_sw_agg_prod;
        rxr->rx_next_cons = clone->rx_next_cons;
        rxr->page_pool = clone->page_pool;
+       rxr->xdp_rxq = clone->xdp_rxq;
 
        bnxt_copy_rx_ring(bp, rxr, clone);