|
|
| 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 ()); |
|
|
| 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 |
|
|
| 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 |
|
|
|
| 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 |
{ |
|
|
| 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 |
|
|
| 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 |
} |