Maintains the state and information about transmitted MPDUs with ack policy block ack for an originator station. More...
#include "originator-block-ack-agreement.h"
Public Types | |
enum | State { PENDING, ESTABLISHED, NO_REPLY, RESET, REJECTED } |
Represents the state for this agreement. More... | |
Public Member Functions | |
OriginatorBlockAckAgreement (Mac48Address recipient, uint8_t tid) | |
Constructor. More... | |
~OriginatorBlockAckAgreement () | |
bool | IsEstablished (void) const |
Check if the current state of this agreement is ESTABLISHED. More... | |
bool | IsNoReply (void) const |
Check if the current state of this agreement is NO_REPLY. More... | |
bool | IsPending (void) const |
Check if the current state of this agreement is PENDING. More... | |
bool | IsRejected (void) const |
Check if the current state of this agreement is REJECTED. More... | |
bool | IsReset (void) const |
Check if the current state of this agreement is RESET. More... | |
void | SetState (State state) |
Set the current state. More... | |
![]() | |
BlockAckAgreement (Mac48Address peer, uint8_t tid) | |
Constructor for BlockAckAgreement with given peer and TID. More... | |
~BlockAckAgreement () | |
uint16_t | GetBufferSize (void) const |
Return the buffer size. More... | |
Mac48Address | GetPeer (void) const |
Return the peer address. More... | |
uint16_t | GetStartingSequence (void) const |
Return the starting squence number. More... | |
uint16_t | GetStartingSequenceControl (void) const |
Return the starting sequence control. More... | |
uint8_t | GetTid (void) const |
Return the Traffic ID (TID). More... | |
uint16_t | GetTimeout (void) const |
Return the timeout. More... | |
uint16_t | GetWinEnd (void) const |
Return the ending sequence number. More... | |
bool | IsAmsduSupported (void) const |
Check whether A-MSDU is supported. More... | |
bool | IsHtSupported (void) const |
Check whether HT is supported. More... | |
bool | IsImmediateBlockAck (void) const |
Check whether the current ACK policy is immediate block ACK. More... | |
void | SetAmsduSupport (bool supported) |
Enable or disable A-MSDU support. More... | |
void | SetBufferSize (uint16_t bufferSize) |
Set buffer size. More... | |
void | SetDelayedBlockAck (void) |
Set Block ACK policy to delayed ACK. More... | |
void | SetHtSupported (bool htSupported) |
Enable or disable HT support. More... | |
void | SetImmediateBlockAck (void) |
Set Block ACK policy to immediate ACK. More... | |
void | SetStartingSequence (uint16_t seq) |
Set starting sequence number. More... | |
void | SetStartingSequenceControl (uint16_t seq) |
Set starting sequence control. More... | |
void | SetTimeout (uint16_t timeout) |
Set timeout. More... | |
void | SetWinEnd (uint16_t seq) |
Set ending sequence number. More... | |
Private Attributes | |
State | m_state |
state More... | |
Friends | |
class | BlockAckManager |
allow BlockAckManager class access More... | |
Additional Inherited Members | |
![]() | |
uint8_t | m_amsduSupported |
Flag whether MSDU aggregation is supported. More... | |
uint8_t | m_blockAckPolicy |
Type of block ack: immediate or delayed. More... | |
uint16_t | m_bufferSize |
Buffer size. More... | |
uint8_t | m_htSupported |
Flag whether HT is supported. More... | |
EventId | m_inactivityEvent |
inactivity event More... | |
Mac48Address | m_peer |
Peer address. More... | |
uint16_t | m_startingSeq |
Starting squence control. More... | |
uint8_t | m_tid |
Traffic ID. More... | |
uint16_t | m_timeout |
Timeout. More... | |
uint16_t | m_winEnd |
Ending sequence number. More... | |
Maintains the state and information about transmitted MPDUs with ack policy block ack for an originator station.
The state diagram is as follows:
/------------\ send ADDBARequest ---------------- | START |------------------>| PENDING |------- \------------/ ---------------- \ ^ receive / | \ | ADDBAResponse / | \ | (failure) v | \ | --------------- | ---------------------> ---------------- | | REJECTED | | receive ADDBAResponse (success) | ESTABLISHED | | --------------- | no --------------------> ---------------- | receive ^ | ADDBAResponse / | ADDBAResponse \ | / | (failure) \ v / | ---------------- / |-------------------------| NO_REPLY |--------- Reset after timeout ----------------
See also OriginatorBlockAckAgreement::State
Definition at line 53 of file originator-block-ack-agreement.h.
Represents the state for this agreement.
PENDING: If an agreement is in PENDING state it means that an ADDBARequest frame was sent to recipient in order to setup the block ack and the originator is waiting for the relative ADDBAResponse frame.
ESTABLISHED: The block ack is active and all packets relative to this agreement are transmitted with ack policy set to block ack.
NO_REPLY No reply after an ADDBA request. In this state the originator will send the rest of packets in queue using normal MPDU.
RESET A transient state to mark the agreement for reinitialzation after failed ADDBA request. Since it is a temporary state, it is not included in the state diagram above. In this state the next transmission will be treated as if the BA agreement is not created yet.
REJECTED (not used for now): The agreement's state becomes REJECTED if an ADDBAResponse frame is received from recipient and the Status Code field is set to failure.State enumeration
Enumerator | |
---|---|
PENDING | |
ESTABLISHED | |
NO_REPLY | |
RESET | |
REJECTED |
Definition at line 94 of file originator-block-ack-agreement.h.
ns3::OriginatorBlockAckAgreement::OriginatorBlockAckAgreement | ( | Mac48Address | recipient, |
uint8_t | tid | ||
) |
Constructor.
recipient | MAC address |
tid | Traffic ID |
Definition at line 26 of file originator-block-ack-agreement.cc.
ns3::OriginatorBlockAckAgreement::~OriginatorBlockAckAgreement | ( | ) |
Definition at line 32 of file originator-block-ack-agreement.cc.
bool ns3::OriginatorBlockAckAgreement::IsEstablished | ( | void | ) | const |
Check if the current state of this agreement is ESTABLISHED.
Definition at line 49 of file originator-block-ack-agreement.cc.
References ESTABLISHED, and m_state.
bool ns3::OriginatorBlockAckAgreement::IsNoReply | ( | void | ) | const |
Check if the current state of this agreement is NO_REPLY.
Definition at line 61 of file originator-block-ack-agreement.cc.
bool ns3::OriginatorBlockAckAgreement::IsPending | ( | void | ) | const |
Check if the current state of this agreement is PENDING.
Definition at line 43 of file originator-block-ack-agreement.cc.
bool ns3::OriginatorBlockAckAgreement::IsRejected | ( | void | ) | const |
Check if the current state of this agreement is REJECTED.
Definition at line 55 of file originator-block-ack-agreement.cc.
bool ns3::OriginatorBlockAckAgreement::IsReset | ( | void | ) | const |
Check if the current state of this agreement is RESET.
Definition at line 67 of file originator-block-ack-agreement.cc.
void ns3::OriginatorBlockAckAgreement::SetState | ( | State | state | ) |
Set the current state.
state | to set |
Definition at line 37 of file originator-block-ack-agreement.cc.
References m_state.
Referenced by ns3::BlockAckManager::UpdateAgreement().
|
friend |
allow BlockAckManager class access
Definition at line 56 of file originator-block-ack-agreement.h.
|
private |
state
Definition at line 145 of file originator-block-ack-agreement.h.
Referenced by IsEstablished(), IsNoReply(), IsPending(), IsRejected(), IsReset(), and SetState().