Skip to content

Commit 6e31a0a

Browse files
grumvalskirfuchs
authored andcommitted
MT#55283 kernel-module: zero queue_mapping before forwarding to fix Cilium throttle drop
Change-Id: Ib559d291023bcb3ca691f0c8bd66a634ed451aff (cherry picked from commit ee99d86)
1 parent f21104e commit 6e31a0a

1 file changed

Lines changed: 10 additions & 0 deletions

File tree

kernel-module/xt_RTPENGINE.c

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4946,6 +4946,13 @@ static int send_proxy_packet4(struct sk_buff *skb, struct re_address *src, struc
49464946
}
49474947

49484948
ip_select_ident(net, skb, NULL);
4949+
/* Zero queue_mapping: the skb is a copy of the received packet and
4950+
* inherits the NIC RX queue index. On Cilium/GKE DPv2 nodes the
4951+
* egress TC BPF program (cil_to_netdev) uses queue_mapping as an EDT
4952+
* bandwidth-throttle aggregate key; a non-zero value enters the
4953+
* throttle code path which can tail-call into TC_ACT_SHOT when the
4954+
* aggregate slot is uninitialised. */
4955+
skb->queue_mapping = 0;
49494956
ip_local_out(net, skb->sk, skb);
49504957

49514958
return 0;
@@ -5041,6 +5048,9 @@ static int send_proxy_packet6(struct sk_buff *skb, struct re_address *src, struc
50415048
skb->ip_summed = CHECKSUM_COMPLETE;
50425049
}
50435050

5051+
/* Same reasoning as send_proxy_packet4: zero queue_mapping before
5052+
* handing the packet to the egress TC BPF program. */
5053+
skb->queue_mapping = 0;
50445054
ip6_local_out(net, skb->sk, skb);
50455055

50465056
return 0;

0 commit comments

Comments
 (0)