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) ...