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, INACTIVE, UNSUCCESSFUL } |
Represents the state for this agreement. More... | |
Public Member Functions | |
OriginatorBlockAckAgreement () | |
OriginatorBlockAckAgreement (Mac48Address recipient, uint8_t tid) | |
~OriginatorBlockAckAgreement () | |
void | CompleteExchange (void) |
bool | IsBlockAckRequestNeeded (void) const |
Returns true if all packets for which a block ack was negotiated have been transmitted so a block ack request is needed in order to acknowledge them. More... | |
bool | IsEstablished (void) const |
Check if the current state of this agreement is ESTABLISHED. More... | |
bool | IsInactive (void) const |
Check if the current state of this agreement is INACTIVE. More... | |
bool | IsPending (void) const |
Check if the current state of this agreement is PENDING. More... | |
bool | IsUnsuccessful (void) const |
Check if the current state of this agreement is UNSUCCESSFUL. More... | |
void | NotifyMpduTransmission (uint16_t nextSeqNumber) |
Notifies a packet's transmission with ack policy Block Ack. More... | |
void | SetState (enum State state) |
![]() | |
BlockAckAgreement () | |
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 squence control. More... | |
uint8_t | GetTid (void) const |
Return the Traffic ID (TID). More... | |
uint16_t | GetTimeout (void) const |
Return the timeout. More... | |
bool | IsAmsduSupported (void) const |
Check whether A-MSDU 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 | SetImmediateBlockAck (void) |
Set Block ACK policy to immediate ACK. More... | |
void | SetStartingSequence (uint16_t seq) |
Set starting sequence number. More... | |
void | SetTimeout (uint16_t timeout) |
Set timeout. More... | |
Private Attributes | |
bool | m_needBlockAckReq |
uint16_t | m_sentMpdus |
enum State | m_state |
Friends | |
class | BlockAckManager |
Additional Inherited Members | |
![]() | |
uint8_t | m_amsduSupported |
uint8_t | m_blockAckPolicy |
uint16_t | m_bufferSize |
EventId | m_inactivityEvent |
Mac48Address | m_peer |
uint16_t | m_startingSeq |
uint8_t | m_tid |
uint16_t | m_timeout |
Maintains the state and information about transmitted MPDUs with ack policy block ack for an originator station.
Definition at line 33 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.
INACTIVE: In our implementation, block ack tear-down happens only if an inactivity timeout occurs so we could have an active block ack but a number of packets that doesn't reach the value of m_blockAckThreshold (see ns3::BlockAckManager). In these conditions the agreement becomes INACTIVE until that the number of packets reaches the value of m_blockAckThreshold again.
UNSUCCESSFUL (not used for now): The agreement's state becomes UNSUCCESSFUL if:
In both cases for station addressed by BlockAckAgreement::m_peer and for TID BlockAckAgreement::m_tid block ack mechanism won't be used.
Enumerator | |
---|---|
PENDING | |
ESTABLISHED | |
INACTIVE | |
UNSUCCESSFUL |
Definition at line 89 of file originator-block-ack-agreement.h.
ns3::OriginatorBlockAckAgreement::OriginatorBlockAckAgreement | ( | ) |
Definition at line 25 of file originator-block-ack-agreement.cc.
ns3::OriginatorBlockAckAgreement::OriginatorBlockAckAgreement | ( | Mac48Address | recipient, |
uint8_t | tid | ||
) |
Definition at line 32 of file originator-block-ack-agreement.cc.
ns3::OriginatorBlockAckAgreement::~OriginatorBlockAckAgreement | ( | ) |
Definition at line 39 of file originator-block-ack-agreement.cc.
void ns3::OriginatorBlockAckAgreement::CompleteExchange | ( | void | ) |
Definition at line 90 of file originator-block-ack-agreement.cc.
References m_needBlockAckReq, and m_sentMpdus.
Referenced by ns3::BlockAckManager::ScheduleBlockAckReqIfNeeded().
bool ns3::OriginatorBlockAckAgreement::IsBlockAckRequestNeeded | ( | void | ) | const |
Returns true if all packets for which a block ack was negotiated have been transmitted so a block ack request is needed in order to acknowledge them.
Definition at line 85 of file originator-block-ack-agreement.cc.
References m_needBlockAckReq.
bool ns3::OriginatorBlockAckAgreement::IsEstablished | ( | void | ) | const |
Check if the current state of this agreement is ESTABLISHED.
Definition at line 58 of file originator-block-ack-agreement.cc.
References ESTABLISHED, and m_state.
bool ns3::OriginatorBlockAckAgreement::IsInactive | ( | void | ) | const |
Check if the current state of this agreement is INACTIVE.
Definition at line 63 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 53 of file originator-block-ack-agreement.cc.
bool ns3::OriginatorBlockAckAgreement::IsUnsuccessful | ( | void | ) | const |
Check if the current state of this agreement is UNSUCCESSFUL.
Definition at line 68 of file originator-block-ack-agreement.cc.
References m_state, and UNSUCCESSFUL.
void ns3::OriginatorBlockAckAgreement::NotifyMpduTransmission | ( | uint16_t | nextSeqNumber | ) |
Notifies a packet's transmission with ack policy Block Ack.
nextSeqNumber |
Definition at line 73 of file originator-block-ack-agreement.cc.
References ns3::BlockAckAgreement::m_bufferSize, m_needBlockAckReq, m_sentMpdus, ns3::BlockAckAgreement::m_startingSeq, and NS_ASSERT.
void ns3::OriginatorBlockAckAgreement::SetState | ( | enum State | state | ) |
Definition at line 43 of file originator-block-ack-agreement.cc.
References INACTIVE, m_needBlockAckReq, m_sentMpdus, and m_state.
Referenced by ns3::BlockAckManager::UpdateAgreement().
|
friend |
Definition at line 35 of file originator-block-ack-agreement.h.
|
private |
Definition at line 144 of file originator-block-ack-agreement.h.
Referenced by CompleteExchange(), IsBlockAckRequestNeeded(), NotifyMpduTransmission(), and SetState().
|
private |
Definition at line 143 of file originator-block-ack-agreement.h.
Referenced by CompleteExchange(), NotifyMpduTransmission(), and SetState().
|
private |
Definition at line 142 of file originator-block-ack-agreement.h.
Referenced by IsEstablished(), IsInactive(), IsPending(), IsUnsuccessful(), and SetState().