|
|
| 2843 |
} |
2843 |
} |
| 2844 |
} |
2844 |
} |
| 2845 |
|
2845 |
|
| 2846 |
if (normalAck && (ampdu.GetNoOfMpdus () == 1) && !vhtSingleMpdu) |
2846 |
if (ampdu.GetNoOfMpdus () == 1 && !vhtSingleMpdu) |
| 2847 |
{ |
2847 |
{ |
| 2848 |
//send block Ack |
2848 |
if (normalAck) |
| 2849 |
if (firsthdr.IsBlockAckReq ()) |
|
|
| 2850 |
{ |
2849 |
{ |
| 2851 |
NS_FATAL_ERROR ("Sending a BlockAckReq with QosPolicy equal to Normal Ack"); |
2850 |
//send block Ack |
| 2852 |
} |
2851 |
if (firsthdr.IsBlockAckReq ()) |
| 2853 |
uint8_t tid = firsthdr.GetQosTid (); |
2852 |
{ |
| 2854 |
AgreementsI it = m_bAckAgreements.find (std::make_pair (firsthdr.GetAddr2 (), tid)); |
2853 |
NS_FATAL_ERROR ("Sending a BlockAckReq with QosPolicy equal to Normal Ack"); |
| 2855 |
if (it != m_bAckAgreements.end ()) |
2854 |
} |
| 2856 |
{ |
2855 |
uint8_t tid = firsthdr.GetQosTid (); |
| 2857 |
NS_ASSERT (m_sendAckEvent.IsExpired ()); |
2856 |
AgreementsI it = m_bAckAgreements.find (std::make_pair (firsthdr.GetAddr2 (), tid)); |
| 2858 |
/* See section 11.5.3 in IEEE 802.11 for mean of this timer */ |
2857 |
if (it != m_bAckAgreements.end ()) |
| 2859 |
ResetBlockAckInactivityTimerIfNeeded (it->second.first); |
2858 |
{ |
| 2860 |
NS_LOG_DEBUG ("rx A-MPDU/sendImmediateBlockAck from=" << firsthdr.GetAddr2 ()); |
2859 |
NS_ASSERT (m_sendAckEvent.IsExpired ()); |
| 2861 |
m_sendAckEvent = Simulator::Schedule (GetSifs (), |
2860 |
/* See section 11.5.3 in IEEE 802.11 for mean of this timer */ |
| 2862 |
&MacLow::SendBlockAckAfterAmpdu, this, |
2861 |
ResetBlockAckInactivityTimerIfNeeded (it->second.first); |
| 2863 |
firsthdr.GetQosTid (), |
2862 |
NS_LOG_DEBUG ("rx A-MPDU/sendImmediateBlockAck from=" << firsthdr.GetAddr2 ()); |
| 2864 |
firsthdr.GetAddr2 (), |
2863 |
m_sendAckEvent = Simulator::Schedule (GetSifs (), |
| 2865 |
firsthdr.GetDuration (), |
2864 |
&MacLow::SendBlockAckAfterAmpdu, this, |
| 2866 |
txVector); |
2865 |
firsthdr.GetQosTid (), |
| 2867 |
} |
2866 |
firsthdr.GetAddr2 (), |
| 2868 |
else |
2867 |
firsthdr.GetDuration (), |
| 2869 |
{ |
2868 |
txVector); |
| 2870 |
NS_LOG_DEBUG ("There's not a valid agreement for this block ack request."); |
2869 |
} |
|
|
2870 |
else |
| 2871 |
{ |
| 2872 |
NS_LOG_DEBUG ("There's not a valid agreement for this block ack request."); |
| 2873 |
} |
| 2871 |
} |
2874 |
} |
| 2872 |
m_receivedAtLeastOneMpdu = false; |
2875 |
m_receivedAtLeastOneMpdu = false; |
| 2873 |
} |
2876 |
} |