|
|
| 262 |
uint64_t nbits = static_cast<uint64_t> (rate * duration.GetSeconds ()); |
262 |
uint64_t nbits = static_cast<uint64_t> (rate * duration.GetSeconds ()); |
| 263 |
if (txVector.GetMode ().GetModulationClass () == WIFI_MOD_CLASS_HT || txVector.GetMode ().GetModulationClass () == WIFI_MOD_CLASS_VHT || txVector.GetMode ().GetModulationClass () == WIFI_MOD_CLASS_HE) |
263 |
if (txVector.GetMode ().GetModulationClass () == WIFI_MOD_CLASS_HT || txVector.GetMode ().GetModulationClass () == WIFI_MOD_CLASS_VHT || txVector.GetMode ().GetModulationClass () == WIFI_MOD_CLASS_HE) |
| 264 |
{ |
264 |
{ |
| 265 |
nbits /= txVector.GetNss (); //divide effective number of bits by NSS to achieve same chunk error rate as SISO for AWGN |
265 |
double gain = std::pow (2, txVector.GetNTx () + m_numRxAntennas - 2 * txVector.GetNss ()); //compute gain offered by MIMO, 3dB per redundant radio chain |
| 266 |
double gain = (txVector.GetNTx () * m_numRxAntennas); //compute gain offered by MIMO, SIMO or MISO compared to SISO for AWGN |
|
|
| 267 |
NS_LOG_DEBUG ("TX=" << +txVector.GetNTx () << |
266 |
NS_LOG_DEBUG ("TX=" << +txVector.GetNTx () << |
| 268 |
", RX=" << +m_numRxAntennas << |
267 |
", RX=" << +m_numRxAntennas << |
| 269 |
", SNIR improvement=+" << 10 * std::log10 (gain) << "dB"); |
268 |
", SNIR improvement=+" << 10 * std::log10 (gain) << "dB"); |