All of lore.kernel.org
 help / color / mirror / Atom feed
* tcp_mark_head_lost warning in Linux kernel 3.10
@ 2014-11-14 22:39 Vinson Lee
  2014-11-14 23:00 ` Eric Dumazet
  0 siblings, 1 reply; 4+ messages in thread
From: Vinson Lee @ 2014-11-14 22:39 UTC (permalink / raw)
  To: David S. Miller, Alexey Kuznetsov, James Morris,
	Hideaki YOSHIFUJI, Patrick McHardy
  Cc: netdev

Hi.

We hit this networking tcp_mark_head_lost warning in Linux kernel 3.10.

------------[ cut here ]------------
WARNING: at net/ipv4/tcp_input.c:2262 tcp_mark_head_lost+0x1aa/0x1dd()
Modules linked in: netconsole configfs xt_DSCP iptable_mangle
cpufreq_ondemand ipv6 ppdev parport_pc lp parport tcp_diag inet_diag
ipmi_si ipmi_devintf ipmi_msghandler iTCO_wdt iTCO_vendor_support
acpi_cpufreq freq_table mperf coretemp kvm_intel kvm crc32c_intel
ghash_clmulni_intel microcode serio_raw i2c_i801 lpc_ich mfd_core igb
i2c_algo_bit i2c_core ptp pps_core ioatdma dca wmi
CPU: 1 PID: 16561 Not tainted 3.10.50 #1
 0000000000000000 ffff88085fc23948 ffffffff814a4094 ffff88085fc23980
 ffffffff8103cbf9 0000000000000000 ffff8807b644b200 0000000000000001
 ffff880764e1ca40 000000004e9c4970 ffff88085fc23990 ffffffff8103ccbf
Call Trace:
 <IRQ>  [<ffffffff814a4094>] dump_stack+0x19/0x1b
 [<ffffffff8103cbf9>] warn_slowpath_common+0x65/0x7d
 [<ffffffff8103ccbf>] warn_slowpath_null+0x1a/0x1c
 [<ffffffff81434c61>] tcp_mark_head_lost+0x1aa/0x1dd
 [<ffffffff814367fc>] tcp_update_scoreboard+0x4f/0x13f
 [<ffffffff81438beb>] tcp_fastretrans_alert+0x736/0x7be
 [<ffffffff81439644>] tcp_ack+0x95e/0xb47
 [<ffffffff81439be6>] tcp_rcv_established+0xde/0x442
 [<ffffffff81442cab>] tcp_v4_do_rcv+0x1e6/0x3e8
 [<ffffffff8144371e>] tcp_v4_rcv+0x293/0x52c
 [<ffffffff81425e6a>] ? NF_HOOK_THRESH.constprop.11+0x53/0x53
 [<ffffffff8142d562>] ? __inet_lookup_listener+0xfa/0x17f
 [<ffffffff81425f4a>] ip_local_deliver_finish+0xe0/0x155
 [<ffffffff81425e6a>] ? NF_HOOK_THRESH.constprop.11+0x53/0x53
 [<ffffffff81425e48>] NF_HOOK_THRESH.constprop.11+0x31/0x53
 [<ffffffff814260ef>] ip_local_deliver+0x40/0x52
 [<ffffffff81425d50>] ip_rcv_finish+0x274/0x2b6
 [<ffffffff81425adc>] ? inet_del_offload+0x3d/0x3d
 [<ffffffff81425e48>] NF_HOOK_THRESH.constprop.11+0x31/0x53
 [<ffffffff81426324>] ip_rcv+0x223/0x267
 [<ffffffff813f76b4>] __netif_receive_skb_core+0x435/0x4a7
 [<ffffffff8107bab8>] ? timekeeping_get_ns.constprop.10+0x11/0x36
 [<ffffffff813f773e>] __netif_receive_skb+0x18/0x5a
 [<ffffffff813f8813>] netif_receive_skb+0x40/0x75
 [<ffffffff813f8f94>] napi_gro_receive+0x3e/0x80
 [<ffffffffa004a097>] igb_clean_rx_irq+0x67e/0x69e [igb]
 [<ffffffffa004a425>] igb_poll+0x36e/0x5b0 [igb]
 [<ffffffff813ea49a>] ? __sk_mem_reclaim+0x2f/0x84
 [<ffffffff8143ef76>] ? tcp_delack_timer_handler+0x2e/0x19c
 [<ffffffff813f8a61>] net_rx_action+0xcf/0x196
 [<ffffffff8106870c>] ? sched_clock_cpu+0x42/0xc7
 [<ffffffff8104371d>] __do_softirq+0xd5/0x1f4
 [<ffffffff814b01bc>] call_softirq+0x1c/0x30
 [<ffffffff81003ecd>] do_softirq+0x33/0x6e
 [<ffffffff81043931>] irq_exit+0x51/0x93
 [<ffffffff814b086e>] do_IRQ+0x8e/0xa5
 [<ffffffff814a85aa>] common_interrupt+0x6a/0x6a
 <EOI>
---[ end trace 8b2ed2c5c443e39d ]---


net/ipv4/tcp_input.c
  2200  /* Detect loss in event "A" above by marking head of queue up as lost.
  2201   * For FACK or non-SACK(Reno) senders, the first "packets"
number of segments
  2202   * are considered lost. For RFC3517 SACK, a segment is
considered lost if it
  2203   * has at least tp->reordering SACKed seqments above it;
"packets" refers to
  2204   * the maximum SACKed segments to pass before reaching this limit.
  2205   */
  2206  static void tcp_mark_head_lost(struct sock *sk, int packets,
int mark_head)
  2207  {
[...]
  2262          tcp_verify_left_out(tp);
  2263  }

include/net/tcp.h
   936  /* Use define here intentionally to get WARN_ON location shown
at the caller */
   937  #define tcp_verify_left_out(tp) WARN_ON(tcp_left_out(tp) >
tp->packets_out)

Cheers,
Vinson

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: tcp_mark_head_lost warning in Linux kernel 3.10
  2014-11-14 22:39 tcp_mark_head_lost warning in Linux kernel 3.10 Vinson Lee
@ 2014-11-14 23:00 ` Eric Dumazet
       [not found]   ` <CADVnQymD96k6pBmkYHb5G5MAWcRywdgEb2jo-BnNttWeii0u2Q@mail.gmail.com>
  0 siblings, 1 reply; 4+ messages in thread
From: Eric Dumazet @ 2014-11-14 23:00 UTC (permalink / raw)
  To: Vinson Lee, Neal Cardwell
  Cc: David S. Miller, Alexey Kuznetsov, James Morris,
	Hideaki YOSHIFUJI, Patrick McHardy, netdev

On Fri, 2014-11-14 at 14:39 -0800, Vinson Lee wrote:
> Hi.
> 
> We hit this networking tcp_mark_head_lost warning in Linux kernel 3.10.
> 

CC Neal, because he is working on this


> ------------[ cut here ]------------
> WARNING: at net/ipv4/tcp_input.c:2262 tcp_mark_head_lost+0x1aa/0x1dd()
> Modules linked in: netconsole configfs xt_DSCP iptable_mangle
> cpufreq_ondemand ipv6 ppdev parport_pc lp parport tcp_diag inet_diag
> ipmi_si ipmi_devintf ipmi_msghandler iTCO_wdt iTCO_vendor_support
> acpi_cpufreq freq_table mperf coretemp kvm_intel kvm crc32c_intel
> ghash_clmulni_intel microcode serio_raw i2c_i801 lpc_ich mfd_core igb
> i2c_algo_bit i2c_core ptp pps_core ioatdma dca wmi
> CPU: 1 PID: 16561 Not tainted 3.10.50 #1
>  0000000000000000 ffff88085fc23948 ffffffff814a4094 ffff88085fc23980
>  ffffffff8103cbf9 0000000000000000 ffff8807b644b200 0000000000000001
>  ffff880764e1ca40 000000004e9c4970 ffff88085fc23990 ffffffff8103ccbf
> Call Trace:
>  <IRQ>  [<ffffffff814a4094>] dump_stack+0x19/0x1b
>  [<ffffffff8103cbf9>] warn_slowpath_common+0x65/0x7d
>  [<ffffffff8103ccbf>] warn_slowpath_null+0x1a/0x1c
>  [<ffffffff81434c61>] tcp_mark_head_lost+0x1aa/0x1dd
>  [<ffffffff814367fc>] tcp_update_scoreboard+0x4f/0x13f
>  [<ffffffff81438beb>] tcp_fastretrans_alert+0x736/0x7be
>  [<ffffffff81439644>] tcp_ack+0x95e/0xb47
>  [<ffffffff81439be6>] tcp_rcv_established+0xde/0x442
>  [<ffffffff81442cab>] tcp_v4_do_rcv+0x1e6/0x3e8
>  [<ffffffff8144371e>] tcp_v4_rcv+0x293/0x52c
>  [<ffffffff81425e6a>] ? NF_HOOK_THRESH.constprop.11+0x53/0x53
>  [<ffffffff8142d562>] ? __inet_lookup_listener+0xfa/0x17f
>  [<ffffffff81425f4a>] ip_local_deliver_finish+0xe0/0x155
>  [<ffffffff81425e6a>] ? NF_HOOK_THRESH.constprop.11+0x53/0x53
>  [<ffffffff81425e48>] NF_HOOK_THRESH.constprop.11+0x31/0x53
>  [<ffffffff814260ef>] ip_local_deliver+0x40/0x52
>  [<ffffffff81425d50>] ip_rcv_finish+0x274/0x2b6
>  [<ffffffff81425adc>] ? inet_del_offload+0x3d/0x3d
>  [<ffffffff81425e48>] NF_HOOK_THRESH.constprop.11+0x31/0x53
>  [<ffffffff81426324>] ip_rcv+0x223/0x267
>  [<ffffffff813f76b4>] __netif_receive_skb_core+0x435/0x4a7
>  [<ffffffff8107bab8>] ? timekeeping_get_ns.constprop.10+0x11/0x36
>  [<ffffffff813f773e>] __netif_receive_skb+0x18/0x5a
>  [<ffffffff813f8813>] netif_receive_skb+0x40/0x75
>  [<ffffffff813f8f94>] napi_gro_receive+0x3e/0x80
>  [<ffffffffa004a097>] igb_clean_rx_irq+0x67e/0x69e [igb]
>  [<ffffffffa004a425>] igb_poll+0x36e/0x5b0 [igb]
>  [<ffffffff813ea49a>] ? __sk_mem_reclaim+0x2f/0x84
>  [<ffffffff8143ef76>] ? tcp_delack_timer_handler+0x2e/0x19c
>  [<ffffffff813f8a61>] net_rx_action+0xcf/0x196
>  [<ffffffff8106870c>] ? sched_clock_cpu+0x42/0xc7
>  [<ffffffff8104371d>] __do_softirq+0xd5/0x1f4
>  [<ffffffff814b01bc>] call_softirq+0x1c/0x30
>  [<ffffffff81003ecd>] do_softirq+0x33/0x6e
>  [<ffffffff81043931>] irq_exit+0x51/0x93
>  [<ffffffff814b086e>] do_IRQ+0x8e/0xa5
>  [<ffffffff814a85aa>] common_interrupt+0x6a/0x6a
>  <EOI>
> ---[ end trace 8b2ed2c5c443e39d ]---
> 
> 
> net/ipv4/tcp_input.c
>   2200  /* Detect loss in event "A" above by marking head of queue up as lost.
>   2201   * For FACK or non-SACK(Reno) senders, the first "packets"
> number of segments
>   2202   * are considered lost. For RFC3517 SACK, a segment is
> considered lost if it
>   2203   * has at least tp->reordering SACKed seqments above it;
> "packets" refers to
>   2204   * the maximum SACKed segments to pass before reaching this limit.
>   2205   */
>   2206  static void tcp_mark_head_lost(struct sock *sk, int packets,
> int mark_head)
>   2207  {
> [...]
>   2262          tcp_verify_left_out(tp);
>   2263  }
> 
> include/net/tcp.h
>    936  /* Use define here intentionally to get WARN_ON location shown
> at the caller */
>    937  #define tcp_verify_left_out(tp) WARN_ON(tcp_left_out(tp) >
> tp->packets_out)
> 
> Cheers,
> Vinson
> --
> To unsubscribe from this list: send the line "unsubscribe netdev" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: tcp_mark_head_lost warning in Linux kernel 3.10
       [not found]   ` <CADVnQymD96k6pBmkYHb5G5MAWcRywdgEb2jo-BnNttWeii0u2Q@mail.gmail.com>
@ 2014-11-15  1:48     ` Vinson Lee
  2014-11-15  2:08       ` Neal Cardwell
  0 siblings, 1 reply; 4+ messages in thread
From: Vinson Lee @ 2014-11-15  1:48 UTC (permalink / raw)
  To: Neal Cardwell
  Cc: Eric Dumazet, David S. Miller, Alexey Kuznetsov, James Morris,
	Hideaki YOSHIFUJI, Patrick McHardy, Netdev

On Fri, Nov 14, 2014 at 5:36 PM, Neal Cardwell <ncardwell@google.com> wrote:
> Thanks, Vinson. The theory I'm working on involves SACK reneging. What do
> you get from:
>
>   nstat -a -z | grep TcpExtTCPSACKReneging
>

$ nstat -a -z | grep TcpExtTCPSACKReneging
TcpExtTCPSACKReneging           184357             0.0

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: tcp_mark_head_lost warning in Linux kernel 3.10
  2014-11-15  1:48     ` Vinson Lee
@ 2014-11-15  2:08       ` Neal Cardwell
  0 siblings, 0 replies; 4+ messages in thread
From: Neal Cardwell @ 2014-11-15  2:08 UTC (permalink / raw)
  To: Vinson Lee
  Cc: Eric Dumazet, David S. Miller, Alexey Kuznetsov, James Morris,
	Hideaki YOSHIFUJI, Patrick McHardy, Netdev

On Fri, Nov 14, 2014 at 8:48 PM, Vinson Lee <vlee@twopensource.com> wrote:
>
> On Fri, Nov 14, 2014 at 5:36 PM, Neal Cardwell <ncardwell@google.com> wrote:
> > Thanks, Vinson. The theory I'm working on involves SACK reneging. What do
> > you get from:
> >
> >   nstat -a -z | grep TcpExtTCPSACKReneging
> >
>
> $ nstat -a -z | grep TcpExtTCPSACKReneging
> TcpExtTCPSACKReneging           184357             0.0

OK, good. So that is at least consistent with the theory. Thanks!

neal

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2014-11-15  2:08 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-11-14 22:39 tcp_mark_head_lost warning in Linux kernel 3.10 Vinson Lee
2014-11-14 23:00 ` Eric Dumazet
     [not found]   ` <CADVnQymD96k6pBmkYHb5G5MAWcRywdgEb2jo-BnNttWeii0u2Q@mail.gmail.com>
2014-11-15  1:48     ` Vinson Lee
2014-11-15  2:08       ` Neal Cardwell

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.