[Sumover-dev] [svn commit] r4754 - vic/branches/cc/cc
sumover-dev at cs.ucl.ac.uk
sumover-dev at cs.ucl.ac.uk
Wed Mar 31 23:24:51 BST 2010
Author: soohyunc
Date: Wed Mar 31 23:24:51 2010
New Revision: 4754
Modified:
vic/branches/cc/cc/tfwc_sndr.cpp
vic/branches/cc/cc/tfwc_sndr.h
Log:
trim code looking/reading simpler
Modified: vic/branches/cc/cc/tfwc_sndr.cpp
==============================================================================
--- vic/branches/cc/cc/tfwc_sndr.cpp (original)
+++ vic/branches/cc/cc/tfwc_sndr.cpp Wed Mar 31 23:24:51 2010
@@ -215,7 +215,7 @@
clear_ackv(num_vec_);
// clone AckVec from Vic
clone_ackv(chunk, num_vec_);
- //print_vec(ackv_, num_vec_);
+ //print_vec("ackvec", ackv_, num_vec_);
//---------------------------------------------------------*
// detect packet reordering and reordered ack delivery
@@ -226,7 +226,7 @@
//
if(jacked_ < aoa_) {
debug_msg("warning: this ack(%d) is older than AoA(%d)!\n", jacked_,aoa_);
- // trigger packets out to keep Jacob's packet conservation rule
+ // trigger a packet out to keep Jacob's packet conservation rule
packet_clocking(pb, recv_by_ch);
return;
}
@@ -236,9 +236,10 @@
else if(out_of_ack(jacked_, seqvec_, num_seqvec_)) {
debug_msg("warning: this ack(%d) itself is out-of-order!\n",jacked_);
// if the disorder is beyond 3 dupack rule,
- // trigger packets out to keep Jacob's packet conservation rule
+ // revert to the earlier history
if(shift >= DUPACKS)
revert = revert_interval(jacked_);
+ // then, update cwnd
cwnd_in_packets(revert);
print_cwnd();
return;
@@ -278,7 +279,7 @@
}
// generate seqno vector
- //print_vec(ackv_, num_vec_);
+ //print_vec("ackvec", ackv_, num_vec_);
gen_seqvec(ackv_, num_vec_);
// generate margin vector
@@ -297,9 +298,10 @@
// finally, we only need to clock packets out.
// (i.e., do NOT update cwnd and RTT)
if(reorder_) {
- // triggering only if the disorder is beyond 3 dupack rule,
+ // revert to the earlier history if the disorder is beyond 3 dupack rule
if (shift >= DUPACKS)
revert = revert_interval(jacked_);
+ // then, update cwnd
cwnd_in_packets(revert);
print_cwnd();
reset_var();
@@ -381,7 +383,7 @@
clear_pvec(num_vec_);
// store ackv
copy_ackv(num_vec_);
- //print_vec(pvec_, num_vec_);
+ //print_vec("stored ackvec", pvec_, num_vec_);
// finally, free ackvec
free(ackv_);
@@ -422,7 +424,7 @@
// therefore, the number of seqvec elements is:
num_seqvec_ = num_elm_ - num_missing_;
// printing retrieved sequence numbers from received AckVec
- print_seqvec(num_seqvec_);
+ print_vec("sequence numbers", seqvec_, num_seqvec_);
}
/*
@@ -576,7 +578,7 @@
* core part for congestion window control
* (cwnd is in bytes)
*/
-void cwnd_in_packets() {
+void cwnd_in_bytes() {
}
/*
@@ -678,17 +680,9 @@
// compare reference with seqvec
for (int i = 0; i < num_refvec_; i++) {
- // is there a loss found?
- for (int j = 0; j < num_seqvec_; j++) {
- if (refvec_[i] == seqvec_[j]) {
- is_loss = false;
- break;
- } else
- is_loss = true;
- }
-
- // is this a new loss event?
- if (is_loss) {
+ // is there a loss found?? and, is this a new loss event??
+ if (!find_seqno(seqvec_, num_seqvec_, refvec_[i])) {
+ is_loss = true;
if (tsvec_[refvec_[i]%TSZ] - ts_ > srtt_)
is_new_event = true;
else
@@ -825,6 +819,13 @@
}
return false;
}
+bool TfwcSndr::find_seqno(u_int32_t *v, int n, u_int32_t target) {
+ for (int i = 0; i < n; i++) {
+ if(v[i] == target)
+ return true;
+ }
+ return false;
+}
/*
* print history item
Modified: vic/branches/cc/cc/tfwc_sndr.h
==============================================================================
--- vic/branches/cc/cc/tfwc_sndr.h (original)
+++ vic/branches/cc/cc/tfwc_sndr.h Wed Mar 31 23:24:51 2010
@@ -156,25 +156,6 @@
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]);
- }
- // printf seqvec
- inline void print_seqvec(int numelm) {
- fprintf(stderr, "\tsequence numbers: (");
- for (int i = 0; i < numelm; i++)
- fprintf(stderr, " %d", seqvec_[i]);
- fprintf(stderr, " )\n");
- }
- // print vec
- inline void print_vec(u_int16_t *vec, int c) {
- fprintf(stderr, "\t(");
- for (int i = 0; i < c; i++)
- fprintf(stderr, " %d", vec[i]);
- fprintf(stderr, " )\n");
- }
// retransmission timer
TfwcRtxTimer rtx_timer_;
@@ -317,6 +298,7 @@
// find seqno
bool find_seqno(u_int16_t *v, int n, int target);
+ bool find_seqno(u_int32_t *v, int n, u_int32_t target);
// print cwnd for debugging
inline void print_cwnd() {
@@ -353,6 +335,25 @@
now_, seqno_%TSZ, tsvec_[seqno_%TSZ]);
}
+ // print mvec
+ inline void print_mvec() {
+ fprintf(stderr, "\tmargin numbers: ( %d %d %d )\n",
+ mvec_[0], mvec_[1], mvec_[2]);
+ }
+ // print vec
+ inline void print_vec(const char* str, u_int32_t *vec, int c) {
+ fprintf(stderr, "\t%s: (", str);
+ for (int i = 0; i < c; i++)
+ fprintf(stderr, " %d", vec[i]);
+ fprintf(stderr, " )\n");
+ }
+ inline void print_vec(const char* str, u_int16_t *vec, int c) {
+ fprintf(stderr, "\t%s: (", str);
+ for (int i = 0; i < c; i++)
+ fprintf(stderr, " %d", vec[i]);
+ fprintf(stderr, " )\n");
+ }
+
int ndtp_; // number of data packet sent
int nakp_; // number of ackvec packet received
int ntep_; // number of ts echo packet received
More information about the Sumover-dev
mailing list