wifi: Do not constrain aux PHY max width based on aux PHY max modulation class
This commit is contained in:
@@ -58,9 +58,7 @@ EmlsrManager::GetTypeId()
|
||||
MakeUintegerAccessor(&EmlsrManager::SetMainPhyId, &EmlsrManager::GetMainPhyId),
|
||||
MakeUintegerChecker<uint8_t>())
|
||||
.AddAttribute("AuxPhyChannelWidth",
|
||||
"The maximum channel width (MHz) supported by Aux PHYs. Note that the "
|
||||
"maximum channel width is capped to the maximum channel width supported "
|
||||
"by the configured maximum modulation class supported.",
|
||||
"The maximum channel width (MHz) supported by Aux PHYs.",
|
||||
TypeId::ATTR_GET |
|
||||
TypeId::ATTR_CONSTRUCT, // prevent setting after construction
|
||||
UintegerValue(20),
|
||||
@@ -1381,27 +1379,25 @@ EmlsrManager::ComputeOperatingChannels()
|
||||
m_mainPhyChannels.emplace(linkId, channel);
|
||||
|
||||
auto mainPhyChWidth = channel.GetWidth();
|
||||
auto auxPhyMaxWidth =
|
||||
std::min(m_auxPhyMaxWidth, GetMaximumChannelWidth(m_auxPhyMaxModClass));
|
||||
if (auxPhyMaxWidth >= mainPhyChWidth)
|
||||
if (m_auxPhyMaxWidth >= mainPhyChWidth)
|
||||
{
|
||||
// same channel can be used by aux PHYs
|
||||
m_auxPhyChannels.emplace(linkId, channel);
|
||||
continue;
|
||||
}
|
||||
// aux PHYs will operate on a primary subchannel
|
||||
auto freq = channel.GetPrimaryChannelCenterFrequency(auxPhyMaxWidth);
|
||||
auto freq = channel.GetPrimaryChannelCenterFrequency(m_auxPhyMaxWidth);
|
||||
auto chIt = WifiPhyOperatingChannel::FindFirst(0,
|
||||
freq,
|
||||
auxPhyMaxWidth,
|
||||
m_auxPhyMaxWidth,
|
||||
WIFI_STANDARD_UNSPECIFIED,
|
||||
channel.GetPhyBand());
|
||||
NS_ASSERT_MSG(chIt != WifiPhyOperatingChannel::m_frequencyChannels.end(),
|
||||
"Primary" << auxPhyMaxWidth << " channel not found");
|
||||
"Primary" << m_auxPhyMaxWidth << " channel not found");
|
||||
m_auxPhyChannels.emplace(linkId, chIt);
|
||||
// find the P20 index for the channel used by the aux PHYs
|
||||
auto p20Index = channel.GetPrimaryChannelIndex(MHz_u{20});
|
||||
while (mainPhyChWidth > auxPhyMaxWidth)
|
||||
while (mainPhyChWidth > m_auxPhyMaxWidth)
|
||||
{
|
||||
mainPhyChWidth /= 2;
|
||||
p20Index /= 2;
|
||||
|
||||
Reference in New Issue
Block a user