wifi: Set (MU) EDCA parameters on correct links

This commit is contained in:
Stefano Avallone
2023-06-01 12:22:04 +02:00
parent 41a375b7cd
commit 622f2df62b
2 changed files with 36 additions and 22 deletions

View File

@@ -1439,22 +1439,26 @@ StaWifiMac::UpdateApInfo(const MgtFrameType& frame,
edcaParameters->GetBeCWmin(),
edcaParameters->GetBeCWmax(),
edcaParameters->GetBeAifsn(),
32 * MicroSeconds(edcaParameters->GetBeTxopLimit()));
32 * MicroSeconds(edcaParameters->GetBeTxopLimit()),
linkId);
SetEdcaParameters(AC_BK,
edcaParameters->GetBkCWmin(),
edcaParameters->GetBkCWmax(),
edcaParameters->GetBkAifsn(),
32 * MicroSeconds(edcaParameters->GetBkTxopLimit()));
32 * MicroSeconds(edcaParameters->GetBkTxopLimit()),
linkId);
SetEdcaParameters(AC_VI,
edcaParameters->GetViCWmin(),
edcaParameters->GetViCWmax(),
edcaParameters->GetViAifsn(),
32 * MicroSeconds(edcaParameters->GetViTxopLimit()));
32 * MicroSeconds(edcaParameters->GetViTxopLimit()),
linkId);
SetEdcaParameters(AC_VO,
edcaParameters->GetVoCWmin(),
edcaParameters->GetVoCWmax(),
edcaParameters->GetVoAifsn(),
32 * MicroSeconds(edcaParameters->GetVoTxopLimit()));
32 * MicroSeconds(edcaParameters->GetVoTxopLimit()),
linkId);
}
GetWifiRemoteStationManager(linkId)->SetQosSupport(apAddr, qosSupported);
@@ -1533,22 +1537,26 @@ StaWifiMac::UpdateApInfo(const MgtFrameType& frame,
muEdcaParameters->GetMuCwMin(AC_BE),
muEdcaParameters->GetMuCwMax(AC_BE),
muEdcaParameters->GetMuAifsn(AC_BE),
muEdcaParameters->GetMuEdcaTimer(AC_BE));
muEdcaParameters->GetMuEdcaTimer(AC_BE),
linkId);
SetMuEdcaParameters(AC_BK,
muEdcaParameters->GetMuCwMin(AC_BK),
muEdcaParameters->GetMuCwMax(AC_BK),
muEdcaParameters->GetMuAifsn(AC_BK),
muEdcaParameters->GetMuEdcaTimer(AC_BK));
muEdcaParameters->GetMuEdcaTimer(AC_BK),
linkId);
SetMuEdcaParameters(AC_VI,
muEdcaParameters->GetMuCwMin(AC_VI),
muEdcaParameters->GetMuCwMax(AC_VI),
muEdcaParameters->GetMuAifsn(AC_VI),
muEdcaParameters->GetMuEdcaTimer(AC_VI));
muEdcaParameters->GetMuEdcaTimer(AC_VI),
linkId);
SetMuEdcaParameters(AC_VO,
muEdcaParameters->GetMuCwMin(AC_VO),
muEdcaParameters->GetMuCwMax(AC_VO),
muEdcaParameters->GetMuAifsn(AC_VO),
muEdcaParameters->GetMuEdcaTimer(AC_VO));
muEdcaParameters->GetMuEdcaTimer(AC_VO),
linkId);
}
if (!GetEhtSupported())
@@ -1718,13 +1726,14 @@ StaWifiMac::SetEdcaParameters(AcIndex ac,
uint32_t cwMin,
uint32_t cwMax,
uint8_t aifsn,
Time txopLimit)
Time txopLimit,
uint8_t linkId)
{
Ptr<QosTxop> edca = GetQosTxop(ac);
edca->SetMinCw(cwMin, SINGLE_LINK_OP_ID);
edca->SetMaxCw(cwMax, SINGLE_LINK_OP_ID);
edca->SetAifsn(aifsn, SINGLE_LINK_OP_ID);
edca->SetTxopLimit(txopLimit, SINGLE_LINK_OP_ID);
edca->SetMinCw(cwMin, linkId);
edca->SetMaxCw(cwMax, linkId);
edca->SetAifsn(aifsn, linkId);
edca->SetTxopLimit(txopLimit, linkId);
}
void
@@ -1732,13 +1741,14 @@ StaWifiMac::SetMuEdcaParameters(AcIndex ac,
uint16_t cwMin,
uint16_t cwMax,
uint8_t aifsn,
Time muEdcaTimer)
Time muEdcaTimer,
uint8_t linkId)
{
Ptr<QosTxop> edca = GetQosTxop(ac);
edca->SetMuCwMin(cwMin, SINGLE_LINK_OP_ID);
edca->SetMuCwMax(cwMax, SINGLE_LINK_OP_ID);
edca->SetMuAifsn(aifsn, SINGLE_LINK_OP_ID);
edca->SetMuEdcaTimer(muEdcaTimer, SINGLE_LINK_OP_ID);
edca->SetMuCwMin(cwMin, linkId);
edca->SetMuCwMax(cwMax, linkId);
edca->SetMuAifsn(aifsn, linkId);
edca->SetMuEdcaTimer(muEdcaTimer, linkId);
}
void

View File

@@ -501,33 +501,37 @@ class StaWifiMac : public WifiMac
*/
void SetState(MacState value);
/**
* Set the EDCA parameters.
* Set the EDCA parameters for the given link.
*
* \param ac the access class
* \param cwMin the minimum contention window size
* \param cwMax the maximum contention window size
* \param aifsn the number of slots that make up an AIFS
* \param txopLimit the TXOP limit
* \param linkId the ID of the given link
*/
void SetEdcaParameters(AcIndex ac,
uint32_t cwMin,
uint32_t cwMax,
uint8_t aifsn,
Time txopLimit);
Time txopLimit,
uint8_t linkId);
/**
* Set the MU EDCA parameters.
* Set the MU EDCA parameters for the given link.
*
* \param ac the Access Category
* \param cwMin the minimum contention window size
* \param cwMax the maximum contention window size
* \param aifsn the number of slots that make up an AIFS
* \param muEdcaTimer the MU EDCA timer
* \param linkId the ID of the given link
*/
void SetMuEdcaParameters(AcIndex ac,
uint16_t cwMin,
uint16_t cwMax,
uint8_t aifsn,
Time muEdcaTimer);
Time muEdcaTimer,
uint8_t linkId);
/**
* Return the Capability information for the given link.
*