diff -urN ./ns-allinone-3.18/ns-3.18/src/wifi/model/nist-error-rate-model.cc ./ns-allinone-3.18/ns-3.18/src/wifi/model/nist-error-rate-model.cc --- ./ns-allinone-3.18/ns-3.18/src/wifi/model/nist-error-rate-model.cc 2013-08-30 07:36:59.000000000 +0200 +++ ./ns-allinone-3.18/ns-3.18/src/wifi/model/nist-error-rate-model.cc 2013-11-11 10:48:53.000000000 +0100 @@ -15,7 +15,8 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * Author: Gary Pei + * Authors: Gary Pei + * Sébastien Deronne */ #include @@ -154,6 +155,22 @@ + 428005675.0 * std::pow (D, 14.0) ); } + else if (bValue == 5) + { + //802.11n support by S. Deronne + pe = 1.0 / (2.0 * bValue) * + ( 92.0 * std::pow (D, 4.0) + + 528.0 * std::pow (D, 5.0) + + 8694.0 * std::pow (D, 6.0) + + 79453.0 * std::pow (D, 7.0) + + 792114.0 * std::pow (D, 8.0) + + 7375573.0 * std::pow (D, 9.0) + + 67884974.0 * std::pow (D, 10.0) + + 610875423.0 * std::pow (D, 11.0) + + 5427275376.0 * std::pow (D, 12.0) + + 47664215639.0 * std::pow (D, 13.0) + ); + } else { NS_ASSERT (false); @@ -255,13 +272,20 @@ 2 // b value ); } - else - { - return GetFec64QamBer (snr, - nbits, - 3 // b value - ); - } + else if (mode.GetCodeRate () == WIFI_CODE_RATE_5_6) //802.11n support by S. Deronne + { + return GetFec64QamBer (snr, + nbits, + 5 // b value + ); + } + else + { + return GetFec64QamBer (snr, + nbits, + 3 // b value + ); + } } } else if (mode.GetModulationClass () == WIFI_MOD_CLASS_DSSS) diff -urN ./ns-allinone-3.18/ns-3.18/src/wifi/model/yans-error-rate-model.cc ./ns-allinone-3.18/ns-3.18/src/wifi/model/yans-error-rate-model.cc --- ./ns-allinone-3.18/ns-3.18/src/wifi/model/yans-error-rate-model.cc 2013-08-30 07:36:59.000000000 +0200 +++ ./ns-allinone-3.18/ns-3.18/src/wifi/model/yans-error-rate-model.cc 2013-11-11 10:47:07.000000000 +0100 @@ -15,7 +15,8 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - * Author: Mathieu Lacage + * Authors: Mathieu Lacage + * Sébastien Deronne */ #include @@ -176,7 +177,8 @@ YansErrorRateModel::GetChunkSuccessRate (WifiMode mode, double snr, uint32_t nbits) const { if (mode.GetModulationClass () == WIFI_MOD_CLASS_ERP_OFDM - || mode.GetModulationClass () == WIFI_MOD_CLASS_OFDM) + || mode.GetModulationClass () == WIFI_MOD_CLASS_OFDM + || mode.GetModulationClass () == WIFI_MOD_CLASS_HT) //802.11n support by S. Deronne { if (mode.GetConstellationSize () == 2) { @@ -269,6 +271,18 @@ 16 // adFreePlusOne ); } + if (mode.GetCodeRate () == WIFI_CODE_RATE_5_6) //802.11n support by S. Deronne + { + return GetFecQamBer (snr, + nbits, + mode.GetBandwidth (), // signal spread + mode.GetPhyRate (), // phy rate + 64, // m + 4, // dFree + 14, // adFree + 69 // adFreePlusOne + ); + } else { return GetFecQamBer (snr,