wifi: Remove lrint calls
Longs are 32-bit on Windows, differently from MacOS and Linux 64-bit, causing incorrect rounding of values when testing 320 MHz bands
This commit is contained in:
@@ -319,8 +319,8 @@ HtPhy::GetPayloadDuration(uint32_t size,
|
||||
case LAST_MPDU_IN_AGGREGATE: {
|
||||
// last packet in an A-MPDU
|
||||
uint32_t totalSize = totalAmpduSize + size;
|
||||
numSymbols = lrint(
|
||||
stbc * ceil((service + totalSize * 8.0 + 6 * nes) / (stbc * numDataBitsPerSymbol)));
|
||||
numSymbols =
|
||||
stbc * ceil((service + totalSize * 8.0 + 6 * nes) / (stbc * numDataBitsPerSymbol));
|
||||
NS_ASSERT(totalAmpduNumSymbols <= numSymbols);
|
||||
numSymbols -= totalAmpduNumSymbols;
|
||||
if (incFlag)
|
||||
@@ -336,7 +336,7 @@ HtPhy::GetPayloadDuration(uint32_t size,
|
||||
// The number of OFDM symbols in the data field when BCC encoding
|
||||
// is used is given in equation 19-32 of the IEEE 802.11-2016 standard.
|
||||
numSymbols =
|
||||
lrint(stbc * ceil((service + size * 8.0 + 6.0 * nes) / (stbc * numDataBitsPerSymbol)));
|
||||
stbc * ceil((service + size * 8.0 + 6.0 * nes) / (stbc * numDataBitsPerSymbol));
|
||||
break;
|
||||
}
|
||||
default:
|
||||
|
||||
@@ -183,8 +183,7 @@ DsssPhy::GetPayloadDuration(uint32_t size,
|
||||
double& /* totalAmpduNumSymbols */,
|
||||
uint16_t /* staId */) const
|
||||
{
|
||||
return MicroSeconds(
|
||||
lrint(ceil((size * 8.0) / (txVector.GetMode().GetDataRate(MHz_u{22}) / 1.0e6))));
|
||||
return MicroSeconds(ceil((size * 8.0) / (txVector.GetMode().GetDataRate(MHz_u{22}) / 1.0e6)));
|
||||
}
|
||||
|
||||
Ptr<WifiPpdu>
|
||||
|
||||
@@ -260,8 +260,7 @@ OfdmPhy::GetPayloadDuration(uint32_t size,
|
||||
|
||||
// The number of OFDM symbols in the data field when BCC encoding
|
||||
// is used is given in equation 19-32 of the IEEE 802.11-2016 standard.
|
||||
double numSymbols =
|
||||
lrint(ceil((GetNumberServiceBits() + size * 8.0 + 6.0) / (numDataBitsPerSymbol)));
|
||||
double numSymbols = ceil((GetNumberServiceBits() + size * 8.0 + 6.0) / (numDataBitsPerSymbol));
|
||||
|
||||
Time payloadDuration =
|
||||
FemtoSeconds(static_cast<uint64_t>(numSymbols * symbolDuration.GetFemtoSeconds()));
|
||||
@@ -617,7 +616,7 @@ OfdmPhy::CalculateDataRate(Time symbolDuration,
|
||||
double codingRate)
|
||||
{
|
||||
double symbolRate = (1e9 / static_cast<double>(symbolDuration.GetNanoSeconds()));
|
||||
return lrint(ceil(symbolRate * usableSubCarriers * numberOfBitsPerSubcarrier * codingRate));
|
||||
return ceil(symbolRate * usableSubCarriers * numberOfBitsPerSubcarrier * codingRate);
|
||||
}
|
||||
|
||||
uint16_t
|
||||
|
||||
Reference in New Issue
Block a user