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

sumover-dev at cs.ucl.ac.uk sumover-dev at cs.ucl.ac.uk
Mon Mar 29 01:25:24 BST 2010


Author: soohyunc
Date: Mon Mar 29 01:25:24 2010
New Revision: 4738

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

Log:
o  there is about 4 usec time difference between Vic and Network device.
   (we need subtracting this skew'ed value when timestamping)

o  some printf statement for debugging (format changes)



Modified: vic/branches/cc/cc/tfwc_sndr.cpp
==============================================================================
--- vic/branches/cc/cc/tfwc_sndr.cpp	(original)
+++ vic/branches/cc/cc/tfwc_sndr.cpp	Mon Mar 29 01:25:24 2010
@@ -43,6 +43,9 @@
 #include "transmitter.h"
 #include "tfwc_sndr.h"
 
+// timestamp skew from Vic to Network Device 
+// (approximately 4 usec)
+#define SKEW 0.000004
 
 /*
  * retransmission timer
@@ -147,7 +150,7 @@
 	now_	= now;
 
 	// timestamp vector for loss history update
-	tsvec_[seqno_%TSZ] = now_;
+	tsvec_[seqno_%TSZ] = now_-SKEW;
 	print_packet_tsvec();
 
 	// sequence number must be greater than zero
@@ -187,7 +190,7 @@
 	// i.e.,) head seqno(= highest seqno) of this ackvec
 	jacked_ = ends_ - 1;
 
-	//print_xr_info();
+	//print_xr_info(__FILE__,__LINE__);
 
 	// get the number of AckVec chunks
 	//   use seqno space to work out the num chunks

Modified: vic/branches/cc/cc/tfwc_sndr.h
==============================================================================
--- vic/branches/cc/cc/tfwc_sndr.h	(original)
+++ vic/branches/cc/cc/tfwc_sndr.h	Mon Mar 29 01:25:24 2010
@@ -78,6 +78,7 @@
 	TfwcSndr();
 	virtual ~TfwcSndr() {};
 
+	// virtual functions
 	virtual void cc_tfwc_output(bool recv_by_ch=0) = 0;
 	virtual void cc_tfwc_output(pktbuf*) = 0;
 	virtual void cc_tfwc_trigger(pktbuf* pb=0) = 0;
@@ -100,13 +101,6 @@
 	// return tfwc controlled cwnd value
 	inline u_int32_t tfwc_magic() { return cwnd_; };
 
-	// set timestamp in u_int32_t type (TfwcSndr)
-	inline u_int32_t tfwc_sndr_t_now() {
-		timeval tv;
-		::gettimeofday(&tv, 0);
-		return (tv.tv_sec + tv.tv_usec);
-	}
-
 	// set timestamp in double type (TfwcSndr)
 	inline double tfwc_sndr_now() {
 		timeval tv;
@@ -145,8 +139,7 @@
 	inline u_int16_t get_head_pos(u_int16_t ackvec) {
 		int l;
 		for (l = 0; l < BITLEN; l++) {
-			if(GET_HEAD_VEC(ackvec, l))
-				break;
+		if(GET_HEAD_VEC(ackvec, l)) break;
 		}
 		return (BITLEN - l);
 	}
@@ -154,40 +147,39 @@
 	inline u_int16_t get_tail_pos(u_int16_t ackvec) {
 		int l;
 		for (l = 0; l < BITLEN; l++) {
-			if(GET_TAIL_VEC(ackvec, l))
-				break;
+		if(GET_TAIL_VEC(ackvec, l)) break;
 		}
 		return (l + 1);
 	}
 	// generate margin vector
 	inline void marginvec(u_int16_t hseq) {
-		for (int i = 0; i < DUPACKS; i++) 
-			// round up if it is less than zero
-			mvec_[i] = ((hseq - i) < 0) ? 0 : (hseq - i);
+	for (int i = 0; i < DUPACKS; i++) 
+		// round up if it is less than zero
+		mvec_[i] = ((hseq - i) < 0) ? 0 : (hseq - i);
 	}
 	// ackofack
 	inline u_int16_t ackofack () {
-		return ((mvec_[DUPACKS - 1] - 1) <= 0) ?
-			0 : (u_int16_t) (mvec_[DUPACKS - 1] - 1);
+	return ((mvec_[DUPACKS - 1] - 1) <= 0) ?
+		0 : (u_int16_t) (mvec_[DUPACKS - 1] - 1);
 	}
 	// print mvec
 	inline void print_mvec() {
-		fprintf(stderr, "\tmargin numbers: ( %d %d %d )\n", 
-				mvec_[0], mvec_[1], mvec_[2]);
+	fprintf(stderr, "\tmargin numbers: ( %d %d %d )\n", 
+	mvec_[0], mvec_[1], mvec_[2]);
 	}
 	// printf seqvec
 	inline void print_seqvec(int numelm) {
-		fprintf(stderr, "\tsequence numbers: (");
+	fprintf(stderr, "\tsequence numbers: (");
 		for (int i = 0; i < numelm; i++)
-			fprintf(stderr, " %d", seqvec_[i]);
-		fprintf(stderr, " )\n");
+		fprintf(stderr, " %d", seqvec_[i]);
+	fprintf(stderr, " )\n");
 	}
 	// print vec
 	inline void print_vec(u_int16_t *vec, int c) {
-		fprintf(stderr, "\t(");
+	fprintf(stderr, "\t(");
 		for (int i = 0; i < c; i++)
-			fprintf(stderr, " %d", vec[i]);
-		fprintf(stderr, " )\n");
+		fprintf(stderr, " %d", vec[i]);
+	fprintf(stderr, " )\n");
 	}
 
 	// retransmission timer
@@ -252,53 +244,53 @@
 	// AckVec clone from Vic 
 	inline void clone_ackv(u_int16_t *c, int n) {
 		for (int i = 0; i < n; i++)
-			ackv_[i] = ntohs(c[i]);
+		ackv_[i] = ntohs(c[i]);
 	}
 
 	// copy AckVec to store
 	inline void copy_ackv(int n) {
 		for(int i = 0; i < n; i++)
-			pvec_[i] = ackv_[i];
+		pvec_[i] = ackv_[i];
 	}
 
 	// clear timestamp vector
 	inline void clear_tsv (int n) {
 		for (int i = 0; i < n; i++)
-			tsvec_[i] = 0;
+		tsvec_[i] = 0;
 	}
 
 	// clear seqvec
 	inline void clear_sqv (int n) {
 		for (int i = 0; i < n; i++)
-			seqvec_[i] = 0;
+		seqvec_[i] = 0;
 	}
 
 	// clear ackvec
 	inline void clear_ackv (int n) {
 		for (int i = 0; i < n; i++)
-			ackv_[i] = 0;
+		ackv_[i] = 0;
 	}
 
 	// clear ackvec
 	inline void clear_pvec (int n) {
 		for (int i = 0; i < n; i++)
-			pvec_[i] = 0;
+		pvec_[i] = 0;
 	}
 
 	// clear refvec
 	inline void clear_refv (int n) {
 		for (int i = 0; i < n; i++)
-			refvec_[i] = 0;
+		refvec_[i] = 0;
 	}
 
 	// number of ackvec chunks
 	inline int get_numvec(int n) {
-		return (n/BITLEN + (n%BITLEN > 0));	
+	return (n/BITLEN + (n%BITLEN > 0));	
 	}
 
 	// number of ackvec elements
 	inline int get_numelm (int begin, int end) {
-		return (end - begin + 1);
+	return (end - begin + 1);
 	}
 
 	// replace jack'ed 
@@ -317,18 +309,23 @@
 	}
 
 	// print received XR chunk info
-	inline void print_xr_info() {
-	fprintf(stderr, 
-	"    [%s +%d] begins: %d ends: %d jacked: %d\n", 
-	__FILE__, __LINE__, begins_, ends_, jacked_);
+	inline void print_xr_info(const char* str, const int i) {
+	fprintf(stderr,
+	"    [%s +%d] begins: %d ends: %d jacked: %d\n",
+	str, i, begins_, ends_, jacked_);
 	}
 
 	// print RTT related info for debugging
 	inline void print_rtt_info() {
-	fprintf(stderr, 
-	"\t<< now_: %f tsvec_[%d]: %f rtt: %f srtt: %f\n",
+	fprintf(stderr,
+	"\t>> now_: %f tsvec_[%d]: %f rtt: %f srtt: %f\n",
 	so_recv_, jacked_%TSZ, tsvec_[jacked_%TSZ], tao_, srtt_);
 	}
+	inline void print_rtt_info(const char* str) {
+	fprintf(stderr,
+	"\t%s now_: %f tsvec_[%d]: %f rtt: %f srtt: %f\n",
+	str, so_recv_, jacked_%TSZ, tsvec_[jacked_%TSZ], tao_, srtt_);
+	}
 
 	// print ALI for debugging
 	inline void print_ALI() {



More information about the Sumover-dev mailing list