View | Details | Raw Unified | Return to bug 2528
Collapse All | Expand All

(-)a/src/wifi/model/ap-wifi-mac.cc (+28 lines)
 Lines 68-73    Link Here 
68
                   BooleanValue (true),
68
                   BooleanValue (true),
69
                   MakeBooleanAccessor (&ApWifiMac::m_enableNonErpProtection),
69
                   MakeBooleanAccessor (&ApWifiMac::m_enableNonErpProtection),
70
                   MakeBooleanChecker ())
70
                   MakeBooleanChecker ())
71
    .AddAttribute ("RifsMode", "If non-HT STAs are detected, whether to force RIFS to be disabled within the BSS."
72
                   "This parameter is only used when HT is supported by the AP.",
73
                   BooleanValue (true),
74
                   MakeBooleanAccessor (&ApWifiMac::m_disableRifs),
75
                   MakeBooleanChecker ())
71
  ;
76
  ;
72
  return tid;
77
  return tid;
73
}
78
}
 Lines 507-512    Link Here 
507
  if (m_htSupported)
512
  if (m_htSupported)
508
    {
513
    {
509
      operation.SetHtSupported (1);
514
      operation.SetHtSupported (1);
515
      operation.SetRifsMode (GetRifsMode ());
510
      operation.SetNonGfHtStasPresent (IsNonGfHtStasPresent ());
516
      operation.SetNonGfHtStasPresent (IsNonGfHtStasPresent ());
511
      if (m_nonHtStations.empty ())
517
      if (m_nonHtStations.empty ())
512
        {
518
        {
 Lines 1088-1091    Link Here 
1088
  return useProtection;
1094
  return useProtection;
1089
}
1095
}
1090
1096
1097
bool
1098
ApWifiMac::GetRifsMode (void) const
1099
{
1100
  bool rifsMode = false;
1101
  if (m_htSupported && !m_vhtSupported) //RIFS mode is forbidden for VHT
1102
    {
1103
      if (m_nonHtStations.empty () || !m_disableRifs)
1104
        {
1105
          rifsMode = true;
1106
        }
1107
    }
1108
  if (GetRifsSupported () && rifsMode)
1109
    {
1110
      m_stationManager->SetRifsPermitted (true);
1111
    }
1112
  else
1113
    {
1114
      m_stationManager->SetRifsPermitted (false);
1115
    }
1116
  return rifsMode;
1117
}
1118
1091
} //namespace ns3
1119
} //namespace ns3
(-)a/src/wifi/model/ap-wifi-mac.h (+8 lines)
 Lines 265-270    Link Here 
265
   *         false otherwise
265
   *         false otherwise
266
   */
266
   */
267
  bool GetUseNonErpProtection (void) const;
267
  bool GetUseNonErpProtection (void) const;
268
  /**
269
   * Return whether RIFS is allowed in the BSS.
270
   *
271
   * \return true if RIFS is allowed in the BSS,
272
   *         false otherwise
273
   */
274
  bool GetRifsMode (void) const;
268
275
269
  virtual void DoDispose (void);
276
  virtual void DoDispose (void);
270
  virtual void DoInitialize (void);
277
  virtual void DoInitialize (void);
 Lines 279-284    Link Here 
279
  std::list<Mac48Address> m_nonErpStations;  //!< List of all non-ERP stations currently associated to the AP
286
  std::list<Mac48Address> m_nonErpStations;  //!< List of all non-ERP stations currently associated to the AP
280
  std::list<Mac48Address> m_nonHtStations;   //!< List of all non-HT stations currently associated to the AP
287
  std::list<Mac48Address> m_nonHtStations;   //!< List of all non-HT stations currently associated to the AP
281
  bool m_enableNonErpProtection;             //!< Flag whether protection mechanism is used or not when non-ERP STAs are present within the BSS
288
  bool m_enableNonErpProtection;             //!< Flag whether protection mechanism is used or not when non-ERP STAs are present within the BSS
289
  bool m_disableRifs;                        //!< Flag whether to force RIFS to be disabled within the BSS If non-HT STAs are detected
282
};
290
};
283
291
284
} //namespace ns3
292
} //namespace ns3
(-)a/src/wifi/model/mac-low.cc (-26 / +52 lines)
 Lines 354-360    Link Here 
354
    m_sendCtsEvent (),
354
    m_sendCtsEvent (),
355
    m_sendAckEvent (),
355
    m_sendAckEvent (),
356
    m_sendDataEvent (),
356
    m_sendDataEvent (),
357
    m_waitSifsEvent (),
357
    m_waitIfsEvent (),
358
    m_endTxNoAckEvent (),
358
    m_endTxNoAckEvent (),
359
    m_currentPacket (0),
359
    m_currentPacket (0),
360
    m_listener (0),
360
    m_listener (0),
 Lines 420-428    Link Here 
420
  m_sendCtsEvent.Cancel ();
420
  m_sendCtsEvent.Cancel ();
421
  m_sendAckEvent.Cancel ();
421
  m_sendAckEvent.Cancel ();
422
  m_sendDataEvent.Cancel ();
422
  m_sendDataEvent.Cancel ();
423
  m_waitSifsEvent.Cancel ();
423
  m_waitIfsEvent.Cancel ();
424
  m_endTxNoAckEvent.Cancel ();
424
  m_endTxNoAckEvent.Cancel ();
425
  m_waitRifsEvent.Cancel ();
426
  m_phy = 0;
425
  m_phy = 0;
427
  m_stationManager = 0;
426
  m_stationManager = 0;
428
  if (m_phyMacLowListener != 0)
427
  if (m_phyMacLowListener != 0)
 Lines 487-500    Link Here 
487
      m_sendDataEvent.Cancel ();
486
      m_sendDataEvent.Cancel ();
488
      oneRunning = true;
487
      oneRunning = true;
489
    }
488
    }
490
  if (m_waitSifsEvent.IsRunning ())
489
  if (m_waitIfsEvent.IsRunning ())
491
    {
490
    {
492
      m_waitSifsEvent.Cancel ();
491
      m_waitIfsEvent.Cancel ();
493
      oneRunning = true;
494
    }
495
  if (m_waitRifsEvent.IsRunning ())
496
    {
497
      m_waitRifsEvent.Cancel ();
498
      oneRunning = true;
492
      oneRunning = true;
499
    }
493
    }
500
  if (m_endTxNoAckEvent.IsRunning ())
494
  if (m_endTxNoAckEvent.IsRunning ())
 Lines 1010-1022    Link Here 
1010
        }
1004
        }
1011
      if (m_txParams.HasNextPacket ())
1005
      if (m_txParams.HasNextPacket ())
1012
        {
1006
        {
1013
          m_waitSifsEvent = Simulator::Schedule (GetSifs (),
1007
          if (m_stationManager->GetRifsPermitted ())
1014
                                                 &MacLow::WaitSifsAfterEndTxFragment, this);
1008
            {
1009
              m_waitIfsEvent = Simulator::Schedule (GetRifs (),
1010
                                                    &MacLow::WaitIfsAfterEndTxFragment, this);
1011
            }
1012
          else
1013
            {
1014
              m_waitIfsEvent = Simulator::Schedule (GetSifs (),
1015
                                                    &MacLow::WaitIfsAfterEndTxFragment, this);
1016
            }
1015
        }
1017
        }
1016
      else if (m_currentHdr.IsQosData () && !m_ampdu && m_listener->HasTxop ())
1018
      else if (m_currentHdr.IsQosData () && !m_ampdu && m_listener->HasTxop ())
1017
        {
1019
        {
1018
          m_waitSifsEvent = Simulator::Schedule (GetSifs (),
1020
          if (m_stationManager->GetRifsPermitted ())
1019
                                                 &MacLow::WaitSifsAfterEndTxPacketInTxop, this);
1021
            {
1022
              m_waitIfsEvent = Simulator::Schedule (GetRifs (),
1023
                                                    &MacLow::WaitIfsAfterEndTxPacketInTxop, this);
1024
            }
1025
          else
1026
            {
1027
              m_waitIfsEvent = Simulator::Schedule (GetSifs (),
1028
                                                    &MacLow::WaitIfsAfterEndTxPacketInTxop, this);
1029
            }
1020
        }
1030
        }
1021
      m_ampdu = false;
1031
      m_ampdu = false;
1022
      if (m_currentHdr.IsQosData ())
1032
      if (m_currentHdr.IsQosData ())
 Lines 1830-1852    Link Here 
1830
    }
1840
    }
1831
  else if (m_txParams.HasNextPacket ())
1841
  else if (m_txParams.HasNextPacket ())
1832
    {
1842
    {
1833
      if (m_stationManager->HasHtSupported ())
1843
      if (m_stationManager->GetRifsPermitted ())
1844
1834
        {
1845
        {
1835
          Time delay = txDuration + GetRifs ();
1846
          Time delay = txDuration + GetRifs ();
1836
          NS_ASSERT (m_waitRifsEvent.IsExpired ());
1847
          NS_ASSERT (m_waitIfsEvent.IsExpired ());
1837
          m_waitRifsEvent = Simulator::Schedule (delay, &MacLow::WaitSifsAfterEndTxFragment, this);
1848
          m_waitIfsEvent = Simulator::Schedule (delay, &MacLow::WaitIfsAfterEndTxFragment, this);
1838
        }
1849
        }
1839
      else
1850
      else
1840
        {
1851
        {
1841
          Time delay = txDuration + GetSifs ();
1852
          Time delay = txDuration + GetSifs ();
1842
          NS_ASSERT (m_waitSifsEvent.IsExpired ());
1853
          NS_ASSERT (m_waitIfsEvent.IsExpired ());
1843
          m_waitSifsEvent = Simulator::Schedule (delay, &MacLow::WaitSifsAfterEndTxFragment, this);
1854
          m_waitIfsEvent = Simulator::Schedule (delay, &MacLow::WaitIfsAfterEndTxFragment, this);
1844
        }
1855
        }
1845
    }
1856
    }
1846
  else if (m_currentHdr.IsQosData () && m_currentHdr.IsQosBlockAck ())
1857
  else if (m_currentHdr.IsQosData () && m_currentHdr.IsQosBlockAck ())
1847
    {
1858
    {
1848
      Time delay = txDuration + GetSifs ();
1859
      Time delay = txDuration;
1849
      m_waitSifsEvent = Simulator::Schedule (delay, &MacLow::WaitSifsAfterEndTxPacketInBA, this);
1860
      if (m_stationManager->GetRifsPermitted ())
1861
        {
1862
          delay += GetRifs ();
1863
        }
1864
      else
1865
        {
1866
          delay += GetSifs ();
1867
        }
1868
      NS_ASSERT (m_waitIfsEvent.IsExpired ());
1869
      m_waitIfsEvent = Simulator::Schedule (delay, &MacLow::WaitIfsAfterEndTxPacketInBA, this);
1850
    }
1870
    }
1851
  else
1871
  else
1852
    {
1872
    {
 Lines 2081-2088    Link Here 
2081
    }
2101
    }
2082
  if (m_txParams.HasNextPacket ())
2102
  if (m_txParams.HasNextPacket ())
2083
    {
2103
    {
2084
      newDuration += GetSifs ();
2104
      if (m_stationManager->GetRifsPermitted ())
2085
      newDuration += m_phy->CalculateTxDuration (m_txParams.GetNextPacketSize (), m_currentTxVector, m_phy->GetFrequency ());
2105
        {
2106
          newDuration += GetRifs ();
2107
        }
2108
      else
2109
        {
2110
          newDuration += GetSifs ();
2111
        }      newDuration += m_phy->CalculateTxDuration (m_txParams.GetNextPacketSize (), m_currentTxVector, m_phy->GetFrequency ());
2086
      if (m_txParams.MustWaitCompressedBlockAck ())
2112
      if (m_txParams.MustWaitCompressedBlockAck ())
2087
        {
2113
        {
2088
          newDuration += GetSifs ();
2114
          newDuration += GetSifs ();
 Lines 2118-2136    Link Here 
2118
}
2144
}
2119
2145
2120
void
2146
void
2121
MacLow::WaitSifsAfterEndTxFragment (void)
2147
MacLow::WaitIfsAfterEndTxFragment (void)
2122
{
2148
{
2123
  m_listener->StartNextFragment ();
2149
  m_listener->StartNextFragment ();
2124
}
2150
}
2125
2151
2126
void
2152
void
2127
MacLow::WaitSifsAfterEndTxPacketInBA (void)
2153
MacLow::WaitIfsAfterEndTxPacketInBA (void)
2128
{
2154
{
2129
  m_listener->StartNextPacketInBA ();
2155
  m_listener->StartNextPacketInBA ();
2130
}
2156
}
2131
2157
2132
void
2158
void
2133
MacLow::WaitSifsAfterEndTxPacketInTxop (void)
2159
MacLow::WaitIfsAfterEndTxPacketInTxop (void)
2134
{
2160
{
2135
  m_listener->StartNextPacketInTxop ();
2161
  m_listener->StartNextPacketInTxop ();
2136
}
2162
}
(-)a/src/wifi/model/mac-low.h (-5 / +4 lines)
 Lines 1140-1148    Link Here 
1140
   * Event handler that is usually scheduled to fired at the appropriate time
1140
   * Event handler that is usually scheduled to fired at the appropriate time
1141
   * after completing transmissions.
1141
   * after completing transmissions.
1142
   */
1142
   */
1143
  void WaitSifsAfterEndTxFragment (void);
1143
  void WaitIfsAfterEndTxFragment (void);
1144
  void WaitSifsAfterEndTxPacketInBA (void);
1144
  void WaitIfsAfterEndTxPacketInBA (void);
1145
  void WaitSifsAfterEndTxPacketInTxop (void);
1145
  void WaitIfsAfterEndTxPacketInTxop (void);
1146
1146
1147
  /**
1147
  /**
1148
   * A transmission that does not require an ACK has completed.
1148
   * A transmission that does not require an ACK has completed.
 Lines 1320-1329    Link Here 
1320
  EventId m_sendCtsEvent;               //!< Event to send CTS
1320
  EventId m_sendCtsEvent;               //!< Event to send CTS
1321
  EventId m_sendAckEvent;               //!< Event to send ACK
1321
  EventId m_sendAckEvent;               //!< Event to send ACK
1322
  EventId m_sendDataEvent;              //!< Event to send DATA
1322
  EventId m_sendDataEvent;              //!< Event to send DATA
1323
  EventId m_waitSifsEvent;              //!< Wait for SIFS event
1323
  EventId m_waitIfsEvent;               //!< Wait for IFS event
1324
  EventId m_endTxNoAckEvent;            //!< Event for finishing transmission that does not require ACK
1324
  EventId m_endTxNoAckEvent;            //!< Event for finishing transmission that does not require ACK
1325
  EventId m_navCounterResetCtsMissed;   //!< Event to reset NAV when CTS is not received
1325
  EventId m_navCounterResetCtsMissed;   //!< Event to reset NAV when CTS is not received
1326
  EventId m_waitRifsEvent;              //!< Wait for RIFS event
1327
1326
1328
  Ptr<Packet> m_currentPacket;              //!< Current packet transmitted/to be transmitted
1327
  Ptr<Packet> m_currentPacket;              //!< Current packet transmitted/to be transmitted
1329
  WifiMacHeader m_currentHdr;               //!< Header of the current transmitted packet
1328
  WifiMacHeader m_currentHdr;               //!< Header of the current transmitted packet
(-)a/src/wifi/model/regular-wifi-mac.cc (-2 / +21 lines)
 Lines 731-736    Link Here 
731
}
731
}
732
732
733
void
733
void
734
RegularWifiMac::SetRifsSupported (bool enable)
735
{
736
  NS_LOG_FUNCTION (this << enable);
737
  m_rifsSupported = enable;
738
}
739
740
bool
741
RegularWifiMac::GetRifsSupported (void) const
742
{
743
  return m_rifsSupported;
744
}
745
746
void
734
RegularWifiMac::Enqueue (Ptr<const Packet> packet,
747
RegularWifiMac::Enqueue (Ptr<const Packet> packet,
735
                         Mac48Address to, Mac48Address from)
748
                         Mac48Address to, Mac48Address from)
736
{
749
{
 Lines 1067-1074    Link Here 
1067
    .AddAttribute ("ShortSlotTimeSupported",
1080
    .AddAttribute ("ShortSlotTimeSupported",
1068
                   "Whether or not short slot time is supported (only used by ERP APs or STAs).",
1081
                   "Whether or not short slot time is supported (only used by ERP APs or STAs).",
1069
                   BooleanValue (true),
1082
                   BooleanValue (true),
1070
                   MakeBooleanAccessor (&WifiMac::GetShortSlotTimeSupported,
1083
                   MakeBooleanAccessor (&RegularWifiMac::GetShortSlotTimeSupported,
1071
                                        &WifiMac::SetShortSlotTimeSupported),
1084
                                        &RegularWifiMac::SetShortSlotTimeSupported),
1085
                   MakeBooleanChecker ())
1086
    .AddAttribute ("RifsSupported",
1087
                   "Whether or not RIFS is supported (only used by HT APs or STAs).",
1088
                   BooleanValue (false),
1089
                   MakeBooleanAccessor (&RegularWifiMac::GetRifsSupported,
1090
                                        &RegularWifiMac::SetRifsSupported),
1072
                   MakeBooleanChecker ())
1091
                   MakeBooleanChecker ())
1073
    .AddAttribute ("DcaTxop",
1092
    .AddAttribute ("DcaTxop",
1074
                   "The DcaTxop object.",
1093
                   "The DcaTxop object.",
(-)a/src/wifi/model/regular-wifi-mac.h (+15 lines)
 Lines 137-142    Link Here 
137
   *         false otherwise.
137
   *         false otherwise.
138
   */
138
   */
139
  virtual bool GetShortSlotTimeSupported (void) const;
139
  virtual bool GetShortSlotTimeSupported (void) const;
140
  /**
141
   * Enable or disable RIFS feature.
142
   *
143
   * \param enable true if RIFS is to be supported,
144
   *               false otherwise
145
   */
146
  virtual void SetRifsSupported (bool enable);
147
  /**
148
   * \return whether the device supports RIFS capability.
149
   *
150
   * \return true if short RIFS is supported,
151
   *         false otherwise.
152
   */
153
  virtual bool GetRifsSupported (void) const;
140
154
141
  /**
155
  /**
142
   * \return the MAC address associated to this MAC layer.
156
   * \return the MAC address associated to this MAC layer.
 Lines 574-579    Link Here 
574
  TracedCallback<const WifiMacHeader &> m_txErrCallback;
588
  TracedCallback<const WifiMacHeader &> m_txErrCallback;
575
  
589
  
576
  bool m_shortSlotTimeSupported;
590
  bool m_shortSlotTimeSupported;
591
  bool m_rifsSupported;
577
};
592
};
578
593
579
} //namespace ns3
594
} //namespace ns3
(-)a/src/wifi/model/sta-wifi-mac.cc (+17 lines)
 Lines 546-551    Link Here 
546
            {
546
            {
547
              HtCapabilities htcapabilities = beacon.GetHtCapabilities ();
547
              HtCapabilities htcapabilities = beacon.GetHtCapabilities ();
548
              m_stationManager->AddStationHtCapabilities (hdr->GetAddr2 (), htcapabilities);
548
              m_stationManager->AddStationHtCapabilities (hdr->GetAddr2 (), htcapabilities);
549
              HtOperation htOperation = beacon.GetHtOperation ();
550
              if (!m_vhtSupported && GetRifsSupported () && htOperation.GetRifsMode ())
551
                {
552
                  m_stationManager->SetRifsPermitted (true);
553
                }
554
              else
555
                {
556
                  m_stationManager->SetRifsPermitted (false);
557
                }
549
            }
558
            }
550
          if (m_vhtSupported)
559
          if (m_vhtSupported)
551
            {
560
            {
 Lines 714-719    Link Here 
714
                  HtCapabilities htcapabilities = assocResp.GetHtCapabilities ();
723
                  HtCapabilities htcapabilities = assocResp.GetHtCapabilities ();
715
                  HtOperation htOperation = assocResp.GetHtOperation ();
724
                  HtOperation htOperation = assocResp.GetHtOperation ();
716
                  m_stationManager->AddStationHtCapabilities (hdr->GetAddr2 (), htcapabilities);
725
                  m_stationManager->AddStationHtCapabilities (hdr->GetAddr2 (), htcapabilities);
726
                  if (!m_vhtSupported && GetRifsSupported () && htOperation.GetRifsMode ())
727
                    {
728
                      m_stationManager->SetRifsPermitted (true);
729
                    }
730
                  else
731
                    {
732
                      m_stationManager->SetRifsPermitted (false);
733
                    }
717
                }
734
                }
718
              if (m_vhtSupported)
735
              if (m_vhtSupported)
719
                {
736
                {
(-)a/src/wifi/model/wifi-mac.cc (-1 / +1 lines)
 Lines 190-196    Link Here 
190
                   MakeTimeAccessor (&WifiMac::SetPifs,
190
                   MakeTimeAccessor (&WifiMac::SetPifs,
191
                                     &WifiMac::GetPifs),
191
                                     &WifiMac::GetPifs),
192
                   MakeTimeChecker ())
192
                   MakeTimeChecker ())
193
    .AddAttribute ("Rifs", "The value of the RIFS constant (not supported yet!).",
193
    .AddAttribute ("Rifs", "The value of the RIFS constant.",
194
                   TimeValue (GetDefaultRifs ()),
194
                   TimeValue (GetDefaultRifs ()),
195
                   MakeTimeAccessor (&WifiMac::SetRifs,
195
                   MakeTimeAccessor (&WifiMac::SetRifs,
196
                                     &WifiMac::GetRifs),
196
                                     &WifiMac::GetRifs),
(-)a/src/wifi/model/wifi-mac.h (+4 lines)
 Lines 159-164    Link Here 
159
   * \return whether the device supports short slot time capability.
159
   * \return whether the device supports short slot time capability.
160
   */
160
   */
161
  virtual bool GetShortSlotTimeSupported (void) const = 0;
161
  virtual bool GetShortSlotTimeSupported (void) const = 0;
162
  /**
163
   * \return whether the device supports RIFS capability.
164
   */
165
  virtual bool GetRifsSupported (void) const = 0;
162
166
163
  /**
167
  /**
164
   * \param packet the packet to send.
168
   * \param packet the packet to send.
(-)a/src/wifi/model/wifi-remote-station-manager.cc (-1 / +14 lines)
 Lines 356-362    Link Here 
356
    m_vhtSupported (false),
356
    m_vhtSupported (false),
357
    m_useNonErpProtection (false),
357
    m_useNonErpProtection (false),
358
    m_shortPreambleEnabled (false),
358
    m_shortPreambleEnabled (false),
359
    m_shortSlotTimeEnabled (false)
359
    m_shortSlotTimeEnabled (false),
360
    m_rifsPermitted (false)
360
{
361
{
361
}
362
}
362
363
 Lines 453-458    Link Here 
453
  m_shortSlotTimeEnabled = enable;
454
  m_shortSlotTimeEnabled = enable;
454
}
455
}
455
456
457
void
458
WifiRemoteStationManager::SetRifsPermitted (bool allow)
459
{
460
  m_rifsPermitted = allow;
461
}
462
456
bool
463
bool
457
WifiRemoteStationManager::GetShortSlotTimeEnabled (void) const
464
WifiRemoteStationManager::GetShortSlotTimeEnabled (void) const
458
{
465
{
 Lines 465-470    Link Here 
465
  return m_shortPreambleEnabled;
472
  return m_shortPreambleEnabled;
466
}
473
}
467
474
475
bool
476
WifiRemoteStationManager::GetRifsPermitted (void) const
477
{
478
  return m_rifsPermitted;
479
}
480
468
WifiRemoteStationManager::ProtectionMode
481
WifiRemoteStationManager::ProtectionMode
469
WifiRemoteStationManager::GetProtectionMode (void) const
482
WifiRemoteStationManager::GetProtectionMode (void) const
470
{
483
{
(-)a/src/wifi/model/wifi-remote-station-manager.h (+14 lines)
 Lines 253-258    Link Here 
253
   *         false otherwise
253
   *         false otherwise
254
   */
254
   */
255
  bool GetShortSlotTimeEnabled (void) const;
255
  bool GetShortSlotTimeEnabled (void) const;
256
  /**
257
   * Permit or prohibit RIFS.
258
   *
259
   * \param allow permit or prohibit RIFS
260
   */
261
  void SetRifsPermitted (bool allow);
262
  /**
263
   * Return whether the device can use RIFS.
264
   *
265
   * \return true if RIFS is permitted,
266
   *         false otherwise
267
   */
268
  bool GetRifsPermitted (void) const;
256
269
257
  /**
270
  /**
258
   * Reset the station, invoked in a STA upon dis-association or in an AP upon reboot.
271
   * Reset the station, invoked in a STA upon dis-association or in an AP upon reboot.
 Lines 1266-1271    Link Here 
1266
  bool m_useNonErpProtection; //!< flag if protection for non-ERP stations against ERP transmissions is enabled
1279
  bool m_useNonErpProtection; //!< flag if protection for non-ERP stations against ERP transmissions is enabled
1267
  bool m_shortPreambleEnabled; //!< flag if short PLCP preamble is enabled
1280
  bool m_shortPreambleEnabled; //!< flag if short PLCP preamble is enabled
1268
  bool m_shortSlotTimeEnabled; //!< flag if short slot time is enabled
1281
  bool m_shortSlotTimeEnabled; //!< flag if short slot time is enabled
1282
  bool m_rifsPermitted;        //!< flag if RIFS is enabled
1269
  ProtectionMode m_protectionMode; //!< Protection mode for ERP stations when non-ERP stations are detected
1283
  ProtectionMode m_protectionMode; //!< Protection mode for ERP stations when non-ERP stations are detected
1270
1284
1271
  /**
1285
  /**

Return to bug 2528