20 #ifndef RECIPIENT_BLOCK_ACK_AGREEMENT_H    21 #define RECIPIENT_BLOCK_ACK_AGREEMENT_H    30 class WifiMacQueueItem;
    32 class CtrlBAckResponseHeader;
    54                               uint16_t bufferSize, uint16_t 
timeout, uint16_t startingSeq,
   116   typedef std::pair<uint16_t, uint16_t*> 
Key;
 Smart pointer class similar to boost::intrusive_ptr. 
Maintains the scoreboard and the receive reordering buffer used by a recipient of a Block Ack agreeme...
BlockAckWindow m_scoreboard
recipient's scoreboard 
void SetMacRxMiddle(const Ptr< MacRxMiddle > rxMiddle)
Set the MAC RX Middle to use. 
void PassBufferedMpdusUntilFirstLost(void)
Pass MSDUs or A-MSDUs up to the next MAC process if they are stored in the buffer in order of increas...
Comparison functor used to sort the buffered MPDUs. 
std::map< Key, Ptr< WifiMacQueueItem >, Compare > m_bufferedMpdus
buffered MPDUs sorted by Seq Number 
uint16_t m_winStartB
starting SN for the reordering buffer 
Every class exported by the ns3 library is enclosed in the ns3 namespace. 
std::size_t m_winSizeB
size of the receive reordering buffer 
void NotifyReceivedBar(uint16_t startingSequenceNumber)
Update both the scoreboard and the receive reordering buffer upon reception of a Block Ack Request...
void NotifyReceivedMpdu(Ptr< WifiMacQueueItem > mpdu)
Update both the scoreboard and the receive reordering buffer upon reception of the given MPDU...
~RecipientBlockAckAgreement()
void PassBufferedMpdusWithSeqNumberLessThan(uint16_t newWinStartB)
Pass any complete MSDUs or A-MSDUs stored in the buffer with Sequence Number subfield values that are...
void FillBlockAckBitmap(CtrlBAckResponseHeader *blockAckHeader, std::size_t index=0) const
Set the Starting Sequence Number subfield of the Block Ack Starting Sequence Control subfield of the ...
Maintains information for a block ack agreement. 
RecipientBlockAckAgreement(Mac48Address originator, bool amsduSupported, uint8_t tid, uint16_t bufferSize, uint16_t timeout, uint16_t startingSeq, bool htSupported)
Constructor. 
Ptr< MacRxMiddle > m_rxMiddle
the MAC RX Middle on this station 
bool operator()(const Key &a, const Key &b) const
Functional operator for sorting the buffered MPDUs. 
void Flush(void)
This is called when a Block Ack agreement is destroyed to flush the received packets. 
std::pair< uint16_t, uint16_t * > Key
The key of a buffered MPDU is the pair (MPDU sequence number, pointer to WinStartB) ...