]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - net/dccp/ccids/ccid3.h
Merge tag 'v2.6.37' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
[mv-sheeva.git] / net / dccp / ccids / ccid3.h
index 03263577665323894733d7d59febb18b556fa49d..1a9933c29672bfa3d1e8396a33437a5712970b5d 100644 (file)
 #include "lib/tfrc.h"
 #include "../ccid.h"
 
-/* Two seconds as per RFC 3448 4.2 */
+/* Two seconds as per RFC 5348, 4.2 */
 #define TFRC_INITIAL_TIMEOUT      (2 * USEC_PER_SEC)
 
-/* In usecs - half the scheduling granularity as per RFC3448 4.6 */
-#define TFRC_OPSYS_HALF_TIME_GRAN  (USEC_PER_SEC / (2 * HZ))
-
 /* Parameter t_mbi from [RFC 3448, 4.3]: backoff interval in seconds */
 #define TFRC_T_MBI                64
 
+/*
+ * The t_delta parameter (RFC 5348, 8.3): delays of less than %USEC_PER_MSEC are
+ * rounded down to 0, since sk_reset_timer() here uses millisecond granularity.
+ * Hence we can use a constant t_delta = %USEC_PER_MSEC when HZ >= 500. A coarse
+ * resolution of HZ < 500 means that the error is below one timer tick (t_gran)
+ * when using the constant t_delta  =  t_gran / 2  =  %USEC_PER_SEC / (2 * HZ).
+ */
+#if (HZ >= 500)
+# define TFRC_T_DELTA             USEC_PER_MSEC
+#else
+# define TFRC_T_DELTA             (USEC_PER_SEC / (2 * HZ))
+#endif
+
 enum ccid3_options {
        TFRC_OPT_LOSS_EVENT_RATE = 192,
        TFRC_OPT_LOSS_INTERVALS  = 193,
        TFRC_OPT_RECEIVE_RATE    = 194,
 };
 
-struct ccid3_options_received {
-       u64 ccid3or_seqno:48,
-           ccid3or_loss_intervals_idx:16;
-       u16 ccid3or_loss_intervals_len;
-       u32 ccid3or_loss_event_rate;
-       u32 ccid3or_receive_rate;
-};
-
 /* TFRC sender states */
 enum ccid3_hc_tx_states {
        TFRC_SSTATE_NO_SENT = 1,
        TFRC_SSTATE_NO_FBACK,
        TFRC_SSTATE_FBACK,
-       TFRC_SSTATE_TERM,
 };
 
 /**
@@ -90,19 +91,16 @@ enum ccid3_hc_tx_states {
  * @tx_no_feedback_timer: Handle to no feedback timer
  * @tx_t_ld:             Time last doubled during slow start
  * @tx_t_nom:            Nominal send time of next packet
- * @tx_delta:            Send timer delta (RFC 3448, 4.6) in usecs
  * @tx_hist:             Packet history
- * @tx_options_received:  Parsed set of retrieved options
  */
 struct ccid3_hc_tx_sock {
-       struct tfrc_tx_info             tx_tfrc;
-#define tx_x                           tx_tfrc.tfrctx_x
-#define tx_x_recv                      tx_tfrc.tfrctx_x_recv
-#define tx_x_calc                      tx_tfrc.tfrctx_x_calc
-#define tx_rtt                         tx_tfrc.tfrctx_rtt
-#define tx_p                           tx_tfrc.tfrctx_p
-#define tx_t_rto                       tx_tfrc.tfrctx_rto
-#define tx_t_ipi                       tx_tfrc.tfrctx_ipi
+       u64                             tx_x;
+       u64                             tx_x_recv;
+       u32                             tx_x_calc;
+       u32                             tx_rtt;
+       u32                             tx_p;
+       u32                             tx_t_rto;
+       u32                             tx_t_ipi;
        u16                             tx_s;
        enum ccid3_hc_tx_states         tx_state:8;
        u8                              tx_last_win_count;
@@ -110,9 +108,7 @@ struct ccid3_hc_tx_sock {
        struct timer_list               tx_no_feedback_timer;
        ktime_t                         tx_t_ld;
        ktime_t                         tx_t_nom;
-       u32                             tx_delta;
        struct tfrc_tx_hist_entry       *tx_hist;
-       struct ccid3_options_received   tx_options_received;
 };
 
 static inline struct ccid3_hc_tx_sock *ccid3_hc_tx_sk(const struct sock *sk)
@@ -126,21 +122,16 @@ static inline struct ccid3_hc_tx_sock *ccid3_hc_tx_sk(const struct sock *sk)
 enum ccid3_hc_rx_states {
        TFRC_RSTATE_NO_DATA = 1,
        TFRC_RSTATE_DATA,
-       TFRC_RSTATE_TERM    = 127,
 };
 
 /**
  * struct ccid3_hc_rx_sock - CCID3 receiver half-connection socket
- * @rx_x_recv:              Receiver estimate of send rate (RFC 3448 4.3)
- * @rx_rtt:                 Receiver estimate of rtt (non-standard)
- * @rx_p:                   Current loss event rate (RFC 3448 5.4)
  * @rx_last_counter:        Tracks window counter (RFC 4342, 8.1)
  * @rx_state:               Receiver state, one of %ccid3_hc_rx_states
  * @rx_bytes_recv:          Total sum of DCCP payload bytes
  * @rx_x_recv:              Receiver estimate of send rate (RFC 3448, sec. 4.3)
  * @rx_rtt:                 Receiver estimate of RTT
  * @rx_tstamp_last_feedback: Time at which last feedback was sent
- * @rx_tstamp_last_ack:             Time at which last feedback was sent
  * @rx_hist:                Packet history (loss detection + RTT sampling)
  * @rx_li_hist:                     Loss Interval database
  * @rx_s:                   Received packet size in bytes