From a4ece26afc52e2eebea373530c6e5daf3e8938cf Mon Sep 17 00:00:00 2001 From: Stefano Avallone Date: Sat, 20 Apr 2024 16:52:12 +0200 Subject: [PATCH] wifi: Rename primary/non-primary link as preferred/auxiliary link --- src/wifi/model/eht/advanced-emlsr-manager.cc | 18 +++---- src/wifi/model/eht/default-emlsr-manager.cc | 14 +++--- src/wifi/model/eht/default-emlsr-manager.h | 4 +- src/wifi/test/wifi-emlsr-test.cc | 50 ++++++++++---------- src/wifi/test/wifi-emlsr-test.h | 8 ++-- 5 files changed, 47 insertions(+), 47 deletions(-) diff --git a/src/wifi/model/eht/advanced-emlsr-manager.cc b/src/wifi/model/eht/advanced-emlsr-manager.cc index f7c79e09b..46fda8c34 100644 --- a/src/wifi/model/eht/advanced-emlsr-manager.cc +++ b/src/wifi/model/eht/advanced-emlsr-manager.cc @@ -64,7 +64,7 @@ AdvancedEmlsrManager::GetTypeId() "Duration of the timer started in case of non-TX capable aux PHY (that " "does not switch link) when medium is sensed busy during the PIFS " "interval preceding/following the main PHY switch end. When the timer " - "expires, the main PHY is switched back to the primary link.", + "expires, the main PHY is switched back to the preferred link.", TimeValue(MilliSeconds(5)), MakeTimeAccessor(&AdvancedEmlsrManager::m_switchMainPhyBackDelay), MakeTimeChecker()); @@ -259,8 +259,8 @@ AdvancedEmlsrManager::ReceivedMacHdr(Ptr phy, ongoingTxopEnd.Cancel(); // this method is a callback connected to the PhyRxMacHeaderEnd trace source of WifiPhy // and is called within a for loop that executes all the callbacks. The call to NotifyTxop - // below leads the main PHY to be connected back to the primary link, thus - // the ResetPhy() method of the FEM on the non-primary link is called, which disconnects + // below leads the main PHY to be connected back to the preferred link, thus + // the ResetPhy() method of the FEM on the auxiliary link is called, which disconnects // another callback (FEM::ReceivedMacHdr) from the PhyRxMacHeaderEnd trace source of // the main PHY, thus invalidating the list of callbacks on which the for loop iterates. // Hence, schedule the call to NotifyTxopEnd to execute it outside such for loop. @@ -314,7 +314,7 @@ AdvancedEmlsrManager::DoNotifyTxopEnd(uint8_t linkId) { // delay link switch until current channel switching is completed Simulator::Schedule(mainPhy->GetDelayUntilIdle(), [=, this]() { - // request the main PHY to switch back to the primary link only if in the meantime + // request the main PHY to switch back to the preferred link only if in the meantime // no TXOP started on another link (which will require the main PHY to switch link) if (!GetEhtFem(linkId)->UsingOtherEmlsrLink()) { @@ -397,8 +397,8 @@ AdvancedEmlsrManager::CheckNavAndCcaLastPifs(Ptr phy, uint8_t linkId, P } else if (!m_switchAuxPhy) { - // switch main PHY back to primary link if SwitchAuxPhy is false - SwitchMainPhyBackToPrimaryLink(linkId); + // switch main PHY back to preferred link if SwitchAuxPhy is false + SwitchMainPhyBackToPreferredLink(linkId); } }); } @@ -418,7 +418,7 @@ AdvancedEmlsrManager::CheckNavAndCcaLastPifs(Ptr phy, uint8_t linkId, P m_switchMainPhyBackEvent = Simulator::Schedule(m_switchMainPhyBackDelay, [this, linkId]() { if (!m_switchAuxPhy) { - SwitchMainPhyBackToPrimaryLink(linkId); + SwitchMainPhyBackToPreferredLink(linkId); } }); } @@ -524,7 +524,7 @@ AdvancedEmlsrManager::RequestMainPhyToSwitch(uint8_t linkId, AcIndex aci, const const auto backoffEnd = GetStaMac()->GetChannelAccessManager(*mainPhyLinkId)->GetBackoffEndFor(edca); NS_LOG_DEBUG("Backoff end for " << acIndex - << " on primary link: " << backoffEnd.As(Time::US)); + << " on preferred link: " << backoffEnd.As(Time::US)); if (const auto minDelay = std::max(delay, mainPhy->GetChannelSwitchDelay() + @@ -723,7 +723,7 @@ AdvancedEmlsrManager::SwitchMainPhyIfTxopToBeGainedByAuxPhy(uint8_t linkId, Simulator::Schedule(minDelay + m_switchMainPhyBackDelay, [this, linkId]() { if (!m_switchAuxPhy) { - SwitchMainPhyBackToPrimaryLink(linkId); + SwitchMainPhyBackToPreferredLink(linkId); } }); } diff --git a/src/wifi/model/eht/default-emlsr-manager.cc b/src/wifi/model/eht/default-emlsr-manager.cc index e8fe012ce..21c574847 100644 --- a/src/wifi/model/eht/default-emlsr-manager.cc +++ b/src/wifi/model/eht/default-emlsr-manager.cc @@ -139,10 +139,10 @@ DefaultEmlsrManager::NotifyMainPhySwitch(std::optional currLinkId, if (currLinkId.has_value() && currLinkId != GetMainPhyId()) { - // the main PHY is leaving a non-primary link, hence an aux PHY needs to be reconnected + // the main PHY is leaving an auxiliary link, hence an aux PHY needs to be reconnected NS_ASSERT_MSG( m_auxPhyToReconnect, - "There should be an aux PHY to reconnect when the main PHY leaves a non-primary link"); + "There should be an aux PHY to reconnect when the main PHY leaves an auxiliary link"); // the Aux PHY is not actually switching (hence no switching delay) GetStaMac()->NotifySwitchingEmlsrLink(m_auxPhyToReconnect, *currLinkId, Seconds(0)); @@ -153,14 +153,14 @@ DefaultEmlsrManager::NotifyMainPhySwitch(std::optional currLinkId, // if currLinkId has no value, it means that the main PHY switch is interrupted, hence reset // the aux PHY to reconnect and cancel the event to put the aux PHY to sleep. Doing so when - // the main PHY is leaving the primary link makes no harm (the aux PHY to reconnect and the + // the main PHY is leaving the preferred link makes no harm (the aux PHY to reconnect and the // event to put the aux PHY to sleep are set below), thus no need to add an 'if' condition m_auxPhyToReconnect = nullptr; m_auxPhyToSleepEvent.Cancel(); if (nextLinkId != GetMainPhyId()) { - // the main PHY is moving to a non-primary link and the aux PHY does not switch link + // the main PHY is moving to an auxiliary link and the aux PHY does not switch link m_auxPhyToReconnect = GetStaMac()->GetWifiPhy(nextLinkId); if (m_auxPhyToSleep) @@ -199,12 +199,12 @@ DefaultEmlsrManager::DoNotifyTxopEnd(uint8_t linkId) // switch main PHY to the previous link, if needed if (!m_switchAuxPhy) { - SwitchMainPhyBackToPrimaryLink(linkId); + SwitchMainPhyBackToPreferredLink(linkId); } } void -DefaultEmlsrManager::SwitchMainPhyBackToPrimaryLink(uint8_t linkId) +DefaultEmlsrManager::SwitchMainPhyBackToPreferredLink(uint8_t linkId) { NS_LOG_FUNCTION(this << linkId); @@ -232,7 +232,7 @@ DefaultEmlsrManager::SwitchMainPhyBackToPrimaryLink(uint8_t linkId) { m_auxPhyToSleepEvent.Cancel(); Simulator::Schedule(mainPhy->GetDelayUntilIdle(), [=, this]() { - // request the main PHY to switch back to the primary link only if in the meantime + // request the main PHY to switch back to the preferred link only if in the meantime // no TXOP started on another link (which will require the main PHY to switch link) if (!GetEhtFem(linkId)->UsingOtherEmlsrLink()) { diff --git a/src/wifi/model/eht/default-emlsr-manager.h b/src/wifi/model/eht/default-emlsr-manager.h index e480136ad..f902b5038 100644 --- a/src/wifi/model/eht/default-emlsr-manager.h +++ b/src/wifi/model/eht/default-emlsr-manager.h @@ -52,12 +52,12 @@ class DefaultEmlsrManager : public EmlsrManager /** * This method can only be called when aux PHYs do not switch link. Switch the main PHY back - * to the primary link and reconnect the aux PHY that was operating on the link left by the + * to the preferred link and reconnect the aux PHY that was operating on the link left by the * main PHY. * * \param linkId the ID of the link that the main PHY is leaving */ - void SwitchMainPhyBackToPrimaryLink(uint8_t linkId); + void SwitchMainPhyBackToPreferredLink(uint8_t linkId); /// Store information about a main PHY switch. struct MainPhySwitchInfo diff --git a/src/wifi/test/wifi-emlsr-test.cc b/src/wifi/test/wifi-emlsr-test.cc index 7be419fdb..9c56c37bf 100644 --- a/src/wifi/test/wifi-emlsr-test.cc +++ b/src/wifi/test/wifi-emlsr-test.cc @@ -786,7 +786,7 @@ void EmlsrDlTxopTest::DoSetup() { // Channel switch delay should be less than the ICF padding duration, otherwise - // DL TXOPs cannot be initiated on non-primary links + // DL TXOPs cannot be initiated on auxiliary links auto delay = std::min(MicroSeconds(100), *std::min_element(m_paddingDelay.cbegin(), m_paddingDelay.cend())); Config::SetDefault("ns3::WifiPhy::ChannelSwitchDelay", TimeValue(MicroSeconds(75))); @@ -2915,19 +2915,19 @@ EmlsrUlTxopTest::CheckBlockAck(const WifiConstPsduMap& psduMap, m_staMacs[0]->GetEmlsrManager()->SetAuxPhyTxCapable(false); if (!m_nonEmlsrLink) { - // if there are two non-primary links, set MediumSyncDuration to zero so that the + // if there are two auxiliary links, set MediumSyncDuration to zero so that the // next UL QoS data frame is not protected also in case it is transmitted on the - // non-primary link other than the one on which the last frame exchange occurred + // auxiliary link other than the one on which the last frame exchange occurred m_staMacs[0]->GetEmlsrManager()->SetMediumSyncDuration(Seconds(0)); } - // generate a very large backoff for the primary link, so that when an aux PHY gains a + // generate a very large backoff for the preferred link, so that when an aux PHY gains a // TXOP, it requests the main PHY to switch to its link to transmit the frames m_staMacs[0]->GetQosTxop(AC_BE)->StartBackoffNow(100, m_mainPhyId); // events to be scheduled at the end of the BlockAck response Simulator::Schedule(txDuration + NanoSeconds(1), [=, this]() { - // check that the main PHY switches to its primary link + // check that the main PHY switches to its preferred link auto mainPhy = m_staMacs[0]->GetDevice()->GetPhy(m_mainPhyId); auto mainPhyLinkid = m_staMacs[0]->GetLinkForPhy(mainPhy); @@ -2940,13 +2940,13 @@ EmlsrUlTxopTest::CheckBlockAck(const WifiConstPsduMap& psduMap, "Main PHY should be operating on a link"); NS_TEST_EXPECT_MSG_EQ(+mainPhyLinkid.value(), +m_mainPhyId, - "Main PHY expected to operate on the primary link"); + "Main PHY expected to operate on the preferred link"); // events to be scheduled when the first main PHY channel switch is completed Simulator::Schedule(mainPhy->GetChannelSwitchDelay(), [=, this]() { auto acBe = m_staMacs[0]->GetQosTxop(AC_BE); - // find the min remaining backoff time on non-primary links for AC BE + // find the min remaining backoff time on auxiliary links for AC BE auto minBackoff = Time::Max(); Time slot{0}; for (uint8_t id = 0; id < m_staMacs[0]->GetNLinks(); id++) @@ -2976,7 +2976,7 @@ EmlsrUlTxopTest::CheckBlockAck(const WifiConstPsduMap& psduMap, ? Max(minBackoff - m_nSlotsLeftAlert * slot - Simulator::Now(), Time{0}) : (minBackoff - Simulator::Now()); - // check that the main PHY is requested to switch to a non-primary link after + // check that the main PHY is requested to switch to an auxiliary link after // the expected delay Simulator::Schedule(expected2ndSwitchDelay + NanoSeconds(1), [=, this]() { NS_TEST_EXPECT_MSG_EQ(mainPhy->IsStateSwitching(), @@ -2986,22 +2986,22 @@ EmlsrUlTxopTest::CheckBlockAck(const WifiConstPsduMap& psduMap, NS_TEST_EXPECT_MSG_EQ(m_staMacs[0]->GetLinkForPhy(mainPhy).has_value(), false, "Main PHY should not be operating on a link because it " - "should be switching to a non-primary link"); + "should be switching to an auxiliary link"); - // events to be scheduled when main PHY finishes switching to non-primary link + // events to be scheduled when main PHY finishes switching to auxiliary link Simulator::Schedule(mainPhy->GetDelayUntilIdle(), [=, this]() { auto nonPrimLinkId = m_staMacs[0]->GetLinkForPhy(mainPhy); NS_TEST_ASSERT_MSG_EQ(nonPrimLinkId.has_value(), true, "Main PHY should have completed switching"); - // update backoff on the non-primary link on which main PHY is operating + // update backoff on the auxiliary link on which main PHY is operating m_staMacs[0] ->GetChannelAccessManager(*nonPrimLinkId) ->NeedBackoffUponAccess(acBe, true, true); // record the time the transmission of the QoS data frames must have // started: (a PIFS after) end of channel switch, if the backoff counter - // on the non-primary link is null and UseAuxPhyCca is true (false); when + // on the auxiliary link is null and UseAuxPhyCca is true (false); when // the backoff expires, otherwise if (auto slots = acBe->GetBackoffSlots(*nonPrimLinkId); slots == 0) { @@ -3255,15 +3255,15 @@ EmlsrUlTxopTest::CheckResults() * For both scenarios, after the last frame exchange on the main PHY link, we have the * following frame exchanges on an EMLSR link where an aux PHY is operating on. After the * first frame exchange, aux PHYs are configured as non-TX capable. Note that the two frame - * exchanges may occur on distinct non-primary EMLSR links. + * exchanges may occur on distinct auxiliary EMLSR links. * - * | main PHY || main PHY | - * [ link ] ┌───┐ ┌───┐ ┌──┐| switches ||switches to| ┌──┐ - * [0 or 2] │CTS│ │CTS│ │BA│|to primary||non-primary|PIFS| │BA│ - * ──────┬───┬┴───X────┬───┬┴───┴┬───┬───┬┴──┴─────────────────────────────┬───┬───┬┴──┴──── - * │RTS│ │RTS│ │QoS│QoS│ │QoS│QoS│ - * └───┘ └───┘ │ X │ Y │ │ Z │ W │ - * └───┴───┘ └───┴───┘ + * | main PHY || main PHY | + * [ link ] ┌───┐ ┌───┐ ┌──┐|switches to||switches to| ┌──┐ + * [0 or 2] │CTS│ │CTS│ │BA│| preferred ||auxiliary |PIFS| │BA│ + * ──────┬───┬┴───X────┬───┬┴───┴┬───┬───┬┴──┴──────────────────────────────┬───┬───┬┴──┴─── + * │RTS│ │RTS│ │QoS│QoS│ │QoS│QoS│ + * └───┘ └───┘ │ X │ Y │ │ Z │ W │ + * └───┴───┘ └───┴───┘ * For all EMLSR links scenario, X=10, Y=11, Z=12, W=13 * For the scenario with a non-EMLSR link, X=12, Y=13, Z=14, W=15 */ @@ -3462,7 +3462,7 @@ EmlsrUlTxopTest::CheckResults() psduIt++; jumpToQosDataOrMuRts(); - // the fifth QoS data frame is transmitted by the main PHY on a non-primary link because + // the fifth QoS data frame is transmitted by the main PHY on an auxiliary link because // the aux PHY is not TX capable. The QoS data frame is not protected by RTS // QoS Data NS_TEST_ASSERT_MSG_EQ((psduIt != m_txPsdus.cend()), @@ -3476,7 +3476,7 @@ EmlsrUlTxopTest::CheckResults() "Fifth QoS data frame should be transmitted by the main PHY"); NS_TEST_EXPECT_MSG_NE(+psduIt->linkId, +m_mainPhyId, - "Fifth QoS data frame should be transmitted on a non-primary link"); + "Fifth QoS data frame should be transmitted on an auxiliary link"); NS_TEST_EXPECT_MSG_EQ( psduIt->txVector.GetChannelWidth(), (m_useAuxPhyCca && m_nSlotsLeftAlert == 0 ? m_auxPhyChannelWidth : m_channelWidth), @@ -3484,7 +3484,7 @@ EmlsrUlTxopTest::CheckResults() // Do not check the start transmission time if a backoff is generated even when no // transmission is done (if the backoff expires while the main PHY is switching, a new // backoff is generated and, before this backoff expires, the main PHY may be requested - // to switch to another non-primary link; this may happen multiple times...) + // to switch to another auxiliary link; this may happen multiple times...) if (!m_genBackoffIfTxopWithoutTx) { NS_TEST_EXPECT_MSG_LT_OR_EQ(psduIt->startTx, @@ -3945,8 +3945,8 @@ EmlsrLinkSwitchTest::CheckRtsFrame(const WifiConstPsduMap& psduMap, << mainPhy->GetState()->GetState()); // If main PHY channel switch can be interrupted, the main PHY should be back - // operating on the primary link after a channel switch delay. Otherwise, it - // will be operating on the primary link, if SwitchAuxPhy is false, or on the + // operating on the preferred link after a channel switch delay. Otherwise, it + // will be operating on the preferred link, if SwitchAuxPhy is false, or on the // link used to send the RTS, if SwitchAuxPhy is true, after the remaining // channel switching time plus the channel switch delay. auto newLinkId = diff --git a/src/wifi/test/wifi-emlsr-test.h b/src/wifi/test/wifi-emlsr-test.h index 0c8b67896..7ab7cbb8b 100644 --- a/src/wifi/test/wifi-emlsr-test.h +++ b/src/wifi/test/wifi-emlsr-test.h @@ -511,11 +511,11 @@ class EmlsrDlTxopTest : public EmlsrOperationsTestBase * link, stays in sleep mode until the TXOP ends and is resumed from sleep mode right after the * end of the DL/UL TXOP. * - When an aux PHY that is not TX capable gains a TXOP, it checks whether the main PHY can switch - * to the non-primary link a start an UL TXOP. If the main PHY is switching, the aux PHY waits + * to the auxiliary link a start an UL TXOP. If the main PHY is switching, the aux PHY waits * until the channel switch is completed and checks again; if the remaining backoff time on the - * primary link is greater than the channel switch delay, the main PHY is requested to switch to - * the non-primary link of the aux PHY. When the channel switch is completed, if the medium is - * idle on the non-primary link and the backoff is zero, the main PHY starts an UL TXOP after a + * preferred link is greater than the channel switch delay, the main PHY is requested to switch to + * the auxiliary link of the aux PHY. When the channel switch is completed, if the medium is + * idle on the auxiliary link and the backoff is zero, the main PHY starts an UL TXOP after a * PIFS period; otherwise, the main PHY starts an UL TXOP when the backoff timer counts down to * zero. The QoS data frame sent by the main PHY is not protected by RTS and the bandwidth it * occupies is not affected by possible limitations on the aux PHY TX bandwidth capabilities.