Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bd37a088 authored by Wei Yongjun's avatar Wei Yongjun Committed by David S. Miller
Browse files

[TCP]: SNMPv2 tcpOutSegs counter error



Do not count retransmitted segments.

Signed-off-by: default avatarWei Yongjun <yjwei@nanjing-fnst.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 69d8c28c
Loading
Loading
Loading
Loading
+9 −3
Original line number Diff line number Diff line
@@ -466,6 +466,7 @@ static int tcp_transmit_skb(struct sock *sk, struct sk_buff *skb, int clone_it,
	if (skb->len != tcp_header_size)
		tcp_event_data_sent(tp, skb, sk);

	if (after(tcb->end_seq, tp->snd_nxt) || tcb->seq == tcb->end_seq)
		TCP_INC_STATS(TCP_MIB_OUTSEGS);

	err = icsk->icsk_af_ops->queue_xmit(skb, 0);
@@ -2157,10 +2158,9 @@ int tcp_connect(struct sock *sk)
	skb_shinfo(buff)->gso_size = 0;
	skb_shinfo(buff)->gso_type = 0;
	buff->csum = 0;
	tp->snd_nxt = tp->write_seq;
	TCP_SKB_CB(buff)->seq = tp->write_seq++;
	TCP_SKB_CB(buff)->end_seq = tp->write_seq;
	tp->snd_nxt = tp->write_seq;
	tp->pushed_seq = tp->write_seq;

	/* Send it off. */
	TCP_SKB_CB(buff)->when = tcp_time_stamp;
@@ -2170,6 +2170,12 @@ int tcp_connect(struct sock *sk)
	sk_charge_skb(sk, buff);
	tp->packets_out += tcp_skb_pcount(buff);
	tcp_transmit_skb(sk, buff, 1, GFP_KERNEL);

	/* We change tp->snd_nxt after the tcp_transmit_skb() call
	 * in order to make this packet get counted in tcpOutSegs.
	 */
	tp->snd_nxt = tp->write_seq;
	tp->pushed_seq = tp->write_seq;
	TCP_INC_STATS(TCP_MIB_ACTIVEOPENS);

	/* Timer for repeating the SYN until an answer. */