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) |
Public Member Functions inherited from ns3::BlockAckAgreement | |
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 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 | |
bool | m_needBlockAckReq |
uint16_t | m_sentMpdus |
enum State | m_state |
Friends | |
class | BlockAckManager |
Additional Inherited Members | |
Protected Attributes inherited from ns3::BlockAckAgreement | |
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 |
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.
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 91 of file originator-block-ack-agreement.h.
ns3::OriginatorBlockAckAgreement::OriginatorBlockAckAgreement | ( | ) |
Definition at line 26 of file originator-block-ack-agreement.cc.
ns3::OriginatorBlockAckAgreement::OriginatorBlockAckAgreement | ( | Mac48Address | recipient, |
uint8_t | tid | ||
) |
Definition at line 34 of file originator-block-ack-agreement.cc.
ns3::OriginatorBlockAckAgreement::~OriginatorBlockAckAgreement | ( | ) |
Definition at line 42 of file originator-block-ack-agreement.cc.
void ns3::OriginatorBlockAckAgreement::CompleteExchange | ( | void | ) |
Definition at line 101 of file originator-block-ack-agreement.cc.
References m_needBlockAckReq, and m_sentMpdus.
Referenced by ns3::BlockAckManager::CompleteAmpduExchange(), and 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 95 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 64 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 70 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 58 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 76 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 82 of file originator-block-ack-agreement.cc.
References ns3::BlockAckAgreement::m_bufferSize, m_needBlockAckReq, m_sentMpdus, ns3::BlockAckAgreement::m_startingSeq, min, and NS_ASSERT.
void ns3::OriginatorBlockAckAgreement::SetState | ( | enum State | state | ) |
Definition at line 47 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 147 of file originator-block-ack-agreement.h.
Referenced by CompleteExchange(), IsBlockAckRequestNeeded(), NotifyMpduTransmission(), and SetState().
|
private |
Definition at line 146 of file originator-block-ack-agreement.h.
Referenced by CompleteExchange(), NotifyMpduTransmission(), and SetState().
|
private |
Definition at line 145 of file originator-block-ack-agreement.h.
Referenced by IsEstablished(), IsInactive(), IsPending(), IsUnsuccessful(), and SetState().