Netdev List
 help / color / mirror / Atom feed
* [BUG] reason=TCP_ACK_UNSENT_DATA
@ 2026-07-30 23:18 Pradeep Satyanarayana
  0 siblings, 0 replies; only message in thread
From: Pradeep Satyanarayana @ 2026-07-30 23:18 UTC (permalink / raw)
  To: netdev; +Cc: edumazet, ncardwell, zdai

For one particular workload, under load TCP streams grind to a halt, 
throughput falls to zero and never recovers.

On Power 11 systems, two asymmetric interfaces are bonded in an 
Active-Backup configuration. The primary interface is used with IPsec 
offload. The secondary interface only does software encryption (using 
aes_gcm_p10_crypto).

We are using iperf for the tests, and when we fail-over to the backup 
interface, all the iperf threads grind to a halt.

Once we are in this state, on the iperf client, the Send-Q is full. The 
iperf server is sending ACKs, but it appears that TCP (on the iperf 
client) is dropping them. Here is an example:

probe__tcp_rcv_established_L179    12 21012.316236112    19162 
kworker/12:2         __probe_ip=0xc0000000011b39f0, snd_una=0x535b271, 
snd_nxt=0x535b7f7, ack_seq=0x536420d, write_seq=0x57526df
         [c0000000011b39f0] tcp_rcv_established+0x3d0 ([kernel.kallsyms])
         [c0000000011b39f0] tcp_rcv_established+0x3d0 ([kernel.kallsyms])
         [c0000000011ca69c] tcp_v4_do_rcv+0x1ec ([kernel.kallsyms])
         [c0000000011cc9f0] tcp_v4_rcv+0xc30 ([kernel.kallsyms])
         [c000000001180ef0] ip_protocol_deliver_rcu+0x60 ([kernel.kallsyms])
         [c0000000011811d4] ip_local_deliver_finish+0xb4 ([kernel.kallsyms])
         [c000000001181338] ip_local_deliver+0x88 ([kernel.kallsyms])
         [c0000000011809d8] ip_sublist_rcv_finish+0x98 ([kernel.kallsyms])
         [c000000001180c0c] ip_sublist_rcv+0x1fc ([kernel.kallsyms])
         [c00000000118170c] ip_list_rcv+0x16c ([kernel.kallsyms])
         [c000000001068164] __netif_receive_skb_list_core+0x244 
([kernel.kallsyms])
         [c000000001068a88] netif_receive_skb_list_internal+0x248 
([kernel.kallsyms])
         [c000000001068eac] napi_complete_done+0x9c ([kernel.kallsyms])
         [c0000000010f940c] gro_cell_poll+0xcc ([kernel.kallsyms])
         [c0000000010690e0] __napi_poll+0x60 ([kernel.kallsyms])
         [c00000000106974c] net_rx_action+0x39c ([kernel.kallsyms])
         [c000000000241b68] handle_softirqs+0x158 ([kernel.kallsyms])
         [c000000000018998] do_softirq_own_stack+0x38 ([kernel.kallsyms])
         [c000000000242958] do_softirq+0x78 ([kernel.kallsyms])
         [c000000000242a44] __local_bh_enable_ip+0xc4 ([kernel.kallsyms])
         [c00800000a1c0bd0]
         [c00800000a1c07f4]
         [c000000000268a14] process_one_work+0x1e4 ([kernel.kallsyms])
         [c0000000002697ec] worker_thread+0x1ec ([kernel.kallsyms])
         [c0000000002762c4] kthread+0x194 ([kernel.kallsyms])
         [c00000000000ded8] start_kernel_thread+0x14 ([kernel.kallsyms])

skb__kfree_skb          12 21012.316237054    19162 kworker/12:2 
skbaddr=13835058059510742784, location=13835058055300675500, 
rx_sk=13835058058125504512, protocol=2048, reason=TCP_ACK_UNSENT_DATA
         [c0000000010d9924] __traceiter_kfree_skb+0x74 ([kernel.kallsyms])
         [0]
         [c0000000010372f4] sk_skb_reason_drop+0xf4 ([kernel.kallsyms])
         [c0000000011a77ac] tcp_drop_reason+0x6c ([kernel.kallsyms])
         [c0000000011ca69c] tcp_v4_do_rcv+0x1ec ([kernel.kallsyms])
         [c0000000011cc9f0] tcp_v4_rcv+0xc30 ([kernel.kallsyms])
         [c000000001180ef0] ip_protocol_deliver_rcu+0x60 ([kernel.kallsyms])
         [c0000000011811d4] ip_local_deliver_finish+0xb4 ([kernel.kallsyms])
         [c000000001181338] ip_local_deliver+0x88 ([kernel.kallsyms])
         [c0000000011809d8] ip_sublist_rcv_finish+0x98 ([kernel.kallsyms])
         [c000000001180c0c] ip_sublist_rcv+0x1fc ([kernel.kallsyms])
         [c00000000118170c] ip_list_rcv+0x16c ([kernel.kallsyms])
         [c000000001068164] __netif_receive_skb_list_core+0x244 
([kernel.kallsyms])
         [c000000001068a88] netif_receive_skb_list_internal+0x248 
([kernel.kallsyms])
         [c000000001068eac] napi_complete_done+0x9c ([kernel.kallsyms])
         [c0000000010f940c] gro_cell_poll+0xcc ([kernel.kallsyms])
         [c0000000010690e0] __napi_poll+0x60 ([kernel.kallsyms])
         [c00000000106974c] net_rx_action+0x39c ([kernel.kallsyms])
         [c000000000241b68] handle_softirqs+0x158 ([kernel.kallsyms])
         [c000000000018998] do_softirq_own_stack+0x38 ([kernel.kallsyms])
         [c000000000242958] do_softirq+0x78 ([kernel.kallsyms])
         [c000000000242a44] __local_bh_enable_ip+0xc4 ([kernel.kallsyms])
         [c00800000a1c0bd0]
         [c00800000a1c07f4]
         [c000000000268a14] process_one_work+0x1e4 ([kernel.kallsyms])
         [c0000000002697ec] worker_thread+0x1ec ([kernel.kallsyms])
         [c0000000002762c4] kthread+0x194 ([kernel.kallsyms])
         [c00000000000ded8] start_kernel_thread+0x14 ([kernel.kallsyms])

This has been recreated with kernel 7.2-rc5. This kernel does have the 
patch in:
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=0c9de092ef8c50a7ee9612811566f0aa81d8d7b6

We tried turning off TSO as an experiment, but that didn't help.

This is quite easy to recreate (on Power 11), but it does appear that we 
do need specific combinations like a 100G crypto offload on the primary, 
and aes_gcm_p10_crypto for software encryption on the backup device. We 
require moderate to heavy traffic in both directions.

Bonding two interfaces, both using aes_gcm_p10_crypto and failing over 
between them doesn't recreate the problem.

Pradeep



^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2026-07-30 23:18 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-30 23:18 [BUG] reason=TCP_ACK_UNSENT_DATA Pradeep Satyanarayana

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox