|
|
| 2813 |
NotifyNav ((*n).first, firsthdr, preamble); |
2813 |
NotifyNav ((*n).first, firsthdr, preamble); |
| 2814 |
|
2814 |
|
| 2815 |
bool vhtSingleMpdu = (*n).second.GetEof (); |
2815 |
bool vhtSingleMpdu = (*n).second.GetEof (); |
| 2816 |
if (vhtSingleMpdu == true) |
2816 |
if (vhtSingleMpdu) |
| 2817 |
{ |
2817 |
{ |
| 2818 |
//If the MPDU is sent as a VHT single MPDU (EOF=1 in A-MPDU subframe header), then the responder sends an ACK. |
2818 |
//If the MPDU is sent as a VHT single MPDU (EOF=1 in A-MPDU subframe header), then the responder sends an ACK. |
| 2819 |
NS_LOG_DEBUG ("Receive VHT single MPDU"); |
2819 |
NS_LOG_DEBUG ("Receive VHT single MPDU"); |
|
|
| 2822 |
|
2822 |
|
| 2823 |
if (firsthdr.GetAddr1 () == m_self) |
2823 |
if (firsthdr.GetAddr1 () == m_self) |
| 2824 |
{ |
2824 |
{ |
| 2825 |
m_receivedAtLeastOneMpdu = true; |
2825 |
if (!vhtSingleMpdu) |
|
|
2826 |
{ |
| 2827 |
m_receivedAtLeastOneMpdu = true; |
| 2828 |
} |
| 2826 |
if (firsthdr.IsAck () || firsthdr.IsBlockAck () || firsthdr.IsBlockAckReq ()) |
2829 |
if (firsthdr.IsAck () || firsthdr.IsBlockAck () || firsthdr.IsBlockAckReq ()) |
| 2827 |
{ |
2830 |
{ |
| 2828 |
ReceiveOk ((*n).first, rxSnr, txVector, preamble, ampduSubframe); |
2831 |
ReceiveOk ((*n).first, rxSnr, txVector, preamble, ampduSubframe); |