diff --git a/src/devices/wifi/mac-low.cc b/src/devices/wifi/mac-low.cc index 116b679b6..10b53bc9b 100644 --- a/src/devices/wifi/mac-low.cc +++ b/src/devices/wifi/mac-low.cc @@ -146,6 +146,21 @@ MacLowTransmissionParameters::EnableSuperFastAck (void) { m_waitAck = ACK_SUPER_FAST; } +void +MacLowTransmissionParameters::EnableBasicBlockAck (void) +{ + m_waitAck = BLOCK_ACK_BASIC; +} +void +MacLowTransmissionParameters::EnableCompressedBlockAck (void) +{ + m_waitAck = BLOCK_ACK_COMPRESSED; +} +void +MacLowTransmissionParameters::EnableMultiTidBlockAck (void) +{ + m_waitAck = BLOCK_ACK_MULTI_TID; +} void MacLowTransmissionParameters::EnableFastAck (void) { @@ -191,6 +206,21 @@ MacLowTransmissionParameters::MustWaitSuperFastAck (void) const { return (m_waitAck == ACK_SUPER_FAST); } +bool +MacLowTransmissionParameters::MustWaitBasicBlockAck (void) const +{ + return (m_waitAck == BLOCK_ACK_BASIC)?true:false; +} +bool +MacLowTransmissionParameters::MustWaitCompressedBlockAck (void) const +{ + return (m_waitAck == BLOCK_ACK_COMPRESSED)?true:false; +} +bool +MacLowTransmissionParameters::MustWaitMultiTidBlockAck (void) const +{ + return (m_waitAck == BLOCK_ACK_MULTI_TID)?true:false; +} bool MacLowTransmissionParameters::MustSendRts (void) const { @@ -239,6 +269,15 @@ std::ostream &operator << (std::ostream &os, const MacLowTransmissionParameters case MacLowTransmissionParameters::ACK_SUPER_FAST: os << "super-fast"; break; + case MacLowTransmissionParameters::BLOCK_ACK_BASIC: + os << "basic-block-ack"; + break; + case MacLowTransmissionParameters::BLOCK_ACK_COMPRESSED: + os << "compressed-block-ack"; + break; + case MacLowTransmissionParameters::BLOCK_ACK_MULTI_TID: + os << "multi-tid-block-ack"; + break; } os << "]"; return os; diff --git a/src/devices/wifi/mac-low.h b/src/devices/wifi/mac-low.h index c6104faf9..5ffe14ece 100644 --- a/src/devices/wifi/mac-low.h +++ b/src/devices/wifi/mac-low.h @@ -156,6 +156,18 @@ public: * MacLowTransmissionListener::MissedAck */ void EnableSuperFastAck (void); + /** + * Wait BASICBLOCKACKTimeout for a Basic Block Ack Response frame. + */ + void EnableBasicBlockAck (void); + /** + * Wait COMPRESSEDBLOCKACKTimeout for a Compressed Block Ack Response frame. + */ + void EnableCompressedBlockAck (void); + /** + * NOT IMPLEMENTED FOR NOW + */ + void EnableMultiTidBlockAck (void); /** * Send a RTS, and wait CTSTimeout for a CTS. If we get a * CTS on time, call MacLowTransmissionListener::GotCts @@ -232,6 +244,24 @@ public: * \sa EnableSuperFastAck */ bool MustWaitSuperFastAck (void) const; + /** + * \returns true if block ack mechanism is used, false otherwise. + * + * \sa EnableBlockAck + */ + bool MustWaitBasicBlockAck (void) const; + /** + * \returns true if compressed block ack mechanism is used, false otherwise. + * + * \sa EnableCompressedBlockAck + */ + bool MustWaitCompressedBlockAck (void) const; + /** + * \returns true if multi-tid block ack mechanism is used, false otherwise. + * + * \sa EnableMultiTidBlockAck + */ + bool MustWaitMultiTidBlockAck (void) const; /** * \returns true if RTS should be sent and CTS waited for before * sending data, false otherwise. @@ -262,7 +292,10 @@ private: ACK_NONE, ACK_NORMAL, ACK_FAST, - ACK_SUPER_FAST + ACK_SUPER_FAST, + BLOCK_ACK_BASIC, + BLOCK_ACK_COMPRESSED, + BLOCK_ACK_MULTI_TID } m_waitAck; bool m_sendRts; Time m_overrideDurationId;