Hi Mao, [auto build test WARNING on net-next/master]
url: https://github.com/0day-ci/linux/commits/Mao-Wenan/TLP-Don-t-reschedule-PTO-when-there-s-one-outstanding-TLP-retransmission/20170726-172222 config: x86_64-randconfig-x000-201730 (attached as .config) compiler: gcc-6 (Debian 6.2.0-3) 6.2.0 20160901 reproduce: # save the attached .config to linux build tree make ARCH=x86_64 All warnings (new ones prefixed by >>): net//ipv4/tcp_output.c: In function 'tcp_schedule_loss_probe': >> net//ipv4/tcp_output.c:2430:3: warning: ISO C90 forbids mixed declarations >> and code [-Wdeclaration-after-statement] s32 delta = rto_time_stamp - tcp_jiffies32; ^~~ vim +2430 net//ipv4/tcp_output.c 6ba8a3b1 Nandita Dukkipati 2013-03-11 2374 6ba8a3b1 Nandita Dukkipati 2013-03-11 2375 bool tcp_schedule_loss_probe(struct sock *sk) 6ba8a3b1 Nandita Dukkipati 2013-03-11 2376 { 6ba8a3b1 Nandita Dukkipati 2013-03-11 2377 struct inet_connection_sock *icsk = inet_csk(sk); 6ba8a3b1 Nandita Dukkipati 2013-03-11 2378 struct tcp_sock *tp = tcp_sk(sk); 6ba8a3b1 Nandita Dukkipati 2013-03-11 2379 u32 timeout, tlp_time_stamp, rto_time_stamp; 6ba8a3b1 Nandita Dukkipati 2013-03-11 2380 6ba8a3b1 Nandita Dukkipati 2013-03-11 2381 /* No consecutive loss probes. */ 6ba8a3b1 Nandita Dukkipati 2013-03-11 2382 if (WARN_ON(icsk->icsk_pending == ICSK_TIME_LOSS_PROBE)) { 6ba8a3b1 Nandita Dukkipati 2013-03-11 2383 tcp_rearm_rto(sk); 6ba8a3b1 Nandita Dukkipati 2013-03-11 2384 return false; 6ba8a3b1 Nandita Dukkipati 2013-03-11 2385 } 6ba8a3b1 Nandita Dukkipati 2013-03-11 2386 /* Don't do any loss probe on a Fast Open connection before 3WHS 6ba8a3b1 Nandita Dukkipati 2013-03-11 2387 * finishes. 6ba8a3b1 Nandita Dukkipati 2013-03-11 2388 */ f9b99582 Yuchung Cheng 2015-09-18 2389 if (tp->fastopen_rsk) 6ba8a3b1 Nandita Dukkipati 2013-03-11 2390 return false; 6ba8a3b1 Nandita Dukkipati 2013-03-11 2391 6ba8a3b1 Nandita Dukkipati 2013-03-11 2392 /* TLP is only scheduled when next timer event is RTO. */ 6ba8a3b1 Nandita Dukkipati 2013-03-11 2393 if (icsk->icsk_pending != ICSK_TIME_RETRANS) 6ba8a3b1 Nandita Dukkipati 2013-03-11 2394 return false; 6ba8a3b1 Nandita Dukkipati 2013-03-11 2395 6ba8a3b1 Nandita Dukkipati 2013-03-11 2396 /* Schedule a loss probe in 2*RTT for SACK capable connections 6ba8a3b1 Nandita Dukkipati 2013-03-11 2397 * in Open state, that are either limited by cwnd or application. 6ba8a3b1 Nandita Dukkipati 2013-03-11 2398 */ bec41a11 Yuchung Cheng 2017-01-12 2399 if ((sysctl_tcp_early_retrans != 3 && sysctl_tcp_early_retrans != 4) || bec41a11 Yuchung Cheng 2017-01-12 2400 !tp->packets_out || !tcp_is_sack(tp) || bec41a11 Yuchung Cheng 2017-01-12 2401 icsk->icsk_ca_state != TCP_CA_Open) 6ba8a3b1 Nandita Dukkipati 2013-03-11 2402 return false; 6ba8a3b1 Nandita Dukkipati 2013-03-11 2403 6ba8a3b1 Nandita Dukkipati 2013-03-11 2404 if ((tp->snd_cwnd > tcp_packets_in_flight(tp)) && 6ba8a3b1 Nandita Dukkipati 2013-03-11 2405 tcp_send_head(sk)) 6ba8a3b1 Nandita Dukkipati 2013-03-11 2406 return false; 6ba8a3b1 Nandita Dukkipati 2013-03-11 2407 bb4d991a Yuchung Cheng 2017-07-19 2408 /* Probe timeout is 2*rtt. Add minimum RTO to account f9b99582 Yuchung Cheng 2015-09-18 2409 * for delayed ack when there's one outstanding packet. If no RTT f9b99582 Yuchung Cheng 2015-09-18 2410 * sample is available then probe after TCP_TIMEOUT_INIT. 6ba8a3b1 Nandita Dukkipati 2013-03-11 2411 */ bb4d991a Yuchung Cheng 2017-07-19 2412 if (tp->srtt_us) { bb4d991a Yuchung Cheng 2017-07-19 2413 timeout = usecs_to_jiffies(tp->srtt_us >> 2); 6ba8a3b1 Nandita Dukkipati 2013-03-11 2414 if (tp->packets_out == 1) bb4d991a Yuchung Cheng 2017-07-19 2415 timeout += TCP_RTO_MIN; bb4d991a Yuchung Cheng 2017-07-19 2416 else bb4d991a Yuchung Cheng 2017-07-19 2417 timeout += TCP_TIMEOUT_MIN; bb4d991a Yuchung Cheng 2017-07-19 2418 } else { bb4d991a Yuchung Cheng 2017-07-19 2419 timeout = TCP_TIMEOUT_INIT; bb4d991a Yuchung Cheng 2017-07-19 2420 } 6ba8a3b1 Nandita Dukkipati 2013-03-11 2421 6ba8a3b1 Nandita Dukkipati 2013-03-11 2422 /* If RTO is shorter, just schedule TLP in its place. */ ac9517fc Eric Dumazet 2017-05-16 2423 tlp_time_stamp = tcp_jiffies32 + timeout; 6ba8a3b1 Nandita Dukkipati 2013-03-11 2424 rto_time_stamp = (u32)inet_csk(sk)->icsk_timeout; 6ba8a3b1 Nandita Dukkipati 2013-03-11 2425 if ((s32)(tlp_time_stamp - rto_time_stamp) > 0) { e41572cd Mao Wenan 2017-07-25 2426 /*It is no need to reschedule PTO when there is one outstanding TLP retransmission*/ e41572cd Mao Wenan 2017-07-25 2427 if (tp->tlp_high_seq) { e41572cd Mao Wenan 2017-07-25 2428 return false; e41572cd Mao Wenan 2017-07-25 2429 } ac9517fc Eric Dumazet 2017-05-16 @2430 s32 delta = rto_time_stamp - tcp_jiffies32; 6ba8a3b1 Nandita Dukkipati 2013-03-11 2431 if (delta > 0) 6ba8a3b1 Nandita Dukkipati 2013-03-11 2432 timeout = delta; 6ba8a3b1 Nandita Dukkipati 2013-03-11 2433 } 6ba8a3b1 Nandita Dukkipati 2013-03-11 2434 6ba8a3b1 Nandita Dukkipati 2013-03-11 2435 inet_csk_reset_xmit_timer(sk, ICSK_TIME_LOSS_PROBE, timeout, 6ba8a3b1 Nandita Dukkipati 2013-03-11 2436 TCP_RTO_MAX); 6ba8a3b1 Nandita Dukkipati 2013-03-11 2437 return true; 6ba8a3b1 Nandita Dukkipati 2013-03-11 2438 } 6ba8a3b1 Nandita Dukkipati 2013-03-11 2439 :::::: The code at line 2430 was first introduced by commit :::::: ac9517fcf310327fa3e3b0d8366e4b11236b1b4b tcp: replace misc tcp_time_stamp to tcp_jiffies32 :::::: TO: Eric Dumazet <eduma...@google.com> :::::: CC: David S. Miller <da...@davemloft.net> --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
.config.gz
Description: application/gzip