20 #ifndef BLOCK_ACK_MANAGER_H
21 #define BLOCK_ACK_MANAGER_H
27 #include "ns3/packet.h"
29 #include "wifi-mac-header.h"
30 #include "originator-block-ack-agreement.h"
31 #include "ctrl-headers.h"
32 #include "qos-utils.h"
36 class MgtAddBaResponseHeader;
37 class MgtAddBaRequestHeader;
130 bool HasBar (
struct Bar &bar);
268 typedef std::list<Item> PacketQueue;
269 typedef std::list<Item>::iterator PacketQueueI;
270 typedef std::list<Item>::const_iterator PacketQueueCI;
272 typedef std::map<std::pair<Mac48Address, uint8_t>,
273 std::pair<OriginatorBlockAckAgreement, PacketQueue> > Agreements;
274 typedef std::map<std::pair<Mac48Address, uint8_t>,
275 std::pair<OriginatorBlockAckAgreement, PacketQueue> >::iterator AgreementsI;
276 typedef std::map<std::pair<Mac48Address, uint8_t>,
277 std::pair<OriginatorBlockAckAgreement, PacketQueue> >::const_iterator AgreementsCI;
303 std::list<Bar> m_bars;
305 uint8_t m_blockAckThreshold;
306 enum BlockAckType m_blockAckType;
void NotifyGotBlockAck(const CtrlBAckResponseHeader *blockAck, Mac48Address recipient)
void CreateAgreement(const MgtAddBaRequestHeader *reqHdr, Mac48Address recipient)
void StorePacket(Ptr< const Packet > packet, const WifiMacHeader &hdr, Time tStamp)
void SetBlockAckType(enum BlockAckType bAckType)
bool HasPackets(void) const
Ptr< Packet > ScheduleBlockAckReqIfNeeded(Mac48Address recipient, uint8_t tid)
void SetQueue(Ptr< WifiMacQueue > queue)
void NotifyAgreementEstablished(Mac48Address recipient, uint8_t tid, uint16_t startingSeq)
void UpdateAgreement(const MgtAddBaResponseHeader *respHdr, Mac48Address recipient)
uint32_t GetNRetryNeededPackets(Mac48Address recipient, uint8_t tid) const
uint32_t GetNextPacketSize(void) const
uint16_t GetSeqNumOfNextRetryPacket(Mac48Address recipient, uint8_t tid) const
void NotifyAgreementUnsuccessful(Mac48Address recipient, uint8_t tid)
bool HasOtherFragments(uint16_t sequenceNumber) const
std::list< PacketQueueI > m_retryPackets
void DestroyAgreement(Mac48Address recipient, uint8_t tid)
bool ExistsAgreementInState(Mac48Address recipient, uint8_t tid, enum OriginatorBlockAckAgreement::State state) const
Ptr< const Packet > GetNextPacket(WifiMacHeader &hdr)
void SetMaxPacketDelay(Time maxDelay)
bool SwitchToBlockAckIfNeeded(Mac48Address recipient, uint8_t tid, uint16_t startingSeq)
uint32_t GetNBufferedPackets(Mac48Address recipient, uint8_t tid) const
void CleanupBuffers(void)
void SetBlockAckThreshold(uint8_t nPackets)
Manages all block ack agreements for an originator station.
bool ExistsAgreement(Mac48Address recipient, uint8_t tid) const
void NotifyMpduTransmission(Mac48Address recipient, uint8_t tid, uint16_t nextSeqNumber)
void TearDownBlockAck(Mac48Address recipient, uint8_t tid)