lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Mon, 12 Jan 2015 11:52:45 +0000
From:	David Laight <David.Laight@...LAB.COM>
To:	'Yuchung Cheng' <ycheng@...gle.com>,
	Eric Dumazet <eric.dumazet@...il.com>
CC:	Neal Cardwell <ncardwell@...gle.com>,
	Sébastien Barré <sebastien.barre@...ouvain.be>,
	David Miller <davem@...emloft.net>,
	Netdev <netdev@...r.kernel.org>,
	Gregory Detal <gregory.detal@...ouvain.be>,
	"Nandita Dukkipati" <nanditad@...gle.com>
Subject: RE: [PATCH net-next v2] tcp: avoid reducing cwnd when ACK+DSACK is
 received

From: Yuchung Cheng
> Sent: 09 January 2015 19:44
...
> Sebastien: I suggest breaking down by ACK types for readability. e.g.,
> 
> /* This routine deals with acks during a TLP episode.
>  * We mark the end of a TLP episode on receiving TLP dupack or when
>  * ack is after tlp_high_seq.
>  * Ref: loss detection algorithm in draft-dukkipati-tcpm-tcp-loss-probe.
>  */
> static void tcp_process_tlp_ack(struct sock *sk, u32 ack, int flag)
> {
>         struct tcp_sock *tp = tcp_sk(sk);
> 
>         if (before(ack, tp->tlp_high_seq))
>                 return;
> 
>         if (flag & FLAG_DSACKING_ACK) {
>                 /* This DSACK means original and TLP probe arrived; no loss */
>                 tp->tlp_high_seq = 0;

I think I'd add a 'return' here.

>         } else if (after(ack, tp->tlp_high_seq)) {
>                 /* ACK advances: there was a loss, so reduce cwnd. Reset
>                  * tlp_high_seq in tcp_init_cwnd_reduction()
>                  */
>                 tcp_init_cwnd_reduction(sk);
>                 tcp_set_ca_state(sk, TCP_CA_CWR);
>                 tcp_end_cwnd_reduction(sk);
>                 tcp_try_keep_open(sk);
>                 NET_INC_STATS_BH(sock_net(sk),
>                                  LINUX_MIB_TCPLOSSPROBERECOVERY);

and here

>         } else if (!(flag & (FLAG_SND_UNA_ADVANCED |
>                              FLAG_NOT_DUP | FLAG_DATA_SACKED))) {
>                 /* Pure dupack: original and TLP probe arrived; no loss */
>                 tp->tlp_high_seq = 0;
>         }
> }

	David

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ