* [PATCH net-next 0/7] net: xdp: Add missing metadata support for some xdp drvs
@ 2025-03-11 12:18 Lorenzo Bianconi
2025-03-11 12:18 ` [PATCH net-next 1/7] net: mvneta: Add metadata support for xdp mode Lorenzo Bianconi
` (8 more replies)
0 siblings, 9 replies; 12+ messages in thread
From: Lorenzo Bianconi @ 2025-03-11 12:18 UTC (permalink / raw)
To: Marcin Wojtas, Andrew Lunn, David S. Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, Alexei Starovoitov, Daniel Borkmann,
Jesper Dangaard Brouer, John Fastabend, Russell King,
Ilias Apalodimas, Masahisa Kojima, Sunil Goutham, Geetha sowjanya,
Subbaraya Sundeep, hariprasad, Bharat Bhushan, Felix Fietkau,
Sean Wang, Matthias Brugger, AngeloGioacchino Del Regno,
K. Y. Srinivasan, Haiyang Zhang, Wei Liu, Dexuan Cui,
Siddharth Vadapalli, Roger Quadros
Cc: netdev, bpf, linux-arm-kernel, linux-mediatek, linux-hyperv,
linux-omap, Lorenzo Bianconi
Introduce missing metadata support for some xdp drivers setting metadata
size building the skb from xdp_buff.
Please note most of the drivers are just compile tested.
---
Lorenzo Bianconi (7):
net: mvneta: Add metadata support for xdp mode
net: mvpp2: Add metadata support for xdp mode
net: netsec: Add metadata support for xdp mode
net: octeontx2: Add metadata support for xdp mode
net: ethernet: mediatek: Add metadata support for xdp mode
net: mana: Add metadata support for xdp mode
net: ti: cpsw: Add metadata support for xdp mode
drivers/net/ethernet/marvell/mvneta.c | 5 ++++-
drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c | 8 ++++++--
drivers/net/ethernet/marvell/octeontx2/nic/otx2_txrx.c | 13 +++++++++----
drivers/net/ethernet/mediatek/mtk_eth_soc.c | 7 +++++--
drivers/net/ethernet/microsoft/mana/mana_bpf.c | 2 +-
drivers/net/ethernet/microsoft/mana/mana_en.c | 4 ++++
drivers/net/ethernet/socionext/netsec.c | 7 +++++--
drivers/net/ethernet/ti/cpsw.c | 6 +++++-
drivers/net/ethernet/ti/cpsw_new.c | 6 +++++-
9 files changed, 44 insertions(+), 14 deletions(-)
---
base-commit: 8ef890df4031121a94407c84659125cbccd3fdbe
change-id: 20250310-mvneta-xdp-meta-3e0da8ef4498
Best regards,
--
Lorenzo Bianconi <lorenzo@kernel.org>
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH net-next 1/7] net: mvneta: Add metadata support for xdp mode
2025-03-11 12:18 [PATCH net-next 0/7] net: xdp: Add missing metadata support for some xdp drvs Lorenzo Bianconi
@ 2025-03-11 12:18 ` Lorenzo Bianconi
2025-03-11 12:18 ` [PATCH net-next 2/7] net: mvpp2: " Lorenzo Bianconi
` (7 subsequent siblings)
8 siblings, 0 replies; 12+ messages in thread
From: Lorenzo Bianconi @ 2025-03-11 12:18 UTC (permalink / raw)
To: Marcin Wojtas, Andrew Lunn, David S. Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, Alexei Starovoitov, Daniel Borkmann,
Jesper Dangaard Brouer, John Fastabend, Russell King,
Ilias Apalodimas, Masahisa Kojima, Sunil Goutham, Geetha sowjanya,
Subbaraya Sundeep, hariprasad, Bharat Bhushan, Felix Fietkau,
Sean Wang, Matthias Brugger, AngeloGioacchino Del Regno,
K. Y. Srinivasan, Haiyang Zhang, Wei Liu, Dexuan Cui,
Siddharth Vadapalli, Roger Quadros
Cc: netdev, bpf, linux-arm-kernel, linux-mediatek, linux-hyperv,
linux-omap, Lorenzo Bianconi
Set metadata size building the skb from xdp_buff in mvneta driver
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
---
drivers/net/ethernet/marvell/mvneta.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/marvell/mvneta.c b/drivers/net/ethernet/marvell/mvneta.c
index 44b18c57390927e37eac267632cace656bb5526e..147571fdada378e430fd96f2fb4a7e7870b784a2 100644
--- a/drivers/net/ethernet/marvell/mvneta.c
+++ b/drivers/net/ethernet/marvell/mvneta.c
@@ -2342,7 +2342,7 @@ mvneta_swbm_rx_frame(struct mvneta_port *pp,
prefetch(data);
xdp_buff_clear_frags_flag(xdp);
xdp_prepare_buff(xdp, data, pp->rx_offset_correction + MVNETA_MH_SIZE,
- data_len, false);
+ data_len, true);
}
static void
@@ -2396,6 +2396,7 @@ mvneta_swbm_build_skb(struct mvneta_port *pp, struct page_pool *pool,
struct xdp_buff *xdp, u32 desc_status)
{
struct skb_shared_info *sinfo = xdp_get_shared_info_from_buff(xdp);
+ u32 metasize = xdp->data - xdp->data_meta;
struct sk_buff *skb;
u8 num_frags;
@@ -2410,6 +2411,8 @@ mvneta_swbm_build_skb(struct mvneta_port *pp, struct page_pool *pool,
skb_reserve(skb, xdp->data - xdp->data_hard_start);
skb_put(skb, xdp->data_end - xdp->data);
+ if (metasize)
+ skb_metadata_set(skb, metasize);
skb->ip_summed = mvneta_rx_csum(pp, desc_status);
if (unlikely(xdp_buff_has_frags(xdp)))
--
2.48.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH net-next 2/7] net: mvpp2: Add metadata support for xdp mode
2025-03-11 12:18 [PATCH net-next 0/7] net: xdp: Add missing metadata support for some xdp drvs Lorenzo Bianconi
2025-03-11 12:18 ` [PATCH net-next 1/7] net: mvneta: Add metadata support for xdp mode Lorenzo Bianconi
@ 2025-03-11 12:18 ` Lorenzo Bianconi
2025-03-11 12:18 ` [PATCH net-next 3/7] net: netsec: " Lorenzo Bianconi
` (6 subsequent siblings)
8 siblings, 0 replies; 12+ messages in thread
From: Lorenzo Bianconi @ 2025-03-11 12:18 UTC (permalink / raw)
To: Marcin Wojtas, Andrew Lunn, David S. Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, Alexei Starovoitov, Daniel Borkmann,
Jesper Dangaard Brouer, John Fastabend, Russell King,
Ilias Apalodimas, Masahisa Kojima, Sunil Goutham, Geetha sowjanya,
Subbaraya Sundeep, hariprasad, Bharat Bhushan, Felix Fietkau,
Sean Wang, Matthias Brugger, AngeloGioacchino Del Regno,
K. Y. Srinivasan, Haiyang Zhang, Wei Liu, Dexuan Cui,
Siddharth Vadapalli, Roger Quadros
Cc: netdev, bpf, linux-arm-kernel, linux-mediatek, linux-hyperv,
linux-omap, Lorenzo Bianconi
Set metadata size building the skb from xdp_buff in mvpp2 driver
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
---
drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
index f166dc4e650372d66e248601a5c948819e1dcd79..54a235366a01bdba526a1956f27836bcdee210ae 100644
--- a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
+++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
@@ -3915,13 +3915,13 @@ static int mvpp2_rx(struct mvpp2_port *port, struct napi_struct *napi,
while (rx_done < rx_todo) {
struct mvpp2_rx_desc *rx_desc = mvpp2_rxq_next_desc_get(rxq);
+ u32 rx_status, timestamp, metasize = 0;
struct mvpp2_bm_pool *bm_pool;
struct page_pool *pp = NULL;
struct sk_buff *skb;
unsigned int frag_size;
dma_addr_t dma_addr;
phys_addr_t phys_addr;
- u32 rx_status, timestamp;
int pool, rx_bytes, err, ret;
struct page *page;
void *data;
@@ -3983,7 +3983,7 @@ static int mvpp2_rx(struct mvpp2_port *port, struct napi_struct *napi,
xdp_init_buff(&xdp, PAGE_SIZE, xdp_rxq);
xdp_prepare_buff(&xdp, data,
MVPP2_MH_SIZE + MVPP2_SKB_HEADROOM,
- rx_bytes, false);
+ rx_bytes, true);
ret = mvpp2_run_xdp(port, xdp_prog, &xdp, pp, &ps);
@@ -3999,6 +3999,8 @@ static int mvpp2_rx(struct mvpp2_port *port, struct napi_struct *napi,
ps.rx_bytes += rx_bytes;
continue;
}
+
+ metasize = xdp.data - xdp.data_meta;
}
if (frag_size)
@@ -4038,6 +4040,8 @@ static int mvpp2_rx(struct mvpp2_port *port, struct napi_struct *napi,
skb_reserve(skb, MVPP2_MH_SIZE + MVPP2_SKB_HEADROOM);
skb_put(skb, rx_bytes);
+ if (metasize)
+ skb_metadata_set(skb, metasize);
skb->ip_summed = mvpp2_rx_csum(port, rx_status);
skb->protocol = eth_type_trans(skb, dev);
--
2.48.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH net-next 3/7] net: netsec: Add metadata support for xdp mode
2025-03-11 12:18 [PATCH net-next 0/7] net: xdp: Add missing metadata support for some xdp drvs Lorenzo Bianconi
2025-03-11 12:18 ` [PATCH net-next 1/7] net: mvneta: Add metadata support for xdp mode Lorenzo Bianconi
2025-03-11 12:18 ` [PATCH net-next 2/7] net: mvpp2: " Lorenzo Bianconi
@ 2025-03-11 12:18 ` Lorenzo Bianconi
2025-03-14 12:00 ` Ilias Apalodimas
2025-03-11 12:18 ` [PATCH net-next 4/7] net: octeontx2: " Lorenzo Bianconi
` (5 subsequent siblings)
8 siblings, 1 reply; 12+ messages in thread
From: Lorenzo Bianconi @ 2025-03-11 12:18 UTC (permalink / raw)
To: Marcin Wojtas, Andrew Lunn, David S. Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, Alexei Starovoitov, Daniel Borkmann,
Jesper Dangaard Brouer, John Fastabend, Russell King,
Ilias Apalodimas, Masahisa Kojima, Sunil Goutham, Geetha sowjanya,
Subbaraya Sundeep, hariprasad, Bharat Bhushan, Felix Fietkau,
Sean Wang, Matthias Brugger, AngeloGioacchino Del Regno,
K. Y. Srinivasan, Haiyang Zhang, Wei Liu, Dexuan Cui,
Siddharth Vadapalli, Roger Quadros
Cc: netdev, bpf, linux-arm-kernel, linux-mediatek, linux-hyperv,
linux-omap, Lorenzo Bianconi
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
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH net-next 4/7] net: octeontx2: Add metadata support for xdp mode
2025-03-11 12:18 [PATCH net-next 0/7] net: xdp: Add missing metadata support for some xdp drvs Lorenzo Bianconi
` (2 preceding siblings ...)
2025-03-11 12:18 ` [PATCH net-next 3/7] net: netsec: " Lorenzo Bianconi
@ 2025-03-11 12:18 ` Lorenzo Bianconi
2025-03-11 12:18 ` [PATCH net-next 5/7] net: ethernet: mediatek: " Lorenzo Bianconi
` (4 subsequent siblings)
8 siblings, 0 replies; 12+ messages in thread
From: Lorenzo Bianconi @ 2025-03-11 12:18 UTC (permalink / raw)
To: Marcin Wojtas, Andrew Lunn, David S. Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, Alexei Starovoitov, Daniel Borkmann,
Jesper Dangaard Brouer, John Fastabend, Russell King,
Ilias Apalodimas, Masahisa Kojima, Sunil Goutham, Geetha sowjanya,
Subbaraya Sundeep, hariprasad, Bharat Bhushan, Felix Fietkau,
Sean Wang, Matthias Brugger, AngeloGioacchino Del Regno,
K. Y. Srinivasan, Haiyang Zhang, Wei Liu, Dexuan Cui,
Siddharth Vadapalli, Roger Quadros
Cc: netdev, bpf, linux-arm-kernel, linux-mediatek, linux-hyperv,
linux-omap, Lorenzo Bianconi
Set metadata size building the skb from xdp_buff in octeontx2 driver
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
---
drivers/net/ethernet/marvell/octeontx2/nic/otx2_txrx.c | 13 +++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)
diff --git a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_txrx.c b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_txrx.c
index 6bc5ce5a9f61cc2830975e7cc5219344760b0e51..af8cabe828d05c8832085d24d183312f24d00330 100644
--- a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_txrx.c
+++ b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_txrx.c
@@ -41,7 +41,7 @@ static bool otx2_xdp_rcv_pkt_handler(struct otx2_nic *pfvf,
struct bpf_prog *prog,
struct nix_cqe_rx_s *cqe,
struct otx2_cq_queue *cq,
- bool *need_xdp_flush);
+ u32 *metasize, bool *need_xdp_flush);
static void otx2_sq_set_sqe_base(struct otx2_snd_queue *sq,
struct sk_buff *skb)
@@ -336,6 +336,7 @@ static void otx2_rcv_pkt_handler(struct otx2_nic *pfvf,
struct nix_rx_sg_s *sg = &cqe->sg;
struct sk_buff *skb = NULL;
void *end, *start;
+ u32 metasize = 0;
u64 *seg_addr;
u16 *seg_size;
int seg;
@@ -346,7 +347,8 @@ static void otx2_rcv_pkt_handler(struct otx2_nic *pfvf,
}
if (pfvf->xdp_prog)
- if (otx2_xdp_rcv_pkt_handler(pfvf, pfvf->xdp_prog, cqe, cq, need_xdp_flush))
+ if (otx2_xdp_rcv_pkt_handler(pfvf, pfvf->xdp_prog, cqe, cq,
+ &metasize, need_xdp_flush))
return;
skb = napi_get_frags(napi);
@@ -378,6 +380,8 @@ static void otx2_rcv_pkt_handler(struct otx2_nic *pfvf,
skb->mark = parse->match_id;
skb_mark_for_recycle(skb);
+ if (metasize)
+ skb_metadata_set(skb, metasize);
napi_gro_frags(napi);
}
@@ -1482,7 +1486,7 @@ static bool otx2_xdp_rcv_pkt_handler(struct otx2_nic *pfvf,
struct bpf_prog *prog,
struct nix_cqe_rx_s *cqe,
struct otx2_cq_queue *cq,
- bool *need_xdp_flush)
+ u32 *metasize, bool *need_xdp_flush)
{
struct xdp_buff xdp, *xsk_buff = NULL;
unsigned char *hard_start;
@@ -1514,13 +1518,14 @@ static bool otx2_xdp_rcv_pkt_handler(struct otx2_nic *pfvf,
hard_start = (unsigned char *)phys_to_virt(pa);
xdp_prepare_buff(&xdp, hard_start, OTX2_HEAD_ROOM,
- cqe->sg.seg_size, false);
+ cqe->sg.seg_size, true);
act = bpf_prog_run_xdp(prog, &xdp);
handle_xdp_verdict:
switch (act) {
case XDP_PASS:
+ *metasize = xdp.data - xdp.data_meta;
break;
case XDP_TX:
qidx += pfvf->hw.tx_queues;
--
2.48.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH net-next 5/7] net: ethernet: mediatek: Add metadata support for xdp mode
2025-03-11 12:18 [PATCH net-next 0/7] net: xdp: Add missing metadata support for some xdp drvs Lorenzo Bianconi
` (3 preceding siblings ...)
2025-03-11 12:18 ` [PATCH net-next 4/7] net: octeontx2: " Lorenzo Bianconi
@ 2025-03-11 12:18 ` Lorenzo Bianconi
2025-03-11 12:18 ` [PATCH net-next 6/7] net: mana: " Lorenzo Bianconi
` (3 subsequent siblings)
8 siblings, 0 replies; 12+ messages in thread
From: Lorenzo Bianconi @ 2025-03-11 12:18 UTC (permalink / raw)
To: Marcin Wojtas, Andrew Lunn, David S. Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, Alexei Starovoitov, Daniel Borkmann,
Jesper Dangaard Brouer, John Fastabend, Russell King,
Ilias Apalodimas, Masahisa Kojima, Sunil Goutham, Geetha sowjanya,
Subbaraya Sundeep, hariprasad, Bharat Bhushan, Felix Fietkau,
Sean Wang, Matthias Brugger, AngeloGioacchino Del Regno,
K. Y. Srinivasan, Haiyang Zhang, Wei Liu, Dexuan Cui,
Siddharth Vadapalli, Roger Quadros
Cc: netdev, bpf, linux-arm-kernel, linux-mediatek, linux-hyperv,
linux-omap, Lorenzo Bianconi
Set metadata size building the skb from xdp_buff in mediatek driver
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
---
drivers/net/ethernet/mediatek/mtk_eth_soc.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
index 922330b3f4d70421276ecd3f4ab175b3ae263f71..43197b28b3e745319e974c6022a6a51b6953f60a 100644
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
@@ -2122,7 +2122,7 @@ static int mtk_poll_rx(struct napi_struct *napi, int budget,
if (ring->page_pool) {
struct page *page = virt_to_head_page(data);
struct xdp_buff xdp;
- u32 ret;
+ u32 ret, metasize;
new_data = mtk_page_pool_get_buff(ring->page_pool,
&dma_addr,
@@ -2138,7 +2138,7 @@ static int mtk_poll_rx(struct napi_struct *napi, int budget,
xdp_init_buff(&xdp, PAGE_SIZE, &ring->xdp_q);
xdp_prepare_buff(&xdp, data, MTK_PP_HEADROOM, pktlen,
- false);
+ true);
xdp_buff_clear_frags_flag(&xdp);
ret = mtk_xdp_run(eth, ring, &xdp, netdev);
@@ -2158,6 +2158,9 @@ static int mtk_poll_rx(struct napi_struct *napi, 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_mark_for_recycle(skb);
} else {
if (ring->frag_size <= PAGE_SIZE)
--
2.48.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH net-next 6/7] net: mana: Add metadata support for xdp mode
2025-03-11 12:18 [PATCH net-next 0/7] net: xdp: Add missing metadata support for some xdp drvs Lorenzo Bianconi
` (4 preceding siblings ...)
2025-03-11 12:18 ` [PATCH net-next 5/7] net: ethernet: mediatek: " Lorenzo Bianconi
@ 2025-03-11 12:18 ` Lorenzo Bianconi
2025-03-11 12:18 ` [PATCH net-next 7/7] net: ti: cpsw: " Lorenzo Bianconi
` (2 subsequent siblings)
8 siblings, 0 replies; 12+ messages in thread
From: Lorenzo Bianconi @ 2025-03-11 12:18 UTC (permalink / raw)
To: Marcin Wojtas, Andrew Lunn, David S. Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, Alexei Starovoitov, Daniel Borkmann,
Jesper Dangaard Brouer, John Fastabend, Russell King,
Ilias Apalodimas, Masahisa Kojima, Sunil Goutham, Geetha sowjanya,
Subbaraya Sundeep, hariprasad, Bharat Bhushan, Felix Fietkau,
Sean Wang, Matthias Brugger, AngeloGioacchino Del Regno,
K. Y. Srinivasan, Haiyang Zhang, Wei Liu, Dexuan Cui,
Siddharth Vadapalli, Roger Quadros
Cc: netdev, bpf, linux-arm-kernel, linux-mediatek, linux-hyperv,
linux-omap, Lorenzo Bianconi
Set metadata size building the skb from xdp_buff in mana driver
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
---
drivers/net/ethernet/microsoft/mana/mana_bpf.c | 2 +-
drivers/net/ethernet/microsoft/mana/mana_en.c | 4 ++++
2 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/microsoft/mana/mana_bpf.c b/drivers/net/ethernet/microsoft/mana/mana_bpf.c
index 23b1521c0df96e7fd595daad8b49fa9be935090c..d30721d4516fc60cf8883f2b35cc561559082ccc 100644
--- a/drivers/net/ethernet/microsoft/mana/mana_bpf.c
+++ b/drivers/net/ethernet/microsoft/mana/mana_bpf.c
@@ -91,7 +91,7 @@ u32 mana_run_xdp(struct net_device *ndev, struct mana_rxq *rxq,
goto out;
xdp_init_buff(xdp, PAGE_SIZE, &rxq->xdp_rxq);
- xdp_prepare_buff(xdp, buf_va, XDP_PACKET_HEADROOM, pkt_len, false);
+ xdp_prepare_buff(xdp, buf_va, XDP_PACKET_HEADROOM, pkt_len, true);
act = bpf_prog_run_xdp(prog, xdp);
diff --git a/drivers/net/ethernet/microsoft/mana/mana_en.c b/drivers/net/ethernet/microsoft/mana/mana_en.c
index 2d826077d38cdac7ebe9c355cf883b0d727eeca2..a3986fc47b819dae1f8a1d62ebe1ff051b144236 100644
--- a/drivers/net/ethernet/microsoft/mana/mana_en.c
+++ b/drivers/net/ethernet/microsoft/mana/mana_en.c
@@ -1559,8 +1559,12 @@ static struct sk_buff *mana_build_skb(struct mana_rxq *rxq, void *buf_va,
return NULL;
if (xdp->data_hard_start) {
+ u32 metasize = xdp->data - xdp->data_meta;
+
skb_reserve(skb, xdp->data - xdp->data_hard_start);
skb_put(skb, xdp->data_end - xdp->data);
+ if (metasize)
+ skb_metadata_set(skb, metasize);
return skb;
}
--
2.48.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH net-next 7/7] net: ti: cpsw: Add metadata support for xdp mode
2025-03-11 12:18 [PATCH net-next 0/7] net: xdp: Add missing metadata support for some xdp drvs Lorenzo Bianconi
` (5 preceding siblings ...)
2025-03-11 12:18 ` [PATCH net-next 6/7] net: mana: " Lorenzo Bianconi
@ 2025-03-11 12:18 ` Lorenzo Bianconi
2025-03-11 15:35 ` [PATCH net-next 0/7] net: xdp: Add missing metadata support for some xdp drvs Michal Kubiak
2025-03-18 10:13 ` Paolo Abeni
8 siblings, 0 replies; 12+ messages in thread
From: Lorenzo Bianconi @ 2025-03-11 12:18 UTC (permalink / raw)
To: Marcin Wojtas, Andrew Lunn, David S. Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, Alexei Starovoitov, Daniel Borkmann,
Jesper Dangaard Brouer, John Fastabend, Russell King,
Ilias Apalodimas, Masahisa Kojima, Sunil Goutham, Geetha sowjanya,
Subbaraya Sundeep, hariprasad, Bharat Bhushan, Felix Fietkau,
Sean Wang, Matthias Brugger, AngeloGioacchino Del Regno,
K. Y. Srinivasan, Haiyang Zhang, Wei Liu, Dexuan Cui,
Siddharth Vadapalli, Roger Quadros
Cc: netdev, bpf, linux-arm-kernel, linux-mediatek, linux-hyperv,
linux-omap, Lorenzo Bianconi
Set metadata size building the skb from xdp_buff in cpsw/cpsw_new
drivers
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
---
drivers/net/ethernet/ti/cpsw.c | 6 +++++-
drivers/net/ethernet/ti/cpsw_new.c | 6 +++++-
2 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ethernet/ti/cpsw.c b/drivers/net/ethernet/ti/cpsw.c
index 0cb6fa6e5b7d4fb9703633f0d67a7e95e6e7d8aa..a984b7d84e5e5917b83547c862924ccd30d83601 100644
--- a/drivers/net/ethernet/ti/cpsw.c
+++ b/drivers/net/ethernet/ti/cpsw.c
@@ -351,6 +351,7 @@ static void cpsw_rx_handler(void *token, int len, int status)
int ret = 0, port, ch = xmeta->ch;
int headroom = CPSW_HEADROOM_NA;
struct net_device *ndev = xmeta->ndev;
+ u32 metasize = 0;
struct cpsw_priv *priv;
struct page_pool *pool;
struct sk_buff *skb;
@@ -400,7 +401,7 @@ static void cpsw_rx_handler(void *token, int len, int status)
size -= CPSW_RX_VLAN_ENCAP_HDR_SIZE;
}
- xdp_prepare_buff(&xdp, pa, headroom, size, false);
+ xdp_prepare_buff(&xdp, pa, headroom, size, true);
port = priv->emac_port + cpsw->data.dual_emac;
ret = cpsw_run_xdp(priv, ch, &xdp, page, port, &len);
@@ -408,6 +409,7 @@ static void cpsw_rx_handler(void *token, int len, int status)
goto requeue;
headroom = xdp.data - xdp.data_hard_start;
+ metasize = xdp.data - xdp.data_meta;
/* XDP prog can modify vlan tag, so can't use encap header */
status &= ~CPDMA_RX_VLAN_ENCAP;
@@ -423,6 +425,8 @@ static void cpsw_rx_handler(void *token, int len, int status)
skb_reserve(skb, headroom);
skb_put(skb, len);
+ if (metasize)
+ skb_metadata_set(skb, metasize);
skb->dev = ndev;
if (status & CPDMA_RX_VLAN_ENCAP)
cpsw_rx_vlan_encap(skb);
diff --git a/drivers/net/ethernet/ti/cpsw_new.c b/drivers/net/ethernet/ti/cpsw_new.c
index 3da1c131335df1ff79b32ce0e3ea5200a2e53f4b..5b5b52e4e7a757a14965fe6df41935aed547111f 100644
--- a/drivers/net/ethernet/ti/cpsw_new.c
+++ b/drivers/net/ethernet/ti/cpsw_new.c
@@ -293,6 +293,7 @@ static void cpsw_rx_handler(void *token, int len, int status)
struct page_pool *pool;
struct sk_buff *skb;
struct xdp_buff xdp;
+ u32 metasize = 0;
int ret = 0;
dma_addr_t dma;
@@ -345,13 +346,14 @@ static void cpsw_rx_handler(void *token, int len, int status)
size -= CPSW_RX_VLAN_ENCAP_HDR_SIZE;
}
- xdp_prepare_buff(&xdp, pa, headroom, size, false);
+ xdp_prepare_buff(&xdp, pa, headroom, size, true);
ret = cpsw_run_xdp(priv, ch, &xdp, page, priv->emac_port, &len);
if (ret != CPSW_XDP_PASS)
goto requeue;
headroom = xdp.data - xdp.data_hard_start;
+ metasize = xdp.data - xdp.data_meta;
/* XDP prog can modify vlan tag, so can't use encap header */
status &= ~CPDMA_RX_VLAN_ENCAP;
@@ -368,6 +370,8 @@ static void cpsw_rx_handler(void *token, int len, int status)
skb->offload_fwd_mark = priv->offload_fwd_mark;
skb_reserve(skb, headroom);
skb_put(skb, len);
+ if (metasize)
+ skb_metadata_set(skb, metasize);
skb->dev = ndev;
if (status & CPDMA_RX_VLAN_ENCAP)
cpsw_rx_vlan_encap(skb);
--
2.48.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH net-next 0/7] net: xdp: Add missing metadata support for some xdp drvs
2025-03-11 12:18 [PATCH net-next 0/7] net: xdp: Add missing metadata support for some xdp drvs Lorenzo Bianconi
` (6 preceding siblings ...)
2025-03-11 12:18 ` [PATCH net-next 7/7] net: ti: cpsw: " Lorenzo Bianconi
@ 2025-03-11 15:35 ` Michal Kubiak
2025-03-18 10:13 ` Paolo Abeni
8 siblings, 0 replies; 12+ messages in thread
From: Michal Kubiak @ 2025-03-11 15:35 UTC (permalink / raw)
To: Lorenzo Bianconi
Cc: Marcin Wojtas, Andrew Lunn, David S. Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, Alexei Starovoitov, Daniel Borkmann,
Jesper Dangaard Brouer, John Fastabend, Russell King,
Ilias Apalodimas, Masahisa Kojima, Sunil Goutham, Geetha sowjanya,
Subbaraya Sundeep, hariprasad, Bharat Bhushan, Felix Fietkau,
Sean Wang, Matthias Brugger, AngeloGioacchino Del Regno,
K. Y. Srinivasan, Haiyang Zhang, Wei Liu, Dexuan Cui,
Siddharth Vadapalli, Roger Quadros, netdev, bpf, linux-arm-kernel,
linux-mediatek, linux-hyperv, linux-omap
On Tue, Mar 11, 2025 at 01:18:32PM +0100, Lorenzo Bianconi wrote:
> Introduce missing metadata support for some xdp drivers setting metadata
> size building the skb from xdp_buff.
> Please note most of the drivers are just compile tested.
>
> ---
> Lorenzo Bianconi (7):
> net: mvneta: Add metadata support for xdp mode
> net: mvpp2: Add metadata support for xdp mode
> net: netsec: Add metadata support for xdp mode
> net: octeontx2: Add metadata support for xdp mode
> net: ethernet: mediatek: Add metadata support for xdp mode
> net: mana: Add metadata support for xdp mode
> net: ti: cpsw: Add metadata support for xdp mode
>
> drivers/net/ethernet/marvell/mvneta.c | 5 ++++-
> drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c | 8 ++++++--
> drivers/net/ethernet/marvell/octeontx2/nic/otx2_txrx.c | 13 +++++++++----
> drivers/net/ethernet/mediatek/mtk_eth_soc.c | 7 +++++--
> drivers/net/ethernet/microsoft/mana/mana_bpf.c | 2 +-
> drivers/net/ethernet/microsoft/mana/mana_en.c | 4 ++++
> drivers/net/ethernet/socionext/netsec.c | 7 +++++--
> drivers/net/ethernet/ti/cpsw.c | 6 +++++-
> drivers/net/ethernet/ti/cpsw_new.c | 6 +++++-
> 9 files changed, 44 insertions(+), 14 deletions(-)
> ---
> base-commit: 8ef890df4031121a94407c84659125cbccd3fdbe
> change-id: 20250310-mvneta-xdp-meta-3e0da8ef4498
>
> Best regards,
> --
> Lorenzo Bianconi <lorenzo@kernel.org>
>
>
As far as I checked, all modified drivers use the Page Pool and set the XDP
headroom. So, a necessary space for metadata seems to be assured for all
of the drivers.
In summary, the series looks OK.
Thanks,
Michal
For the series:
Reviewed-by: Michal Kubiak <michal.kubiak@intel.com>
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH net-next 3/7] net: netsec: Add metadata support for xdp mode
2025-03-11 12:18 ` [PATCH net-next 3/7] net: netsec: " Lorenzo Bianconi
@ 2025-03-14 12:00 ` Ilias Apalodimas
0 siblings, 0 replies; 12+ messages in thread
From: Ilias Apalodimas @ 2025-03-14 12:00 UTC (permalink / raw)
To: Lorenzo Bianconi
Cc: Marcin Wojtas, Andrew Lunn, David S. Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, Alexei Starovoitov, Daniel Borkmann,
Jesper Dangaard Brouer, John Fastabend, Russell King,
Masahisa Kojima, Sunil Goutham, Geetha sowjanya,
Subbaraya Sundeep, hariprasad, Bharat Bhushan, Felix Fietkau,
Sean Wang, Matthias Brugger, AngeloGioacchino Del Regno,
K. Y. Srinivasan, Haiyang Zhang, Wei Liu, Dexuan Cui,
Siddharth Vadapalli, Roger Quadros, netdev, bpf, linux-arm-kernel,
linux-mediatek, linux-hyperv, linux-omap
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>
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH net-next 0/7] net: xdp: Add missing metadata support for some xdp drvs
2025-03-11 12:18 [PATCH net-next 0/7] net: xdp: Add missing metadata support for some xdp drvs Lorenzo Bianconi
` (7 preceding siblings ...)
2025-03-11 15:35 ` [PATCH net-next 0/7] net: xdp: Add missing metadata support for some xdp drvs Michal Kubiak
@ 2025-03-18 10:13 ` Paolo Abeni
2025-03-18 11:06 ` Lorenzo Bianconi
8 siblings, 1 reply; 12+ messages in thread
From: Paolo Abeni @ 2025-03-18 10:13 UTC (permalink / raw)
To: Lorenzo Bianconi, Marcin Wojtas, Andrew Lunn, David S. Miller,
Eric Dumazet, Jakub Kicinski, Alexei Starovoitov, Daniel Borkmann,
Jesper Dangaard Brouer, John Fastabend, Russell King,
Ilias Apalodimas, Masahisa Kojima, Sunil Goutham, Geetha sowjanya,
Subbaraya Sundeep, hariprasad, Bharat Bhushan, Felix Fietkau,
Sean Wang, Matthias Brugger, AngeloGioacchino Del Regno,
K. Y. Srinivasan, Haiyang Zhang, Wei Liu, Dexuan Cui,
Siddharth Vadapalli, Roger Quadros
Cc: netdev, bpf, linux-arm-kernel, linux-mediatek, linux-hyperv,
linux-omap
On 3/11/25 1:18 PM, Lorenzo Bianconi wrote:
> Introduce missing metadata support for some xdp drivers setting metadata
> size building the skb from xdp_buff.
> Please note most of the drivers are just compile tested.
I'm sorry, but you should at very least report explicitly on per patch
basis which ones have been compile tested.
Even better, please additionally document in each patch why/how the
current headroom is large enough.
Thanks,
Paolo
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH net-next 0/7] net: xdp: Add missing metadata support for some xdp drvs
2025-03-18 10:13 ` Paolo Abeni
@ 2025-03-18 11:06 ` Lorenzo Bianconi
0 siblings, 0 replies; 12+ messages in thread
From: Lorenzo Bianconi @ 2025-03-18 11:06 UTC (permalink / raw)
To: Paolo Abeni
Cc: Marcin Wojtas, Andrew Lunn, David S. Miller, Eric Dumazet,
Jakub Kicinski, Alexei Starovoitov, Daniel Borkmann,
Jesper Dangaard Brouer, John Fastabend, Russell King,
Ilias Apalodimas, Masahisa Kojima, Sunil Goutham, Geetha sowjanya,
Subbaraya Sundeep, hariprasad, Bharat Bhushan, Felix Fietkau,
Sean Wang, Matthias Brugger, AngeloGioacchino Del Regno,
K. Y. Srinivasan, Haiyang Zhang, Wei Liu, Dexuan Cui,
Siddharth Vadapalli, Roger Quadros, netdev, bpf, linux-arm-kernel,
linux-mediatek, linux-hyperv, linux-omap
[-- Attachment #1: Type: text/plain, Size: 545 bytes --]
> On 3/11/25 1:18 PM, Lorenzo Bianconi wrote:
> > Introduce missing metadata support for some xdp drivers setting metadata
> > size building the skb from xdp_buff.
> > Please note most of the drivers are just compile tested.
>
> I'm sorry, but you should at very least report explicitly on per patch
> basis which ones have been compile tested.
>
> Even better, please additionally document in each patch why/how the
> current headroom is large enough.
ack, I will do in v2.
Regards,
Lorenzo
>
> Thanks,
>
> Paolo
>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2025-03-18 11:06 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-03-11 12:18 [PATCH net-next 0/7] net: xdp: Add missing metadata support for some xdp drvs Lorenzo Bianconi
2025-03-11 12:18 ` [PATCH net-next 1/7] net: mvneta: Add metadata support for xdp mode Lorenzo Bianconi
2025-03-11 12:18 ` [PATCH net-next 2/7] net: mvpp2: " Lorenzo Bianconi
2025-03-11 12:18 ` [PATCH net-next 3/7] net: netsec: " Lorenzo Bianconi
2025-03-14 12:00 ` Ilias Apalodimas
2025-03-11 12:18 ` [PATCH net-next 4/7] net: octeontx2: " Lorenzo Bianconi
2025-03-11 12:18 ` [PATCH net-next 5/7] net: ethernet: mediatek: " Lorenzo Bianconi
2025-03-11 12:18 ` [PATCH net-next 6/7] net: mana: " Lorenzo Bianconi
2025-03-11 12:18 ` [PATCH net-next 7/7] net: ti: cpsw: " Lorenzo Bianconi
2025-03-11 15:35 ` [PATCH net-next 0/7] net: xdp: Add missing metadata support for some xdp drvs Michal Kubiak
2025-03-18 10:13 ` Paolo Abeni
2025-03-18 11:06 ` Lorenzo Bianconi
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).