diff options
Diffstat (limited to 'net/dccp/ccids/ccid2.h')
| -rw-r--r-- | net/dccp/ccids/ccid2.h | 31 | 
1 files changed, 30 insertions, 1 deletions
diff --git a/net/dccp/ccids/ccid2.h b/net/dccp/ccids/ccid2.h index e9985dafc2c..18c97543e52 100644 --- a/net/dccp/ccids/ccid2.h +++ b/net/dccp/ccids/ccid2.h @@ -43,6 +43,12 @@ struct ccid2_seq {  #define CCID2_SEQBUF_LEN 1024  #define CCID2_SEQBUF_MAX 128 +/* + * Multiple of congestion window to keep the sequence window at + * (RFC 4340 7.5.2) + */ +#define CCID2_WIN_CHANGE_FACTOR 5 +  /**   * struct ccid2_hc_tx_sock - CCID2 TX half connection   * @tx_{cwnd,ssthresh,pipe}: as per RFC 4341, section 5 @@ -53,6 +59,10 @@ struct ccid2_seq {   * @tx_rttvar:		     moving average/maximum of @mdev_max   * @tx_rto:		     RTO value deriving from SRTT and RTTVAR (RFC 2988)   * @tx_rtt_seq:		     to decay RTTVAR at most once per flight + * @tx_cwnd_used:	     actually used cwnd, W_used of RFC 2861 + * @tx_expected_wnd:	     moving average of @tx_cwnd_used + * @tx_cwnd_stamp:	     to track idle periods in CWV + * @tx_lsndtime:	     last time (in jiffies) a data packet was sent   * @tx_rpseq:		     last consecutive seqno   * @tx_rpdupack:	     dupacks since rpseq   * @tx_av_chunks:	     list of Ack Vectors received on current skb @@ -76,6 +86,12 @@ struct ccid2_hc_tx_sock {  	u64			tx_rtt_seq:48;  	struct timer_list	tx_rtotimer; +	/* Congestion Window validation (optional, RFC 2861) */ +	u32			tx_cwnd_used, +				tx_expected_wnd, +				tx_cwnd_stamp, +				tx_lsndtime; +  	u64			tx_rpseq;  	int			tx_rpdupack;  	u32			tx_last_cong; @@ -88,8 +104,21 @@ static inline bool ccid2_cwnd_network_limited(struct ccid2_hc_tx_sock *hc)  	return hc->tx_pipe >= hc->tx_cwnd;  } +/* + * Convert RFC 3390 larger initial window into an equivalent number of packets. + * This is based on the numbers specified in RFC 5681, 3.1. + */ +static inline u32 rfc3390_bytes_to_packets(const u32 smss) +{ +	return smss <= 1095 ? 4 : (smss > 2190 ? 2 : 3); +} + +/** + * struct ccid2_hc_rx_sock  -  Receiving end of CCID-2 half-connection + * @rx_num_data_pkts: number of data packets received since last feedback + */  struct ccid2_hc_rx_sock { -	int	rx_data; +	u32	rx_num_data_pkts;  };  static inline struct ccid2_hc_tx_sock *ccid2_hc_tx_sk(const struct sock *sk)  | 
