src/wifi/model/mac-low.cc
changeset 11622 d0da0aa55bda
parent 11621 5560c057c54a
child 11628 243b71de25a0
--- a/src/wifi/model/mac-low.cc	Tue Sep 01 22:02:05 2015 +0200
+++ b/src/wifi/model/mac-low.cc	Tue Sep 01 22:44:51 2015 +0200
@@ -1069,7 +1069,7 @@
               NS_LOG_DEBUG ("rx QoS unicast/sendAck from=" << hdr.GetAddr2 ());
               AgreementsI it = m_bAckAgreements.find (std::make_pair (hdr.GetAddr2 (), hdr.GetQosTid ()));
 
-              RxCompleteBufferedPacketsWithSmallerSequence (it->second.first.GetStartingSequence (),
+              RxCompleteBufferedPacketsWithSmallerSequence (it->second.first.GetStartingSequenceControl (),
                                                             hdr.GetAddr2 (), hdr.GetQosTid ());
               RxCompleteBufferedPacketsUntilFirstLost (hdr.GetAddr2 (), hdr.GetQosTid ());
               NS_ASSERT (m_sendAckEvent.IsExpired ());
@@ -2269,7 +2269,7 @@
                       int16_t bufferSize = (*it).second.first.GetBufferSize ();
                       uint16_t sum = ((uint16_t)(std::abs (winEnd - bufferSize + 1))) % 4096;
                       (*it).second.first.SetStartingSequence (sum);
-                      RxCompleteBufferedPacketsWithSmallerSequence ((*it).second.first.GetStartingSequence (), originator, tid);
+                      RxCompleteBufferedPacketsWithSmallerSequence ((*it).second.first.GetStartingSequenceControl (), originator, tid);
                     }
                 }
               RxCompleteBufferedPacketsUntilFirstLost (originator, tid); //forwards up packets starting from winstart and set winstart to last +1
@@ -2362,7 +2362,7 @@
   AgreementsI it = m_bAckAgreements.find (std::make_pair (originator, tid));
   if (it != m_bAckAgreements.end ())
     {
-      RxCompleteBufferedPacketsWithSmallerSequence (it->second.first.GetStartingSequence (), originator, tid);
+      RxCompleteBufferedPacketsWithSmallerSequence (it->second.first.GetStartingSequenceControl (), originator, tid);
       RxCompleteBufferedPacketsUntilFirstLost (originator, tid);
       m_bAckAgreements.erase (it);
 
@@ -2384,11 +2384,11 @@
       uint16_t guard = 0;
       if (last != (*it).second.second.end ())
         {
-          guard = (*it).second.second.begin ()->second.GetSequenceControl () & 0xfff0;
+          guard = (*it).second.second.begin ()->second.GetSequenceControl ();
         }
       BufferedPacketI i = (*it).second.second.begin ();
       for (; i != (*it).second.second.end ()
-           && QosUtilsMapSeqControlToUniqueInteger ((*i).second.GetSequenceNumber (), endSequence) < mappedStart; )
+           && QosUtilsMapSeqControlToUniqueInteger ((*i).second.GetSequenceControl (), endSequence) < mappedStart; )
         {
           if (guard == (*i).second.GetSequenceControl ())
             {
@@ -2402,13 +2402,13 @@
                   m_rxCallback ((*last).first, &(*last).second);
                   last++;
                   /* go to next packet */
-                  while (i != (*it).second.second.end () && ((guard >> 4) & 0x0fff) == (*i).second.GetSequenceNumber ())
+                  while (i != (*it).second.second.end () && guard == (*i).second.GetSequenceControl ())
                     {
                       i++;
                     }
                   if (i != (*it).second.second.end ())
                     {
-                      guard = (*i).second.GetSequenceControl () & 0xfff0;
+                      guard = (*i).second.GetSequenceControl ();
                       last = i;
                     }
                 }
@@ -2420,13 +2420,13 @@
           else
             {
               /* go to next packet */
-              while (i != (*it).second.second.end () && ((guard >> 4) & 0x0fff) == (*i).second.GetSequenceNumber ())
+              while (i != (*it).second.second.end () && guard == (*i).second.GetSequenceControl ())
                 {
                   i++;
                 }
               if (i != (*it).second.second.end ())
                 {
-                  guard = (*i).second.GetSequenceControl () & 0xfff0;
+                  guard = (*i).second.GetSequenceControl ();
                   last = i;
                 }
             }
@@ -2441,9 +2441,7 @@
   AgreementsI it = m_bAckAgreements.find (std::make_pair (originator, tid));
   if (it != m_bAckAgreements.end ())
     {
-      uint16_t startingSeqCtrl = ((*it).second.first.GetStartingSequence () << 4) & 0xfff0;
-      uint16_t guard = startingSeqCtrl;
-
+      uint16_t guard = (*it).second.first.GetStartingSequenceControl ();
       BufferedPacketI lastComplete = (*it).second.second.begin ();
       BufferedPacketI i = (*it).second.second.begin ();
       for (; i != (*it).second.second.end () && guard == (*i).second.GetSequenceControl (); i++)
@@ -2460,7 +2458,7 @@
             }
           guard = (*i).second.IsMoreFragments () ? (guard + 1) : ((guard + 16) & 0xfff0);
         }
-      (*it).second.first.SetStartingSequence ((guard >> 4) & 0x0fff);
+      (*it).second.first.SetStartingSequenceControl (guard);
       /* All packets already forwarded to WifiMac must be removed from buffer:
       [begin (), lastComplete) */
       (*it).second.second.erase ((*it).second.second.begin (), lastComplete);
@@ -2593,7 +2591,7 @@
               /* All packets with smaller sequence than starting sequence control must be passed up to Wifimac
                * See 9.10.3 in IEEE 802.11e standard.
                */
-              RxCompleteBufferedPacketsWithSmallerSequence (reqHdr.GetStartingSequence (), originator, tid);
+              RxCompleteBufferedPacketsWithSmallerSequence (reqHdr.GetStartingSequenceControl (), originator, tid);
               RxCompleteBufferedPacketsUntilFirstLost (originator, tid);
             }
           else
@@ -2602,7 +2600,7 @@
                 {
                   (*it).second.first.SetStartingSequence (reqHdr.GetStartingSequence ());
                   (*it).second.first.SetWinEnd (((*it).second.first.GetStartingSequence () + (*it).second.first.GetBufferSize () - 1) % 4096);
-                  RxCompleteBufferedPacketsWithSmallerSequence (reqHdr.GetStartingSequence (), originator, tid);
+                  RxCompleteBufferedPacketsWithSmallerSequence (reqHdr.GetStartingSequenceControl (), originator, tid);
                   RxCompleteBufferedPacketsUntilFirstLost (originator, tid);
                   (*it).second.first.SetWinEnd (((*it).second.first.GetStartingSequence () + (*it).second.first.GetBufferSize () - 1) % 4096);
                 }