[TFRC]: CCID3 (and CCID4) needs to access these inlines
[pandora-kernel.git] / net / dccp / ccids / lib / packet_history.h
index 24edd8d..c7eeda4 100644 (file)
@@ -118,16 +118,43 @@ static inline struct tfrc_rx_hist_entry *
        return h->ring[h->loss_start];
 }
 
+/* initialise loss detection and disable RTT sampling */
+static inline void tfrc_rx_hist_loss_indicated(struct tfrc_rx_hist *h)
+{
+       h->loss_count = 1;
+}
+
+/* indicate whether previously a packet was detected missing */
+static inline int tfrc_rx_hist_loss_pending(const struct tfrc_rx_hist *h)
+{
+       return h->loss_count;
+}
+
+/* any data packets missing between last reception and skb ? */
+static inline int tfrc_rx_hist_new_loss_indicated(struct tfrc_rx_hist *h,
+                                                 const struct sk_buff *skb,
+                                                 u32 ndp)
+{
+       int delta = dccp_delta_seqno(tfrc_rx_hist_last_rcv(h)->tfrchrx_seqno,
+                                    DCCP_SKB_CB(skb)->dccpd_seq);
+
+       if (delta > 1 && ndp < delta)
+               tfrc_rx_hist_loss_indicated(h);
+
+       return tfrc_rx_hist_loss_pending(h);
+}
+
 extern void tfrc_rx_hist_add_packet(struct tfrc_rx_hist *h,
                                    const struct sk_buff *skb, const u32 ndp);
 
 extern int tfrc_rx_hist_duplicate(struct tfrc_rx_hist *h, struct sk_buff *skb);
-extern int tfrc_rx_hist_new_loss_indicated(struct tfrc_rx_hist *h,
-                                          const struct sk_buff *skb, u32 ndp);
+
 struct tfrc_loss_hist;
-extern int  tfrc_rx_handle_loss(struct tfrc_rx_hist *, struct tfrc_loss_hist *,
+extern int  tfrc_rx_handle_loss(struct tfrc_rx_hist *h,
+                               struct tfrc_loss_hist *lh,
                                struct sk_buff *skb, u32 ndp,
-                               u32 (*first_li)(struct sock *), struct sock *);
+                               u32 (*first_li)(struct sock *sk),
+                               struct sock *sk);
 extern u32 tfrc_rx_hist_sample_rtt(struct tfrc_rx_hist *h,
                                   const struct sk_buff *skb);
 extern int tfrc_rx_hist_alloc(struct tfrc_rx_hist *h);