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

Commit 564262c1 authored by Ryousei Takano's avatar Ryousei Takano Committed by David S. Miller
Browse files

[TCP]: Fix inconsistency of terms.



Fix inconsistency of terms:
1) D-SACK
2) F-RTO

Signed-off-by: default avatarRyousei Takano <takano-ryousei@aist.go.jp>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 4bc3e17c
Loading
Loading
Loading
Loading
+3 −3
Original line number Original line Diff line number Diff line
@@ -184,14 +184,14 @@ tcp_frto - INTEGER
	F-RTO is an enhanced recovery algorithm for TCP retransmission
	F-RTO is an enhanced recovery algorithm for TCP retransmission
	timeouts.  It is particularly beneficial in wireless environments
	timeouts.  It is particularly beneficial in wireless environments
	where packet loss is typically due to random radio interference
	where packet loss is typically due to random radio interference
	rather than intermediate router congestion.  FRTO is sender-side
	rather than intermediate router congestion.  F-RTO is sender-side
	only modification.  Therefore it does not require any support from
	only modification.  Therefore it does not require any support from
	the peer, but in a typical case, however, where wireless link is
	the peer, but in a typical case, however, where wireless link is
	the local access link and most of the data flows downlink, the
	the local access link and most of the data flows downlink, the
	faraway servers should have FRTO enabled to take advantage of it.
	faraway servers should have F-RTO enabled to take advantage of it.
	If set to 1, basic version is enabled.  2 enables SACK enhanced
	If set to 1, basic version is enabled.  2 enables SACK enhanced
	F-RTO if flow uses SACK.  The basic version can be used also when
	F-RTO if flow uses SACK.  The basic version can be used also when
	SACK is in use though scenario(s) with it exists where FRTO
	SACK is in use though scenario(s) with it exists where F-RTO
	interacts badly with the packet counting of the SACK enabled TCP
	interacts badly with the packet counting of the SACK enabled TCP
	flow.
	flow.


+8 −8
Original line number Original line Diff line number Diff line
@@ -103,7 +103,7 @@ int sysctl_tcp_abc __read_mostly;
#define FLAG_SLOWPATH		0x100 /* Do not skip RFC checks for window update.*/
#define FLAG_SLOWPATH		0x100 /* Do not skip RFC checks for window update.*/
#define FLAG_ONLY_ORIG_SACKED	0x200 /* SACKs only non-rexmit sent before RTO */
#define FLAG_ONLY_ORIG_SACKED	0x200 /* SACKs only non-rexmit sent before RTO */
#define FLAG_SND_UNA_ADVANCED	0x400 /* Snd_una was changed (!= FLAG_DATA_ACKED) */
#define FLAG_SND_UNA_ADVANCED	0x400 /* Snd_una was changed (!= FLAG_DATA_ACKED) */
#define FLAG_DSACKING_ACK	0x800 /* SACK blocks contained DSACK info */
#define FLAG_DSACKING_ACK	0x800 /* SACK blocks contained D-SACK info */
#define FLAG_NONHEAD_RETRANS_ACKED	0x1000 /* Non-head rexmitted data was ACKed */
#define FLAG_NONHEAD_RETRANS_ACKED	0x1000 /* Non-head rexmitted data was ACKed */


#define FLAG_ACKED		(FLAG_DATA_ACKED|FLAG_SYN_ACKED)
#define FLAG_ACKED		(FLAG_DATA_ACKED|FLAG_SYN_ACKED)
@@ -866,7 +866,7 @@ static void tcp_disable_fack(struct tcp_sock *tp)
	tp->rx_opt.sack_ok &= ~2;
	tp->rx_opt.sack_ok &= ~2;
}
}


/* Take a notice that peer is sending DSACKs */
/* Take a notice that peer is sending D-SACKs */
static void tcp_dsack_seen(struct tcp_sock *tp)
static void tcp_dsack_seen(struct tcp_sock *tp)
{
{
	tp->rx_opt.sack_ok |= 4;
	tp->rx_opt.sack_ok |= 4;
@@ -1058,7 +1058,7 @@ static void tcp_update_reordering(struct sock *sk, const int metric,
 *
 *
 * With D-SACK the lower bound is extended to cover sequence space below
 * With D-SACK the lower bound is extended to cover sequence space below
 * SND.UNA down to undo_marker, which is the last point of interest. Yet
 * SND.UNA down to undo_marker, which is the last point of interest. Yet
 * again, DSACK block must not to go across snd_una (for the same reason as
 * again, D-SACK block must not to go across snd_una (for the same reason as
 * for the normal SACK blocks, explained above). But there all simplicity
 * for the normal SACK blocks, explained above). But there all simplicity
 * ends, TCP might receive valid D-SACKs below that. As long as they reside
 * ends, TCP might receive valid D-SACKs below that. As long as they reside
 * fully below undo_marker they do not affect behavior in anyway and can
 * fully below undo_marker they do not affect behavior in anyway and can
@@ -1080,7 +1080,7 @@ static int tcp_is_sackblock_valid(struct tcp_sock *tp, int is_dsack,
	if (!before(start_seq, tp->snd_nxt))
	if (!before(start_seq, tp->snd_nxt))
		return 0;
		return 0;


	/* In outstanding window? ...This is valid exit for DSACKs too.
	/* In outstanding window? ...This is valid exit for D-SACKs too.
	 * start_seq == snd_una is non-sensical (see comments above)
	 * start_seq == snd_una is non-sensical (see comments above)
	 */
	 */
	if (after(start_seq, tp->snd_una))
	if (after(start_seq, tp->snd_una))
@@ -1615,7 +1615,7 @@ void tcp_enter_frto(struct sock *sk)
	     !icsk->icsk_retransmits)) {
	     !icsk->icsk_retransmits)) {
		tp->prior_ssthresh = tcp_current_ssthresh(sk);
		tp->prior_ssthresh = tcp_current_ssthresh(sk);
		/* Our state is too optimistic in ssthresh() call because cwnd
		/* Our state is too optimistic in ssthresh() call because cwnd
		 * is not reduced until tcp_enter_frto_loss() when previous FRTO
		 * is not reduced until tcp_enter_frto_loss() when previous F-RTO
		 * recovery has not yet completed. Pattern would be this: RTO,
		 * recovery has not yet completed. Pattern would be this: RTO,
		 * Cumulative ACK, RTO (2xRTO for the same segment does not end
		 * Cumulative ACK, RTO (2xRTO for the same segment does not end
		 * up here twice).
		 * up here twice).
@@ -1801,7 +1801,7 @@ void tcp_enter_loss(struct sock *sk, int how)
	tcp_set_ca_state(sk, TCP_CA_Loss);
	tcp_set_ca_state(sk, TCP_CA_Loss);
	tp->high_seq = tp->snd_nxt;
	tp->high_seq = tp->snd_nxt;
	TCP_ECN_queue_cwr(tp);
	TCP_ECN_queue_cwr(tp);
	/* Abort FRTO algorithm if one is in progress */
	/* Abort F-RTO algorithm if one is in progress */
	tp->frto_counter = 0;
	tp->frto_counter = 0;
}
}


@@ -1946,7 +1946,7 @@ static int tcp_time_to_recover(struct sock *sk)
	struct tcp_sock *tp = tcp_sk(sk);
	struct tcp_sock *tp = tcp_sk(sk);
	__u32 packets_out;
	__u32 packets_out;


	/* Do not perform any recovery during FRTO algorithm */
	/* Do not perform any recovery during F-RTO algorithm */
	if (tp->frto_counter)
	if (tp->frto_counter)
		return 0;
		return 0;


@@ -2962,7 +2962,7 @@ static int tcp_process_frto(struct sock *sk, int flag)
	}
	}


	if (tp->frto_counter == 1) {
	if (tp->frto_counter == 1) {
		/* Sending of the next skb must be allowed or no FRTO */
		/* Sending of the next skb must be allowed or no F-RTO */
		if (!tcp_send_head(sk) ||
		if (!tcp_send_head(sk) ||
		    after(TCP_SKB_CB(tcp_send_head(sk))->end_seq,
		    after(TCP_SKB_CB(tcp_send_head(sk))->end_seq,
				     tp->snd_una + tp->snd_wnd)) {
				     tp->snd_una + tp->snd_wnd)) {