> On Mon, 14 Oct 2019 12:49:49 +0200, Lorenzo Bianconi wrote: > > +static int mvneta_create_page_pool(struct mvneta_port *pp, > > + struct mvneta_rx_queue *rxq, int size) > > +{ > > + struct page_pool_params pp_params = { > > + .order = 0, > > + .flags = PP_FLAG_DMA_MAP, > > + .pool_size = size, > > + .nid = cpu_to_node(0), > > + .dev = pp->dev->dev.parent, > > + .dma_dir = DMA_FROM_DEVICE, > > + }; > > + int err; > > + > > + rxq->page_pool = page_pool_create(&pp_params); > > + if (IS_ERR(rxq->page_pool)) { > > + err = PTR_ERR(rxq->page_pool); > > + rxq->page_pool = NULL; > > + return err; > > + } > > + > > + err = xdp_rxq_info_reg(&rxq->xdp_rxq, pp->dev, 0); > > The queue_index is always passed as 0, is there only a single queue? > XDP programs can read this field. Hi Jakub, thx for the review. You are right, I will fix it in v4. Regards, Lorenzo > > > + if (err < 0) > > + goto err_free_pp; > > + > > + err = xdp_rxq_info_reg_mem_model(&rxq->xdp_rxq, MEM_TYPE_PAGE_POOL, > > + rxq->page_pool); > > + if (err) > > + goto err_unregister_rxq; > > + > > + return 0; > > + > > +err_unregister_rxq: > > + xdp_rxq_info_unreg(&rxq->xdp_rxq); > > +err_free_pp: > > + page_pool_destroy(rxq->page_pool); > > + return err; > > +}