Struct to trace that main PHY switched when a (DL or UL) TXOP ended. More...
#include "emlsr-manager.h"
Public Member Functions | |
EmlsrTxopEndedTrace (const Time &t) | |
Constructor provided because this struct is not an aggregate (it has a base struct), hence we cannot use designated initializers. | |
![]() | |
std::shared_ptr< EmlsrMainPhySwitchTrace > | Clone () const override |
std::string_view | GetName () const override |
![]() | |
virtual | ~EmlsrMainPhySwitchTrace ()=default |
Public Attributes | |
Time | remTime |
the remaining time (at TXOP end) until the main PHY completes the channel switch, in case the main PHY is completing a previous switch when the TXOP ends | |
![]() | |
std::optional< uint8_t > | fromLinkId |
ID of the link the main PHY is moving from (if any) | |
uint8_t | toLinkId {WIFI_LINKID_UNDEFINED} |
ID of the link the main PHY is moving to. | |
Static Public Attributes | |
static constexpr std::string_view | m_name = "TxopEnded" |
trace name | |
Struct to trace that main PHY switched when a (DL or UL) TXOP ended.
This trace is normally called when aux PHYs do not switch link and the main PHY switches back to the preferred link when a TXOP carried out on another link ends. In such a case, the remTime field is set to zero.
Note that the main PHY may be already switching when the TXOP ends; this happens, e.g., when the main PHY starts switching to a link on which an aux PHY gained a TXOP and sent an RTS, but the CTS is not received and the UL TXOP ends before the main PHY channel switch is completed. In this case, the main PHY switch is postponed until the previous switch is completed and the remTime field is set to the remaining channel switch delay at the time the TXOP ends:
|-- main PHY switch --| |----- to link 1 -----| ┌───────────┐ │ CTS │
────────────────────────┬───────────┬───┴X──────────┴───────────────────────────── [link 1] │ RTS │ │-remTime-│ └───────────┘ │ |– main PHY switch –| │ |- to preferred link -| CTS timeout
Note also that the Advanced EMLSR manager may allow a main PHY switch to be interrupted. If this option is enabled and the main PHY is switching when the TXOP ends, the previous switch is interrupted and the main PHY starts switching to the preferred link (in this case, the remTime field indicates the time that was left to complete the previous switch). Also note that, with the Advanced EMLSR manager, this trace may also be called when aux PHYs switch link. This happens when the TXOP ends while the main PHY is switching; in this case, the previous switch is interrupted and the main PHY returns to the link on which it was operating before the previous switch.
|-- main PHY switch --| |----- to link 1 -----|(interrupted) ┌───────────┐ │ CTS │
────────────────────────┬───────────┬───┴X──────────┴───────────────────────────── [link 1] │ RTS │ │-remTime-│ └───────────┘ │– main PHY switch –| │- to preferred link -| CTS timeout
Definition at line 765 of file emlsr-manager.h.
|
inline |
Constructor provided because this struct is not an aggregate (it has a base struct), hence we cannot use designated initializers.
t | the value for the sinceTxopEnd field |
Definition at line 779 of file emlsr-manager.h.
|
staticconstexpr |
trace name
Definition at line 767 of file emlsr-manager.h.
Time ns3::EmlsrTxopEndedTrace::remTime |
the remaining time (at TXOP end) until the main PHY completes the channel switch, in case the main PHY is completing a previous switch when the TXOP ends
Definition at line 769 of file emlsr-manager.h.