[CCID 3]: New RX History Step 1 - Integrate new history structure
This is a `glue' patch to integrate the new RX history structure:
* fields are now present in rx_sock, but not yet used;
* updated initialisation / clean-up routines accordingly;
* each `#if 0' ... `#endif' refers to one subsequent patch, as previously
discussed, it is better to introduce changes gradually rather than in one
huge batch;
* the remainder of the patch is clerical: re-ordering and #includes.
Signed-off-by: Gerrit Renker <[EMAIL PROTECTED]>
---
net/dccp/ccids/ccid3.c | 11 ++++++++---
net/dccp/ccids/ccid3.h | 15 ++++++---------
2 files changed, 14 insertions(+), 12 deletions(-)
--- a/net/dccp/ccids/ccid3.c
+++ b/net/dccp/ccids/ccid3.c
@@ -33,9 +33,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
-#include "../ccid.h"
#include "../dccp.h"
-#include "lib/packet_history.h"
#include "lib/loss_interval.h"
#include "lib/tfrc.h"
#include "ccid3.h"
@@ -780,7 +778,7 @@ static void ccid3_hc_rx_send_feedback(st
hcrx->ccid3hcrx_elapsed_time = delta / 10;
hcrx->ccid3hcrx_tstamp_last_feedback = now;
- hcrx->ccid3hcrx_ccval_last_counter = dccp_hdr(skb)->dccph_ccval;
+ hcrx->ccid3hcrx_last_counter = dccp_hdr(skb)->dccph_ccval;
hcrx->ccid3hcrx_bytes_recv = 0;
dp->dccps_hc_rx_insert_options = 1;
@@ -832,6 +830,7 @@ static u32 ccid3_hc_rx_calc_first_li(str
int step = 0;
u64 fval;
+#if 0 /* XXX resolved in subsequent patch */
list_for_each_entry_safe(entry, next, &hcrx->ccid3hcrx_hist,
dccphrx_node) {
if (dccp_rx_hist_entry_data_packet(entry)) {
@@ -913,6 +912,8 @@ found:
return ~0;
else
return 1000000 / p;
+#endif
+ return ~0;
}
static void ccid3_hc_rx_update_li(struct sock *sk, u64 seq_loss, u8 win_loss)
@@ -962,6 +963,7 @@ static void ccid3_hc_rx_update_li(struct
}
}
+#if 0 /* XXX obsoleted by subsequent patch */
static int ccid3_hc_rx_detect_loss(struct sock *sk,
struct dccp_rx_hist_entry *packet)
{
@@ -1014,6 +1016,7 @@ detect_out:
hcrx->ccid3hcrx_seqno_nonloss);
return loss;
}
+#endif
static void ccid3_hc_rx_packet_recv(struct sock *sk, struct sk_buff *skb)
{
@@ -1056,6 +1059,7 @@ static void ccid3_hc_rx_packet_recv(stru
return;
}
+#if 0 /* XXX resolved by subsequent patch */
packet = dccp_rx_hist_entry_new(ccid3_rx_hist, sk, opt_recv->dccpor_ndp,
skb, GFP_ATOMIC);
if (unlikely(packet == NULL)) {
@@ -1066,6 +1070,7 @@ static void ccid3_hc_rx_packet_recv(stru
loss = ccid3_hc_rx_detect_loss(sk, packet);
+#endif
if (DCCP_SKB_CB(skb)->dccpd_type == DCCP_PKT_ACK)
return;
--- a/net/dccp/ccids/ccid3.h
+++ b/net/dccp/ccids/ccid3.h
@@ -41,6 +41,7 @@
#include <linux/types.h>
#include <linux/tfrc.h>
#include <asm/unaligned.h>
+#include "lib/packet_history.h"
#include "../ccid.h"
/* Two seconds as per RFC 3448 4.2 */
@@ -127,10 +128,8 @@ enum ccid3_hc_rx_states {
/** struct ccid3_hc_rx_sock - CCID3 receiver half-connection socket
*
- * @ccid3hcrx_seqno_nonloss - Last received non-loss sequence number
- * @ccid3hcrx_ccval_nonloss - Last received non-loss Window CCVal
- * @ccid3hcrx_ccval_last_counter - Tracks window counter (RFC 4342, 8.1)
- * @ccid3hcrx_state - receiver state, one of %ccid3_hc_rx_states
+ * @ccid3hcrx_last_counter - Tracks window counter (RFC 4342, 8.1)
+ * @ccid3hcrx_state - Receiver state, one of %ccid3_hc_rx_states
* @ccid3hcrx_s - Received packet size in bytes
* @ccid3hcrx_bytes_recv - Total sum of DCCP payload bytes
* @ccid3hcrx_x_recv - Receiver estimate of send rate (RFC 3448, sec. 4.3)
@@ -138,14 +137,12 @@ enum ccid3_hc_rx_states {
* @ccid3hcrx_pinv - Reciprocal of Loss Event Rate p (RFC 4342, sec. 8.5)
* @ccid3hcrx_tstamp_last_feedback - Time at which last feedback was sent
* @ccid3hcrx_tstamp_last_ack - Time at which last feedback was sent
- * @ccid3hcrx_hist - Packet history
+ * @ccid3hcrx_hist - Packet history exported by TFRC module
* @ccid3hcrx_li_hist - Loss Interval History
* @ccid3hcrx_elapsed_time - Time since packet reception
*/
struct ccid3_hc_rx_sock {
- u64 ccid3hcrx_seqno_nonloss:48,
- ccid3hcrx_ccval_nonloss:4,
- ccid3hcrx_ccval_last_counter:4;
+ u8 ccid3hcrx_last_counter:4;
enum ccid3_hc_rx_states ccid3hcrx_state:8;
u16 ccid3hcrx_s;
u32 ccid3hcrx_bytes_recv;
@@ -154,7 +151,7 @@ struct ccid3_hc_rx_sock {
u32 ccid3hcrx_pinv;
struct timeval ccid3hcrx_tstamp_last_feedback;
struct timeval ccid3hcrx_tstamp_last_ack;
- struct list_head ccid3hcrx_hist;
+ struct tfrc_rx_hist ccid3hcrx_hist;
struct list_head ccid3hcrx_li_hist;
u32 ccid3hcrx_elapsed_time;
};
-
To unsubscribe from this list: send the line "unsubscribe dccp" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html