[PATCH net-next 00/10] Call skb_metadata_set when skb->data points past metadata

STALE242d

25 messages, 6 authors, 2026-01-13 · open the first message on its own page

[PATCH net-next 00/10] Call skb_metadata_set when skb->data points past metadata

From: Jakub Sitnicki <jakub@cloudflare.com>
Date: 2026-01-10 21:05:24

This series is split out of [1] following discussion with Jakub.

To copy XDP metadata into an skb extension when skb_metadata_set() is
called, we need to locate the metadata contents.

These patches establish a contract with the drivers: skb_metadata_set()
must be called only after skb->data has been advanced past the metadata
area.

[1] https://lore.kernel.org/r/20260107-skb-meta-safeproof-netdevs-rx-only-v3-0-0d461c5e4764@cloudflare.com

Signed-off-by: Jakub Sitnicki <jakub@cloudflare.com>
---
Jakub Sitnicki (10):
      net: Document skb_metadata_set contract with the drivers
      bnxt_en: Call skb_metadata_set when skb->data points past metadata
      i40e: Call skb_metadata_set when skb->data points past metadata
      igb: Call skb_metadata_set when skb->data points past metadata
      igc: Call skb_metadata_set when skb->data points past metadata
      ixgbe: Call skb_metadata_set when skb->data points past metadata
      mlx5e: Call skb_metadata_set when skb->data points past metadata
      veth: Call skb_metadata_set when skb->data points past metadata
      xsk: Call skb_metadata_set when skb->data points past metadata
      xdp: Call skb_metadata_set when skb->data points past metadata

 drivers/net/ethernet/broadcom/bnxt/bnxt.c           | 2 +-
 drivers/net/ethernet/intel/i40e/i40e_xsk.c          | 2 +-
 drivers/net/ethernet/intel/igb/igb_xsk.c            | 2 +-
 drivers/net/ethernet/intel/igc/igc_main.c           | 4 ++--
 drivers/net/ethernet/intel/ixgbe/ixgbe_xsk.c        | 2 +-
 drivers/net/ethernet/mellanox/mlx5/core/en/xsk/rx.c | 2 +-
 drivers/net/veth.c                                  | 4 ++--
 include/linux/skbuff.h                              | 7 +++++++
 net/core/dev.c                                      | 5 ++++-
 net/core/xdp.c                                      | 2 +-
 10 files changed, 21 insertions(+), 11 deletions(-)

[PATCH net-next 01/10] net: Document skb_metadata_set contract with the drivers

From: Jakub Sitnicki <jakub@cloudflare.com>
Date: 2026-01-10 21:05:26

Prepare to copy XDP metadata into an skb extension chunk. To access the
metadata contents, we need to know where it is located. Document the
expectation - skb->data must point right past the metadata when
skb_metadata_set gets called.

Signed-off-by: Jakub Sitnicki <jakub@cloudflare.com>
---
 include/linux/skbuff.h | 7 +++++++
 1 file changed, 7 insertions(+)
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
index 86737076101d..df001283076f 100644
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -4554,6 +4554,13 @@ static inline bool skb_metadata_differs(const struct sk_buff *skb_a,
 	       true : __skb_metadata_differs(skb_a, skb_b, len_a);
 }
 
+/**
+ * skb_metadata_set - Record packet metadata length.
+ * @skb: packet carrying the metadata
+ * @meta_len: number of bytes of metadata preceding skb->data
+ *
+ * Must be called when skb->data already points past the metadata area.
+ */
 static inline void skb_metadata_set(struct sk_buff *skb, u8 meta_len)
 {
 	skb_shinfo(skb)->meta_len = meta_len;
-- 
2.43.0

[PATCH net-next 02/10] bnxt_en: Call skb_metadata_set when skb->data points past metadata

From: Jakub Sitnicki <jakub@cloudflare.com>
Date: 2026-01-10 21:05:27

Prepare to copy the XDP metadata into an skb extension in skb_metadata_set.

Adjust the driver to pull from skb->data before calling skb_metadata_set.

Signed-off-by: Jakub Sitnicki <jakub@cloudflare.com>
---
 drivers/net/ethernet/broadcom/bnxt/bnxt.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
index 8419d1eb4035..7d0d81d29167 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
@@ -1440,8 +1440,8 @@ static struct sk_buff *bnxt_copy_xdp(struct bnxt_napi *bnapi,
 		return skb;
 
 	if (metasize) {
-		skb_metadata_set(skb, metasize);
 		__skb_pull(skb, metasize);
+		skb_metadata_set(skb, metasize);
 	}
 
 	return skb;
-- 
2.43.0

[PATCH net-next 03/10] i40e: Call skb_metadata_set when skb->data points past metadata

From: Jakub Sitnicki <jakub@cloudflare.com>
Date: 2026-01-10 21:05:28

Prepare to copy the XDP metadata into an skb extension in skb_metadata_set.

Adjust the driver to pull from skb->data before calling skb_metadata_set.

Signed-off-by: Jakub Sitnicki <jakub@cloudflare.com>
---
 drivers/net/ethernet/intel/i40e/i40e_xsk.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/intel/i40e/i40e_xsk.c b/drivers/net/ethernet/intel/i40e/i40e_xsk.c
index 9f47388eaba5..11eff5bd840b 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_xsk.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_xsk.c
@@ -310,8 +310,8 @@ static struct sk_buff *i40e_construct_skb_zc(struct i40e_ring *rx_ring,
 	       ALIGN(totalsize, sizeof(long)));
 
 	if (metasize) {
-		skb_metadata_set(skb, metasize);
 		__skb_pull(skb, metasize);
+		skb_metadata_set(skb, metasize);
 	}
 
 	if (likely(!xdp_buff_has_frags(xdp)))
-- 
2.43.0

[PATCH net-next 04/10] igb: Call skb_metadata_set when skb->data points past metadata

From: Jakub Sitnicki <jakub@cloudflare.com>
Date: 2026-01-10 21:05:29

Prepare to copy the XDP metadata into an skb extension in skb_metadata_set.

Adjust the driver to pull from skb->data before calling skb_metadata_set.

Signed-off-by: Jakub Sitnicki <jakub@cloudflare.com>
---
 drivers/net/ethernet/intel/igb/igb_xsk.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/intel/igb/igb_xsk.c b/drivers/net/ethernet/intel/igb/igb_xsk.c
index 30ce5fbb5b77..9202da66e32c 100644
--- a/drivers/net/ethernet/intel/igb/igb_xsk.c
+++ b/drivers/net/ethernet/intel/igb/igb_xsk.c
@@ -284,8 +284,8 @@ static struct sk_buff *igb_construct_skb_zc(struct igb_ring *rx_ring,
 	       ALIGN(totalsize, sizeof(long)));
 
 	if (metasize) {
-		skb_metadata_set(skb, metasize);
 		__skb_pull(skb, metasize);
+		skb_metadata_set(skb, metasize);
 	}
 
 	return skb;
-- 
2.43.0

[PATCH net-next 05/10] igc: Call skb_metadata_set when skb->data points past metadata

From: Jakub Sitnicki <jakub@cloudflare.com>
Date: 2026-01-10 21:05:31

Prepare to copy the XDP metadata into an skb extension in skb_metadata_set.

Adjust the driver to pull from skb->data before calling skb_metadata_set.

Signed-off-by: Jakub Sitnicki <jakub@cloudflare.com>
---
 drivers/net/ethernet/intel/igc/igc_main.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ethernet/intel/igc/igc_main.c b/drivers/net/ethernet/intel/igc/igc_main.c
index 7aafa60ba0c8..ba758399615b 100644
--- a/drivers/net/ethernet/intel/igc/igc_main.c
+++ b/drivers/net/ethernet/intel/igc/igc_main.c
@@ -2024,8 +2024,8 @@ static struct sk_buff *igc_construct_skb(struct igc_ring *rx_ring,
 	       ALIGN(headlen + metasize, sizeof(long)));
 
 	if (metasize) {
-		skb_metadata_set(skb, metasize);
 		__skb_pull(skb, metasize);
+		skb_metadata_set(skb, metasize);
 	}
 
 	/* update all of the pointers */
@@ -2752,8 +2752,8 @@ static struct sk_buff *igc_construct_skb_zc(struct igc_ring *ring,
 	       ALIGN(totalsize, sizeof(long)));
 
 	if (metasize) {
-		skb_metadata_set(skb, metasize);
 		__skb_pull(skb, metasize);
+		skb_metadata_set(skb, metasize);
 	}
 
 	if (ctx->rx_ts) {
-- 
2.43.0

[PATCH net-next 06/10] ixgbe: Call skb_metadata_set when skb->data points past metadata

From: Jakub Sitnicki <jakub@cloudflare.com>
Date: 2026-01-10 21:05:32

Prepare to copy the XDP metadata into an skb extension in skb_metadata_set.

Adjust the driver to pull from skb->data before calling skb_metadata_set.

Signed-off-by: Jakub Sitnicki <jakub@cloudflare.com>
---
 drivers/net/ethernet/intel/ixgbe/ixgbe_xsk.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_xsk.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_xsk.c
index 7b941505a9d0..69104f432f8d 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_xsk.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_xsk.c
@@ -228,8 +228,8 @@ static struct sk_buff *ixgbe_construct_skb_zc(struct ixgbe_ring *rx_ring,
 	       ALIGN(totalsize, sizeof(long)));
 
 	if (metasize) {
-		skb_metadata_set(skb, metasize);
 		__skb_pull(skb, metasize);
+		skb_metadata_set(skb, metasize);
 	}
 
 	return skb;
-- 
2.43.0

[PATCH net-next 07/10] mlx5e: Call skb_metadata_set when skb->data points past metadata

From: Jakub Sitnicki <jakub@cloudflare.com>
Date: 2026-01-10 21:05:33

Prepare to copy the XDP metadata into an skb extension in skb_metadata_set.

Adjust the driver to pull from skb->data before calling skb_metadata_set.

Signed-off-by: Jakub Sitnicki <jakub@cloudflare.com>
---
 drivers/net/ethernet/mellanox/mlx5/core/en/xsk/rx.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/xsk/rx.c b/drivers/net/ethernet/mellanox/mlx5/core/en/xsk/rx.c
index 2b05536d564a..20c983c3ce62 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en/xsk/rx.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en/xsk/rx.c
@@ -237,8 +237,8 @@ static struct sk_buff *mlx5e_xsk_construct_skb(struct mlx5e_rq *rq, struct xdp_b
 	skb_put_data(skb, xdp->data_meta, totallen);
 
 	if (metalen) {
-		skb_metadata_set(skb, metalen);
 		__skb_pull(skb, metalen);
+		skb_metadata_set(skb, metalen);
 	}
 
 	return skb;
-- 
2.43.0

[PATCH net-next 08/10] veth: Call skb_metadata_set when skb->data points past metadata

From: Jakub Sitnicki <jakub@cloudflare.com>
Date: 2026-01-10 21:05:35

Prepare to copy the XDP metadata into an skb extension in skb_metadata_set.

Unlike other drivers, veth calls skb_metadata_set after eth_type_trans,
which pulls the Ethernet header and moves skb->data. This violates the
new contract with skb_metadata.

Adjust the driver to pull the MAC header after calling skb_metadata_set.

Signed-off-by: Jakub Sitnicki <jakub@cloudflare.com>
---
 drivers/net/veth.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/veth.c b/drivers/net/veth.c
index 14e6f2a2fb77..1d1dbfa2e5ef 100644
--- a/drivers/net/veth.c
+++ b/drivers/net/veth.c
@@ -874,11 +874,11 @@ static struct sk_buff *veth_xdp_rcv_skb(struct veth_rq *rq,
 	else
 		skb->data_len = 0;
 
-	skb->protocol = eth_type_trans(skb, rq->dev);
-
 	metalen = xdp->data - xdp->data_meta;
 	if (metalen)
 		skb_metadata_set(skb, metalen);
+
+	skb->protocol = eth_type_trans(skb, rq->dev);
 out:
 	return skb;
 drop:
-- 
2.43.0

[PATCH net-next 09/10] xsk: Call skb_metadata_set when skb->data points past metadata

From: Jakub Sitnicki <jakub@cloudflare.com>
Date: 2026-01-10 21:05:36

Prepare to copy the XDP metadata into an skb extension in skb_metadata_set.

Adjust AF_XDP to pull from skb->data before calling skb_metadata_set.

Signed-off-by: Jakub Sitnicki <jakub@cloudflare.com>
---
 net/core/xdp.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/net/core/xdp.c b/net/core/xdp.c
index 9100e160113a..e86ac1d6ad6d 100644
--- a/net/core/xdp.c
+++ b/net/core/xdp.c
@@ -768,8 +768,8 @@ struct sk_buff *xdp_build_skb_from_zc(struct xdp_buff *xdp)
 
 	metalen = xdp->data - xdp->data_meta;
 	if (metalen > 0) {
-		skb_metadata_set(skb, metalen);
 		__skb_pull(skb, metalen);
+		skb_metadata_set(skb, metalen);
 	}
 
 	skb_record_rx_queue(skb, rxq->queue_index);
-- 
2.43.0

[PATCH net-next 10/10] xdp: Call skb_metadata_set when skb->data points past metadata

From: Jakub Sitnicki <jakub@cloudflare.com>
Date: 2026-01-10 21:05:39

Prepare to copy the XDP metadata into an skb extension in skb_metadata_set.

XDP generic mode runs after MAC header has been already pulled. Adjust
skb->data before calling skb_metadata_set to adhere to new contract.

Signed-off-by: Jakub Sitnicki <jakub@cloudflare.com>
---
 net/core/dev.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/net/core/dev.c b/net/core/dev.c
index c711da335510..f8e5672e835f 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -5468,8 +5468,11 @@ u32 bpf_prog_run_generic_xdp(struct sk_buff *skb, struct xdp_buff *xdp,
 		break;
 	case XDP_PASS:
 		metalen = xdp->data - xdp->data_meta;
-		if (metalen)
+		if (metalen) {
+			__skb_push(skb, mac_len);
 			skb_metadata_set(skb, metalen);
+			__skb_pull(skb, mac_len);
+		}
 		break;
 	}
 
-- 
2.43.0

RE: [Intel-wired-lan] [PATCH net-next 01/10] net: Document skb_metadata_set contract with the drivers

From: Loktionov, Aleksandr <hidden>
Date: 2026-01-12 11:29:00

quoted hunk
-----Original Message-----
From: Intel-wired-lan <redacted> On Behalf
Of Jakub Sitnicki via Intel-wired-lan
Sent: Saturday, January 10, 2026 10:05 PM
To: netdev@vger.kernel.org
Cc: David S. Miller <davem@davemloft.net>; Eric Dumazet
[off-list ref]; Jakub Kicinski [off-list ref]; Paolo Abeni
[off-list ref]; Simon Horman [off-list ref]; Michael Chan
[off-list ref]; Pavan Chebbi [off-list ref];
Andrew Lunn [off-list ref]; Nguyen, Anthony L
[off-list ref]; Kitszel, Przemyslaw
[off-list ref]; Saeed Mahameed [off-list ref];
Leon Romanovsky [off-list ref]; Tariq Toukan [off-list ref];
Mark Bloch [off-list ref]; Alexei Starovoitov [off-list ref];
Daniel Borkmann [off-list ref]; Jesper Dangaard Brouer
[off-list ref]; John Fastabend [off-list ref];
Stanislav Fomichev [off-list ref]; intel-wired-
lan@lists.osuosl.org; bpf@vger.kernel.org; kernel-team@cloudflare.com
Subject: [Intel-wired-lan] [PATCH net-next 01/10] net: Document
skb_metadata_set contract with the drivers

Prepare to copy XDP metadata into an skb extension chunk. To access
the metadata contents, we need to know where it is located. Document
the expectation - skb->data must point right past the metadata when
skb_metadata_set gets called.

Signed-off-by: Jakub Sitnicki <jakub@cloudflare.com>
---
 include/linux/skbuff.h | 7 +++++++
 1 file changed, 7 insertions(+)
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index
86737076101d..df001283076f 100644
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -4554,6 +4554,13 @@ static inline bool skb_metadata_differs(const
struct sk_buff *skb_a,
 	       true : __skb_metadata_differs(skb_a, skb_b, len_a);  }

+/**
+ * skb_metadata_set - Record packet metadata length.
+ * @skb: packet carrying the metadata
+ * @meta_len: number of bytes of metadata preceding skb->data
+ *
+ * Must be called when skb->data already points past the metadata
area.
+ */
 static inline void skb_metadata_set(struct sk_buff *skb, u8 meta_len)
{
 	skb_shinfo(skb)->meta_len = meta_len;

--
2.43.0
Reviewed-by: Aleksandr Loktionov <redacted>

RE: [Intel-wired-lan] [PATCH net-next 02/10] bnxt_en: Call skb_metadata_set when skb->data points past metadata

From: Loktionov, Aleksandr <hidden>
Date: 2026-01-12 11:29:54

quoted hunk
-----Original Message-----
From: Intel-wired-lan <redacted> On Behalf
Of Jakub Sitnicki via Intel-wired-lan
Sent: Saturday, January 10, 2026 10:05 PM
To: netdev@vger.kernel.org
Cc: David S. Miller <davem@davemloft.net>; Eric Dumazet
[off-list ref]; Jakub Kicinski [off-list ref]; Paolo Abeni
[off-list ref]; Simon Horman [off-list ref]; Michael Chan
[off-list ref]; Pavan Chebbi [off-list ref];
Andrew Lunn [off-list ref]; Nguyen, Anthony L
[off-list ref]; Kitszel, Przemyslaw
[off-list ref]; Saeed Mahameed [off-list ref];
Leon Romanovsky [off-list ref]; Tariq Toukan [off-list ref];
Mark Bloch [off-list ref]; Alexei Starovoitov [off-list ref];
Daniel Borkmann [off-list ref]; Jesper Dangaard Brouer
[off-list ref]; John Fastabend [off-list ref];
Stanislav Fomichev [off-list ref]; intel-wired-
lan@lists.osuosl.org; bpf@vger.kernel.org; kernel-team@cloudflare.com
Subject: [Intel-wired-lan] [PATCH net-next 02/10] bnxt_en: Call
skb_metadata_set when skb->data points past metadata

Prepare to copy the XDP metadata into an skb extension in
skb_metadata_set.

Adjust the driver to pull from skb->data before calling
skb_metadata_set.

Signed-off-by: Jakub Sitnicki <jakub@cloudflare.com>
---
 drivers/net/ethernet/broadcom/bnxt/bnxt.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
index 8419d1eb4035..7d0d81d29167 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
@@ -1440,8 +1440,8 @@ static struct sk_buff *bnxt_copy_xdp(struct
bnxt_napi *bnapi,
 		return skb;

 	if (metasize) {
-		skb_metadata_set(skb, metasize);
 		__skb_pull(skb, metasize);
+		skb_metadata_set(skb, metasize);
 	}

 	return skb;

--
2.43.0
Reviewed-by: Aleksandr Loktionov <redacted>

RE: [Intel-wired-lan] [PATCH net-next 03/10] i40e: Call skb_metadata_set when skb->data points past metadata

From: Loktionov, Aleksandr <hidden>
Date: 2026-01-12 11:30:39

quoted hunk
-----Original Message-----
From: Intel-wired-lan <redacted> On Behalf
Of Jakub Sitnicki via Intel-wired-lan
Sent: Saturday, January 10, 2026 10:05 PM
To: netdev@vger.kernel.org
Cc: David S. Miller <davem@davemloft.net>; Eric Dumazet
[off-list ref]; Jakub Kicinski [off-list ref]; Paolo Abeni
[off-list ref]; Simon Horman [off-list ref]; Michael Chan
[off-list ref]; Pavan Chebbi [off-list ref];
Andrew Lunn [off-list ref]; Nguyen, Anthony L
[off-list ref]; Kitszel, Przemyslaw
[off-list ref]; Saeed Mahameed [off-list ref];
Leon Romanovsky [off-list ref]; Tariq Toukan [off-list ref];
Mark Bloch [off-list ref]; Alexei Starovoitov [off-list ref];
Daniel Borkmann [off-list ref]; Jesper Dangaard Brouer
[off-list ref]; John Fastabend [off-list ref];
Stanislav Fomichev [off-list ref]; intel-wired-
lan@lists.osuosl.org; bpf@vger.kernel.org; kernel-team@cloudflare.com
Subject: [Intel-wired-lan] [PATCH net-next 03/10] i40e: Call
skb_metadata_set when skb->data points past metadata

Prepare to copy the XDP metadata into an skb extension in
skb_metadata_set.

Adjust the driver to pull from skb->data before calling
skb_metadata_set.

Signed-off-by: Jakub Sitnicki <jakub@cloudflare.com>
---
 drivers/net/ethernet/intel/i40e/i40e_xsk.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/intel/i40e/i40e_xsk.c
b/drivers/net/ethernet/intel/i40e/i40e_xsk.c
index 9f47388eaba5..11eff5bd840b 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_xsk.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_xsk.c
@@ -310,8 +310,8 @@ static struct sk_buff
*i40e_construct_skb_zc(struct i40e_ring *rx_ring,
 	       ALIGN(totalsize, sizeof(long)));

 	if (metasize) {
-		skb_metadata_set(skb, metasize);
 		__skb_pull(skb, metasize);
+		skb_metadata_set(skb, metasize);
 	}

 	if (likely(!xdp_buff_has_frags(xdp)))

--
2.43.0
Reviewed-by: Aleksandr Loktionov <redacted>

RE: [Intel-wired-lan] [PATCH net-next 04/10] igb: Call skb_metadata_set when skb->data points past metadata

From: Loktionov, Aleksandr <hidden>
Date: 2026-01-12 11:31:17

quoted hunk
-----Original Message-----
From: Intel-wired-lan <redacted> On Behalf
Of Jakub Sitnicki via Intel-wired-lan
Sent: Saturday, January 10, 2026 10:05 PM
To: netdev@vger.kernel.org
Cc: David S. Miller <davem@davemloft.net>; Eric Dumazet
[off-list ref]; Jakub Kicinski [off-list ref]; Paolo Abeni
[off-list ref]; Simon Horman [off-list ref]; Michael Chan
[off-list ref]; Pavan Chebbi [off-list ref];
Andrew Lunn [off-list ref]; Nguyen, Anthony L
[off-list ref]; Kitszel, Przemyslaw
[off-list ref]; Saeed Mahameed [off-list ref];
Leon Romanovsky [off-list ref]; Tariq Toukan [off-list ref];
Mark Bloch [off-list ref]; Alexei Starovoitov [off-list ref];
Daniel Borkmann [off-list ref]; Jesper Dangaard Brouer
[off-list ref]; John Fastabend [off-list ref];
Stanislav Fomichev [off-list ref]; intel-wired-
lan@lists.osuosl.org; bpf@vger.kernel.org; kernel-team@cloudflare.com
Subject: [Intel-wired-lan] [PATCH net-next 04/10] igb: Call
skb_metadata_set when skb->data points past metadata

Prepare to copy the XDP metadata into an skb extension in
skb_metadata_set.

Adjust the driver to pull from skb->data before calling
skb_metadata_set.

Signed-off-by: Jakub Sitnicki <jakub@cloudflare.com>
---
 drivers/net/ethernet/intel/igb/igb_xsk.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/intel/igb/igb_xsk.c
b/drivers/net/ethernet/intel/igb/igb_xsk.c
index 30ce5fbb5b77..9202da66e32c 100644
--- a/drivers/net/ethernet/intel/igb/igb_xsk.c
+++ b/drivers/net/ethernet/intel/igb/igb_xsk.c
@@ -284,8 +284,8 @@ static struct sk_buff *igb_construct_skb_zc(struct
igb_ring *rx_ring,
 	       ALIGN(totalsize, sizeof(long)));

 	if (metasize) {
-		skb_metadata_set(skb, metasize);
 		__skb_pull(skb, metasize);
+		skb_metadata_set(skb, metasize);
 	}

 	return skb;

--
2.43.0
Reviewed-by: Aleksandr Loktionov <redacted>

RE: [Intel-wired-lan] [PATCH net-next 05/10] igc: Call skb_metadata_set when skb->data points past metadata

From: Loktionov, Aleksandr <hidden>
Date: 2026-01-12 11:31:45

quoted hunk
-----Original Message-----
From: Intel-wired-lan <redacted> On Behalf
Of Jakub Sitnicki via Intel-wired-lan
Sent: Saturday, January 10, 2026 10:05 PM
To: netdev@vger.kernel.org
Cc: David S. Miller <davem@davemloft.net>; Eric Dumazet
[off-list ref]; Jakub Kicinski [off-list ref]; Paolo Abeni
[off-list ref]; Simon Horman [off-list ref]; Michael Chan
[off-list ref]; Pavan Chebbi [off-list ref];
Andrew Lunn [off-list ref]; Nguyen, Anthony L
[off-list ref]; Kitszel, Przemyslaw
[off-list ref]; Saeed Mahameed [off-list ref];
Leon Romanovsky [off-list ref]; Tariq Toukan [off-list ref];
Mark Bloch [off-list ref]; Alexei Starovoitov [off-list ref];
Daniel Borkmann [off-list ref]; Jesper Dangaard Brouer
[off-list ref]; John Fastabend [off-list ref];
Stanislav Fomichev [off-list ref]; intel-wired-
lan@lists.osuosl.org; bpf@vger.kernel.org; kernel-team@cloudflare.com
Subject: [Intel-wired-lan] [PATCH net-next 05/10] igc: Call
skb_metadata_set when skb->data points past metadata

Prepare to copy the XDP metadata into an skb extension in
skb_metadata_set.

Adjust the driver to pull from skb->data before calling
skb_metadata_set.

Signed-off-by: Jakub Sitnicki <jakub@cloudflare.com>
---
 drivers/net/ethernet/intel/igc/igc_main.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ethernet/intel/igc/igc_main.c
b/drivers/net/ethernet/intel/igc/igc_main.c
index 7aafa60ba0c8..ba758399615b 100644
--- a/drivers/net/ethernet/intel/igc/igc_main.c
+++ b/drivers/net/ethernet/intel/igc/igc_main.c
@@ -2024,8 +2024,8 @@ static struct sk_buff *igc_construct_skb(struct
igc_ring *rx_ring,
 	       ALIGN(headlen + metasize, sizeof(long)));

 	if (metasize) {
-		skb_metadata_set(skb, metasize);
 		__skb_pull(skb, metasize);
+		skb_metadata_set(skb, metasize);
 	}

 	/* update all of the pointers */
@@ -2752,8 +2752,8 @@ static struct sk_buff
*igc_construct_skb_zc(struct igc_ring *ring,
 	       ALIGN(totalsize, sizeof(long)));

 	if (metasize) {
-		skb_metadata_set(skb, metasize);
 		__skb_pull(skb, metasize);
+		skb_metadata_set(skb, metasize);
 	}

 	if (ctx->rx_ts) {

--
2.43.0
Reviewed-by: Aleksandr Loktionov <redacted>

RE: [Intel-wired-lan] [PATCH net-next 06/10] ixgbe: Call skb_metadata_set when skb->data points past metadata

From: Loktionov, Aleksandr <hidden>
Date: 2026-01-12 11:32:50

quoted hunk
-----Original Message-----
From: Intel-wired-lan <redacted> On Behalf
Of Jakub Sitnicki via Intel-wired-lan
Sent: Saturday, January 10, 2026 10:05 PM
To: netdev@vger.kernel.org
Cc: David S. Miller <davem@davemloft.net>; Eric Dumazet
[off-list ref]; Jakub Kicinski [off-list ref]; Paolo Abeni
[off-list ref]; Simon Horman [off-list ref]; Michael Chan
[off-list ref]; Pavan Chebbi [off-list ref];
Andrew Lunn [off-list ref]; Nguyen, Anthony L
[off-list ref]; Kitszel, Przemyslaw
[off-list ref]; Saeed Mahameed [off-list ref];
Leon Romanovsky [off-list ref]; Tariq Toukan [off-list ref];
Mark Bloch [off-list ref]; Alexei Starovoitov [off-list ref];
Daniel Borkmann [off-list ref]; Jesper Dangaard Brouer
[off-list ref]; John Fastabend [off-list ref];
Stanislav Fomichev [off-list ref]; intel-wired-
lan@lists.osuosl.org; bpf@vger.kernel.org; kernel-team@cloudflare.com
Subject: [Intel-wired-lan] [PATCH net-next 06/10] ixgbe: Call
skb_metadata_set when skb->data points past metadata

Prepare to copy the XDP metadata into an skb extension in
skb_metadata_set.

Adjust the driver to pull from skb->data before calling
skb_metadata_set.

Signed-off-by: Jakub Sitnicki <jakub@cloudflare.com>
---
 drivers/net/ethernet/intel/ixgbe/ixgbe_xsk.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_xsk.c
b/drivers/net/ethernet/intel/ixgbe/ixgbe_xsk.c
index 7b941505a9d0..69104f432f8d 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_xsk.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_xsk.c
@@ -228,8 +228,8 @@ static struct sk_buff
*ixgbe_construct_skb_zc(struct ixgbe_ring *rx_ring,
 	       ALIGN(totalsize, sizeof(long)));

 	if (metasize) {
-		skb_metadata_set(skb, metasize);
 		__skb_pull(skb, metasize);
+		skb_metadata_set(skb, metasize);
 	}

 	return skb;

--
2.43.0
Reviewed-by: Aleksandr Loktionov <redacted>

RE: [Intel-wired-lan] [PATCH net-next 07/10] mlx5e: Call skb_metadata_set when skb->data points past metadata

From: Loktionov, Aleksandr <hidden>
Date: 2026-01-12 11:33:02

quoted hunk
-----Original Message-----
From: Intel-wired-lan <redacted> On Behalf
Of Jakub Sitnicki via Intel-wired-lan
Sent: Saturday, January 10, 2026 10:05 PM
To: netdev@vger.kernel.org
Cc: David S. Miller <davem@davemloft.net>; Eric Dumazet
[off-list ref]; Jakub Kicinski [off-list ref]; Paolo Abeni
[off-list ref]; Simon Horman [off-list ref]; Michael Chan
[off-list ref]; Pavan Chebbi [off-list ref];
Andrew Lunn [off-list ref]; Nguyen, Anthony L
[off-list ref]; Kitszel, Przemyslaw
[off-list ref]; Saeed Mahameed [off-list ref];
Leon Romanovsky [off-list ref]; Tariq Toukan [off-list ref];
Mark Bloch [off-list ref]; Alexei Starovoitov [off-list ref];
Daniel Borkmann [off-list ref]; Jesper Dangaard Brouer
[off-list ref]; John Fastabend [off-list ref];
Stanislav Fomichev [off-list ref]; intel-wired-
lan@lists.osuosl.org; bpf@vger.kernel.org; kernel-team@cloudflare.com
Subject: [Intel-wired-lan] [PATCH net-next 07/10] mlx5e: Call
skb_metadata_set when skb->data points past metadata

Prepare to copy the XDP metadata into an skb extension in
skb_metadata_set.

Adjust the driver to pull from skb->data before calling
skb_metadata_set.

Signed-off-by: Jakub Sitnicki <jakub@cloudflare.com>
---
 drivers/net/ethernet/mellanox/mlx5/core/en/xsk/rx.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/xsk/rx.c
b/drivers/net/ethernet/mellanox/mlx5/core/en/xsk/rx.c
index 2b05536d564a..20c983c3ce62 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en/xsk/rx.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en/xsk/rx.c
@@ -237,8 +237,8 @@ static struct sk_buff
*mlx5e_xsk_construct_skb(struct mlx5e_rq *rq, struct xdp_b
 	skb_put_data(skb, xdp->data_meta, totallen);

 	if (metalen) {
-		skb_metadata_set(skb, metalen);
 		__skb_pull(skb, metalen);
+		skb_metadata_set(skb, metalen);
 	}

 	return skb;

--
2.43.0
Reviewed-by: Aleksandr Loktionov <redacted>

RE: [Intel-wired-lan] [PATCH net-next 08/10] veth: Call skb_metadata_set when skb->data points past metadata

From: Loktionov, Aleksandr <hidden>
Date: 2026-01-12 11:33:14

quoted hunk
-----Original Message-----
From: Intel-wired-lan <redacted> On Behalf
Of Jakub Sitnicki via Intel-wired-lan
Sent: Saturday, January 10, 2026 10:05 PM
To: netdev@vger.kernel.org
Cc: David S. Miller <davem@davemloft.net>; Eric Dumazet
[off-list ref]; Jakub Kicinski [off-list ref]; Paolo Abeni
[off-list ref]; Simon Horman [off-list ref]; Michael Chan
[off-list ref]; Pavan Chebbi [off-list ref];
Andrew Lunn [off-list ref]; Nguyen, Anthony L
[off-list ref]; Kitszel, Przemyslaw
[off-list ref]; Saeed Mahameed [off-list ref];
Leon Romanovsky [off-list ref]; Tariq Toukan [off-list ref];
Mark Bloch [off-list ref]; Alexei Starovoitov [off-list ref];
Daniel Borkmann [off-list ref]; Jesper Dangaard Brouer
[off-list ref]; John Fastabend [off-list ref];
Stanislav Fomichev [off-list ref]; intel-wired-
lan@lists.osuosl.org; bpf@vger.kernel.org; kernel-team@cloudflare.com
Subject: [Intel-wired-lan] [PATCH net-next 08/10] veth: Call
skb_metadata_set when skb->data points past metadata

Prepare to copy the XDP metadata into an skb extension in
skb_metadata_set.

Unlike other drivers, veth calls skb_metadata_set after
eth_type_trans, which pulls the Ethernet header and moves skb->data.
This violates the new contract with skb_metadata.

Adjust the driver to pull the MAC header after calling
skb_metadata_set.

Signed-off-by: Jakub Sitnicki <jakub@cloudflare.com>
---
 drivers/net/veth.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/veth.c b/drivers/net/veth.c index
14e6f2a2fb77..1d1dbfa2e5ef 100644
--- a/drivers/net/veth.c
+++ b/drivers/net/veth.c
@@ -874,11 +874,11 @@ static struct sk_buff *veth_xdp_rcv_skb(struct
veth_rq *rq,
 	else
 		skb->data_len = 0;

-	skb->protocol = eth_type_trans(skb, rq->dev);
-
 	metalen = xdp->data - xdp->data_meta;
 	if (metalen)
 		skb_metadata_set(skb, metalen);
+
+	skb->protocol = eth_type_trans(skb, rq->dev);
 out:
 	return skb;
 drop:

--
2.43.0
Reviewed-by: Aleksandr Loktionov <redacted>

RE: [Intel-wired-lan] [PATCH net-next 09/10] xsk: Call skb_metadata_set when skb->data points past metadata

From: Loktionov, Aleksandr <hidden>
Date: 2026-01-12 11:33:32

quoted hunk
-----Original Message-----
From: Intel-wired-lan <redacted> On Behalf
Of Jakub Sitnicki via Intel-wired-lan
Sent: Saturday, January 10, 2026 10:05 PM
To: netdev@vger.kernel.org
Cc: David S. Miller <davem@davemloft.net>; Eric Dumazet
[off-list ref]; Jakub Kicinski [off-list ref]; Paolo Abeni
[off-list ref]; Simon Horman [off-list ref]; Michael Chan
[off-list ref]; Pavan Chebbi [off-list ref];
Andrew Lunn [off-list ref]; Nguyen, Anthony L
[off-list ref]; Kitszel, Przemyslaw
[off-list ref]; Saeed Mahameed [off-list ref];
Leon Romanovsky [off-list ref]; Tariq Toukan [off-list ref];
Mark Bloch [off-list ref]; Alexei Starovoitov [off-list ref];
Daniel Borkmann [off-list ref]; Jesper Dangaard Brouer
[off-list ref]; John Fastabend [off-list ref];
Stanislav Fomichev [off-list ref]; intel-wired-
lan@lists.osuosl.org; bpf@vger.kernel.org; kernel-team@cloudflare.com
Subject: [Intel-wired-lan] [PATCH net-next 09/10] xsk: Call
skb_metadata_set when skb->data points past metadata

Prepare to copy the XDP metadata into an skb extension in
skb_metadata_set.

Adjust AF_XDP to pull from skb->data before calling skb_metadata_set.

Signed-off-by: Jakub Sitnicki <jakub@cloudflare.com>
---
 net/core/xdp.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/net/core/xdp.c b/net/core/xdp.c index
9100e160113a..e86ac1d6ad6d 100644
--- a/net/core/xdp.c
+++ b/net/core/xdp.c
@@ -768,8 +768,8 @@ struct sk_buff *xdp_build_skb_from_zc(struct
xdp_buff *xdp)

 	metalen = xdp->data - xdp->data_meta;
 	if (metalen > 0) {
-		skb_metadata_set(skb, metalen);
 		__skb_pull(skb, metalen);
+		skb_metadata_set(skb, metalen);
 	}

 	skb_record_rx_queue(skb, rxq->queue_index);

--
2.43.0
Reviewed-by: Aleksandr Loktionov <redacted>

RE: [Intel-wired-lan] [PATCH net-next 10/10] xdp: Call skb_metadata_set when skb->data points past metadata

From: Loktionov, Aleksandr <hidden>
Date: 2026-01-12 11:33:37

quoted hunk
-----Original Message-----
From: Intel-wired-lan <redacted> On Behalf
Of Jakub Sitnicki via Intel-wired-lan
Sent: Saturday, January 10, 2026 10:05 PM
To: netdev@vger.kernel.org
Cc: David S. Miller <davem@davemloft.net>; Eric Dumazet
[off-list ref]; Jakub Kicinski [off-list ref]; Paolo Abeni
[off-list ref]; Simon Horman [off-list ref]; Michael Chan
[off-list ref]; Pavan Chebbi [off-list ref];
Andrew Lunn [off-list ref]; Nguyen, Anthony L
[off-list ref]; Kitszel, Przemyslaw
[off-list ref]; Saeed Mahameed [off-list ref];
Leon Romanovsky [off-list ref]; Tariq Toukan [off-list ref];
Mark Bloch [off-list ref]; Alexei Starovoitov [off-list ref];
Daniel Borkmann [off-list ref]; Jesper Dangaard Brouer
[off-list ref]; John Fastabend [off-list ref];
Stanislav Fomichev [off-list ref]; intel-wired-
lan@lists.osuosl.org; bpf@vger.kernel.org; kernel-team@cloudflare.com
Subject: [Intel-wired-lan] [PATCH net-next 10/10] xdp: Call
skb_metadata_set when skb->data points past metadata

Prepare to copy the XDP metadata into an skb extension in
skb_metadata_set.

XDP generic mode runs after MAC header has been already pulled. Adjust
skb->data before calling skb_metadata_set to adhere to new contract.

Signed-off-by: Jakub Sitnicki <jakub@cloudflare.com>
---
 net/core/dev.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/net/core/dev.c b/net/core/dev.c index
c711da335510..f8e5672e835f 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -5468,8 +5468,11 @@ u32 bpf_prog_run_generic_xdp(struct sk_buff
*skb, struct xdp_buff *xdp,
 		break;
 	case XDP_PASS:
 		metalen = xdp->data - xdp->data_meta;
-		if (metalen)
+		if (metalen) {
+			__skb_push(skb, mac_len);
 			skb_metadata_set(skb, metalen);
+			__skb_pull(skb, mac_len);
+		}
 		break;
 	}


--
2.43.0
Reviewed-by: Aleksandr Loktionov <redacted>

Re: [PATCH net-next 00/10] Call skb_metadata_set when skb->data points past metadata

From: Jakub Kicinski <kuba@kernel.org>
Date: 2026-01-13 03:08:58

On Sat, 10 Jan 2026 22:05:14 +0100 Jakub Sitnicki wrote:
This series is split out of [1] following discussion with Jakub.

To copy XDP metadata into an skb extension when skb_metadata_set() is
called, we need to locate the metadata contents.
"When skb_metadata_set() is called"? I think that may cause perf
regressions unless we merge major optimizations at the same time?
Should we defer touching the drivers until we have a PoC and some
idea whether allocating the extension right away is manageable or 
we are better off doing it via a kfunc in TC (after GRO)?
To be clear putting the metadata in an extension right away would
indeed be much cleaner, just not sure how much of the perf hit we 
can optimize away..

Re: [PATCH net-next 07/10] mlx5e: Call skb_metadata_set when skb->data points past metadata

From: Tariq Toukan <hidden>
Date: 2026-01-13 06:08:52


On 10/01/2026 23:05, Jakub Sitnicki wrote:
quoted hunk
Prepare to copy the XDP metadata into an skb extension in skb_metadata_set.

Adjust the driver to pull from skb->data before calling skb_metadata_set.

Signed-off-by: Jakub Sitnicki <jakub@cloudflare.com>
---
  drivers/net/ethernet/mellanox/mlx5/core/en/xsk/rx.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/xsk/rx.c b/drivers/net/ethernet/mellanox/mlx5/core/en/xsk/rx.c
index 2b05536d564a..20c983c3ce62 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en/xsk/rx.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en/xsk/rx.c
@@ -237,8 +237,8 @@ static struct sk_buff *mlx5e_xsk_construct_skb(struct mlx5e_rq *rq, struct xdp_b
  	skb_put_data(skb, xdp->data_meta, totallen);
  
  	if (metalen) {
-		skb_metadata_set(skb, metalen);
  		__skb_pull(skb, metalen);
+		skb_metadata_set(skb, metalen);
  	}
  
  	return skb;
Patch itself is simple..

I share my concerns about the perf impact of the series idea.
Do you have some working PoC? Please share some perf numbers..

Re: [PATCH net-next 00/10] Call skb_metadata_set when skb->data points past metadata

From: Paolo Abeni <pabeni@redhat.com>
Date: 2026-01-13 12:09:51

On 1/13/26 4:08 AM, Jakub Kicinski wrote:
On Sat, 10 Jan 2026 22:05:14 +0100 Jakub Sitnicki wrote:
quoted
This series is split out of [1] following discussion with Jakub.

To copy XDP metadata into an skb extension when skb_metadata_set() is
called, we need to locate the metadata contents.
"When skb_metadata_set() is called"? I think that may cause perf
regressions unless we merge major optimizations at the same time?
Should we defer touching the drivers until we have a PoC and some
idea whether allocating the extension right away is manageable or 
we are better off doing it via a kfunc in TC (after GRO)?
To be clear putting the metadata in an extension right away would
indeed be much cleaner, just not sure how much of the perf hit we 
can optimize away..
I agree it would be better deferring touching the driver before we have
proof there will not be significant regressions.

IIRC, at early MPTCP impl time, Eric suggested increasing struct sk_buff
size as an alternative to the mptcp skb extension, leaving the added
trailing part uninitialized when the sk_buff is allocated.

If skb extensions usage become so ubicuos they are basically allocated
for each packet, the total skb extension is kept under strict control
and remains reasonable (assuming it is :), perhaps we could consider
revisiting the above mentioned approach?

/P

Re: [PATCH net-next 00/10] Call skb_metadata_set when skb->data points past metadata

From: Jesper Dangaard Brouer <hawk@kernel.org>
Date: 2026-01-13 18:53:01


On 13/01/2026 13.09, Paolo Abeni wrote:
On 1/13/26 4:08 AM, Jakub Kicinski wrote:
quoted
On Sat, 10 Jan 2026 22:05:14 +0100 Jakub Sitnicki wrote:
quoted
This series is split out of [1] following discussion with Jakub.

To copy XDP metadata into an skb extension when skb_metadata_set() is
called, we need to locate the metadata contents.
"When skb_metadata_set() is called"? I think that may cause perf
regressions unless we merge major optimizations at the same time?
Should we defer touching the drivers until we have a PoC and some
idea whether allocating the extension right away is manageable or
we are better off doing it via a kfunc in TC (after GRO)?
To be clear putting the metadata in an extension right away would
indeed be much cleaner, just not sure how much of the perf hit we
can optimize away..
I agree it would be better deferring touching the driver before we have
proof there will not be significant regressions.
It will be a performance regression to (as cover-letter says):
  "To copy XDP metadata into an skb extension when skb_metadata_set() is 
called".
The XDP to TC-ingress code path is a fast-path IMHO.

*BUT* this patchset isn't doing that. To me it looks like a cleanup
patchset that simply makes it consistent when skb_metadata_set() called.
Selling it as a pre-requirement for doing copy later seems fishy.

IIRC, at early MPTCP impl time, Eric suggested increasing struct sk_buff
size as an alternative to the mptcp skb extension, leaving the added
trailing part uninitialized when the sk_buff is allocated.

If skb extensions usage become so ubicuos they are basically allocated
for each packet, the total skb extension is kept under strict control
and remains reasonable (assuming it is :), perhaps we could consider
revisiting the above mentioned approach?

I really like this idea.  As using the uninitialized tail room in the
SKB (memory area) will make SKB extensions fast.  Today SKBs are
allocated via SLUB-alloacator cache-aligned so the real size is 256
bytes.  On my system the actual SKB (sk_buff) size is 232 bytes (already
leaving us 24 bytes). The area that gets zero-initialized is only 192
bytes (3 cache-lines).  My experience with the SLUB allocator is that
increasing the object size doesn't increase the allocation cost (below
PAGE_SIZE).  So, the suggestion of simply allocating a larger sk_buff is
valid as it doesn't cost more (if we don't touch those cache-lines).  We
could even make it a CONFIG compile time option how big this area should be.

For Jakub this unfortunately challenge/breaks the design of keeping
data_meta area valid deeper into the netstack.  With all the challenges
around encapsulation/decap it seems hard/infeasible to maintain this
area in-front of the packet data pointer deeper into the netstack.

Instead of blindly copying XDP data_meta area into a single SKB
extension.  What if we make it the responsibility of the TC-ingress BPF-
hook to understand the data_meta format and via (kfunc) helpers
transfer/create the SKB extension that it deems relevant.
Would this be an acceptable approach that makes it easier to propagate
metadata deeper in netstack?

--Jesper

p.s. For compact storage of SKB extensions in the SKB tail-area, we
could revisit Arthur's "traits" (compact-KV storage).
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help