Re: [PATCH net-next v9 8/9] geneve: Enable BIG TCP packets
From: Alice Mikityanska <hidden>
Date: 2026-07-16 18:45:46
On Thu, 16 Jul 2026 at 17:48, Simon Horman [off-list ref] wrote:
quoted hunk ↗ jump to hunk
This is an AI-generated review of your patch. The human sending this email has considered the AI review valid, or at least plausible. Full review at: https://sashiko.dev ------ Patch [8]: [PATCH net-next v9 8/9] geneve: Enable BIG TCP packets ---commit d560b2b7c8bd97bea9e23790fdfc21cfe031b961 Author: Alice Mikityanska [off-list ref] geneve: Enable BIG TCP packets In Cilium we do support BIG TCP, but so far the latter has only been enabled for direct routing use-cases. A lot of users rely on Cilium with vxlan/geneve tunneling though. The underlying kernel infra for tunneling has not been supporting BIG TCP up to this point.quoted
diff --git a/drivers/net/geneve.c b/drivers/net/geneve.c index 011bf9d833caf..a1639ad53077e 100644 --- a/drivers/net/geneve.c +++ b/drivers/net/geneve.c@@ -1745,6 +1745,8 @@ static void geneve_setup(struct net_device *dev) dev->max_mtu = IP_MAX_MTU - GENEVE_BASE_HLEN - dev->hard_header_len; netif_keep_dst(dev); + netif_set_tso_max_size(dev, GSO_MAX_SIZE); +[Severity: High] This is a pre-existing issue, but by enabling BIG TCP on Geneve, will it expose a bug where valid BIG TCP packets are incorrectly dropped?
BIG TCP on Geneve is not broken (and the selftest shows that), but see below...
In geneve_post_decap_hint(), there is a legacy size check that rejects
packets aggregated by GRO to sizes >= 65536 bytes:
drivers/net/geneve.c:geneve_post_decap_hint() {
...
total_len = skb->len - gro_hint->nested_nh_offset;
if (total_len >= GRO_LEGACY_MAX_SIZE)
return -E2BIG;
...
}
When BIG TCP is enabled and the Geneve tunnel is configured with gro_hint,
large flows are aggregated by GRO into packets exceeding 64KB. This will hit
the legacy check and return -E2BIG, causing packet loss for large flows....This concern looks valid: in the double Geneve setup with gro_hint enabled BIG TCP aggregate packets will be dropped. Since this is an incompatibility between two opt-in features (BIG TCP and GRO hint), which doesn't affect single Geneve, can it be addressed in a follow-up? I can see how geneve_post_decap_hint may be altered, but it sure needs testing. Thanks, Alice
quoted
dev->priv_flags &= ~IFF_TX_SKB_SHARING; dev->priv_flags |= IFF_LIVE_ADDR_CHANGE | IFF_NO_QUEUE; dev->lltx = true;