Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next
[pandora-kernel.git] / net / dccp / ccids / ccid2.h
index e9985da..f585d33 100644 (file)
@@ -53,6 +53,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 +80,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 +98,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)