[Sumover-dev] [svn commit] r4332 - vic/branches/cc/cc

sumover-dev at cs.ucl.ac.uk sumover-dev at cs.ucl.ac.uk
Sat Nov 22 19:34:46 GMT 2008


Author: soohyunc
Date: Sat Nov 22 19:34:46 2008
New Revision: 4332

Modified:
   vic/branches/cc/cc/tfwc_sndr.h

Log:
o  moved bitmap operation to a separate file so that this function can be
   invoked from other files

o  added some display functions for debugging purpose
   (display margin vector and sequence numbers)


Modified: vic/branches/cc/cc/tfwc_sndr.h
==============================================================================
--- vic/branches/cc/cc/tfwc_sndr.h	(original)
+++ vic/branches/cc/cc/tfwc_sndr.h	Sat Nov 22 19:34:46 2008
@@ -36,11 +36,11 @@
 #ifndef vic_tfwc_sndr_h
 #define vic_tfwc_sndr_h
 
+#include "bitmap.h"	// bitmap operations
+
 #define DUPACKS 3   // simulating TCP's 3 dupacks
-#define CHB	0x80000000	// ackvec check bit (head search)
-#define CTB	0x01		// ackvec check bit (tail search)
-#define TSZ	1000		// tsvec_ size
-#define SSZ 1000		// seqvec_ size
+#define TSZ	1000	// tsvec_ size
+#define SSZ 1000	// seqvec_ size
 
 #define SHORT_HISTORY		// history size = 8
 #ifdef  SHORT_HISTORY
@@ -52,21 +52,6 @@
 #define T_RTTVAR_BITS	2	// XXX not used
 #define T_SRTT_BITS		3	// XXX not used
 
-// set AckVec bitmap from LSB
-#define SET_BIT_VEC(ackvec_, bit) (ackvec_ = ((ackvec_ << 1) | bit))
-
-// AckVec bitmap at i-th location
-#define GET_BIT_VEC(ackvec_, i, seqno) ((1 << (seqno - i)) & ackvec_)
-
-// AckVec head search
-#define GET_HEAD_VEC(ackvec_, i) ( ackvec_ & (CHB >> i) )
-
-// AckVec tail search
-#define GET_TAIL_VEC(ackvec_, i) ( ackvec_ & (CTB << i) )
-
-// check bit at i-th location
-#define CHECK_BIT_AT(vec, i) ( vec & (1 << (i-1)) )
-
 class TfwcSndr {
 public:
 	TfwcSndr();
@@ -151,12 +136,23 @@
 	}
 	// ackofack
 	inline u_int16_t ackofack () {
-		int retval = mvec_[DUPACKS - 1] - 1;
-
-		if (retval < 0) 
-			retval = 0;
-
-		return (u_int16_t) retval;
+		return ((mvec_[DUPACKS - 1] - 1) < 0) ?
+			0 : (u_int16_t) (mvec_[DUPACKS - 1] - 1);
+	}
+	// print mvec
+	inline void print_mvec() {
+		printf("\tmargin numbers: ( %d %d %d )\n", 
+				mvec_[0], mvec_[1], mvec_[2]);
+	}
+	// printf seqvec
+	inline void print_seqvec(u_int32_t vec) {
+        int hseq = get_head_pos(vec) + aoa_;    // ackvec head seqno
+        int cnt = hseq - aoa_;  // number of packets in ackvec
+
+		printf("\tsequence numbers: (");
+		for (int i = 0; i < cnt; i++)
+			printf(" %d", seqvec_[i]);
+		printf(" )\n");
 	}
 
 	int mvec_[DUPACKS]; // margin vec (simulatinmg TCP 3 dupacks)



More information about the Sumover-dev mailing list