wifi: Do not continue a TXOP if TXOP limit is zero and TXNAV expired

This commit is contained in:
Stefano Avallone
2024-06-14 10:36:28 +02:00
parent 92f488bc35
commit 6f939c0e45
3 changed files with 6 additions and 3 deletions

View File

@@ -195,7 +195,7 @@ cpp_examples = [
"True",
),
(
"wifi-eht-network --simulationTime=0.25s --udp=0 --downlink=0 --useRts=0 --nStations=4 --dlAckType=AGGR-MU-BAR --enableUlOfdma=1 --enableBsrp=1 --mpduBufferSize=1024 --mcs=8 --muSchedAccessReqInterval=45ms --frequency2=6 --minExpectedThroughput=50 --maxExpectedThroughput=550",
"wifi-eht-network --simulationTime=0.25s --udp=0 --downlink=0 --useRts=0 --nStations=4 --dlAckType=AGGR-MU-BAR --enableUlOfdma=1 --enableBsrp=1 --mpduBufferSize=1024 --mcs=8 --muSchedAccessReqInterval=45ms --frequency2=6 --minExpectedThroughput=50 --maxExpectedThroughput=550 --RngRun=7",
"True",
"True",
),

View File

@@ -535,7 +535,9 @@ HeFrameExchangeManager::TransmissionSucceeded()
}
if (m_continueTxopAfterBsrpTf && m_edca && m_edca->GetTxopLimit(m_linkId).IsZero() &&
m_txTimer.IsRunning() && m_txTimer.GetReason() == WifiTxTimer::WAIT_QOS_NULL_AFTER_BSRP_TF)
m_txTimer.IsRunning() &&
m_txTimer.GetReason() == WifiTxTimer::WAIT_QOS_NULL_AFTER_BSRP_TF &&
(m_txNav > Simulator::Now() + m_phy->GetSifs()))
{
NS_LOG_DEBUG("Schedule another transmission in a SIFS after successful BSRP TF");
Simulator::Schedule(m_phy->GetSifs(), [=, this]() {

View File

@@ -744,7 +744,8 @@ HtFrameExchangeManager::TransmissionSucceeded()
{
NS_LOG_DEBUG(this);
if (m_edca && m_edca->GetTxopLimit(m_linkId).IsZero() && GetBar(m_edca->GetAccessCategory()))
if (m_edca && m_edca->GetTxopLimit(m_linkId).IsZero() && GetBar(m_edca->GetAccessCategory()) &&
(m_txNav > Simulator::Now() + m_phy->GetSifs()))
{
// A TXOP limit of 0 indicates that the TXOP holder may transmit or cause to
// be transmitted (as responses) the following within the current TXOP: