From: Martin KaFai Lau <ka...@fb.com> Date: Mon, 18 Apr 2016 15:39:53 -0700
> Assuming SOF_TIMESTAMPING_TX_ACK is on. When dup acks are received, > it could incorrectly think that a skb has already > been acked and queue a SCM_TSTAMP_ACK cmsg to the > sk->sk_error_queue. > > In tcp_ack_tstamp(), it checks > 'between(shinfo->tskey, prior_snd_una, tcp_sk(sk)->snd_una - 1)'. > If prior_snd_una == tcp_sk(sk)->snd_una like the following packetdrill > script, between() returns true but the tskey is actually not acked. > e.g. try between(3, 2, 1). > > The fix is to replace between() with one before() and one !before(). > By doing this, the -1 offset on the tcp_sk(sk)->snd_una can also be > removed. ... > Signed-off-by: Martin KaFai Lau <ka...@fb.com> Applied, thank you.