Message ID | 20250311-mvneta-xdp-meta-v1-3-36cf1c99790e@kernel.org (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | net: xdp: Add missing metadata support for some xdp drvs | expand |
On Tue, 11 Mar 2025 at 14:19, Lorenzo Bianconi <lorenzo@kernel.org> wrote: > > Set metadata size building the skb from xdp_buff in netsec driver > > Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> > --- > drivers/net/ethernet/socionext/netsec.c | 7 +++++-- > 1 file changed, 5 insertions(+), 2 deletions(-) > > diff --git a/drivers/net/ethernet/socionext/netsec.c b/drivers/net/ethernet/socionext/netsec.c > index dc99821c6226fbaece65c8ade23899f610b44a9a..ee890de69ffe795dbdcc5331e36be86769f0d9a6 100644 > --- a/drivers/net/ethernet/socionext/netsec.c > +++ b/drivers/net/ethernet/socionext/netsec.c > @@ -970,7 +970,7 @@ static int netsec_process_rx(struct netsec_priv *priv, int budget) > struct netsec_de *de = dring->vaddr + (DESC_SZ * idx); > struct netsec_desc *desc = &dring->desc[idx]; > struct page *page = virt_to_page(desc->addr); > - u32 xdp_result = NETSEC_XDP_PASS; > + u32 metasize, xdp_result = NETSEC_XDP_PASS; > struct sk_buff *skb = NULL; > u16 pkt_len, desc_len; > dma_addr_t dma_handle; > @@ -1019,7 +1019,7 @@ static int netsec_process_rx(struct netsec_priv *priv, int budget) > prefetch(desc->addr); > > xdp_prepare_buff(&xdp, desc->addr, NETSEC_RXBUF_HEADROOM, > - pkt_len, false); > + pkt_len, true); > > if (xdp_prog) { > xdp_result = netsec_run_xdp(priv, xdp_prog, &xdp); > @@ -1048,6 +1048,9 @@ static int netsec_process_rx(struct netsec_priv *priv, int budget) > > skb_reserve(skb, xdp.data - xdp.data_hard_start); > skb_put(skb, xdp.data_end - xdp.data); > + metasize = xdp.data - xdp.data_meta; > + if (metasize) > + skb_metadata_set(skb, metasize); > skb->protocol = eth_type_trans(skb, priv->ndev); > > if (priv->rx_cksum_offload_flag && > > -- > 2.48.1 > Acked-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
diff --git a/drivers/net/ethernet/socionext/netsec.c b/drivers/net/ethernet/socionext/netsec.c index dc99821c6226fbaece65c8ade23899f610b44a9a..ee890de69ffe795dbdcc5331e36be86769f0d9a6 100644 --- a/drivers/net/ethernet/socionext/netsec.c +++ b/drivers/net/ethernet/socionext/netsec.c @@ -970,7 +970,7 @@ static int netsec_process_rx(struct netsec_priv *priv, int budget) struct netsec_de *de = dring->vaddr + (DESC_SZ * idx); struct netsec_desc *desc = &dring->desc[idx]; struct page *page = virt_to_page(desc->addr); - u32 xdp_result = NETSEC_XDP_PASS; + u32 metasize, xdp_result = NETSEC_XDP_PASS; struct sk_buff *skb = NULL; u16 pkt_len, desc_len; dma_addr_t dma_handle; @@ -1019,7 +1019,7 @@ static int netsec_process_rx(struct netsec_priv *priv, int budget) prefetch(desc->addr); xdp_prepare_buff(&xdp, desc->addr, NETSEC_RXBUF_HEADROOM, - pkt_len, false); + pkt_len, true); if (xdp_prog) { xdp_result = netsec_run_xdp(priv, xdp_prog, &xdp); @@ -1048,6 +1048,9 @@ static int netsec_process_rx(struct netsec_priv *priv, int budget) skb_reserve(skb, xdp.data - xdp.data_hard_start); skb_put(skb, xdp.data_end - xdp.data); + metasize = xdp.data - xdp.data_meta; + if (metasize) + skb_metadata_set(skb, metasize); skb->protocol = eth_type_trans(skb, priv->ndev); if (priv->rx_cksum_offload_flag &&
Set metadata size building the skb from xdp_buff in netsec driver Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> --- drivers/net/ethernet/socionext/netsec.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-)