Public Types | |
enum | State { PENDING, ESTABLISHED, INACTIVE, UNSUCCESSFUL } |
Public Member Functions | |
OriginatorBlockAckAgreement (Mac48Address recipient, uint8_t tid) | |
void | SetState (enum State state) |
bool | IsPending (void) const |
bool | IsEstablished (void) const |
bool | IsInactive (void) const |
bool | IsUnsuccessful (void) const |
void | NotifyMpduTransmission (uint16_t nextSeqNumber) |
bool | IsBlockAckRequestNeeded (void) const |
void | CompleteExchange (void) |
Friends | |
class | BlockAckManager |
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.
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.
void ns3::OriginatorBlockAckAgreement::NotifyMpduTransmission | ( | uint16_t | nextSeqNumber | ) |
Notifies a packet's transmission with ack policy Block Ack.