Re: [PATCH net-next v5 4/5] mvpp2: recycle buffers

From: Russell King (Oracle)
Date: Thu May 13 2021 - 14:21:30 EST


On Thu, May 13, 2021 at 06:58:45PM +0200, Matteo Croce wrote:
> diff --git a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
> index b2259bf1d299..9dceabece56c 100644
> --- a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
> +++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
> @@ -3847,6 +3847,7 @@ static int mvpp2_rx(struct mvpp2_port *port, struct napi_struct *napi,
> struct mvpp2_pcpu_stats ps = {};
> enum dma_data_direction dma_dir;
> struct bpf_prog *xdp_prog;
> + struct xdp_rxq_info *rxqi;
> struct xdp_buff xdp;
> int rx_received;
> int rx_done = 0;
> @@ -3912,15 +3913,15 @@ static int mvpp2_rx(struct mvpp2_port *port, struct napi_struct *napi,
> else
> frag_size = bm_pool->frag_size;
>
> + if (bm_pool->pkt_size == MVPP2_BM_SHORT_PKT_SIZE)
> + rxqi = &rxq->xdp_rxq_short;
> + else
> + rxqi = &rxq->xdp_rxq_long;
>
> + if (xdp_prog) {
> + xdp.rxq = rxqi;
>
> + xdp_init_buff(&xdp, PAGE_SIZE, rxqi);
> xdp_prepare_buff(&xdp, data,
> MVPP2_MH_SIZE + MVPP2_SKB_HEADROOM,
> rx_bytes, false);
> @@ -3964,7 +3965,7 @@ static int mvpp2_rx(struct mvpp2_port *port, struct napi_struct *napi,
> }
>
> if (pp)
> + skb_mark_for_recycle(skb, virt_to_page(data), pp);
> else
> dma_unmap_single_attrs(dev->dev.parent, dma_addr,
> bm_pool->buf_size, DMA_FROM_DEVICE,

Looking at the above, which I've only quoted the _resulting_ code after
your patch above, I don't see why you have moved the
"bm_pool->pkt_size == MVPP2_BM_SHORT_PKT_SIZE" conditional outside of
the test for xdp_prog - I don't see rxqi being used except within that
conditional. Please can you explain the reasoning there?

Thanks.

--
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last!