Update (most of) IEEE Std 802.11-2007 to IEEE Std 802.11-2012
authorDaniel Lertpratchya <nikkipui@gmail.com>
Sun, 19 Jan 2014 12:08:50 -0500
changeset 10580 2a29a9bd6fd6
parent 10579 4ec4b3dcb42a
child 10583 377672daf7f3
Update (most of) IEEE Std 802.11-2007 to IEEE Std 802.11-2012
src/wifi/model/ap-wifi-mac.cc
src/wifi/model/dcf-manager.cc
src/wifi/model/qos-tag.h
src/wifi/model/qos-utils.h
src/wifi/model/regular-wifi-mac.cc
src/wifi/model/wifi-mac-queue.h
src/wifi/model/wifi-mode.h
src/wifi/model/wifi-phy.cc
src/wifi/model/wifi-phy.h
src/wifi/model/wifi-remote-station-manager.cc
--- a/src/wifi/model/ap-wifi-mac.cc	Sun Jan 19 05:58:53 2014 -0800
+++ b/src/wifi/model/ap-wifi-mac.cc	Sun Jan 19 12:08:50 2014 -0500
@@ -169,7 +169,7 @@
   NS_LOG_FUNCTION (this << interval);
   if ((interval.GetMicroSeconds () % 1024) != 0)
     {
-      NS_LOG_WARN ("beacon interval should be multiple of 1024us, see IEEE Std. 802.11-2007, section 11.1.1.1");
+      NS_LOG_WARN ("beacon interval should be multiple of 1024us (802.11 time unit), see IEEE Std. 802.11-2012");
     }
   m_beaconInterval = interval;
 }
--- a/src/wifi/model/dcf-manager.cc	Sun Jan 19 05:58:53 2014 -0800
+++ b/src/wifi/model/dcf-manager.cc	Sun Jan 19 12:08:50 2014 -0500
@@ -94,7 +94,7 @@
 void
 DcfState::UpdateFailedCw (void)
 {
-  // see 802.11-2007, section 9.9.1.5
+  // see 802.11-2012, section 9.19.2.5
   m_cw = std::min ( 2 * (m_cw + 1) - 1, m_cwMax);
 }
 void
--- a/src/wifi/model/qos-tag.h	Sun Jan 19 05:58:53 2014 -0800
+++ b/src/wifi/model/qos-tag.h	Sun Jan 19 12:08:50 2014 -0500
@@ -28,13 +28,13 @@
 
 
 /**
- * As per IEEE Std. 802.11-2007, Section 6.1.1.1.1, when EDCA is used the
+ * As per IEEE Std. 802.11-2012, Section 5.1.1.3, when EDCA is used the
  * the Traffic ID (TID) value corresponds to one of the User Priority (UP)
  * values defined by the IEEE Std. 802.1D-2004, Annex G, table G-2.
  *
  * Note that this correspondence does not hold for HCCA, since in that
  * case the mapping between UPs and TIDs should be determined by a
- * TSPEC element as per IEEE Std. 802.11-2007, Section 7.3.2.30
+ * TSPEC element as per IEEE Std. 802.11-2012, Section 8.4.2.32
  */
 enum UserPriority
 {
--- a/src/wifi/model/qos-utils.h	Sun Jan 19 05:58:53 2014 -0800
+++ b/src/wifi/model/qos-utils.h	Sun Jan 19 12:08:50 2014 -0500
@@ -29,8 +29,8 @@
 /**
  * \ingroup wifi
  * This enumeration defines the Access Categories as an enumeration
- * with values corresponding to the AC index (ACI) values specified in
- * Table 7-36 of IEEE 802.11-2007.
+ * with values corresponding to the AC index (ACI) values specified
+ * (Table 8-104 "ACI-to-AC coding"; IEEE 802.11-2012).
  */
 enum AcIndex
 {
@@ -51,7 +51,7 @@
 /**
  * \ingroup wifi
  * Maps TID (Traffic ID) to Access classes.
- * For more details see table 9-1 of IEEE802.11 standard.
+ * For more details see (Table 9-1 "UP-to-AC mapping"; IEEE802.11-2012).
  *
  * \param tid the Traffic ID to be mapped to Access class
  * \return the access class for the given TID
--- a/src/wifi/model/regular-wifi-mac.cc	Sun Jan 19 05:58:53 2014 -0800
+++ b/src/wifi/model/regular-wifi-mac.cc	Sun Jan 19 12:08:50 2014 -0500
@@ -62,7 +62,7 @@
   m_dca->SetTxFailedCallback (MakeCallback (&RegularWifiMac::TxFailed, this));
 
   // Construct the EDCAFs. The ordering is important - highest
-  // priority (see Table 9-1 in IEEE 802.11-2007) must be created
+  // priority (Table 9-1 UP-to-AC mapping; IEEE 802.11-2012) must be created
   // first.
   SetupEdcaQueue (AC_VO);
   SetupEdcaQueue (AC_VI);
--- a/src/wifi/model/wifi-mac-queue.h	Sun Jan 19 05:58:53 2014 -0800
+++ b/src/wifi/model/wifi-mac-queue.h	Sun Jan 19 12:08:50 2014 -0500
@@ -35,8 +35,8 @@
 /**
  * \ingroup wifi
  *
- * This queue implements the timeout procedure described in IEEE
- * Std. 802.11-2007, section 9.9.1.6, paragraph 6.
+ * This queue implements the timeout procedure described in
+ * (Section 9.19.2.6 "Retransmit procedures" paragraph 6; IEEE 802.11-2012).
  *
  * When a packet is received by the MAC, to be sent to the PHY,
  * it is queued in the internal queue after being tagged by the
--- a/src/wifi/model/wifi-mode.h	Sun Jan 19 05:58:53 2014 -0800
+++ b/src/wifi/model/wifi-mode.h	Sun Jan 19 12:08:50 2014 -0500
@@ -30,8 +30,8 @@
 namespace ns3 {
 
 /**
- * This enumeration defines the modulation classes per IEEE
- * 802.11-2007, Section 9.6.1, Table 9-2.
+ * This enumeration defines the modulation classes per 
+ * (Table 9-4 "Modulation classes"; IEEE 802.11-2012).
  */
 enum WifiModulationClass
 {
@@ -138,8 +138,8 @@
 
   /**
    *
-   * \returns the Modulation Class (see IEEE 802.11-2007 Section
-   * 9.6.1) to which this WifiMode belongs.
+   * \returns the Modulation Class (Section 9.7.8 "Modulation classes"; IEEE 802.11-2012)
+   * to which this WifiMode belongs.
    */
   enum WifiModulationClass GetModulationClass () const;
 
--- a/src/wifi/model/wifi-phy.cc	Sun Jan 19 05:58:53 2014 -0800
+++ b/src/wifi/model/wifi-phy.cc	Sun Jan 19 12:08:50 2014 -0500
@@ -159,7 +159,7 @@
           case 10000000:
             return WifiPhy::GetOfdmRate3MbpsBW10MHz ();
           default:
-            // IEEE Std 802.11-2007, 17.3.2
+            // (Section 18.3.2 "PLCP frame format"; IEEE Std 802.11-2012)
             // actually this is only the first part of the PlcpHeader,
             // because the last 16 bits of the PlcpHeader are using the
             // same mode of the payload
@@ -202,12 +202,12 @@
     case WIFI_MOD_CLASS_DSSS:
       if (preamble == WIFI_PREAMBLE_LONG)
         {
-          // IEEE Std 802.11-2007, sections 15.2.3 and 18.2.2.1
+          // (Section 16.2.3 "PLCP field definitions" and Section 17.2.2.2 "Long PPDU format"; IEEE Std 802.11-2012)
           return WifiPhy::GetDsssRate1Mbps ();
         }
       else  //  WIFI_PREAMBLE_SHORT
         {
-          // IEEE Std 802.11-2007, section 18.2.2.2
+          // (Section 17.2.2.3 "Short PPDU format"; IEEE Std 802.11-2012)
           return WifiPhy::GetDsssRate2Mbps ();
         }
 
@@ -229,18 +229,18 @@
           {
           case 20000000:
           default:
-            // IEEE Std 802.11-2007, section 17.3.3 and figure 17-4
-            // also section 17.3.2.3, table 17-4
+            // (Section 18.3.3 "PLCP preamble (SYNC))" and Figure 18-4 "OFDM training structure"; IEEE Std 802.11-2012)
+            // also (Section 18.3.2.4 "Timing related parameters" Table 18-5 "Timing-related parameters"; IEEE Std 802.11-2012)
             // We return the duration of the SIGNAL field only, since the
             // SERVICE field (which strictly speaking belongs to the PLCP
-            // header, see section 17.3.2 and figure 17-1) is sent using the
+            // header, see Section 18.3.2 and Figure 18-1) is sent using the
             // payload mode.
             return 4;
           case 10000000:
-            // IEEE Std 802.11-2007, section 17.3.2.3, table 17-4
+            // (Section 18.3.2.4 "Timing related parameters" Table 18-5 "Timing-related parameters"; IEEE Std 802.11-2012)
             return 8;
           case 5000000:
-            // IEEE Std 802.11-2007, section 17.3.2.3, table 17-4
+            // (Section 18.3.2.4 "Timing related parameters" Table 18-5 "Timing-related parameters"; IEEE Std 802.11-2012)
             return 16;
           }
       }
@@ -266,12 +266,12 @@
     case WIFI_MOD_CLASS_DSSS:
       if (preamble == WIFI_PREAMBLE_SHORT)
         {
-          // IEEE Std 802.11-2007, section 18.2.2.2 and figure 18-2
+          // (Section 17.2.2.3 "Short PPDU format" and Figure 17-2 "Short PPDU format"; IEEE Std 802.11-2012)
           return 24;
         }
       else // WIFI_PREAMBLE_LONG
         {
-          // IEEE Std 802.11-2007, sections 18.2.2.1 and figure 18-1
+          // (Section 17.2.2.2 "Long PPDU format" and Figure 17-1 "Short PPDU format"; IEEE Std 802.11-2012)
           return 48;
         }
 
@@ -292,16 +292,16 @@
           {
           case 20000000:
           default:
-            // IEEE Std 802.11-2007, section 17.3.3,  figure 17-4
-            // also section 17.3.2.3, table 17-4
+            // (Section 18.3.3 "PLCP preamble (SYNC))" Figure 18-4 "OFDM training structure"
+            // also Section 18.3.2.3 "Modulation-dependent parameters" Table 18-4 "Modulation-dependent parameters"; IEEE Std 802.11-2012)
             return 16;
           case 10000000:
-            // IEEE Std 802.11-2007, section 17.3.3, table 17-4
-            // also section 17.3.2.3, table 17-4
+            // (Section 18.3.3 "PLCP preamble (SYNC))" Figure 18-4 "OFDM training structure"
+            // also Section 18.3.2.3 "Modulation-dependent parameters" Table 18-4 "Modulation-dependent parameters"; IEEE Std 802.11-2012)
             return 32;
           case 5000000:
-            // IEEE Std 802.11-2007, section 17.3.3
-            // also section 17.3.2.3, table 17-4
+            // (Section 18.3.3 "PLCP preamble (SYNC))" Figure 18-4 "OFDM training structure"
+            // also Section 18.3.2.3 "Modulation-dependent parameters" Table 18-4 "Modulation-dependent parameters"; IEEE Std 802.11-2012)
             return 64;
           }
       }
@@ -315,12 +315,12 @@
     case WIFI_MOD_CLASS_DSSS:
       if (preamble == WIFI_PREAMBLE_SHORT)
         {
-          // IEEE Std 802.11-2007, section 18.2.2.2 and figure 18-2
+          // (Section 17.2.2.3 "Short PPDU format)" Figure 17-2 "Short PPDU format"; IEEE Std 802.11-2012)
           return 72;
         }
       else // WIFI_PREAMBLE_LONG
         {
-          // IEEE Std 802.11-2007, sections 18.2.2.1 and figure 18-1
+          // (Section 17.2.2.2 "Long PPDU format)" Figure 17-1 "Long PPDU format"; IEEE Std 802.11-2012)
           return 144;
         }
     default:
@@ -341,8 +341,8 @@
     case WIFI_MOD_CLASS_OFDM:
     case WIFI_MOD_CLASS_ERP_OFDM:
       {
-        // IEEE Std 802.11-2007, section 17.3.2.3, table 17-4
-        // corresponds to T_{SYM} in the table
+        // (Section 18.3.2.4 "Timing related parameters" Table 18-5 "Timing-related parameters"; IEEE Std 802.11-2012
+        // corresponds to T_{SYM} in the table)
         uint32_t symbolDurationUs;
 
         switch (payloadMode.GetBandwidth ())
@@ -359,11 +359,11 @@
             break;
           }
 
-        // IEEE Std 802.11-2007, section 17.3.2.2, table 17-3
+        // (Section 18.3.2.3 "Modulation-dependent parameters" Table 18-4 "Modulation-dependent parameters"; IEEE Std 802.11-2012)
         // corresponds to N_{DBPS} in the table
         double numDataBitsPerSymbol = payloadMode.GetDataRate () * symbolDurationUs / 1e6;
 
-        // IEEE Std 802.11-2007, section 17.3.5.3, equation (17-11)
+        // (Section 18.3.5.4 "Pad bits (PAD)" Equation 18-11; IEEE Std 802.11-2012)
         uint32_t numSymbols = lrint (ceil ((16 + size * 8.0 + 6.0) / numDataBitsPerSymbol));
 
         // Add signal extension for ERP PHY
@@ -424,7 +424,7 @@
          
       }
     case WIFI_MOD_CLASS_DSSS:
-      // IEEE Std 802.11-2007, section 18.2.3.5
+      // (Section 17.2.3.6 "Long PLCP LENGTH field"; IEEE Std 802.11-2012)
       NS_LOG_LOGIC (" size=" << size
                              << " mode=" << payloadMode
                              << " rate=" << payloadMode.GetDataRate () );
--- a/src/wifi/model/wifi-phy.h	Sun Jan 19 05:58:53 2014 -0800
+++ b/src/wifi/model/wifi-phy.h	Sun Jan 19 12:08:50 2014 -0500
@@ -450,7 +450,7 @@
    * Channel center frequency = Channel starting frequency + 5 MHz * (nch - 1)
    *
    * where Starting channel frequency is standard-dependent, see SetStandard()
-   * as defined in IEEE 802.11-2007 17.3.8.3.2.
+   * as defined in (Section 18.3.8.4.2 "Channel numbering"; IEEE Std 802.11-2012).
    *
    * \param id the channel number
    */
--- a/src/wifi/model/wifi-remote-station-manager.cc	Sun Jan 19 05:58:53 2014 -0800
+++ b/src/wifi/model/wifi-remote-station-manager.cc	Sun Jan 19 12:08:50 2014 -0500
@@ -276,14 +276,14 @@
                    MakeUintegerAccessor (&WifiRemoteStationManager::m_maxSlrc),
                    MakeUintegerChecker<uint32_t> ())
     .AddAttribute ("RtsCtsThreshold", "If  the size of the data packet + LLC header + MAC header + FCS trailer is bigger than "
-                   "this value, we use an RTS/CTS handshake before sending the data, as per IEEE Std. 802.11-2007, Section 9.2.6. "
+                   "this value, we use an RTS/CTS handshake before sending the data, as per IEEE Std. 802.11-2012, Section 9.3.5. "
                    "This value will not have any effect on some rate control algorithms.",
                    UintegerValue (2346),
                    MakeUintegerAccessor (&WifiRemoteStationManager::m_rtsCtsThreshold),
                    MakeUintegerChecker<uint32_t> ())
     .AddAttribute ("FragmentationThreshold", "If the size of the data packet + LLC header + MAC header + FCS trailer is bigger"
                    "than this value, we fragment it such that the size of the fragments are equal or smaller "
-                   "than this value, as per IEEE Std. 802.11-2007, Section 9.4. "
+                   "than this value, as per IEEE Std. 802.11-2012, Section 9.5. "
                    "This value will not have any effect on some rate control algorithms.",
                    UintegerValue (2346),
                    MakeUintegerAccessor (&WifiRemoteStationManager::DoSetFragmentationThreshold,
@@ -850,8 +850,8 @@
 {
   /**
    * The standard has relatively unambiguous rules for selecting a
-   * control response rate (the below is quoted from IEEE 802.11-2007,
-   * Section 9.6):
+   * control response rate (the below is quoted from IEEE 802.11-2012,
+   * Section 9.7):
    *
    *   To allow the transmitting STA to calculate the contents of the
    *   Duration/ID field, a STA responding to a received frame shall
@@ -859,8 +859,8 @@
    *   than the BlockAck control frame, at the highest rate in the
    *   BSSBasicRateSet parameter that is less than or equal to the
    *   rate of the immediately previous frame in the frame exchange
-   *   sequence (as defined in 9.12) and that is of the same
-   *   modulation class (see 9.6.1) as the received frame...
+   *   sequence (as defined in Annex G) and that is of the same
+   *   modulation class (see Section 9.7.8) as the received frame...
    */
   WifiMode mode = GetDefaultMode ();
   bool found = false;