View | Details | Raw Unified | Return to bug 2104
Collapse All | Expand All

(-)mac-low.h (-1 / +1 lines)
 Lines 1145-1151    Link Here 
1145
  /**
1145
  /**
1146
   * \param originator Address of peer participating in Block Ack mechanism.
1146
   * \param originator Address of peer participating in Block Ack mechanism.
1147
   * \param tid TID for which Block Ack was created.
1147
   * \param tid TID for which Block Ack was created.
1148
   * \param seq Starting sequence
1148
   * \param seq Starting sequence control
1149
   *
1149
   *
1150
   * This function forward up all completed "old" packets with sequence number
1150
   * This function forward up all completed "old" packets with sequence number
1151
   * smaller than <i>seq</i>. All comparison are performed circularly mod 4096.
1151
   * smaller than <i>seq</i>. All comparison are performed circularly mod 4096.
(-)mac-low.cc (-6 / +6 lines)
 Lines 1001-1007    Link Here 
1001
              NS_LOG_DEBUG ("rx QoS unicast/sendAck from=" << hdr.GetAddr2 ());
1001
              NS_LOG_DEBUG ("rx QoS unicast/sendAck from=" << hdr.GetAddr2 ());
1002
              AgreementsI it = m_bAckAgreements.find (std::make_pair (hdr.GetAddr2 (), hdr.GetQosTid ()));
1002
              AgreementsI it = m_bAckAgreements.find (std::make_pair (hdr.GetAddr2 (), hdr.GetQosTid ()));
1003
1003
1004
              RxCompleteBufferedPacketsWithSmallerSequence (it->second.first.GetStartingSequence (),
1004
              RxCompleteBufferedPacketsWithSmallerSequence (it->second.first.GetStartingSequenceControl (),
1005
                                                            hdr.GetAddr2 (), hdr.GetQosTid ());
1005
                                                            hdr.GetAddr2 (), hdr.GetQosTid ());
1006
              RxCompleteBufferedPacketsUntilFirstLost (hdr.GetAddr2 (), hdr.GetQosTid ());
1006
              RxCompleteBufferedPacketsUntilFirstLost (hdr.GetAddr2 (), hdr.GetQosTid ());
1007
              NS_ASSERT (m_sendAckEvent.IsExpired ());
1007
              NS_ASSERT (m_sendAckEvent.IsExpired ());
 Lines 2135-2141    Link Here 
2135
                     int16_t bufferSize = (*it).second.first.GetBufferSize ();
2135
                     int16_t bufferSize = (*it).second.first.GetBufferSize ();
2136
                     uint16_t sum = ((uint16_t)(std::abs(winEnd - bufferSize + 1))) % 4096;
2136
                     uint16_t sum = ((uint16_t)(std::abs(winEnd - bufferSize + 1))) % 4096;
2137
                     (*it).second.first.SetStartingSequence (sum);
2137
                     (*it).second.first.SetStartingSequence (sum);
2138
                     RxCompleteBufferedPacketsWithSmallerSequence ((*it).second.first.GetStartingSequence (), originator, tid);
2138
                     RxCompleteBufferedPacketsWithSmallerSequence ((*it).second.first.GetStartingSequenceControl (), originator, tid);
2139
                   } 
2139
                   } 
2140
               }
2140
               }
2141
              RxCompleteBufferedPacketsUntilFirstLost (originator, tid); //forwards up packets starting from winstart and set winstart to last +1
2141
              RxCompleteBufferedPacketsUntilFirstLost (originator, tid); //forwards up packets starting from winstart and set winstart to last +1
 Lines 2227-2233    Link Here 
2227
  AgreementsI it = m_bAckAgreements.find (std::make_pair (originator, tid));
2227
  AgreementsI it = m_bAckAgreements.find (std::make_pair (originator, tid));
2228
  if (it != m_bAckAgreements.end ())
2228
  if (it != m_bAckAgreements.end ())
2229
    {
2229
    {
2230
      RxCompleteBufferedPacketsWithSmallerSequence (it->second.first.GetStartingSequence (), originator, tid);
2230
      RxCompleteBufferedPacketsWithSmallerSequence (it->second.first.GetStartingSequenceControl (), originator, tid);
2231
      RxCompleteBufferedPacketsUntilFirstLost (originator, tid);
2231
      RxCompleteBufferedPacketsUntilFirstLost (originator, tid);
2232
      m_bAckAgreements.erase (it);
2232
      m_bAckAgreements.erase (it);
2233
2233
 Lines 2253-2259    Link Here 
2253
        }
2253
        }
2254
      BufferedPacketI i = (*it).second.second.begin ();
2254
      BufferedPacketI i = (*it).second.second.begin ();
2255
      for (; i != (*it).second.second.end ()
2255
      for (; i != (*it).second.second.end ()
2256
           && QosUtilsMapSeqControlToUniqueInteger ((*i).second.GetSequenceNumber (), endSequence) < mappedStart;)
2256
           && QosUtilsMapSeqControlToUniqueInteger ((*i).second.GetSequenceControl (), endSequence) < mappedStart;)
2257
        {
2257
        {
2258
          if (guard == (*i).second.GetSequenceControl ())
2258
          if (guard == (*i).second.GetSequenceControl ())
2259
            {
2259
            {
 Lines 2453-2459    Link Here 
2453
              /* All packets with smaller sequence than starting sequence control must be passed up to Wifimac
2453
              /* All packets with smaller sequence than starting sequence control must be passed up to Wifimac
2454
               * See 9.10.3 in IEEE 802.11e standard.
2454
               * See 9.10.3 in IEEE 802.11e standard.
2455
               */
2455
               */
2456
              RxCompleteBufferedPacketsWithSmallerSequence (reqHdr.GetStartingSequence (), originator, tid);
2456
              RxCompleteBufferedPacketsWithSmallerSequence (reqHdr.GetStartingSequenceControl (), originator, tid);
2457
              RxCompleteBufferedPacketsUntilFirstLost (originator, tid);
2457
              RxCompleteBufferedPacketsUntilFirstLost (originator, tid);
2458
            }
2458
            }
2459
          else
2459
          else
 Lines 2462-2468    Link Here 
2462
                { 
2462
                { 
2463
                  (*it).second.first.SetStartingSequence(reqHdr.GetStartingSequence ());
2463
                  (*it).second.first.SetStartingSequence(reqHdr.GetStartingSequence ());
2464
                  (*it).second.first.SetWinEnd(((*it).second.first.GetStartingSequence()+(*it).second.first.GetBufferSize()-1) % 4096);
2464
                  (*it).second.first.SetWinEnd(((*it).second.first.GetStartingSequence()+(*it).second.first.GetBufferSize()-1) % 4096);
2465
                  RxCompleteBufferedPacketsWithSmallerSequence (reqHdr.GetStartingSequence (), originator, tid);
2465
                  RxCompleteBufferedPacketsWithSmallerSequence (reqHdr.GetStartingSequenceControl (), originator, tid);
2466
                  RxCompleteBufferedPacketsUntilFirstLost (originator, tid);
2466
                  RxCompleteBufferedPacketsUntilFirstLost (originator, tid);
2467
                  (*it).second.first.SetWinEnd(((*it).second.first.GetStartingSequence()+(*it).second.first.GetBufferSize()-1) % 4096);
2467
                  (*it).second.first.SetWinEnd(((*it).second.first.GetStartingSequence()+(*it).second.first.GetBufferSize()-1) % 4096);
2468
                }
2468
                }

Return to bug 2104