diff options
author | Gerrit Renker <gerrit@erg.abdn.ac.uk> | 2007-12-12 11:03:01 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-01-28 17:57:19 -0500 |
commit | de0d411cb8ea51175f52d935faead5c542b6e007 (patch) | |
tree | d26398b1da10d52a4138728ff11e955d9d1fba04 | |
parent | db64196038e79b0460245d558e54ff4a21a52d1f (diff) |
[TFRC]: CCID3 (and CCID4) needs to access these inlines
This moves two inlines back to packet_history.h: these are not private
to packet_history.c, but are needed by CCID3/4 to detect whether a new
loss is indicated, or whether a loss is already pending.
Signed-off-by: Gerrit Renker <gerrit@erg.abdn.ac.uk>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | net/dccp/ccids/lib/packet_history.c | 26 | ||||
-rw-r--r-- | net/dccp/ccids/lib/packet_history.h | 35 |
2 files changed, 31 insertions, 30 deletions
diff --git a/net/dccp/ccids/lib/packet_history.c b/net/dccp/ccids/lib/packet_history.c index 5b10a1ecf138..20af1a693427 100644 --- a/net/dccp/ccids/lib/packet_history.c +++ b/net/dccp/ccids/lib/packet_history.c | |||
@@ -191,32 +191,6 @@ int tfrc_rx_hist_duplicate(struct tfrc_rx_hist *h, struct sk_buff *skb) | |||
191 | } | 191 | } |
192 | EXPORT_SYMBOL_GPL(tfrc_rx_hist_duplicate); | 192 | EXPORT_SYMBOL_GPL(tfrc_rx_hist_duplicate); |
193 | 193 | ||
194 | /* initialise loss detection and disable RTT sampling */ | ||
195 | static inline void tfrc_rx_hist_loss_indicated(struct tfrc_rx_hist *h) | ||
196 | { | ||
197 | h->loss_count = 1; | ||
198 | } | ||
199 | |||
200 | /* indicate whether previously a packet was detected missing */ | ||
201 | static inline int tfrc_rx_hist_loss_pending(const struct tfrc_rx_hist *h) | ||
202 | { | ||
203 | return h->loss_count; | ||
204 | } | ||
205 | |||
206 | /* any data packets missing between last reception and skb ? */ | ||
207 | int tfrc_rx_hist_new_loss_indicated(struct tfrc_rx_hist *h, | ||
208 | const struct sk_buff *skb, u32 ndp) | ||
209 | { | ||
210 | int delta = dccp_delta_seqno(tfrc_rx_hist_last_rcv(h)->tfrchrx_seqno, | ||
211 | DCCP_SKB_CB(skb)->dccpd_seq); | ||
212 | |||
213 | if (delta > 1 && ndp < delta) | ||
214 | tfrc_rx_hist_loss_indicated(h); | ||
215 | |||
216 | return tfrc_rx_hist_loss_pending(h); | ||
217 | } | ||
218 | EXPORT_SYMBOL_GPL(tfrc_rx_hist_new_loss_indicated); | ||
219 | |||
220 | static void tfrc_rx_hist_swap(struct tfrc_rx_hist *h, const u8 a, const u8 b) | 194 | static void tfrc_rx_hist_swap(struct tfrc_rx_hist *h, const u8 a, const u8 b) |
221 | { | 195 | { |
222 | const u8 idx_a = tfrc_rx_hist_index(h, a), | 196 | const u8 idx_a = tfrc_rx_hist_index(h, a), |
diff --git a/net/dccp/ccids/lib/packet_history.h b/net/dccp/ccids/lib/packet_history.h index 24edd8df54b9..c7eeda49cb20 100644 --- a/net/dccp/ccids/lib/packet_history.h +++ b/net/dccp/ccids/lib/packet_history.h | |||
@@ -118,16 +118,43 @@ static inline struct tfrc_rx_hist_entry * | |||
118 | return h->ring[h->loss_start]; | 118 | return h->ring[h->loss_start]; |
119 | } | 119 | } |
120 | 120 | ||
121 | /* initialise loss detection and disable RTT sampling */ | ||
122 | static inline void tfrc_rx_hist_loss_indicated(struct tfrc_rx_hist *h) | ||
123 | { | ||
124 | h->loss_count = 1; | ||
125 | } | ||
126 | |||
127 | /* indicate whether previously a packet was detected missing */ | ||
128 | static inline int tfrc_rx_hist_loss_pending(const struct tfrc_rx_hist *h) | ||
129 | { | ||
130 | return h->loss_count; | ||
131 | } | ||
132 | |||
133 | /* any data packets missing between last reception and skb ? */ | ||
134 | static inline int tfrc_rx_hist_new_loss_indicated(struct tfrc_rx_hist *h, | ||
135 | const struct sk_buff *skb, | ||
136 | u32 ndp) | ||
137 | { | ||
138 | int delta = dccp_delta_seqno(tfrc_rx_hist_last_rcv(h)->tfrchrx_seqno, | ||
139 | DCCP_SKB_CB(skb)->dccpd_seq); | ||
140 | |||
141 | if (delta > 1 && ndp < delta) | ||
142 | tfrc_rx_hist_loss_indicated(h); | ||
143 | |||
144 | return tfrc_rx_hist_loss_pending(h); | ||
145 | } | ||
146 | |||
121 | extern void tfrc_rx_hist_add_packet(struct tfrc_rx_hist *h, | 147 | extern void tfrc_rx_hist_add_packet(struct tfrc_rx_hist *h, |
122 | const struct sk_buff *skb, const u32 ndp); | 148 | const struct sk_buff *skb, const u32 ndp); |
123 | 149 | ||
124 | extern int tfrc_rx_hist_duplicate(struct tfrc_rx_hist *h, struct sk_buff *skb); | 150 | extern int tfrc_rx_hist_duplicate(struct tfrc_rx_hist *h, struct sk_buff *skb); |
125 | extern int tfrc_rx_hist_new_loss_indicated(struct tfrc_rx_hist *h, | 151 | |
126 | const struct sk_buff *skb, u32 ndp); | ||
127 | struct tfrc_loss_hist; | 152 | struct tfrc_loss_hist; |
128 | extern int tfrc_rx_handle_loss(struct tfrc_rx_hist *, struct tfrc_loss_hist *, | 153 | extern int tfrc_rx_handle_loss(struct tfrc_rx_hist *h, |
154 | struct tfrc_loss_hist *lh, | ||
129 | struct sk_buff *skb, u32 ndp, | 155 | struct sk_buff *skb, u32 ndp, |
130 | u32 (*first_li)(struct sock *), struct sock *); | 156 | u32 (*first_li)(struct sock *sk), |
157 | struct sock *sk); | ||
131 | extern u32 tfrc_rx_hist_sample_rtt(struct tfrc_rx_hist *h, | 158 | extern u32 tfrc_rx_hist_sample_rtt(struct tfrc_rx_hist *h, |
132 | const struct sk_buff *skb); | 159 | const struct sk_buff *skb); |
133 | extern int tfrc_rx_hist_alloc(struct tfrc_rx_hist *h); | 160 | extern int tfrc_rx_hist_alloc(struct tfrc_rx_hist *h); |