octeontx2-pf: Add AF_XDP non-zero copy support
authorSuman Ghosh <sumang@marvell.com>
Thu, 13 Feb 2025 05:31:37 +0000 (11:01 +0530)
committerPaolo Abeni <pabeni@redhat.com>
Tue, 18 Feb 2025 10:36:27 +0000 (11:36 +0100)
Set xdp rx ring memory type as MEM_TYPE_PAGE_POOL for
af-xdp to work. This is needed since xdp_return_frame
internally will use page pools.

Fixes: 06059a1a9a4a ("octeontx2-pf: Add XDP support to netdev PF")
Signed-off-by: Suman Ghosh <sumang@marvell.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c

index 2b49bfec78692cf1f63c793ec49511607cda7c3e..161cf33ef89ed3ad2220254f7ce02a59f7761408 100644 (file)
@@ -1047,6 +1047,7 @@ static int otx2_cq_init(struct otx2_nic *pfvf, u16 qidx)
        int err, pool_id, non_xdp_queues;
        struct nix_aq_enq_req *aq;
        struct otx2_cq_queue *cq;
+       struct otx2_pool *pool;
 
        cq = &qset->cq[qidx];
        cq->cq_idx = qidx;
@@ -1055,8 +1056,13 @@ static int otx2_cq_init(struct otx2_nic *pfvf, u16 qidx)
                cq->cq_type = CQ_RX;
                cq->cint_idx = qidx;
                cq->cqe_cnt = qset->rqe_cnt;
-               if (pfvf->xdp_prog)
+               if (pfvf->xdp_prog) {
+                       pool = &qset->pool[qidx];
                        xdp_rxq_info_reg(&cq->xdp_rxq, pfvf->netdev, qidx, 0);
+                       xdp_rxq_info_reg_mem_model(&cq->xdp_rxq,
+                                                  MEM_TYPE_PAGE_POOL,
+                                                  pool->page_pool);
+               }
        } else if (qidx < non_xdp_queues) {
                cq->cq_type = CQ_TX;
                cq->cint_idx = qidx - pfvf->hw.rx_queues;