Message ID | 20191016114032.21617-1-ilias.apalodimas@linaro.org |
---|---|
State | New |
Headers | show |
Series | net: netsec: Correct dma sync for XDP_TX frames | expand |
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.apalodimas@linaro.org> Reviewed-by: Jakub Kicinski <jakub.kicinski@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;
Hi Jakub, On Wed, Oct 16, 2019 at 05:14:01PM -0700, Jakub Kicinski wrote: > 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.apalodimas@linaro.org> > > Reviewed-by: Jakub Kicinski <jakub.kicinski@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 My bad i forgot to add the net-next tag. I'd prefer Dave picking that up, since he picked all the XDP-related patches for this driver before. Dave shall i re-send with the proper tag? > > > 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 :) Isn't sizeof static anyway? If Dave needs a v2 with the proper tag i'll change this as well > > > dma_sync_single_for_device(priv->dev, dma_handle, xdpf->len, > > dma_dir); > > tx_desc.buf_type = TYPE_NETSEC_XDP_TX; > Thanks /Ilias
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); dma_sync_single_for_device(priv->dev, dma_handle, xdpf->len, dma_dir); tx_desc.buf_type = TYPE_NETSEC_XDP_TX;
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.apalodimas@linaro.org> --- drivers/net/ethernet/socionext/netsec.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -- 2.23.0