Changeset 4738

Show
Ignore:
Timestamp:
03/29/10 01:25:24 (4 years ago)
Author:
soohyunc
Message:

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)

Location:
vic/branches/cc/cc
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • vic/branches/cc/cc/tfwc_sndr.cpp

    r4732 r4738  
    4444#include "tfwc_sndr.h" 
    4545 
     46// timestamp skew from Vic to Network Device  
     47// (approximately 4 usec) 
     48#define SKEW 0.000004 
    4649 
    4750/* 
     
    148151 
    149152        // timestamp vector for loss history update 
    150         tsvec_[seqno_%TSZ] = now_; 
     153        tsvec_[seqno_%TSZ] = now_-SKEW; 
    151154        print_packet_tsvec(); 
    152155 
     
    188191        jacked_ = ends_ - 1; 
    189192 
    190         //print_xr_info(); 
     193        //print_xr_info(__FILE__,__LINE__); 
    191194 
    192195        // get the number of AckVec chunks 
  • vic/branches/cc/cc/tfwc_sndr.h

    r4732 r4738  
    7979        virtual ~TfwcSndr() {}; 
    8080 
     81        // virtual functions 
    8182        virtual void cc_tfwc_output(bool recv_by_ch=0) = 0; 
    8283        virtual void cc_tfwc_output(pktbuf*) = 0; 
     
    101102        inline u_int32_t tfwc_magic() { return cwnd_; }; 
    102103 
    103         // set timestamp in u_int32_t type (TfwcSndr) 
    104         inline u_int32_t tfwc_sndr_t_now() { 
    105                 timeval tv; 
    106                 ::gettimeofday(&tv, 0); 
    107                 return (tv.tv_sec + tv.tv_usec); 
    108         } 
    109  
    110104        // set timestamp in double type (TfwcSndr) 
    111105        inline double tfwc_sndr_now() { 
     
    146140                int l; 
    147141                for (l = 0; l < BITLEN; l++) { 
    148                         if(GET_HEAD_VEC(ackvec, l)) 
    149                                 break; 
     142                if(GET_HEAD_VEC(ackvec, l)) break; 
    150143                } 
    151144                return (BITLEN - l); 
     
    155148                int l; 
    156149                for (l = 0; l < BITLEN; l++) { 
    157                         if(GET_TAIL_VEC(ackvec, l)) 
    158                                 break; 
     150                if(GET_TAIL_VEC(ackvec, l)) break; 
    159151                } 
    160152                return (l + 1); 
     
    162154        // generate margin vector 
    163155        inline void marginvec(u_int16_t hseq) { 
    164                 for (int i = 0; i < DUPACKS; i++)  
    165                         // round up if it is less than zero 
    166                         mvec_[i] = ((hseq - i) < 0) ? 0 : (hseq - i); 
     156        for (int i = 0; i < DUPACKS; i++)  
     157                // round up if it is less than zero 
     158                mvec_[i] = ((hseq - i) < 0) ? 0 : (hseq - i); 
    167159        } 
    168160        // ackofack 
    169161        inline u_int16_t ackofack () { 
    170                 return ((mvec_[DUPACKS - 1] - 1) <= 0) ? 
    171                         0 : (u_int16_t) (mvec_[DUPACKS - 1] - 1); 
     162        return ((mvec_[DUPACKS - 1] - 1) <= 0) ? 
     163                0 : (u_int16_t) (mvec_[DUPACKS - 1] - 1); 
    172164        } 
    173165        // print mvec 
    174166        inline void print_mvec() { 
    175                 fprintf(stderr, "\tmargin numbers: ( %d %d %d )\n",  
    176                                 mvec_[0], mvec_[1], mvec_[2]); 
     167        fprintf(stderr, "\tmargin numbers: ( %d %d %d )\n",  
     168        mvec_[0], mvec_[1], mvec_[2]); 
    177169        } 
    178170        // printf seqvec 
    179171        inline void print_seqvec(int numelm) { 
    180                 fprintf(stderr, "\tsequence numbers: ("); 
     172        fprintf(stderr, "\tsequence numbers: ("); 
    181173                for (int i = 0; i < numelm; i++) 
    182                         fprintf(stderr, " %d", seqvec_[i]); 
    183                 fprintf(stderr, " )\n"); 
     174                fprintf(stderr, " %d", seqvec_[i]); 
     175        fprintf(stderr, " )\n"); 
    184176        } 
    185177        // print vec 
    186178        inline void print_vec(u_int16_t *vec, int c) { 
    187                 fprintf(stderr, "\t("); 
     179        fprintf(stderr, "\t("); 
    188180                for (int i = 0; i < c; i++) 
    189                         fprintf(stderr, " %d", vec[i]); 
    190                 fprintf(stderr, " )\n"); 
     181                fprintf(stderr, " %d", vec[i]); 
     182        fprintf(stderr, " )\n"); 
    191183        } 
    192184 
     
    253245        inline void clone_ackv(u_int16_t *c, int n) { 
    254246                for (int i = 0; i < n; i++) 
    255                         ackv_[i] = ntohs(c[i]); 
     247                ackv_[i] = ntohs(c[i]); 
    256248        } 
    257249 
     
    259251        inline void copy_ackv(int n) { 
    260252                for(int i = 0; i < n; i++) 
    261                         pvec_[i] = ackv_[i]; 
     253                pvec_[i] = ackv_[i]; 
    262254        } 
    263255 
     
    265257        inline void clear_tsv (int n) { 
    266258                for (int i = 0; i < n; i++) 
    267                         tsvec_[i] = 0; 
     259                tsvec_[i] = 0; 
    268260        } 
    269261 
     
    271263        inline void clear_sqv (int n) { 
    272264                for (int i = 0; i < n; i++) 
    273                         seqvec_[i] = 0; 
     265                seqvec_[i] = 0; 
    274266        } 
    275267 
     
    277269        inline void clear_ackv (int n) { 
    278270                for (int i = 0; i < n; i++) 
    279                         ackv_[i] = 0; 
     271                ackv_[i] = 0; 
    280272        } 
    281273 
     
    283275        inline void clear_pvec (int n) { 
    284276                for (int i = 0; i < n; i++) 
    285                         pvec_[i] = 0; 
     277                pvec_[i] = 0; 
    286278        } 
    287279 
     
    289281        inline void clear_refv (int n) { 
    290282                for (int i = 0; i < n; i++) 
    291                         refvec_[i] = 0; 
     283                refvec_[i] = 0; 
    292284        } 
    293285 
    294286        // number of ackvec chunks 
    295287        inline int get_numvec(int n) { 
    296                 return (n/BITLEN + (n%BITLEN > 0));      
     288        return (n/BITLEN + (n%BITLEN > 0));      
    297289        } 
    298290 
    299291        // number of ackvec elements 
    300292        inline int get_numelm (int begin, int end) { 
    301                 return (end - begin + 1); 
     293        return (end - begin + 1); 
    302294        } 
    303295 
     
    318310 
    319311        // print received XR chunk info 
    320         inline void print_xr_info() { 
    321         fprintf(stderr,  
    322         "    [%s +%d] begins: %d ends: %d jacked: %d\n",  
    323         __FILE__, __LINE__, begins_, ends_, jacked_); 
     312        inline void print_xr_info(const char* str, const int i) { 
     313        fprintf(stderr, 
     314        "    [%s +%d] begins: %d ends: %d jacked: %d\n", 
     315        str, i, begins_, ends_, jacked_); 
    324316        } 
    325317 
    326318        // print RTT related info for debugging 
    327319        inline void print_rtt_info() { 
    328         fprintf(stderr,  
    329         "\t<< now_: %f tsvec_[%d]: %f rtt: %f srtt: %f\n", 
     320        fprintf(stderr, 
     321        "\t>> now_: %f tsvec_[%d]: %f rtt: %f srtt: %f\n", 
    330322        so_recv_, jacked_%TSZ, tsvec_[jacked_%TSZ], tao_, srtt_); 
     323        } 
     324        inline void print_rtt_info(const char* str) { 
     325        fprintf(stderr, 
     326        "\t%s now_: %f tsvec_[%d]: %f rtt: %f srtt: %f\n", 
     327        str, so_recv_, jacked_%TSZ, tsvec_[jacked_%TSZ], tao_, srtt_); 
    331328        } 
    332329