]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - net/dccp/ccids/lib/packet_history.h
Merge branch 'topic/fix/hda' into for-linus
[linux-2.6-omap-h63xx.git] / net / dccp / ccids / lib / packet_history.h
index 555e65cd73a08f98e2f02348a2f524a83f693049..461cc91cce88aecee60a32c8ab496de770192ad5 100644 (file)
 #include <linux/slab.h>
 #include "tfrc.h"
 
-/**
- *  tfrc_tx_hist_entry  -  Simple singly-linked TX history list
- *  @next:  next oldest entry (LIFO order)
- *  @seqno: sequence number of this entry
- *  @stamp: send time of packet with sequence number @seqno
- */
-struct tfrc_tx_hist_entry {
-       struct tfrc_tx_hist_entry *next;
-       u64                       seqno;
-       ktime_t                   stamp;
-};
-
-static inline struct tfrc_tx_hist_entry *
-       tfrc_tx_hist_find_entry(struct tfrc_tx_hist_entry *head, u64 seqno)
-{
-       while (head != NULL && head->seqno != seqno)
-               head = head->next;
-       return head;
-}
+struct tfrc_tx_hist_entry;
 
 extern int  tfrc_tx_hist_add(struct tfrc_tx_hist_entry **headp, u64 seqno);
 extern void tfrc_tx_hist_purge(struct tfrc_tx_hist_entry **headp);
+extern u32  tfrc_tx_hist_rtt(struct tfrc_tx_hist_entry *head,
+                            const u64 seqno, const ktime_t now);
 
 /* Subtraction a-b modulo-16, respects circular wrap-around */
 #define SUB16(a, b) (((a) + 16 - (b)) & 0xF)
@@ -91,22 +75,12 @@ struct tfrc_rx_hist_entry {
  * @loss_count:                Number of entries in circular history
  * @loss_start:                Movable index (for loss detection)
  * @rtt_sample_prev:   Used during RTT sampling, points to candidate entry
- * @rtt_estimate:      Receiver RTT estimate
- * @packet_size:       Packet size in bytes (as per RFC 3448, 3.1)
- * @bytes_recvd:       Number of bytes received since @bytes_start
- * @bytes_start:       Start time for counting @bytes_recvd
  */
 struct tfrc_rx_hist {
        struct tfrc_rx_hist_entry *ring[TFRC_NDUPACK + 1];
        u8                        loss_count:2,
                                  loss_start:2;
-       /* Receiver RTT sampling */
 #define rtt_sample_prev                  loss_start
-       u32                       rtt_estimate;
-       /* Receiver sampling of application payload lengths */
-       u32                       packet_size,
-                                 bytes_recvd;
-       ktime_t                   bytes_start;
 };
 
 /**
@@ -150,50 +124,20 @@ static inline bool tfrc_rx_hist_loss_pending(const struct tfrc_rx_hist *h)
        return h->loss_count > 0;
 }
 
-/*
- * Accessor functions to retrieve parameters sampled by the RX history
- */
-static inline u32 tfrc_rx_hist_packet_size(const struct tfrc_rx_hist *h)
-{
-       if (h->packet_size == 0) {
-               DCCP_WARN("No sample for s, using fallback\n");
-               return TCP_MIN_RCVMSS;
-       }
-       return h->packet_size;
-
-}
-static inline u32 tfrc_rx_hist_rtt(const struct tfrc_rx_hist *h)
-{
-       if (h->rtt_estimate == 0) {
-               DCCP_WARN("No RTT estimate available, using fallback RTT\n");
-               return  DCCP_FALLBACK_RTT;
-       }
-       return h->rtt_estimate;
-}
-
-static inline void tfrc_rx_hist_restart_byte_counter(struct tfrc_rx_hist *h)
-{
-       h->bytes_recvd = 0;
-       h->bytes_start = ktime_get_real();
-}
-
-extern u32  tfrc_rx_hist_x_recv(struct tfrc_rx_hist *h, const u32 last_x_recv);
-
-
 extern void tfrc_rx_hist_add_packet(struct tfrc_rx_hist *h,
                                    const struct sk_buff *skb, const u64 ndp);
 
 extern int tfrc_rx_hist_duplicate(struct tfrc_rx_hist *h, struct sk_buff *skb);
 
 struct tfrc_loss_hist;
-extern bool tfrc_rx_congestion_event(struct tfrc_rx_hist *h,
-                                    struct tfrc_loss_hist *lh,
-                                    struct sk_buff *skb, const u64 ndp,
-                                    u32 (*first_li)(struct sock *sk),
-                                    struct sock *sk);
-extern void tfrc_rx_hist_sample_rtt(struct tfrc_rx_hist *h,
-                                   const struct sk_buff *skb);
-extern int  tfrc_rx_hist_init(struct tfrc_rx_hist *h, struct sock *sk);
+extern int  tfrc_rx_handle_loss(struct tfrc_rx_hist *h,
+                               struct tfrc_loss_hist *lh,
+                               struct sk_buff *skb, const u64 ndp,
+                               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);
 extern void tfrc_rx_hist_purge(struct tfrc_rx_hist *h);
 
 #endif /* _DCCP_PKT_HIST_ */