On Wed, 16 Oct 2019 14:40:32 +0300, Ilias Apalodimas wrote: > bpf_xdp_adjust_head() can change the frame boundaries. Account for the > potential shift properly by calculating the new offset before > syncing the buffer to the device for XDP_TX > > Fixes: ba2b232108d3 ("net: netsec: add XDP support") > Signed-off-by: Ilias Apalodimas <ilias.apalodi...@linaro.org>
Reviewed-by: Jakub Kicinski <jakub.kicin...@netronome.com> You should target this to the bpf or net tree (appropriate [PATCH xyz] marking). Although I must admit it's unclear to me as well whether the driver changes should be picked up by bpf maintainers or Dave :S > diff --git a/drivers/net/ethernet/socionext/netsec.c > b/drivers/net/ethernet/socionext/netsec.c > index f9e6744d8fd6..41ddd8fff2a7 100644 > --- a/drivers/net/ethernet/socionext/netsec.c > +++ b/drivers/net/ethernet/socionext/netsec.c > @@ -847,8 +847,8 @@ static u32 netsec_xdp_queue_one(struct netsec_priv *priv, > enum dma_data_direction dma_dir = > page_pool_get_dma_dir(rx_ring->page_pool); > > - dma_handle = page_pool_get_dma_addr(page) + > - NETSEC_RXBUF_HEADROOM; > + dma_handle = page_pool_get_dma_addr(page) + xdpf->headroom + > + sizeof(*xdpf); very nitpick: I'd personally write addr + sizeof(*xdpf) + xdpf->headroom since that's the order in which they appear in memory But likely not worth reposting for just that :) > dma_sync_single_for_device(priv->dev, dma_handle, xdpf->len, > dma_dir); > tx_desc.buf_type = TYPE_NETSEC_XDP_TX;