wifi: Differenciate VHT preamble for SU and MU transmissions
This commit is contained in:
@@ -323,9 +323,9 @@ int main (int argc, char *argv[])
|
||||
{
|
||||
input.preamble = WIFI_PREAMBLE_HT_GF;
|
||||
}
|
||||
else if (str_preamble == "WIFI_PREAMBLE_VHT" && input.standard == WIFI_PHY_STANDARD_80211ac)
|
||||
else if (str_preamble == "WIFI_PREAMBLE_VHT_SU" && input.standard == WIFI_PHY_STANDARD_80211ac)
|
||||
{
|
||||
input.preamble = WIFI_PREAMBLE_VHT;
|
||||
input.preamble = WIFI_PREAMBLE_VHT_SU;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -492,12 +492,12 @@ InterferenceHelper::CalculateNonLegacyPhyHeaderPer (Ptr<const Event> event, NiCh
|
||||
//mode for PLCP header fields sent with HT modulation
|
||||
mcsHeaderMode = WifiPhy::GetHtPlcpHeaderMode ();
|
||||
}
|
||||
else if (preamble == WIFI_PREAMBLE_VHT)
|
||||
else if (preamble == WIFI_PREAMBLE_VHT_SU || preamble == WIFI_PREAMBLE_VHT_MU)
|
||||
{
|
||||
//mode for PLCP header fields sent with VHT modulation
|
||||
mcsHeaderMode = WifiPhy::GetVhtPlcpHeaderMode ();
|
||||
}
|
||||
else if (preamble == WIFI_PREAMBLE_HE_SU)
|
||||
else if (preamble == WIFI_PREAMBLE_HE_SU || preamble == WIFI_PREAMBLE_HE_MU)
|
||||
{
|
||||
//mode for PLCP header fields sent with HE modulation
|
||||
mcsHeaderMode = WifiPhy::GetHePlcpHeaderMode ();
|
||||
@@ -558,7 +558,7 @@ InterferenceHelper::CalculateNonLegacyPhyHeaderPer (Ptr<const Event> event, NiCh
|
||||
plcpPayloadStart - plcpTrainingSymbolsStart,
|
||||
mcsHeaderMode, txVector);
|
||||
//Case 3ai: VHT or HE format
|
||||
if (preamble == WIFI_PREAMBLE_VHT || preamble == WIFI_PREAMBLE_HE_SU)
|
||||
if (preamble == WIFI_PREAMBLE_VHT_SU || preamble == WIFI_PREAMBLE_HE_SU || preamble == WIFI_PREAMBLE_VHT_MU || preamble == WIFI_PREAMBLE_HE_MU)
|
||||
{
|
||||
//SIG-A is sent using legacy OFDM modulation
|
||||
psr *= CalculateChunkSuccessRate (CalculateSnr (powerW,
|
||||
@@ -588,7 +588,7 @@ InterferenceHelper::CalculateNonLegacyPhyHeaderPer (Ptr<const Event> event, NiCh
|
||||
current - plcpTrainingSymbolsStart,
|
||||
mcsHeaderMode, txVector);
|
||||
//Case 3bi: VHT or HE format
|
||||
if (preamble == WIFI_PREAMBLE_VHT || preamble == WIFI_PREAMBLE_HE_SU)
|
||||
if (preamble == WIFI_PREAMBLE_VHT_SU || preamble == WIFI_PREAMBLE_HE_SU || preamble == WIFI_PREAMBLE_VHT_MU || preamble == WIFI_PREAMBLE_HE_MU)
|
||||
{
|
||||
//SIG-A is sent using legacy OFDM modulation
|
||||
psr *= CalculateChunkSuccessRate (CalculateSnr (powerW,
|
||||
@@ -613,7 +613,7 @@ InterferenceHelper::CalculateNonLegacyPhyHeaderPer (Ptr<const Event> event, NiCh
|
||||
else
|
||||
{
|
||||
//Case 3ci: VHT or HE format
|
||||
if (preamble == WIFI_PREAMBLE_VHT || preamble == WIFI_PREAMBLE_HE_SU)
|
||||
if (preamble == WIFI_PREAMBLE_VHT_SU || preamble == WIFI_PREAMBLE_HE_SU || preamble == WIFI_PREAMBLE_VHT_MU || preamble == WIFI_PREAMBLE_HE_MU)
|
||||
{
|
||||
//SIG-A is sent using legacy OFDM modulation
|
||||
psr *= CalculateChunkSuccessRate (CalculateSnr (powerW,
|
||||
@@ -649,7 +649,7 @@ InterferenceHelper::CalculateNonLegacyPhyHeaderPer (Ptr<const Event> event, NiCh
|
||||
NS_LOG_DEBUG ("Case 4ai - previous in L-SIG and current after payload start: nothing to do");
|
||||
}
|
||||
//Case 4aii: VHT or HE format
|
||||
else if (preamble == WIFI_PREAMBLE_VHT || preamble == WIFI_PREAMBLE_HE_SU)
|
||||
else if (preamble == WIFI_PREAMBLE_VHT_SU || preamble == WIFI_PREAMBLE_HE_SU || preamble == WIFI_PREAMBLE_VHT_MU || preamble == WIFI_PREAMBLE_HE_MU)
|
||||
{
|
||||
psr *= CalculateChunkSuccessRate (CalculateSnr (powerW,
|
||||
noiseInterferenceW,
|
||||
@@ -679,7 +679,7 @@ InterferenceHelper::CalculateNonLegacyPhyHeaderPer (Ptr<const Event> event, NiCh
|
||||
{
|
||||
NS_ASSERT ((preamble != WIFI_PREAMBLE_LONG) && (preamble != WIFI_PREAMBLE_SHORT));
|
||||
//Case 4bi: VHT or HE format
|
||||
if (preamble == WIFI_PREAMBLE_VHT || preamble == WIFI_PREAMBLE_HE_SU)
|
||||
if (preamble == WIFI_PREAMBLE_VHT_SU || preamble == WIFI_PREAMBLE_HE_SU || preamble == WIFI_PREAMBLE_VHT_MU || preamble == WIFI_PREAMBLE_HE_MU)
|
||||
{
|
||||
psr *= CalculateChunkSuccessRate (CalculateSnr (powerW,
|
||||
noiseInterferenceW,
|
||||
@@ -709,7 +709,7 @@ InterferenceHelper::CalculateNonLegacyPhyHeaderPer (Ptr<const Event> event, NiCh
|
||||
{
|
||||
NS_ASSERT ((preamble != WIFI_PREAMBLE_LONG) && (preamble != WIFI_PREAMBLE_SHORT));
|
||||
//Case 4ci: VHT format
|
||||
if (preamble == WIFI_PREAMBLE_VHT || preamble == WIFI_PREAMBLE_HE_SU)
|
||||
if (preamble == WIFI_PREAMBLE_VHT_SU || preamble == WIFI_PREAMBLE_HE_SU || preamble == WIFI_PREAMBLE_VHT_MU || preamble == WIFI_PREAMBLE_HE_MU)
|
||||
{
|
||||
psr *= CalculateChunkSuccessRate (CalculateSnr (powerW,
|
||||
noiseInterferenceW,
|
||||
@@ -749,7 +749,7 @@ InterferenceHelper::CalculateNonLegacyPhyHeaderPer (Ptr<const Event> event, NiCh
|
||||
NS_LOG_DEBUG ("Case 5ai - previous is in the preamble and current is after payload start: nothing to do");
|
||||
}
|
||||
//Case 5aii: VHT or HE format
|
||||
else if (preamble == WIFI_PREAMBLE_VHT || preamble == WIFI_PREAMBLE_HE_SU)
|
||||
else if (preamble == WIFI_PREAMBLE_VHT_SU || preamble == WIFI_PREAMBLE_HE_SU || preamble == WIFI_PREAMBLE_VHT_MU || preamble == WIFI_PREAMBLE_HE_MU)
|
||||
{
|
||||
psr *= CalculateChunkSuccessRate (CalculateSnr (powerW,
|
||||
noiseInterferenceW,
|
||||
@@ -779,7 +779,7 @@ InterferenceHelper::CalculateNonLegacyPhyHeaderPer (Ptr<const Event> event, NiCh
|
||||
{
|
||||
NS_ASSERT ((preamble != WIFI_PREAMBLE_LONG) && (preamble != WIFI_PREAMBLE_SHORT));
|
||||
//Case 5bi: VHT or HE format
|
||||
if (preamble == WIFI_PREAMBLE_VHT || preamble == WIFI_PREAMBLE_HE_SU)
|
||||
if (preamble == WIFI_PREAMBLE_VHT_SU || preamble == WIFI_PREAMBLE_HE_SU || preamble == WIFI_PREAMBLE_VHT_MU || preamble == WIFI_PREAMBLE_HE_MU)
|
||||
{
|
||||
psr *= CalculateChunkSuccessRate (CalculateSnr (powerW,
|
||||
noiseInterferenceW,
|
||||
@@ -809,7 +809,7 @@ InterferenceHelper::CalculateNonLegacyPhyHeaderPer (Ptr<const Event> event, NiCh
|
||||
{
|
||||
NS_ASSERT ((preamble != WIFI_PREAMBLE_LONG) && (preamble != WIFI_PREAMBLE_SHORT));
|
||||
//Case 5ci: VHT or HE format
|
||||
if (preamble == WIFI_PREAMBLE_VHT || preamble == WIFI_PREAMBLE_HE_SU)
|
||||
if (preamble == WIFI_PREAMBLE_VHT_SU || preamble == WIFI_PREAMBLE_HE_SU || preamble == WIFI_PREAMBLE_VHT_MU || preamble == WIFI_PREAMBLE_HE_MU)
|
||||
{
|
||||
psr *= CalculateChunkSuccessRate (CalculateSnr (powerW,
|
||||
noiseInterferenceW,
|
||||
|
||||
@@ -1799,9 +1799,11 @@ WifiPhy::GetPlcpTrainingSymbolDuration (WifiTxVector txVector)
|
||||
return MicroSeconds (4 + (4 * Ndltf) + (4 * Neltf));
|
||||
case WIFI_PREAMBLE_HT_GF:
|
||||
return MicroSeconds ((4 * Ndltf) + (4 * Neltf));
|
||||
case WIFI_PREAMBLE_VHT:
|
||||
case WIFI_PREAMBLE_VHT_SU:
|
||||
case WIFI_PREAMBLE_VHT_MU:
|
||||
return MicroSeconds (4 + (4 * Ndltf));
|
||||
case WIFI_PREAMBLE_HE_SU:
|
||||
case WIFI_PREAMBLE_HE_MU:
|
||||
return MicroSeconds (4 + (8 * Ndltf));
|
||||
default:
|
||||
return MicroSeconds (0);
|
||||
@@ -1828,8 +1830,10 @@ WifiPhy::GetPlcpSigA1Duration (WifiPreamble preamble)
|
||||
{
|
||||
switch (preamble)
|
||||
{
|
||||
case WIFI_PREAMBLE_VHT:
|
||||
case WIFI_PREAMBLE_VHT_SU:
|
||||
case WIFI_PREAMBLE_HE_SU:
|
||||
case WIFI_PREAMBLE_VHT_MU:
|
||||
case WIFI_PREAMBLE_HE_MU:
|
||||
//VHT-SIG-A1 and HE-SIG-A1
|
||||
return MicroSeconds (4);
|
||||
default:
|
||||
@@ -1843,8 +1847,10 @@ WifiPhy::GetPlcpSigA2Duration (WifiPreamble preamble)
|
||||
{
|
||||
switch (preamble)
|
||||
{
|
||||
case WIFI_PREAMBLE_VHT:
|
||||
case WIFI_PREAMBLE_VHT_SU:
|
||||
case WIFI_PREAMBLE_HE_SU:
|
||||
case WIFI_PREAMBLE_VHT_MU:
|
||||
case WIFI_PREAMBLE_HE_MU:
|
||||
//VHT-SIG-A2 and HE-SIG-A2
|
||||
return MicroSeconds (4);
|
||||
default:
|
||||
@@ -1858,12 +1864,9 @@ WifiPhy::GetPlcpSigBDuration (WifiPreamble preamble)
|
||||
{
|
||||
switch (preamble)
|
||||
{
|
||||
case WIFI_PREAMBLE_VHT:
|
||||
//VHT-SIG-B
|
||||
case WIFI_PREAMBLE_VHT_MU:
|
||||
case WIFI_PREAMBLE_HE_MU:
|
||||
return MicroSeconds (4);
|
||||
case WIFI_PREAMBLE_HE_SU:
|
||||
//HE-SIG-B: MU not supported so HE-SIG-B not used
|
||||
return MicroSeconds (0);
|
||||
default:
|
||||
// no SIG-B
|
||||
return MicroSeconds (0);
|
||||
|
||||
@@ -33,7 +33,8 @@ enum WifiPreamble
|
||||
WIFI_PREAMBLE_SHORT,
|
||||
WIFI_PREAMBLE_HT_MF,
|
||||
WIFI_PREAMBLE_HT_GF,
|
||||
WIFI_PREAMBLE_VHT,
|
||||
WIFI_PREAMBLE_VHT_SU,
|
||||
WIFI_PREAMBLE_VHT_MU,
|
||||
WIFI_PREAMBLE_HE_SU,
|
||||
WIFI_PREAMBLE_HE_ER_SU,
|
||||
WIFI_PREAMBLE_HE_MU,
|
||||
|
||||
@@ -622,7 +622,7 @@ WifiRemoteStationManager::DoGetCtsToSelfTxVector (void)
|
||||
}
|
||||
else if (defaultMode.GetModulationClass () == WIFI_MOD_CLASS_VHT)
|
||||
{
|
||||
defaultPreamble = WIFI_PREAMBLE_VHT;
|
||||
defaultPreamble = WIFI_PREAMBLE_VHT_SU;
|
||||
}
|
||||
else if (defaultMode.GetModulationClass () == WIFI_MOD_CLASS_HT)
|
||||
{
|
||||
|
||||
@@ -133,7 +133,7 @@ GetPreambleForTransmission (WifiModulationClass modulation, bool useShortPreambl
|
||||
}
|
||||
else if (modulation == WIFI_MOD_CLASS_VHT)
|
||||
{
|
||||
return WIFI_PREAMBLE_VHT;
|
||||
return WIFI_PREAMBLE_VHT_SU;
|
||||
}
|
||||
else if (modulation == WIFI_MOD_CLASS_HT && useGreenfield)
|
||||
{
|
||||
@@ -251,7 +251,8 @@ GetPpduMaxTime (WifiPreamble preamble)
|
||||
duration = MicroSeconds (10000);
|
||||
break;
|
||||
case WIFI_PREAMBLE_HT_MF:
|
||||
case WIFI_PREAMBLE_VHT:
|
||||
case WIFI_PREAMBLE_VHT_SU:
|
||||
case WIFI_PREAMBLE_VHT_MU:
|
||||
case WIFI_PREAMBLE_HE_SU:
|
||||
case WIFI_PREAMBLE_HE_ER_SU:
|
||||
case WIFI_PREAMBLE_HE_MU:
|
||||
|
||||
@@ -315,36 +315,36 @@ TxDurationTest::DoRun (void)
|
||||
|
||||
//802.11ac durations
|
||||
retval = retval
|
||||
&& CheckTxDuration (1536, WifiPhy::GetVhtMcs8 (), 20, 800, WIFI_PREAMBLE_VHT, MicroSeconds (200))
|
||||
&& CheckTxDuration (76, WifiPhy::GetVhtMcs8 (), 20, 800, WIFI_PREAMBLE_VHT, MicroSeconds (52))
|
||||
&& CheckTxDuration (14, WifiPhy::GetVhtMcs8 (), 20, 800, WIFI_PREAMBLE_VHT, MicroSeconds (44))
|
||||
&& CheckTxDuration (1536, WifiPhy::GetVhtMcs8 (), 20, 400, WIFI_PREAMBLE_VHT, MicroSeconds (184))
|
||||
&& CheckTxDuration (76, WifiPhy::GetVhtMcs8 (), 20, 400, WIFI_PREAMBLE_VHT, NanoSeconds (50800))
|
||||
&& CheckTxDuration (14, WifiPhy::GetVhtMcs8 (), 20, 400, WIFI_PREAMBLE_VHT, NanoSeconds (43600))
|
||||
&& CheckTxDuration (1536, WifiPhy::GetVhtMcs9 (), 40, 800, WIFI_PREAMBLE_VHT, MicroSeconds (112))
|
||||
&& CheckTxDuration (76, WifiPhy::GetVhtMcs9 (), 40, 800, WIFI_PREAMBLE_VHT, MicroSeconds (44))
|
||||
&& CheckTxDuration (14, WifiPhy::GetVhtMcs9 (), 40, 800, WIFI_PREAMBLE_VHT, MicroSeconds (44))
|
||||
&& CheckTxDuration (1536, WifiPhy::GetVhtMcs9 (), 40, 400, WIFI_PREAMBLE_VHT, NanoSeconds (104800))
|
||||
&& CheckTxDuration (76, WifiPhy::GetVhtMcs9 (), 40, 400, WIFI_PREAMBLE_VHT, NanoSeconds (43600))
|
||||
&& CheckTxDuration (14, WifiPhy::GetVhtMcs9 (), 40, 400, WIFI_PREAMBLE_VHT, NanoSeconds (43600))
|
||||
&& CheckTxDuration (1536, WifiPhy::GetVhtMcs0 (), 80, 800, WIFI_PREAMBLE_VHT, MicroSeconds (464))
|
||||
&& CheckTxDuration (76, WifiPhy::GetVhtMcs0 (), 80, 800, WIFI_PREAMBLE_VHT, MicroSeconds (64))
|
||||
&& CheckTxDuration (14, WifiPhy::GetVhtMcs0 (), 80, 800, WIFI_PREAMBLE_VHT, MicroSeconds (48))
|
||||
&& CheckTxDuration (1536, WifiPhy::GetVhtMcs0 (), 80, 400, WIFI_PREAMBLE_VHT, NanoSeconds (421600))
|
||||
&& CheckTxDuration (76, WifiPhy::GetVhtMcs0 (), 80, 400, WIFI_PREAMBLE_VHT, NanoSeconds (61600))
|
||||
&& CheckTxDuration (14, WifiPhy::GetVhtMcs0 (), 80, 400, WIFI_PREAMBLE_VHT, NanoSeconds (47200))
|
||||
&& CheckTxDuration (1536, WifiPhy::GetVhtMcs9 (), 80, 800, WIFI_PREAMBLE_VHT, MicroSeconds (72))
|
||||
&& CheckTxDuration (76, WifiPhy::GetVhtMcs9 (), 80, 800, WIFI_PREAMBLE_VHT, MicroSeconds (44))
|
||||
&& CheckTxDuration (14, WifiPhy::GetVhtMcs9 (), 80, 800, WIFI_PREAMBLE_VHT, MicroSeconds (44))
|
||||
&& CheckTxDuration (1536, WifiPhy::GetVhtMcs9 (), 80, 400, WIFI_PREAMBLE_VHT, NanoSeconds (68800))
|
||||
&& CheckTxDuration (76, WifiPhy::GetVhtMcs9 (), 80, 400, WIFI_PREAMBLE_VHT, NanoSeconds (43600))
|
||||
&& CheckTxDuration (14, WifiPhy::GetVhtMcs9 (), 80, 400, WIFI_PREAMBLE_VHT, NanoSeconds (43600))
|
||||
&& CheckTxDuration (1536, WifiPhy::GetVhtMcs8 (), 160, 800, WIFI_PREAMBLE_VHT, MicroSeconds (60))
|
||||
&& CheckTxDuration (76, WifiPhy::GetVhtMcs8 (), 160, 800, WIFI_PREAMBLE_VHT, MicroSeconds (44))
|
||||
&& CheckTxDuration (14, WifiPhy::GetVhtMcs8 (), 160, 800, WIFI_PREAMBLE_VHT, MicroSeconds (44))
|
||||
&& CheckTxDuration (1536, WifiPhy::GetVhtMcs8 (), 160, 400, WIFI_PREAMBLE_VHT, MicroSeconds (58))
|
||||
&& CheckTxDuration (76, WifiPhy::GetVhtMcs8 (), 160, 400, WIFI_PREAMBLE_VHT, NanoSeconds (43600))
|
||||
&& CheckTxDuration (14, WifiPhy::GetVhtMcs8 (), 160, 400, WIFI_PREAMBLE_VHT, NanoSeconds (43600));
|
||||
&& CheckTxDuration (1536, WifiPhy::GetVhtMcs8 (), 20, 800, WIFI_PREAMBLE_VHT_SU, MicroSeconds (196))
|
||||
&& CheckTxDuration (76, WifiPhy::GetVhtMcs8 (), 20, 800, WIFI_PREAMBLE_VHT_SU, MicroSeconds (48))
|
||||
&& CheckTxDuration (14, WifiPhy::GetVhtMcs8 (), 20, 800, WIFI_PREAMBLE_VHT_SU, MicroSeconds (40))
|
||||
&& CheckTxDuration (1536, WifiPhy::GetVhtMcs8 (), 20, 400, WIFI_PREAMBLE_VHT_SU, MicroSeconds (180))
|
||||
&& CheckTxDuration (76, WifiPhy::GetVhtMcs8 (), 20, 400, WIFI_PREAMBLE_VHT_SU, NanoSeconds (46800))
|
||||
&& CheckTxDuration (14, WifiPhy::GetVhtMcs8 (), 20, 400, WIFI_PREAMBLE_VHT_SU, NanoSeconds (39600))
|
||||
&& CheckTxDuration (1536, WifiPhy::GetVhtMcs9 (), 40, 800, WIFI_PREAMBLE_VHT_SU, MicroSeconds (108))
|
||||
&& CheckTxDuration (76, WifiPhy::GetVhtMcs9 (), 40, 800, WIFI_PREAMBLE_VHT_SU, MicroSeconds (40))
|
||||
&& CheckTxDuration (14, WifiPhy::GetVhtMcs9 (), 40, 800, WIFI_PREAMBLE_VHT_SU, MicroSeconds (40))
|
||||
&& CheckTxDuration (1536, WifiPhy::GetVhtMcs9 (), 40, 400, WIFI_PREAMBLE_VHT_SU, NanoSeconds (100800))
|
||||
&& CheckTxDuration (76, WifiPhy::GetVhtMcs9 (), 40, 400, WIFI_PREAMBLE_VHT_SU, NanoSeconds (39600))
|
||||
&& CheckTxDuration (14, WifiPhy::GetVhtMcs9 (), 40, 400, WIFI_PREAMBLE_VHT_SU, NanoSeconds (39600))
|
||||
&& CheckTxDuration (1536, WifiPhy::GetVhtMcs0 (), 80, 800, WIFI_PREAMBLE_VHT_SU, MicroSeconds (460))
|
||||
&& CheckTxDuration (76, WifiPhy::GetVhtMcs0 (), 80, 800, WIFI_PREAMBLE_VHT_SU, MicroSeconds (60))
|
||||
&& CheckTxDuration (14, WifiPhy::GetVhtMcs0 (), 80, 800, WIFI_PREAMBLE_VHT_SU, MicroSeconds (44))
|
||||
&& CheckTxDuration (1536, WifiPhy::GetVhtMcs0 (), 80, 400, WIFI_PREAMBLE_VHT_SU, NanoSeconds (417600))
|
||||
&& CheckTxDuration (76, WifiPhy::GetVhtMcs0 (), 80, 400, WIFI_PREAMBLE_VHT_SU, NanoSeconds (57600))
|
||||
&& CheckTxDuration (14, WifiPhy::GetVhtMcs0 (), 80, 400, WIFI_PREAMBLE_VHT_SU, NanoSeconds (43200))
|
||||
&& CheckTxDuration (1536, WifiPhy::GetVhtMcs9 (), 80, 800, WIFI_PREAMBLE_VHT_SU, MicroSeconds (68))
|
||||
&& CheckTxDuration (76, WifiPhy::GetVhtMcs9 (), 80, 800, WIFI_PREAMBLE_VHT_SU, MicroSeconds (40))
|
||||
&& CheckTxDuration (14, WifiPhy::GetVhtMcs9 (), 80, 800, WIFI_PREAMBLE_VHT_SU, MicroSeconds (40))
|
||||
&& CheckTxDuration (1536, WifiPhy::GetVhtMcs9 (), 80, 400, WIFI_PREAMBLE_VHT_SU, NanoSeconds (64800))
|
||||
&& CheckTxDuration (76, WifiPhy::GetVhtMcs9 (), 80, 400, WIFI_PREAMBLE_VHT_SU, NanoSeconds (39600))
|
||||
&& CheckTxDuration (14, WifiPhy::GetVhtMcs9 (), 80, 400, WIFI_PREAMBLE_VHT_SU, NanoSeconds (39600))
|
||||
&& CheckTxDuration (1536, WifiPhy::GetVhtMcs8 (), 160, 800, WIFI_PREAMBLE_VHT_SU, MicroSeconds (56))
|
||||
&& CheckTxDuration (76, WifiPhy::GetVhtMcs8 (), 160, 800, WIFI_PREAMBLE_VHT_SU, MicroSeconds (40))
|
||||
&& CheckTxDuration (14, WifiPhy::GetVhtMcs8 (), 160, 800, WIFI_PREAMBLE_VHT_SU, MicroSeconds (40))
|
||||
&& CheckTxDuration (1536, WifiPhy::GetVhtMcs8 (), 160, 400, WIFI_PREAMBLE_VHT_SU, MicroSeconds (54))
|
||||
&& CheckTxDuration (76, WifiPhy::GetVhtMcs8 (), 160, 400, WIFI_PREAMBLE_VHT_SU, NanoSeconds (39600))
|
||||
&& CheckTxDuration (14, WifiPhy::GetVhtMcs8 (), 160, 400, WIFI_PREAMBLE_VHT_SU, NanoSeconds (39600));
|
||||
|
||||
NS_TEST_EXPECT_MSG_EQ (retval, true, "an 802.11ac duration failed");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user