802.11 10Mhz Channel

View: New views
18 Messages — Rating Filter:   Alert me  

802.11 10Mhz Channel

by Ramon Bauza :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hello everyone,

I am Ramon Bauza, a researcher at Miguel Hernandez University (Spain).
Currently, I am involved in the EU FP7 project iTETRIS which aims at
creating an integrated traffic and wireless simulation platform that will
allow evaluating traffic management strategies and communication protocols
in vehicular environments. The iTETRIS project employs SUMO and ns-3 as
traffic simulation and wireless simulation platforms respectively.

Our research group at UMH, it is charge of implementing the 802.11p (WAVE)
standard in ns-3. 802.11p is based on 802.11a, being the channel bandwidth
and thus also the data rates the main differences between both (802.11p uses
a 10Mhz whereas 802.11a uses 20Mhz). After implementing 802.11p in ns-3, we
will also look into and implement propagation models for vehicular
environments that consider LOS/NLOS visibility conditions,
vehicle-to-vehicle and vehicle-to-infraestructure communications, and
shadowing and multipath fading effects.

In order to model a 10Mhz channel in ns-3, some additions/modifications
should be done (some weeks ago I posted a message in the user mailing list
regarding this
http://groups.google.com/group/ns-3-users/browse_thread/thread/f27b1ddcf9f1d532#).
Apart from 802.11p, I think other 802.11 standards employ 10MHz channels and
thus probably the modeling of 10Mhz channels would also be useful for the
ns-3 community working on 802.11-related topics. In fact, the IEEE Std
802.11TM-2007 standard considers 10Mhz channel spacing using OFDM. If you
consider that the modeling of 10Mhz channels may be beneficial for other
users we would be glad to merge the 10Mhz modeling in the main branch.

Below, I compile the needed functions and modifications we plan to introduce
in ns-3 at the PHY layer for modeling a 10Mhz channel:

+ wifi-phy-standard.h

  Add WIFI_PHY_STANDARD_80211_10Mhz in the enum WifiPhyStandard

+ wifi-phy.h and wifi-phy.cc

  Declare and define the following new functions:

    static WifiMode Get3mb10Mhz (void);
    static WifiMode Get4_5mb10Mhz (void);
    static WifiMode Get6mb10Mhz (void);
    static WifiMode Get9mb10Mhz (void);
    static WifiMode Get12mb10Mhz (void);
    static WifiMode Get18mb10Mhz (void);
    static WifiMode Get24mb10Mhz (void);
    static WifiMode Get27mb10Mhz (void);

+ yans-wifi-phy.h and yans-wifi-phy.cc

  Declare and define the void Configure80211_10Mhz (void) function.
  Modify the void SetStandard (enum WifiPhyStandard standard) function so
that the user can also select a 10Mhz channel.

+ interference-helper.h and interference-helper.cc

  Declare and define void Configure80211_10MhzParameters (void);

One function that should be modified is
InterferenceHelper::CalculateTxDuration (uint32_t size, WifiMode
payloadMode, WifiPreamble preamble) const since it assumes that the symbol
duration is always 4us (20 Mhz channel). This function should employ a
symbol duration according to the channel used (10Mhz or 20Mhz). One possible
solution to solve this would be to have a new variable in the class
InterferenceHelper which allows differentiating the channel used. This
variable could be of type WifiPhyStandard. In the function Time
InterferenceHelper::CalculateTxDuration, this new variable would be examined
and the packet txon duration will be calculated based on the bandwidth
channel.

Please, I would like to have your comments on this in order to proceed with
the implementation.

Thank you in advance.
Best regards,
Ramon.

--------------------------------------------------------------------------
Ramon Bauza
Ubiquitous Wireless Communications Research Laboratory
Uwicore, http://www.uwicore.umh.es
Signal Theory and Communications Division
University Miguel Hernández (Spain)
Tel: +34 96522 2031
Fax: +34 96665 8903
----------------------------------------------------------------------------

Re: 802.11 10Mhz Channel

by Pavel Boyko :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

  Hello, Ramon,

> If you consider that the modeling of 10Mhz channels may be beneficial
> for other users we would be glad to merge the 10Mhz modeling in the main
> branch.

  Yes, I definitely vote for this feature in the main branch. Proposed
implementation also looks good for me.

  Pavel Boyko,
  IITP


Re: 802.11 10Mhz Channel

by Jens Mittag-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi Ramon!

Ramon Bauza schrieb:
> Please, I would like to have your comments on this in order to proceed with
> the implementation.

+1

I totally agree with you. I would appreciate if this addition makes it
into the main branch.

However, I would prefer a different way of solving this issue:
definition of channel spacing within WifiMode. I think this would help
to ease the setup of a simulation scenario. Instead of changing
attributes in several classes, you can simply set the wifi mode once
(which stores all the information - I would also vote to include the MAC
values which are dependent on the specific PHY). Every module which
needs these parameters can then get the values from the WifiMode object
associated to the packet. What do you think?

cheers,
 Jens

--
Dipl.-Inform. Jens Mittag
University of Karlsruhe
Institute of Telematics
Decentralized Systems and Network Services Research Group

Engesserstr. 2, 76131 Karlsruhe, Germany
Building 20.50, Room 112

Phone: +49 (721) 608 5768
Fax:   +49 (721) 608 6789

http://dsn.tm.uni-karlsruhe.de/

Re: 802.11 10Mhz Channel

by Mathieu Lacage :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Fri, 2009-05-29 at 15:39 +0200, Jens Mittag wrote:

> Ramon Bauza schrieb:
> > Please, I would like to have your comments on this in order to proceed with
> > the implementation.
>
> +1
>
> I totally agree with you. I would appreciate if this addition makes it
> into the main branch.
>
> However, I would prefer a different way of solving this issue:
> definition of channel spacing within WifiMode. I think this would help
> to ease the setup of a simulation scenario. Instead of changing
> attributes in several classes, you can simply set the wifi mode once
> (which stores all the information - I would also vote to include the MAC
> values which are dependent on the specific PHY). Every module which
> needs these parameters can then get the values from the WifiMode object
> associated to the packet. What do you think?

-1

Yes, it's hard to get all the MAC+PHY parameters right but I don't think
that this would really improve it. Instead, we should provide a set of
for-dummies configuration functions to do this right for each standard
but allow users to go and tweak them themselves if they feel inclined to
try weird combinations.

Mathieu


Parent Message unknown Re: 802.11 10Mhz Channel

by Ruben Merz-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi Ramon

On 5/29/09 7:59 PM, Ramon Bauza wrote:

> Hi Ruben,
>
> The preliminary modifications we plan to introduce are only related with
> the adaptation of some PHY parameters to model a 10Mhz channel and their
> data rates (3-27Mbps). Since these changes are actually based on the
> current WiFi model we don’t think that any validation would be needed
> (correct me if I am wrong). However, when in the future we introduce new
> error rate models (BER look-up tables obtained from simulink and
> considering mutipath channels) for the vehicular environment we will
> necessary have to validate our models. For the time being, it is
> difficult for us to say how we will validate the models since the
> 802.11p technology is in its early stages and there no exist too much
> work to validate our future models against.

Ok, thanks for the clarification

R

> As soon as we proceed with our validations plans I will let you know.
>
> Regards,
>
> Ramon.
>
>
>
> 2009/5/29 Ruben Merz <ruben@...
> <mailto:ruben@...>>
>
>     Hi Ramon,
>
>     How do you plan to validate your phyical layer implementation?
>
>     Ruben
>
>     Ramon Bauza wrote:
>      > Hello everyone,
>      >
>      > I am Ramon Bauza, a researcher at Miguel Hernandez University
>     (Spain).
>      > Currently, I am involved in the EU FP7 project iTETRIS which aims at
>      > creating an integrated traffic and wireless simulation platform
>     that will
>      > allow evaluating traffic management strategies and communication
>     protocols
>      > in vehicular environments. The iTETRIS project employs SUMO and
>     ns-3 as
>      > traffic simulation and wireless simulation platforms respectively.
>      >
>      > Our research group at UMH, it is charge of implementing the
>     802.11p (WAVE)
>      > standard in ns-3. 802.11p is based on 802.11a, being the channel
>     bandwidth
>      > and thus also the data rates the main differences between both
>     (802.11p uses
>      > a 10Mhz whereas 802.11a uses 20Mhz). After implementing 802.11p
>     in ns-3, we
>      > will also look into and implement propagation models for vehicular
>      > environments that consider LOS/NLOS visibility conditions,
>      > vehicle-to-vehicle and vehicle-to-infraestructure communications, and
>      > shadowing and multipath fading effects.
>      >
>      > In order to model a 10Mhz channel in ns-3, some
>     additions/modifications
>      > should be done (some weeks ago I posted a message in the user
>     mailing list
>      > regarding this
>      >
>     http://groups.google.com/group/ns-3-users/browse_thread/thread/f27b1ddcf9f1d532#).
>      > Apart from 802.11p, I think other 802.11 standards employ 10MHz
>     channels and
>      > thus probably the modeling of 10Mhz channels would also be useful
>     for the
>      > ns-3 community working on 802.11-related topics. In fact, the
>     IEEE Std
>      > 802.11TM-2007 standard considers 10Mhz channel spacing using
>     OFDM. If you
>      > consider that the modeling of 10Mhz channels may be beneficial
>     for other
>      > users we would be glad to merge the 10Mhz modeling in the main
>     branch.
>      >
>      > Below, I compile the needed functions and modifications we plan
>     to introduce
>      > in ns-3 at the PHY layer for modeling a 10Mhz channel:
>      >
>      > + wifi-phy-standard.h
>      >
>      >   Add WIFI_PHY_STANDARD_80211_10Mhz in the enum WifiPhyStandard
>      >
>      > + wifi-phy.h and wifi-phy.cc
>      >
>      >   Declare and define the following new functions:
>      >
>      >     static WifiMode Get3mb10Mhz (void);
>      >     static WifiMode Get4_5mb10Mhz (void);
>      >     static WifiMode Get6mb10Mhz (void);
>      >     static WifiMode Get9mb10Mhz (void);
>      >     static WifiMode Get12mb10Mhz (void);
>      >     static WifiMode Get18mb10Mhz (void);
>      >     static WifiMode Get24mb10Mhz (void);
>      >     static WifiMode Get27mb10Mhz (void);
>      >
>      > + yans-wifi-phy.h and yans-wifi-phy.cc
>      >
>      >   Declare and define the void Configure80211_10Mhz (void) function.
>      >   Modify the void SetStandard (enum WifiPhyStandard standard)
>     function so
>      > that the user can also select a 10Mhz channel.
>      >
>      > + interference-helper.h and interference-helper.cc
>      >
>      >   Declare and define void Configure80211_10MhzParameters (void);
>      >
>      > One function that should be modified is
>      > InterferenceHelper::CalculateTxDuration (uint32_t size, WifiMode
>      > payloadMode, WifiPreamble preamble) const since it assumes that
>     the symbol
>      > duration is always 4us (20 Mhz channel). This function should
>     employ a
>      > symbol duration according to the channel used (10Mhz or 20Mhz).
>     One possible
>      > solution to solve this would be to have a new variable in the class
>      > InterferenceHelper which allows differentiating the channel used.
>     This
>      > variable could be of type WifiPhyStandard. In the function Time
>      > InterferenceHelper::CalculateTxDuration, this new variable would
>     be examined
>      > and the packet txon duration will be calculated based on the
>     bandwidth
>      > channel.
>      >
>      > Please, I would like to have your comments on this in order to
>     proceed with
>      > the implementation.
>      >
>      > Thank you in advance.
>      > Best regards,
>      > Ramon.
>      >
>      >
>     --------------------------------------------------------------------------
>      > Ramon Bauza
>      > Ubiquitous Wireless Communications Research Laboratory
>      > Uwicore, http://www.uwicore.umh.es
>      > Signal Theory and Communications Division
>      > University Miguel Hernández (Spain)
>      > Tel: +34 96522 2031
>      > Fax: +34 96665 8903
>      >
>     ----------------------------------------------------------------------------
>
>     --
>     Ruben Merz                   Deutsche Telekom Laboratories
>     http://www.net.t-labs.tu-berlin.de/people/ruben_merz.shtml
>
>
>
>
> --
> --------------------------------------------------------------------------
> Ramon Bauza
> Ubiquitous Wireless Communications Research Laboratory
> Uwicore, http://www.uwicore.umh.es
> Signal Theory and Communications Division
> University Miguel Hernández (Spain)
> Tel: +34 96522 2031
> Fax: +34 96665 8903
> ----------------------------------------------------------------------------

--
Ruben Merz                   Deutsche Telekom Laboratories
http://www.net.t-labs.tu-berlin.de/people/ruben_merz.shtml

Re: 802.11 10Mhz Channel

by Ramon Bauza :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hello,

I would like to submit for code review the attached patch implementing half
and quarter-clocked Wifi operation using 5 and 10 Mhz channels spacing. We
would be glad to merge this new functionality in the main branch if ns-3
developers think it may be interesting for other people. The following files
have been modified (ns-3-dev):

src/devices/wifi/interference-helper.cc
src/devices/wifi/interference-helper.h
src/devices/wifi/wifi-phy.cc
src/devices/wifi/wifi-phy.h
src/devices/wifi/wifi-phy-standard.h
src/devices/wifi/yans-error-rate-model.cc
src/devices/wifi/yans-wifi-phy.cc
src/devices/wifi/yans-wifi-phy.h
src/helper/nqos-wifi-mac-helper.cc
src/helper/nqos-wifi-mac-helper.h
src/helper/qos-wifi-mac-helper.cc
src/helper/qos-wifi-mac-helper.h
src/helper/wifi-helper.cc
src/helper/wifi-helper.h

Apart from the modifications pointed out in the previous email posted some
weeks ago, we have also modified some of the wifi helpers. In order not to
make the user set weird values for the MAC parameters (slot,sifs, etc) from
the script, we have modified the WifiMacHelper incorporating two new
functions (Configure80211_10MhzParameters and Configure80211_5MhzParameters)
that allows the user to automatically select the default MAC parameters for
5Mhz and 10Mhz channel spacing (we have also moved the function SetType and
the ObjectFactory m_mac from NqosWifiMacHelper and QosWifiMacHelper to
WifiMacHelper).

Looking forward to your comments.

Best regards,
Ramon Bauza.

2009/5/29 Ramon Bauza <monbauza@...>

> Hello everyone,
>
> I am Ramon Bauza, a researcher at Miguel Hernandez University (Spain).
> Currently, I am involved in the EU FP7 project iTETRIS which aims at
> creating an integrated traffic and wireless simulation platform that will
> allow evaluating traffic management strategies and communication protocols
> in vehicular environments. The iTETRIS project employs SUMO and ns-3 as
> traffic simulation and wireless simulation platforms respectively.
>
> Our research group at UMH, it is charge of implementing the 802.11p (WAVE)
> standard in ns-3. 802.11p is based on 802.11a, being the channel bandwidth
> and thus also the data rates the main differences between both (802.11p uses
> a 10Mhz whereas 802.11a uses 20Mhz). After implementing 802.11p in ns-3, we
> will also look into and implement propagation models for vehicular
> environments that consider LOS/NLOS visibility conditions,
> vehicle-to-vehicle and vehicle-to-infraestructure communications, and
> shadowing and multipath fading effects.
>
> In order to model a 10Mhz channel in ns-3, some additions/modifications
> should be done (some weeks ago I posted a message in the user mailing list
> regarding this
> http://groups.google.com/group/ns-3-users/browse_thread/thread/f27b1ddcf9f1d532#).
> Apart from 802.11p, I think other 802.11 standards employ 10MHz channels and
> thus probably the modeling of 10Mhz channels would also be useful for the
> ns-3 community working on 802.11-related topics. In fact, the IEEE Std
> 802.11TM-2007 standard considers 10Mhz channel spacing using OFDM. If you
> consider that the modeling of 10Mhz channels may be beneficial for other
> users we would be glad to merge the 10Mhz modeling in the main branch.
>
> Below, I compile the needed functions and modifications we plan to
> introduce in ns-3 at the PHY layer for modeling a 10Mhz channel:
>
> + wifi-phy-standard.h
>
>   Add WIFI_PHY_STANDARD_80211_10Mhz in the enum WifiPhyStandard
>
> + wifi-phy.h and wifi-phy.cc
>
>   Declare and define the following new functions:
>
>     static WifiMode Get3mb10Mhz (void);
>     static WifiMode Get4_5mb10Mhz (void);
>     static WifiMode Get6mb10Mhz (void);
>     static WifiMode Get9mb10Mhz (void);
>     static WifiMode Get12mb10Mhz (void);
>     static WifiMode Get18mb10Mhz (void);
>     static WifiMode Get24mb10Mhz (void);
>     static WifiMode Get27mb10Mhz (void);
>
> + yans-wifi-phy.h and yans-wifi-phy.cc
>
>   Declare and define the void Configure80211_10Mhz (void) function.
>   Modify the void SetStandard (enum WifiPhyStandard standard) function so
> that the user can also select a 10Mhz channel.
>
> + interference-helper.h and interference-helper.cc
>
>   Declare and define void Configure80211_10MhzParameters (void);
>
> One function that should be modified is
> InterferenceHelper::CalculateTxDuration (uint32_t size, WifiMode
> payloadMode, WifiPreamble preamble) const since it assumes that the symbol
> duration is always 4us (20 Mhz channel). This function should employ a
> symbol duration according to the channel used (10Mhz or 20Mhz). One possible
> solution to solve this would be to have a new variable in the class
> InterferenceHelper which allows differentiating the channel used. This
> variable could be of type WifiPhyStandard. In the function Time
> InterferenceHelper::CalculateTxDuration, this new variable would be examined
> and the packet txon duration will be calculated based on the bandwidth
> channel.
>
> Please, I would like to have your comments on this in order to proceed with
> the implementation.
>
> Thank you in advance.
> Best regards,
> Ramon.
>
> --------------------------------------------------------------------------
> Ramon Bauza
> Ubiquitous Wireless Communications Research Laboratory
> Uwicore, http://www.uwicore.umh.es
> Signal Theory and Communications Division
> University Miguel Hernández (Spain)
> Tel: +34 96522 2031
> Fax: +34 96665 8903
>
> ----------------------------------------------------------------------------
>

[patchWifi10and5MhzChannels.diff]

Los ficheros binarios ns-3-dev/.hg/dirstate y ns-3-spacing/.hg/dirstate son distintos
Los ficheros binarios ns-3-dev/regression.pyc y ns-3-spacing/regression.pyc son distintos
diff -u -r -N ns-3-dev/src/devices/wifi/interference-helper.cc ns-3-spacing/src/devices/wifi/interference-helper.cc
--- ns-3-dev/src/devices/wifi/interference-helper.cc 2009-07-09 18:14:07.000000000 +0200
+++ ns-3-spacing/src/devices/wifi/interference-helper.cc 2009-07-09 12:27:49.000000000 +0200
@@ -241,6 +241,18 @@
       delay += m_plcpLongPreambleDelayUs;
       delay += lrint (ceil ((size * 8.0 + 48.0) / payloadMode.GetDataRate () / 4e-6) * 4);
       break;
+    case WIFI_PHY_STANDARD_80211_10Mhz:
+      delay += m_plcpLongPreambleDelayUs;
+      // symbol duration is 8us
+      delay += 8;
+      delay += lrint (ceil ((size * 8.0 + 16.0 + 6.0) / payloadMode.GetDataRate () / 8e-6) * 8);
+      break;
+    case WIFI_PHY_STANDARD_80211_5Mhz:
+      delay += m_plcpLongPreambleDelayUs;
+      // symbol duration is 16us
+      delay += 16;
+      delay += lrint (ceil ((size * 8.0 + 16.0 + 6.0) / payloadMode.GetDataRate () / 1.6e-5) * 16);
+      break;
     default:
      NS_ASSERT (false);
      break;
@@ -277,6 +289,34 @@
   m_maxPacketDuration = CalculateTxDuration (4095, WifiPhy::Get1mbb (), WIFI_PREAMBLE_LONG);
 }
 
+void
+InterferenceHelper::Configure80211_10MhzParameters (void)
+{
+  NS_LOG_FUNCTION (this);
+  m_80211_standard = WIFI_PHY_STANDARD_80211_10Mhz;
+  m_plcpLongPreambleDelayUs = 32;
+  m_plcpShortPreambleDelayUs = 32;
+  m_longPlcpHeaderMode = WifiPhy::Get3mb10Mhz ();
+  m_shortPlcpHeaderMode = WifiPhy::Get3mb10Mhz ();
+  m_plcpHeaderLength = 4 + 1 + 12 + 1 + 6;
+  /* 4095 bytes at a 3Mb/s rate with a 1/2 coding rate. */
+  m_maxPacketDuration = CalculateTxDuration (4095, WifiPhy::Get3mb10Mhz (), WIFI_PREAMBLE_LONG);
+}
+
+void
+InterferenceHelper::Configure80211_5MhzParameters (void)
+{
+  NS_LOG_FUNCTION (this);
+  m_80211_standard = WIFI_PHY_STANDARD_80211_5Mhz;
+  m_plcpLongPreambleDelayUs = 64;
+  m_plcpShortPreambleDelayUs = 64;
+  m_longPlcpHeaderMode = WifiPhy::Get1_5mb5Mhz ();
+  m_shortPlcpHeaderMode = WifiPhy::Get1_5mb5Mhz ();
+  m_plcpHeaderLength = 4 + 1 + 12 + 1 + 6;
+  /* 4095 bytes at a 1.5Mb/s rate with a 1/2 coding rate. */
+  m_maxPacketDuration = CalculateTxDuration (4095, WifiPhy::Get1_5mb5Mhz (), WIFI_PREAMBLE_LONG);
+}
+
 void
 InterferenceHelper::AppendEvent (Ptr<InterferenceHelper::Event> event)
 {
diff -u -r -N ns-3-dev/src/devices/wifi/interference-helper.h ns-3-spacing/src/devices/wifi/interference-helper.h
--- ns-3-dev/src/devices/wifi/interference-helper.h 2009-07-09 18:14:07.000000000 +0200
+++ ns-3-spacing/src/devices/wifi/interference-helper.h 2009-07-09 12:26:29.000000000 +0200
@@ -71,6 +71,8 @@
 
   void Configure80211aParameters (void);
   void Configure80211bParameters (void);
+  void Configure80211_10MhzParameters (void);
+  void Configure80211_5MhzParameters (void);
   void SetNoiseFigure (double value);
   void SetErrorRateModel (Ptr<ErrorRateModel> rate);
 
diff -u -r -N ns-3-dev/src/devices/wifi/wifi-phy.cc ns-3-spacing/src/devices/wifi/wifi-phy.cc
--- ns-3-dev/src/devices/wifi/wifi-phy.cc 2009-07-09 18:14:07.000000000 +0200
+++ ns-3-spacing/src/devices/wifi/wifi-phy.cc 2009-07-09 12:22:34.000000000 +0200
@@ -244,6 +244,150 @@
   return mode;
 }
 
+WifiMode
+WifiPhy::Get3mb10Mhz (void)
+{
+  static WifiMode mode = WifiModeFactory::CreateBpsk ("wifi-3mbs-10Mhz",
+                                                      true,
+                                                      10000000, 3000000, 6000000);
+  return mode;
+}
+
+WifiMode
+WifiPhy::Get4_5mb10Mhz (void)
+{
+  static WifiMode mode = WifiModeFactory::CreateBpsk ("wifi-4.5mbs-10Mhz",
+                                                      false,
+                                                      10000000, 4500000, 6000000);
+  return mode;
+}
+
+WifiMode
+WifiPhy::Get6mb10Mhz (void)
+{
+  static WifiMode mode = WifiModeFactory::CreateBpsk ("wifi-6mbs-10Mhz",
+                                                      true,
+                                                      10000000, 6000000, 12000000);
+  return mode;
+}
+
+WifiMode
+WifiPhy::Get9mb10Mhz (void)
+{
+  static WifiMode mode = WifiModeFactory::CreateBpsk ("wifi-9mbs-10Mhz",
+                                                      false,
+                                                      10000000, 9000000, 12000000);
+  return mode;
+}
+
+WifiMode
+WifiPhy::Get12mb10Mhz (void)
+{
+  static WifiMode mode = WifiModeFactory::CreateBpsk ("wifi-12mbs-10Mhz",
+                                                      true,
+                                                      10000000, 12000000, 24000000);
+  return mode;
+}
+
+WifiMode
+WifiPhy::Get18mb10Mhz (void)
+{
+  static WifiMode mode = WifiModeFactory::CreateBpsk ("wifi-18mbs-10Mhz",
+                                                      false,
+                                                      10000000, 18000000, 24000000);
+  return mode;
+}
+
+WifiMode
+WifiPhy::Get24mb10Mhz (void)
+{
+  static WifiMode mode = WifiModeFactory::CreateBpsk ("wifi-24mbs-10Mhz",
+                                                      false,
+                                                      10000000, 24000000, 36000000);
+  return mode;
+}
+
+WifiMode
+WifiPhy::Get27mb10Mhz (void)
+{
+  static WifiMode mode = WifiModeFactory::CreateBpsk ("wifi-27mbs-10Mhz",
+                                                      false,
+                                                      10000000, 27000000, 36000000);
+  return mode;
+}
+
+WifiMode
+WifiPhy::Get1_5mb5Mhz (void)
+{
+  static WifiMode mode = WifiModeFactory::CreateBpsk ("wifi-1_5mbs-5Mhz",
+                                                      true,
+                                                      5000000, 1500000, 3000000);
+  return mode;
+}
+
+WifiMode
+WifiPhy::Get2_25mb5Mhz (void)
+{
+  static WifiMode mode = WifiModeFactory::CreateBpsk ("wifi-2.25mbs-5Mhz",
+                                                      false,
+                                                      5000000, 2250000, 3000000);
+  return mode;
+}
+
+WifiMode
+WifiPhy::Get3mb5Mhz (void)
+{
+  static WifiMode mode = WifiModeFactory::CreateBpsk ("wifi-3mbs-5Mhz",
+                                                      true,
+                                                      5000000, 3000000, 6000000);
+  return mode;
+}
+
+WifiMode
+WifiPhy::Get4_5mb5Mhz (void)
+{
+  static WifiMode mode = WifiModeFactory::CreateBpsk ("wifi-4.5mbs-5Mhz",
+                                                      false,
+                                                      5000000, 4500000, 6000000);
+  return mode;
+}
+
+WifiMode
+WifiPhy::Get6mb5Mhz (void)
+{
+  static WifiMode mode = WifiModeFactory::CreateBpsk ("wifi-6mbs-5Mhz",
+                                                      true,
+                                                      5000000, 6000000, 12000000);
+  return mode;
+}
+
+WifiMode
+WifiPhy::Get9mb5Mhz (void)
+{
+  static WifiMode mode = WifiModeFactory::CreateBpsk ("wifi-9mbs-5Mhz",
+                                                      false,
+                                                      10000000, 9000000, 12000000);
+  return mode;
+}
+
+WifiMode
+WifiPhy::Get12mb5Mhz (void)
+{
+  static WifiMode mode = WifiModeFactory::CreateBpsk ("wifi-12mbs-5Mhz",
+                                                      false,
+                                                      10000000, 12000000, 18000000);
+  return mode;
+}
+
+WifiMode
+WifiPhy::Get13_5mb5Mhz (void)
+{
+  static WifiMode mode = WifiModeFactory::CreateBpsk ("wifi-13.5mbs-5Mhz",
+                                                      false,
+                                                      10000000, 13500000, 18000000);
+  return mode;
+}
+
 
 } // namespace ns3
 
@@ -265,6 +409,22 @@
     ns3::WifiPhy::Get2mbb ();
     ns3::WifiPhy::Get5_5mbb ();
     ns3::WifiPhy::Get11mbb ();
+    ns3::WifiPhy::Get3mb10Mhz ();
+    ns3::WifiPhy::Get4_5mb10Mhz ();
+    ns3::WifiPhy::Get6mb10Mhz ();
+    ns3::WifiPhy::Get9mb10Mhz ();
+    ns3::WifiPhy::Get12mb10Mhz ();
+    ns3::WifiPhy::Get18mb10Mhz ();
+    ns3::WifiPhy::Get24mb10Mhz ();
+    ns3::WifiPhy::Get27mb10Mhz ();
+    ns3::WifiPhy::Get1_5mb5Mhz ();
+    ns3::WifiPhy::Get2_25mb5Mhz ();
+    ns3::WifiPhy::Get3mb5Mhz ();
+    ns3::WifiPhy::Get4_5mb5Mhz ();
+    ns3::WifiPhy::Get6mb5Mhz ();
+    ns3::WifiPhy::Get9mb5Mhz ();
+    ns3::WifiPhy::Get12mb5Mhz ();
+    ns3::WifiPhy::Get13_5mb5Mhz ();
   }
 } g_constructor;
 }
diff -u -r -N ns-3-dev/src/devices/wifi/wifi-phy.h ns-3-spacing/src/devices/wifi/wifi-phy.h
--- ns-3-dev/src/devices/wifi/wifi-phy.h 2009-07-09 18:14:07.000000000 +0200
+++ ns-3-spacing/src/devices/wifi/wifi-phy.h 2009-07-09 12:21:10.000000000 +0200
@@ -256,6 +256,22 @@
   static WifiMode Get2mbb (void);
   static WifiMode Get5_5mbb (void);
   static WifiMode Get11mbb (void);
+  static WifiMode Get3mb10Mhz (void);
+  static WifiMode Get4_5mb10Mhz (void);
+  static WifiMode Get6mb10Mhz (void);
+  static WifiMode Get9mb10Mhz (void);
+  static WifiMode Get12mb10Mhz (void);
+  static WifiMode Get18mb10Mhz (void);
+  static WifiMode Get24mb10Mhz (void);
+  static WifiMode Get27mb10Mhz (void);
+  static WifiMode Get1_5mb5Mhz (void);
+  static WifiMode Get2_25mb5Mhz (void);
+  static WifiMode Get3mb5Mhz (void);
+  static WifiMode Get4_5mb5Mhz (void);
+  static WifiMode Get6mb5Mhz (void);
+  static WifiMode Get9mb5Mhz (void);
+  static WifiMode Get12mb5Mhz (void);
+  static WifiMode Get13_5mb5Mhz (void);
 
 
   /**
diff -u -r -N ns-3-dev/src/devices/wifi/wifi-phy-standard.h ns-3-spacing/src/devices/wifi/wifi-phy-standard.h
--- ns-3-dev/src/devices/wifi/wifi-phy-standard.h 2009-07-09 18:14:07.000000000 +0200
+++ ns-3-spacing/src/devices/wifi/wifi-phy-standard.h 2009-07-09 12:23:11.000000000 +0200
@@ -25,6 +25,8 @@
 enum WifiPhyStandard {
   WIFI_PHY_STANDARD_80211a,
   WIFI_PHY_STANDARD_80211b,
+  WIFI_PHY_STANDARD_80211_10Mhz,
+  WIFI_PHY_STANDARD_80211_5Mhz,
   WIFI_PHY_STANDARD_holland
 };
 
diff -u -r -N ns-3-dev/src/devices/wifi/yans-error-rate-model.cc ns-3-spacing/src/devices/wifi/yans-error-rate-model.cc
--- ns-3-dev/src/devices/wifi/yans-error-rate-model.cc 2009-07-09 18:14:07.000000000 +0200
+++ ns-3-spacing/src/devices/wifi/yans-error-rate-model.cc 2009-07-09 12:38:14.000000000 +0200
@@ -176,7 +176,7 @@
 double
 YansErrorRateModel::GetChunkSuccessRate (WifiMode mode, double snr, uint32_t nbits) const
 {
-  if (mode == WifiPhy::Get6mba ())
+  if (mode == WifiPhy::Get6mba () || mode == WifiPhy::Get3mb10Mhz () || mode == WifiPhy::Get1_5mb5Mhz ())
     {
       return GetFecBpskBer (snr,
                             nbits,
@@ -186,7 +186,7 @@
                             11 // adFree
                             );      
     }
-  else if (mode == WifiPhy::Get9mba ())
+  else if (mode == WifiPhy::Get9mba () || mode == WifiPhy::Get4_5mb10Mhz () || mode == WifiPhy::Get2_25mb5Mhz ())
     {
       return GetFecBpskBer (snr,
                             nbits,
@@ -196,7 +196,7 @@
                             8 // adFree
                             );
     }
-  else if (mode == WifiPhy::Get12mba ())
+  else if (mode == WifiPhy::Get12mba () || mode == WifiPhy::Get6mb10Mhz () || mode == WifiPhy::Get3mb5Mhz ())
     {
       return GetFecQamBer (snr,
                            nbits,
@@ -208,7 +208,7 @@
                            0   // adFreePlusOne
                            );
     }
-  else if (mode == WifiPhy::Get18mba ())
+  else if (mode == WifiPhy::Get18mba () || mode == WifiPhy::Get9mb10Mhz () || mode == WifiPhy::Get4_5mb5Mhz ())
     {
       return GetFecQamBer (snr,
                            nbits,
@@ -220,7 +220,7 @@
                            31 // adFreePlusOne
                            );
     }
-  else if (mode == WifiPhy::Get24mba ())
+  else if (mode == WifiPhy::Get24mba () || mode == WifiPhy::Get12mb10Mhz () || mode == WifiPhy::Get6mb5Mhz ())
     {
       return GetFecQamBer (snr,
                            nbits,
@@ -232,7 +232,7 @@
                            0   // adFreePlusOne
                            );
     }
-  else if (mode == WifiPhy::Get36mba ())
+  else if (mode == WifiPhy::Get36mba () || mode == WifiPhy::Get18mb10Mhz () || mode == WifiPhy::Get9mb5Mhz ())
     {
       return GetFecQamBer (snr,
                            nbits,
@@ -244,7 +244,7 @@
                            31  // adFreePlusOne
                            );
     }
-  else if (mode == WifiPhy::Get48mba ())
+  else if (mode == WifiPhy::Get48mba () || mode == WifiPhy::Get24mb10Mhz () || mode == WifiPhy::Get12mb5Mhz ())
     {
       return GetFecQamBer (snr,
                            nbits,
@@ -256,7 +256,7 @@
                            16  // adFreePlusOne
                            );
     }
-  else if (mode == WifiPhy::Get54mba ())
+  else if (mode == WifiPhy::Get54mba () || mode == WifiPhy::Get27mb10Mhz () || mode == WifiPhy::Get13_5mb5Mhz ())
     {
       return GetFecQamBer (snr,
                            nbits,
diff -u -r -N ns-3-dev/src/devices/wifi/yans-wifi-phy.cc ns-3-spacing/src/devices/wifi/yans-wifi-phy.cc
--- ns-3-dev/src/devices/wifi/yans-wifi-phy.cc 2009-07-09 18:14:07.000000000 +0200
+++ ns-3-spacing/src/devices/wifi/yans-wifi-phy.cc 2009-07-09 12:25:35.000000000 +0200
@@ -111,6 +111,8 @@
                    MakeEnumAccessor (&YansWifiPhy::SetStandard),
                    MakeEnumChecker (WIFI_PHY_STANDARD_80211a, "802.11a",
                                     WIFI_PHY_STANDARD_80211b, "802.11b",
+                                    WIFI_PHY_STANDARD_80211_10Mhz,"802.11_10Mhz",
+                                    WIFI_PHY_STANDARD_80211_5Mhz,"802-11_5Mhz",
                                     WIFI_PHY_STANDARD_holland, "holland"))
     .AddAttribute ("State", "The state of the PHY layer",
                    PointerValue (),
@@ -156,6 +158,12 @@
   case WIFI_PHY_STANDARD_80211b:
     Configure80211b ();
     break;
+  case WIFI_PHY_STANDARD_80211_10Mhz:
+    Configure80211_10Mhz ();
+    break;
+  case WIFI_PHY_STANDARD_80211_5Mhz:
+    Configure80211_5Mhz ();
+    break;
   case WIFI_PHY_STANDARD_holland:
     ConfigureHolland ();
     break;
@@ -461,6 +469,36 @@
 }
 
 void
+YansWifiPhy::Configure80211_10Mhz (void)
+{
+  NS_LOG_FUNCTION (this);
+  m_interference.Configure80211_10MhzParameters ();
+  m_modes.push_back (WifiPhy::Get3mb10Mhz ());
+  m_modes.push_back (WifiPhy::Get4_5mb10Mhz ());
+  m_modes.push_back (WifiPhy::Get6mb10Mhz ());
+  m_modes.push_back (WifiPhy::Get9mb10Mhz ());
+  m_modes.push_back (WifiPhy::Get12mb10Mhz ());
+  m_modes.push_back (WifiPhy::Get18mb10Mhz ());
+  m_modes.push_back (WifiPhy::Get24mb10Mhz ());
+  m_modes.push_back (WifiPhy::Get27mb10Mhz  ());
+}
+
+void
+YansWifiPhy::Configure80211_5Mhz (void)
+{
+  NS_LOG_FUNCTION (this);
+  m_interference.Configure80211_5MhzParameters ();
+  m_modes.push_back (WifiPhy::Get1_5mb5Mhz ());
+  m_modes.push_back (WifiPhy::Get2_25mb5Mhz ());
+  m_modes.push_back (WifiPhy::Get3mb5Mhz ());
+  m_modes.push_back (WifiPhy::Get4_5mb5Mhz ());
+  m_modes.push_back (WifiPhy::Get6mb5Mhz ());
+  m_modes.push_back (WifiPhy::Get9mb5Mhz ());
+  m_modes.push_back (WifiPhy::Get12mb5Mhz ());
+  m_modes.push_back (WifiPhy::Get13_5mb5Mhz  ());
+}
+
+void
 YansWifiPhy::ConfigureHolland (void)
 {
   NS_LOG_FUNCTION (this);
diff -u -r -N ns-3-dev/src/devices/wifi/yans-wifi-phy.h ns-3-spacing/src/devices/wifi/yans-wifi-phy.h
--- ns-3-dev/src/devices/wifi/yans-wifi-phy.h 2009-07-09 18:14:07.000000000 +0200
+++ ns-3-spacing/src/devices/wifi/yans-wifi-phy.h 2009-07-09 12:24:31.000000000 +0200
@@ -125,6 +125,8 @@
   virtual void DoDispose (void);
   void Configure80211a (void);
   void Configure80211b (void);
+  void Configure80211_10Mhz (void);
+  void Configure80211_5Mhz ();
   void ConfigureHolland (void);
   double GetEdThresholdW (void) const;
   double DbmToW (double dbm) const;
diff -u -r -N ns-3-dev/src/helper/nqos-wifi-mac-helper.cc ns-3-spacing/src/helper/nqos-wifi-mac-helper.cc
--- ns-3-dev/src/helper/nqos-wifi-mac-helper.cc 2009-07-09 18:14:07.000000000 +0200
+++ ns-3-spacing/src/helper/nqos-wifi-mac-helper.cc 2009-07-09 12:35:22.000000000 +0200
@@ -41,28 +41,6 @@
 }
 
 void
-NqosWifiMacHelper::SetType (std::string type,
-                            std::string n0, const AttributeValue &v0,
-                            std::string n1, const AttributeValue &v1,
-                            std::string n2, const AttributeValue &v2,
-                            std::string n3, const AttributeValue &v3,
-                            std::string n4, const AttributeValue &v4,
-                            std::string n5, const AttributeValue &v5,
-                            std::string n6, const AttributeValue &v6,
-                            std::string n7, const AttributeValue &v7)
-{
-  m_mac.SetTypeId (type);
-  m_mac.Set (n0, v0);
-  m_mac.Set (n1, v1);
-  m_mac.Set (n2, v2);
-  m_mac.Set (n3, v3);
-  m_mac.Set (n4, v4);
-  m_mac.Set (n5, v5);
-  m_mac.Set (n6, v6);
-  m_mac.Set (n7, v7);
-}
-
-void
 NqosWifiMacHelper::SetDcaParameters (std::string n0, const AttributeValue &v0,
                                      std::string n1, const AttributeValue &v1,
                                      std::string n2, const AttributeValue &v2,
diff -u -r -N ns-3-dev/src/helper/nqos-wifi-mac-helper.h ns-3-spacing/src/helper/nqos-wifi-mac-helper.h
--- ns-3-dev/src/helper/nqos-wifi-mac-helper.h 2009-07-09 18:14:07.000000000 +0200
+++ ns-3-spacing/src/helper/nqos-wifi-mac-helper.h 2009-07-09 12:35:14.000000000 +0200
@@ -39,37 +39,6 @@
    */
   static NqosWifiMacHelper Default (void);
   /**
-   * \param type the type of ns3::WifiMac to create.
-   * \param n0 the name of the attribute to set
-   * \param v0 the value of the attribute to set
-   * \param n1 the name of the attribute to set
-   * \param v1 the value of the attribute to set
-   * \param n2 the name of the attribute to set
-   * \param v2 the value of the attribute to set
-   * \param n3 the name of the attribute to set
-   * \param v3 the value of the attribute to set
-   * \param n4 the name of the attribute to set
-   * \param v4 the value of the attribute to set
-   * \param n5 the name of the attribute to set
-   * \param v5 the value of the attribute to set
-   * \param n6 the name of the attribute to set
-   * \param v6 the value of the attribute to set
-   * \param n7 the name of the attribute to set
-   * \param v7 the value of the attribute to set
-   *
-   * All the attributes specified in this method should exist
-   * in the requested mac.
-   */
-  void SetType (std::string type,
-                std::string n0 = "", const AttributeValue &v0 = EmptyAttributeValue (),
-                std::string n1 = "", const AttributeValue &v1 = EmptyAttributeValue (),
-                std::string n2 = "", const AttributeValue &v2 = EmptyAttributeValue (),
-                std::string n3 = "", const AttributeValue &v3 = EmptyAttributeValue (),
-                std::string n4 = "", const AttributeValue &v4 = EmptyAttributeValue (),
-                std::string n5 = "", const AttributeValue &v5 = EmptyAttributeValue (),
-                std::string n6 = "", const AttributeValue &v6 = EmptyAttributeValue (),
-                std::string n7 = "", const AttributeValue &v7 = EmptyAttributeValue ());
-  /**
    * \param n0 the name of the attribute to set
    * \param v0 the value of the attribute to set
    * \param n1 the name of the attribute to set
@@ -91,7 +60,6 @@
    */
   virtual Ptr<WifiMac> Create (void) const;
 
-  ObjectFactory m_mac;
   ObjectFactory m_queue;
 };
 
diff -u -r -N ns-3-dev/src/helper/qos-wifi-mac-helper.cc ns-3-spacing/src/helper/qos-wifi-mac-helper.cc
--- ns-3-dev/src/helper/qos-wifi-mac-helper.cc 2009-07-09 18:14:07.000000000 +0200
+++ ns-3-spacing/src/helper/qos-wifi-mac-helper.cc 2009-07-09 12:34:19.000000000 +0200
@@ -69,28 +69,6 @@
 }
 
 void
-QosWifiMacHelper::SetType (std::string type,
-                           std::string n0, const AttributeValue &v0,
-                           std::string n1, const AttributeValue &v1,
-                           std::string n2, const AttributeValue &v2,
-                           std::string n3, const AttributeValue &v3,
-                           std::string n4, const AttributeValue &v4,
-                           std::string n5, const AttributeValue &v5,
-                           std::string n6, const AttributeValue &v6,
-                           std::string n7, const AttributeValue &v7)
-{
-  m_mac.SetTypeId (type);
-  m_mac.Set (n0, v0);
-  m_mac.Set (n1, v1);
-  m_mac.Set (n2, v2);
-  m_mac.Set (n3, v3);
-  m_mac.Set (n4, v4);
-  m_mac.Set (n5, v5);
-  m_mac.Set (n6, v6);
-  m_mac.Set (n7, v7);
-}
-
-void
 QosWifiMacHelper::SetMsduAggregatorForAc (AccessClass accessClass, std::string type,
                                           std::string n0, const AttributeValue &v0,
                                           std::string n1, const AttributeValue &v1,
diff -u -r -N ns-3-dev/src/helper/qos-wifi-mac-helper.h ns-3-spacing/src/helper/qos-wifi-mac-helper.h
--- ns-3-dev/src/helper/qos-wifi-mac-helper.h 2009-07-09 18:14:07.000000000 +0200
+++ ns-3-spacing/src/helper/qos-wifi-mac-helper.h 2009-07-09 12:34:06.000000000 +0200
@@ -41,37 +41,6 @@
    */
   static QosWifiMacHelper Default (void);
   /**
-   * \param type the type of ns3::WifiMac to create.
-   * \param n0 the name of the attribute to set
-   * \param v0 the value of the attribute to set
-   * \param n1 the name of the attribute to set
-   * \param v1 the value of the attribute to set
-   * \param n2 the name of the attribute to set
-   * \param v2 the value of the attribute to set
-   * \param n3 the name of the attribute to set
-   * \param v3 the value of the attribute to set
-   * \param n4 the name of the attribute to set
-   * \param v4 the value of the attribute to set
-   * \param n5 the name of the attribute to set
-   * \param v5 the value of the attribute to set
-   * \param n6 the name of the attribute to set
-   * \param v6 the value of the attribute to set
-   * \param n7 the name of the attribute to set
-   * \param v7 the value of the attribute to set
-   *
-   * All the attributes specified in this method should exist
-   * in the requested mac.
-   */
-  void SetType (std::string type,
-                std::string n0 = "", const AttributeValue &v0 = EmptyAttributeValue (),
-                std::string n1 = "", const AttributeValue &v1 = EmptyAttributeValue (),
-                std::string n2 = "", const AttributeValue &v2 = EmptyAttributeValue (),
-                std::string n3 = "", const AttributeValue &v3 = EmptyAttributeValue (),
-                std::string n4 = "", const AttributeValue &v4 = EmptyAttributeValue (),
-                std::string n5 = "", const AttributeValue &v5 = EmptyAttributeValue (),
-                std::string n6 = "", const AttributeValue &v6 = EmptyAttributeValue (),
-                std::string n7 = "", const AttributeValue &v7 = EmptyAttributeValue ());
-  /**
    * \param accessClass access class for which we are setting aggregator. Possibilities
    *  are: AC_BK, AC_BE, AC_VI, AC_VO.
    * \param type the type of ns3::WifiMac to create.
@@ -117,7 +86,6 @@
    */
   virtual Ptr<WifiMac> Create (void) const;
 
-  ObjectFactory m_mac;
   std::map<AccessClass, ObjectFactory> m_queues;
   std::map<AccessClass, ObjectFactory> m_aggregators;
 };
diff -u -r -N ns-3-dev/src/helper/wifi-helper.cc ns-3-spacing/src/helper/wifi-helper.cc
--- ns-3-dev/src/helper/wifi-helper.cc 2009-07-09 18:14:07.000000000 +0200
+++ ns-3-spacing/src/helper/wifi-helper.cc 2009-07-09 18:03:54.000000000 +0200
@@ -152,4 +152,54 @@
   LogComponentEnable ("YansWifiPhy", LOG_LEVEL_ALL);
 }
 
+void
+WifiMacHelper::SetType (std::string type,
+                           std::string n0, const AttributeValue &v0,
+                           std::string n1, const AttributeValue &v1,
+                           std::string n2, const AttributeValue &v2,
+                           std::string n3, const AttributeValue &v3,
+                           std::string n4, const AttributeValue &v4,
+                           std::string n5, const AttributeValue &v5,
+                           std::string n6, const AttributeValue &v6,
+                           std::string n7, const AttributeValue &v7)
+{
+  m_mac.SetTypeId (type);
+  m_mac.Set (n0, v0);
+  m_mac.Set (n1, v1);
+  m_mac.Set (n2, v2);
+  m_mac.Set (n3, v3);
+  m_mac.Set (n4, v4);
+  m_mac.Set (n5, v5);
+  m_mac.Set (n6, v6);
+  m_mac.Set (n7, v7);
+}
+
+void
+WifiMacHelper::Configure80211_10MhzParameters (std::string type, Ssid ssid)
+{
+  Time MaxPropagationDelay = Seconds (1000.0 / 300000000.0);
+  SetType (type,
+    "Ssid", SsidValue (ssid),
+    "Sifs", TimeValue (MicroSeconds(32)),
+    "Slot", TimeValue (MicroSeconds(13)),
+    "EifsNoDifs", TimeValue (MicroSeconds(32+88)),
+    "Pifs", TimeValue (MicroSeconds(32+13)),
+    "CtsTimeout", TimeValue (MicroSeconds(32+88+13+MaxPropagationDelay.GetMicroSeconds ()*2)),
+    "AckTimeout", TimeValue (MicroSeconds(32+88+13+MaxPropagationDelay.GetMicroSeconds ()*2)));
+}
+
+void
+WifiMacHelper::Configure80211_5MhzParameters (std::string type, Ssid ssid)
+{
+  Time MaxPropagationDelay = Seconds (1000.0 / 300000000.0);
+  SetType (type,
+    "Ssid", SsidValue (ssid),
+    "Sifs", TimeValue (MicroSeconds(64)),
+    "Slot", TimeValue (MicroSeconds(21)),
+    "EifsNoDifs", TimeValue (MicroSeconds(64+176)),
+    "Pifs", TimeValue (MicroSeconds(64+21)),
+    "CtsTimeout", TimeValue (MicroSeconds(64+176+21+MaxPropagationDelay.GetMicroSeconds ()*2)),
+    "AckTimeout", TimeValue (MicroSeconds(64+176+21+MaxPropagationDelay.GetMicroSeconds ()*2)));
+}
+
 } // namespace ns3
diff -u -r -N ns-3-dev/src/helper/wifi-helper.h ns-3-spacing/src/helper/wifi-helper.h
--- ns-3-dev/src/helper/wifi-helper.h 2009-07-09 18:14:07.000000000 +0200
+++ ns-3-spacing/src/helper/wifi-helper.h 2009-07-09 12:33:10.000000000 +0200
@@ -27,6 +27,7 @@
 #include "ns3/object-factory.h"
 #include "ns3/node-container.h"
 #include "ns3/net-device-container.h"
+#include "ns3/wifi-mac.h"
 
 namespace ns3 {
 
@@ -73,6 +74,43 @@
    * to create MAC objects from ns3::WifiHelper::Install.
    */
   virtual Ptr<WifiMac> Create (void) const = 0;
+  /**
+   * \param type the type of ns3::WifiMac to create.
+   * \param n0 the name of the attribute to set
+   * \param v0 the value of the attribute to set
+   * \param n1 the name of the attribute to set
+   * \param v1 the value of the attribute to set
+   * \param n2 the name of the attribute to set
+   * \param v2 the value of the attribute to set
+   * \param n3 the name of the attribute to set
+   * \param v3 the value of the attribute to set
+   * \param n4 the name of the attribute to set
+   * \param v4 the value of the attribute to set
+   * \param n5 the name of the attribute to set
+   * \param v5 the value of the attribute to set
+   * \param n6 the name of the attribute to set
+   * \param v6 the value of the attribute to set
+   * \param n7 the name of the attribute to set
+   * \param v7 the value of the attribute to set
+   *
+   * All the attributes specified in this method should exist
+   * in the requested mac.
+   */
+  void SetType (std::string type,
+                std::string n0 = "", const AttributeValue &v0 = EmptyAttributeValue (),
+                std::string n1 = "", const AttributeValue &v1 = EmptyAttributeValue (),
+                std::string n2 = "", const AttributeValue &v2 = EmptyAttributeValue (),
+                std::string n3 = "", const AttributeValue &v3 = EmptyAttributeValue (),
+                std::string n4 = "", const AttributeValue &v4 = EmptyAttributeValue (),
+                std::string n5 = "", const AttributeValue &v5 = EmptyAttributeValue (),
+                std::string n6 = "", const AttributeValue &v6 = EmptyAttributeValue (),
+                std::string n7 = "", const AttributeValue &v7 = EmptyAttributeValue ());
+  /// Configure MAC parameters to 10 MHz "half-clocked" channels, see Table 17-15 of IEEE 802.11-2007 std
+  void Configure80211_10MhzParameters (std::string type, Ssid ssid);
+  /// Configure MAC parameters to 5 MHz "quarter-clocked" channels, see Table 17-15 of IEEE 802.11-2007 std
+  void Configure80211_5MhzParameters (std::string type, Ssid ssid);
+protected:
+  ObjectFactory m_mac;
 };
 
 /**
Los ficheros binarios ns-3-dev/wutils.pyc y ns-3-spacing/wutils.pyc son distintos


Re: 802.11 10Mhz Channel

by Ramon Bauza :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

I am sorry, I forgot to mention the authors of the patch, Ramon Bauza (
monbauza@...) and Pavel Boyko (♫
boyko@...).

2009/7/9 Ramon Bauza <monbauza@...>

> Hello,
>
> I would like to submit for code review the attached patch implementing half
> and quarter-clocked Wifi operation using 5 and 10 Mhz channels spacing. We
> would be glad to merge this new functionality in the main branch if ns-3
> developers think it may be interesting for other people. The following files
> have been modified (ns-3-dev):
>
> src/devices/wifi/interference-helper.cc
> src/devices/wifi/interference-helper.h
> src/devices/wifi/wifi-phy.cc
> src/devices/wifi/wifi-phy.h
> src/devices/wifi/wifi-phy-standard.h
> src/devices/wifi/yans-error-rate-model.cc
> src/devices/wifi/yans-wifi-phy.cc
> src/devices/wifi/yans-wifi-phy.h
> src/helper/nqos-wifi-mac-helper.cc
> src/helper/nqos-wifi-mac-helper.h
> src/helper/qos-wifi-mac-helper.cc
> src/helper/qos-wifi-mac-helper.h
> src/helper/wifi-helper.cc
> src/helper/wifi-helper.h
>
> Apart from the modifications pointed out in the previous email posted some
> weeks ago, we have also modified some of the wifi helpers. In order not to
> make the user set weird values for the MAC parameters (slot,sifs, etc) from
> the script, we have modified the WifiMacHelper incorporating two new
> functions (Configure80211_10MhzParameters and Configure80211_5MhzParameters)
> that allows the user to automatically select the default MAC parameters for
> 5Mhz and 10Mhz channel spacing (we have also moved the function SetType and
> the ObjectFactory m_mac from NqosWifiMacHelper and QosWifiMacHelper to
> WifiMacHelper).
>
> Looking forward to your comments.
>
> Best regards,
> Ramon Bauza.
>
> 2009/5/29 Ramon Bauza <monbauza@...>
>
> Hello everyone,
>>
>> I am Ramon Bauza, a researcher at Miguel Hernandez University (Spain).
>> Currently, I am involved in the EU FP7 project iTETRIS which aims at
>> creating an integrated traffic and wireless simulation platform that will
>> allow evaluating traffic management strategies and communication protocols
>> in vehicular environments. The iTETRIS project employs SUMO and ns-3 as
>> traffic simulation and wireless simulation platforms respectively.
>>
>> Our research group at UMH, it is charge of implementing the 802.11p (WAVE)
>> standard in ns-3. 802.11p is based on 802.11a, being the channel bandwidth
>> and thus also the data rates the main differences between both (802.11p uses
>> a 10Mhz whereas 802.11a uses 20Mhz). After implementing 802.11p in ns-3, we
>> will also look into and implement propagation models for vehicular
>> environments that consider LOS/NLOS visibility conditions,
>> vehicle-to-vehicle and vehicle-to-infraestructure communications, and
>> shadowing and multipath fading effects.
>>
>> In order to model a 10Mhz channel in ns-3, some additions/modifications
>> should be done (some weeks ago I posted a message in the user mailing list
>> regarding this
>> http://groups.google.com/group/ns-3-users/browse_thread/thread/f27b1ddcf9f1d532#).
>> Apart from 802.11p, I think other 802.11 standards employ 10MHz channels and
>> thus probably the modeling of 10Mhz channels would also be useful for the
>> ns-3 community working on 802.11-related topics. In fact, the IEEE Std
>> 802.11TM-2007 standard considers 10Mhz channel spacing using OFDM. If you
>> consider that the modeling of 10Mhz channels may be beneficial for other
>> users we would be glad to merge the 10Mhz modeling in the main branch.
>>
>> Below, I compile the needed functions and modifications we plan to
>> introduce in ns-3 at the PHY layer for modeling a 10Mhz channel:
>>
>> + wifi-phy-standard.h
>>
>>   Add WIFI_PHY_STANDARD_80211_10Mhz in the enum WifiPhyStandard
>>
>> + wifi-phy.h and wifi-phy.cc
>>
>>   Declare and define the following new functions:
>>
>>     static WifiMode Get3mb10Mhz (void);
>>     static WifiMode Get4_5mb10Mhz (void);
>>     static WifiMode Get6mb10Mhz (void);
>>     static WifiMode Get9mb10Mhz (void);
>>     static WifiMode Get12mb10Mhz (void);
>>     static WifiMode Get18mb10Mhz (void);
>>     static WifiMode Get24mb10Mhz (void);
>>     static WifiMode Get27mb10Mhz (void);
>>
>> + yans-wifi-phy.h and yans-wifi-phy.cc
>>
>>   Declare and define the void Configure80211_10Mhz (void) function.
>>   Modify the void SetStandard (enum WifiPhyStandard standard) function so
>> that the user can also select a 10Mhz channel.
>>
>> + interference-helper.h and interference-helper.cc
>>
>>   Declare and define void Configure80211_10MhzParameters (void);
>>
>> One function that should be modified is
>> InterferenceHelper::CalculateTxDuration (uint32_t size, WifiMode
>> payloadMode, WifiPreamble preamble) const since it assumes that the symbol
>> duration is always 4us (20 Mhz channel). This function should employ a
>> symbol duration according to the channel used (10Mhz or 20Mhz). One possible
>> solution to solve this would be to have a new variable in the class
>> InterferenceHelper which allows differentiating the channel used. This
>> variable could be of type WifiPhyStandard. In the function Time
>> InterferenceHelper::CalculateTxDuration, this new variable would be examined
>> and the packet txon duration will be calculated based on the bandwidth
>> channel.
>>
>> Please, I would like to have your comments on this in order to proceed
>> with the implementation.
>>
>> Thank you in advance.
>> Best regards,
>> Ramon.
>>
>> --------------------------------------------------------------------------
>>  Ramon Bauza
>> Ubiquitous Wireless Communications Research Laboratory
>> Uwicore, http://www.uwicore.umh.es
>> Signal Theory and Communications Division
>> University Miguel Hernández (Spain)
>> Tel: +34 96522 2031
>> Fax: +34 96665 8903
>>
>> ----------------------------------------------------------------------------
>>
>
>


--
--------------------------------------------------------------------------
Ramon Bauza
Ubiquitous Wireless Communications Research Laboratory
Uwicore, http://www.uwicore.umh.es
Signal Theory and Communications Division
University Miguel Hernández (Spain)
Tel: +34 96522 2031
Fax: +34 96665 8903
----------------------------------------------------------------------------

Re: 802.11 10Mhz Channel

by Mathieu Lacage :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

hi,

The patch overall looks good. A couple of comments:

1) it feels like you could move the WifiMacHelper::Configure* methods to
the WifiMac base class (that way, you could access
WifiMac::GetDefaultMaxPropagationDelay directly)
2) maybe you could add a Standard attribute to WifiMac which is similar
to the YansWifiPhy::Standard attribute and does the same thing as
YansWifiPhy::SetStandard
3) maybe also add a Configure80211a and Configure80211b to WifiMac. Erm,
I just realized that we currently have no set of 802.11b MAC parameters
for the 802.11b PHY contributed by gary. If you can't bother with
finding the right values in the spec, just add an empty Configure80211b
method and we will fill them in later.

Mathieu



On Thu, 2009-07-09 at 19:23 +0200, Ramon Bauza wrote:

> Hello,
>
> I would like to submit for code review the attached patch implementing half
> and quarter-clocked Wifi operation using 5 and 10 Mhz channels spacing. We
> would be glad to merge this new functionality in the main branch if ns-3
> developers think it may be interesting for other people. The following files
> have been modified (ns-3-dev):
>
> src/devices/wifi/interference-helper.cc
> src/devices/wifi/interference-helper.h
> src/devices/wifi/wifi-phy.cc
> src/devices/wifi/wifi-phy.h
> src/devices/wifi/wifi-phy-standard.h
> src/devices/wifi/yans-error-rate-model.cc
> src/devices/wifi/yans-wifi-phy.cc
> src/devices/wifi/yans-wifi-phy.h
> src/helper/nqos-wifi-mac-helper.cc
> src/helper/nqos-wifi-mac-helper.h
> src/helper/qos-wifi-mac-helper.cc
> src/helper/qos-wifi-mac-helper.h
> src/helper/wifi-helper.cc
> src/helper/wifi-helper.h
>
> Apart from the modifications pointed out in the previous email posted some
> weeks ago, we have also modified some of the wifi helpers. In order not to
> make the user set weird values for the MAC parameters (slot,sifs, etc) from
> the script, we have modified the WifiMacHelper incorporating two new
> functions (Configure80211_10MhzParameters and Configure80211_5MhzParameters)
> that allows the user to automatically select the default MAC parameters for
> 5Mhz and 10Mhz channel spacing (we have also moved the function SetType and
> the ObjectFactory m_mac from NqosWifiMacHelper and QosWifiMacHelper to
> WifiMacHelper).
>
> Looking forward to your comments.
>
> Best regards,
> Ramon Bauza.
>
> 2009/5/29 Ramon Bauza <monbauza@...>
>
> > Hello everyone,
> >
> > I am Ramon Bauza, a researcher at Miguel Hernandez University (Spain).
> > Currently, I am involved in the EU FP7 project iTETRIS which aims at
> > creating an integrated traffic and wireless simulation platform that will
> > allow evaluating traffic management strategies and communication protocols
> > in vehicular environments. The iTETRIS project employs SUMO and ns-3 as
> > traffic simulation and wireless simulation platforms respectively.
> >
> > Our research group at UMH, it is charge of implementing the 802.11p (WAVE)
> > standard in ns-3. 802.11p is based on 802.11a, being the channel bandwidth
> > and thus also the data rates the main differences between both (802.11p uses
> > a 10Mhz whereas 802.11a uses 20Mhz). After implementing 802.11p in ns-3, we
> > will also look into and implement propagation models for vehicular
> > environments that consider LOS/NLOS visibility conditions,
> > vehicle-to-vehicle and vehicle-to-infraestructure communications, and
> > shadowing and multipath fading effects.
> >
> > In order to model a 10Mhz channel in ns-3, some additions/modifications
> > should be done (some weeks ago I posted a message in the user mailing list
> > regarding this
> > http://groups.google.com/group/ns-3-users/browse_thread/thread/f27b1ddcf9f1d532#).
> > Apart from 802.11p, I think other 802.11 standards employ 10MHz channels and
> > thus probably the modeling of 10Mhz channels would also be useful for the
> > ns-3 community working on 802.11-related topics. In fact, the IEEE Std
> > 802.11TM-2007 standard considers 10Mhz channel spacing using OFDM. If you
> > consider that the modeling of 10Mhz channels may be beneficial for other
> > users we would be glad to merge the 10Mhz modeling in the main branch.
> >
> > Below, I compile the needed functions and modifications we plan to
> > introduce in ns-3 at the PHY layer for modeling a 10Mhz channel:
> >
> > + wifi-phy-standard.h
> >
> >   Add WIFI_PHY_STANDARD_80211_10Mhz in the enum WifiPhyStandard
> >
> > + wifi-phy.h and wifi-phy.cc
> >
> >   Declare and define the following new functions:
> >
> >     static WifiMode Get3mb10Mhz (void);
> >     static WifiMode Get4_5mb10Mhz (void);
> >     static WifiMode Get6mb10Mhz (void);
> >     static WifiMode Get9mb10Mhz (void);
> >     static WifiMode Get12mb10Mhz (void);
> >     static WifiMode Get18mb10Mhz (void);
> >     static WifiMode Get24mb10Mhz (void);
> >     static WifiMode Get27mb10Mhz (void);
> >
> > + yans-wifi-phy.h and yans-wifi-phy.cc
> >
> >   Declare and define the void Configure80211_10Mhz (void) function.
> >   Modify the void SetStandard (enum WifiPhyStandard standard) function so
> > that the user can also select a 10Mhz channel.
> >
> > + interference-helper.h and interference-helper.cc
> >
> >   Declare and define void Configure80211_10MhzParameters (void);
> >
> > One function that should be modified is
> > InterferenceHelper::CalculateTxDuration (uint32_t size, WifiMode
> > payloadMode, WifiPreamble preamble) const since it assumes that the symbol
> > duration is always 4us (20 Mhz channel). This function should employ a
> > symbol duration according to the channel used (10Mhz or 20Mhz). One possible
> > solution to solve this would be to have a new variable in the class
> > InterferenceHelper which allows differentiating the channel used. This
> > variable could be of type WifiPhyStandard. In the function Time
> > InterferenceHelper::CalculateTxDuration, this new variable would be examined
> > and the packet txon duration will be calculated based on the bandwidth
> > channel.
> >
> > Please, I would like to have your comments on this in order to proceed with
> > the implementation.
> >
> > Thank you in advance.
> > Best regards,
> > Ramon.
> >
> > --------------------------------------------------------------------------
> > Ramon Bauza
> > Ubiquitous Wireless Communications Research Laboratory
> > Uwicore, http://www.uwicore.umh.es
> > Signal Theory and Communications Division
> > University Miguel Hernández (Spain)
> > Tel: +34 96522 2031
> > Fax: +34 96665 8903
> >
> > ----------------------------------------------------------------------------
> >


Re: 802.11 10Mhz Channel

by Ramon Bauza :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi,

Thank you for your comments. Please find the new patch modified accordingly
to your suggestions. Now, WifiMacHelpers remain the same way as in ns-3-dev.
I have also added the Configure80211b method to configure MAC parameters.
However, I would like someone to review the parameters, since I am not very
familiar with the 802.11b specification.  As Std 802.11-2007 states (page
654), I have considered:

- SlotTime = 20us
- SIFS = 10us

Ramon.

2009/7/13 Mathieu Lacage <mathieu.lacage@...>

> hi,
>
> The patch overall looks good. A couple of comments:
>
> 1) it feels like you could move the WifiMacHelper::Configure* methods to
> the WifiMac base class (that way, you could access
> WifiMac::GetDefaultMaxPropagationDelay directly)
> 2) maybe you could add a Standard attribute to WifiMac which is similar
> to the YansWifiPhy::Standard attribute and does the same thing as
> YansWifiPhy::SetStandard
> 3) maybe also add a Configure80211a and Configure80211b to WifiMac. Erm,
> I just realized that we currently have no set of 802.11b MAC parameters
> for the 802.11b PHY contributed by gary. If you can't bother with
> finding the right values in the spec, just add an empty Configure80211b
> method and we will fill them in later.
>
> Mathieu
>
>
>
> On Thu, 2009-07-09 at 19:23 +0200, Ramon Bauza wrote:
> > Hello,
> >
> > I would like to submit for code review the attached patch implementing
> half
> > and quarter-clocked Wifi operation using 5 and 10 Mhz channels spacing.
> We
> > would be glad to merge this new functionality in the main branch if ns-3
> > developers think it may be interesting for other people. The following
> files
> > have been modified (ns-3-dev):
> >
> > src/devices/wifi/interference-helper.cc
> > src/devices/wifi/interference-helper.h
> > src/devices/wifi/wifi-phy.cc
> > src/devices/wifi/wifi-phy.h
> > src/devices/wifi/wifi-phy-standard.h
> > src/devices/wifi/yans-error-rate-model.cc
> > src/devices/wifi/yans-wifi-phy.cc
> > src/devices/wifi/yans-wifi-phy.h
> > src/helper/nqos-wifi-mac-helper.cc
> > src/helper/nqos-wifi-mac-helper.h
> > src/helper/qos-wifi-mac-helper.cc
> > src/helper/qos-wifi-mac-helper.h
> > src/helper/wifi-helper.cc
> > src/helper/wifi-helper.h
> >
> > Apart from the modifications pointed out in the previous email posted
> some
> > weeks ago, we have also modified some of the wifi helpers. In order not
> to
> > make the user set weird values for the MAC parameters (slot,sifs, etc)
> from
> > the script, we have modified the WifiMacHelper incorporating two new
> > functions (Configure80211_10MhzParameters and
> Configure80211_5MhzParameters)
> > that allows the user to automatically select the default MAC parameters
> for
> > 5Mhz and 10Mhz channel spacing (we have also moved the function SetType
> and
> > the ObjectFactory m_mac from NqosWifiMacHelper and QosWifiMacHelper to
> > WifiMacHelper).
> >
> > Looking forward to your comments.
> >
> > Best regards,
> > Ramon Bauza.
> >
> > 2009/5/29 Ramon Bauza <monbauza@...>
> >
> > > Hello everyone,
> > >
> > > I am Ramon Bauza, a researcher at Miguel Hernandez University (Spain).
> > > Currently, I am involved in the EU FP7 project iTETRIS which aims at
> > > creating an integrated traffic and wireless simulation platform that
> will
> > > allow evaluating traffic management strategies and communication
> protocols
> > > in vehicular environments. The iTETRIS project employs SUMO and ns-3 as
> > > traffic simulation and wireless simulation platforms respectively.
> > >
> > > Our research group at UMH, it is charge of implementing the 802.11p
> (WAVE)
> > > standard in ns-3. 802.11p is based on 802.11a, being the channel
> bandwidth
> > > and thus also the data rates the main differences between both (802.11p
> uses
> > > a 10Mhz whereas 802.11a uses 20Mhz). After implementing 802.11p in
> ns-3, we
> > > will also look into and implement propagation models for vehicular
> > > environments that consider LOS/NLOS visibility conditions,
> > > vehicle-to-vehicle and vehicle-to-infraestructure communications, and
> > > shadowing and multipath fading effects.
> > >
> > > In order to model a 10Mhz channel in ns-3, some additions/modifications
> > > should be done (some weeks ago I posted a message in the user mailing
> list
> > > regarding this
> > >
> http://groups.google.com/group/ns-3-users/browse_thread/thread/f27b1ddcf9f1d532#
> ).
> > > Apart from 802.11p, I think other 802.11 standards employ 10MHz
> channels and
> > > thus probably the modeling of 10Mhz channels would also be useful for
> the
> > > ns-3 community working on 802.11-related topics. In fact, the IEEE Std
> > > 802.11TM-2007 standard considers 10Mhz channel spacing using OFDM. If
> you
> > > consider that the modeling of 10Mhz channels may be beneficial for
> other
> > > users we would be glad to merge the 10Mhz modeling in the main branch.
> > >
> > > Below, I compile the needed functions and modifications we plan to
> > > introduce in ns-3 at the PHY layer for modeling a 10Mhz channel:
> > >
> > > + wifi-phy-standard.h
> > >
> > >   Add WIFI_PHY_STANDARD_80211_10Mhz in the enum WifiPhyStandard
> > >
> > > + wifi-phy.h and wifi-phy.cc
> > >
> > >   Declare and define the following new functions:
> > >
> > >     static WifiMode Get3mb10Mhz (void);
> > >     static WifiMode Get4_5mb10Mhz (void);
> > >     static WifiMode Get6mb10Mhz (void);
> > >     static WifiMode Get9mb10Mhz (void);
> > >     static WifiMode Get12mb10Mhz (void);
> > >     static WifiMode Get18mb10Mhz (void);
> > >     static WifiMode Get24mb10Mhz (void);
> > >     static WifiMode Get27mb10Mhz (void);
> > >
> > > + yans-wifi-phy.h and yans-wifi-phy.cc
> > >
> > >   Declare and define the void Configure80211_10Mhz (void) function.
> > >   Modify the void SetStandard (enum WifiPhyStandard standard) function
> so
> > > that the user can also select a 10Mhz channel.
> > >
> > > + interference-helper.h and interference-helper.cc
> > >
> > >   Declare and define void Configure80211_10MhzParameters (void);
> > >
> > > One function that should be modified is
> > > InterferenceHelper::CalculateTxDuration (uint32_t size, WifiMode
> > > payloadMode, WifiPreamble preamble) const since it assumes that the
> symbol
> > > duration is always 4us (20 Mhz channel). This function should employ a
> > > symbol duration according to the channel used (10Mhz or 20Mhz). One
> possible
> > > solution to solve this would be to have a new variable in the class
> > > InterferenceHelper which allows differentiating the channel used. This
> > > variable could be of type WifiPhyStandard. In the function Time
> > > InterferenceHelper::CalculateTxDuration, this new variable would be
> examined
> > > and the packet txon duration will be calculated based on the bandwidth
> > > channel.
> > >
> > > Please, I would like to have your comments on this in order to proceed
> with
> > > the implementation.
> > >
> > > Thank you in advance.
> > > Best regards,
> > > Ramon.
> > >
> > >
> --------------------------------------------------------------------------
> > > Ramon Bauza
> > > Ubiquitous Wireless Communications Research Laboratory
> > > Uwicore, http://www.uwicore.umh.es
> > > Signal Theory and Communications Division
> > > University Miguel Hernández (Spain)
> > > Tel: +34 96522 2031
> > > Fax: +34 96665 8903
> > >
> > >
> ----------------------------------------------------------------------------
> > >
>
>

--
--------------------------------------------------------------------------
Ramon Bauza
Ubiquitous Wireless Communications Research Laboratory
Uwicore, http://www.uwicore.umh.es
Signal Theory and Communications Division
University Miguel Hernández (Spain)
Tel: +34 96522 2031
Fax: +34 96665 8903
----------------------------------------------------------------------------

[patchWifi10and5MhzChannelsv2.diff]

Los ficheros binarios ns-3-dev/.hg/dirstate y ns-3-spacing/.hg/dirstate son distintos
Los ficheros binarios ns-3-dev/.hg/store/undo y ns-3-spacing/.hg/store/undo son distintos
Los ficheros binarios ns-3-dev/.hg/undo.dirstate y ns-3-spacing/.hg/undo.dirstate son distintos
Los ficheros binarios ns-3-dev/regression.pyc y ns-3-spacing/regression.pyc son distintos
diff -u -r -N ns-3-dev/src/devices/wifi/interference-helper.cc ns-3-spacing/src/devices/wifi/interference-helper.cc
--- ns-3-dev/src/devices/wifi/interference-helper.cc 2009-07-13 11:35:47.000000000 +0200
+++ ns-3-spacing/src/devices/wifi/interference-helper.cc 2009-07-09 12:27:49.000000000 +0200
@@ -241,6 +241,18 @@
       delay += m_plcpLongPreambleDelayUs;
       delay += lrint (ceil ((size * 8.0 + 48.0) / payloadMode.GetDataRate () / 4e-6) * 4);
       break;
+    case WIFI_PHY_STANDARD_80211_10Mhz:
+      delay += m_plcpLongPreambleDelayUs;
+      // symbol duration is 8us
+      delay += 8;
+      delay += lrint (ceil ((size * 8.0 + 16.0 + 6.0) / payloadMode.GetDataRate () / 8e-6) * 8);
+      break;
+    case WIFI_PHY_STANDARD_80211_5Mhz:
+      delay += m_plcpLongPreambleDelayUs;
+      // symbol duration is 16us
+      delay += 16;
+      delay += lrint (ceil ((size * 8.0 + 16.0 + 6.0) / payloadMode.GetDataRate () / 1.6e-5) * 16);
+      break;
     default:
      NS_ASSERT (false);
      break;
@@ -277,6 +289,34 @@
   m_maxPacketDuration = CalculateTxDuration (4095, WifiPhy::Get1mbb (), WIFI_PREAMBLE_LONG);
 }
 
+void
+InterferenceHelper::Configure80211_10MhzParameters (void)
+{
+  NS_LOG_FUNCTION (this);
+  m_80211_standard = WIFI_PHY_STANDARD_80211_10Mhz;
+  m_plcpLongPreambleDelayUs = 32;
+  m_plcpShortPreambleDelayUs = 32;
+  m_longPlcpHeaderMode = WifiPhy::Get3mb10Mhz ();
+  m_shortPlcpHeaderMode = WifiPhy::Get3mb10Mhz ();
+  m_plcpHeaderLength = 4 + 1 + 12 + 1 + 6;
+  /* 4095 bytes at a 3Mb/s rate with a 1/2 coding rate. */
+  m_maxPacketDuration = CalculateTxDuration (4095, WifiPhy::Get3mb10Mhz (), WIFI_PREAMBLE_LONG);
+}
+
+void
+InterferenceHelper::Configure80211_5MhzParameters (void)
+{
+  NS_LOG_FUNCTION (this);
+  m_80211_standard = WIFI_PHY_STANDARD_80211_5Mhz;
+  m_plcpLongPreambleDelayUs = 64;
+  m_plcpShortPreambleDelayUs = 64;
+  m_longPlcpHeaderMode = WifiPhy::Get1_5mb5Mhz ();
+  m_shortPlcpHeaderMode = WifiPhy::Get1_5mb5Mhz ();
+  m_plcpHeaderLength = 4 + 1 + 12 + 1 + 6;
+  /* 4095 bytes at a 1.5Mb/s rate with a 1/2 coding rate. */
+  m_maxPacketDuration = CalculateTxDuration (4095, WifiPhy::Get1_5mb5Mhz (), WIFI_PREAMBLE_LONG);
+}
+
 void
 InterferenceHelper::AppendEvent (Ptr<InterferenceHelper::Event> event)
 {
diff -u -r -N ns-3-dev/src/devices/wifi/interference-helper.h ns-3-spacing/src/devices/wifi/interference-helper.h
--- ns-3-dev/src/devices/wifi/interference-helper.h 2009-07-13 11:35:47.000000000 +0200
+++ ns-3-spacing/src/devices/wifi/interference-helper.h 2009-07-09 12:26:29.000000000 +0200
@@ -71,6 +71,8 @@
 
   void Configure80211aParameters (void);
   void Configure80211bParameters (void);
+  void Configure80211_10MhzParameters (void);
+  void Configure80211_5MhzParameters (void);
   void SetNoiseFigure (double value);
   void SetErrorRateModel (Ptr<ErrorRateModel> rate);
 
diff -u -r -N ns-3-dev/src/devices/wifi/wifi-mac.cc ns-3-spacing/src/devices/wifi/wifi-mac.cc
--- ns-3-dev/src/devices/wifi/wifi-mac.cc 2009-07-13 11:35:47.000000000 +0200
+++ ns-3-spacing/src/devices/wifi/wifi-mac.cc 2009-07-13 11:27:21.000000000 +0200
@@ -117,6 +117,14 @@
    MakeSsidAccessor (&WifiMac::GetSsid,
      &WifiMac::SetSsid),
    MakeSsidChecker ())
+    .AddAttribute ("Standard", "The standard chosen configures some MAC-specific constants",
+                   EnumValue (WIFI_PHY_STANDARD_80211a),
+                   MakeEnumAccessor (&WifiMac::SetStandard),
+                   MakeEnumChecker (WIFI_PHY_STANDARD_80211a, "802.11a",
+                                    WIFI_PHY_STANDARD_80211b, "802.11b",
+                                    WIFI_PHY_STANDARD_80211_10Mhz,"802.11_10Mhz",
+                                    WIFI_PHY_STANDARD_80211_5Mhz,"802-11_5Mhz",
+                                    WIFI_PHY_STANDARD_holland, "holland"))
     .AddTraceSource ("MacTx",
                      "A packet has been received from higher layers and is being processed in preparation for "
                      "queueing for transmission.",
@@ -200,4 +208,74 @@
   m_macRxDropTrace (packet);
 }
 
+void
+WifiMac::SetStandard (enum WifiPhyStandard standard)
+{
+  m_standard = standard;
+  switch (standard) {
+  case WIFI_PHY_STANDARD_80211a:
+    Configure80211a ();
+    break;
+  case WIFI_PHY_STANDARD_80211b:
+    Configure80211b ();
+    break;
+  case WIFI_PHY_STANDARD_80211_10Mhz:
+    Configure80211_10Mhz ();
+    break;
+  case WIFI_PHY_STANDARD_80211_5Mhz:
+    Configure80211_5Mhz ();
+    break;
+  case WIFI_PHY_STANDARD_holland:
+    Configure80211a ();
+    break;
+  default:
+    NS_ASSERT (false);
+    break;
+  }
+}
+
+void
+WifiMac::Configure80211a (void)
+{
+  SetSifs(MicroSeconds(16));
+  SetSlot(MicroSeconds(9));
+  SetEifsNoDifs(MicroSeconds(16+44));
+  SetPifs(MicroSeconds(16+9));
+  SetCtsTimeout(MicroSeconds(16+44+9+GetDefaultMaxPropagationDelay().GetMicroSeconds ()*2));
+  SetAckTimeout(MicroSeconds(16+44+9+GetDefaultMaxPropagationDelay().GetMicroSeconds ()*2));
+}
+
+void
+WifiMac::Configure80211b (void)
+{
+  SetSifs(MicroSeconds(10));
+  SetSlot(MicroSeconds(20));
+  SetEifsNoDifs(MicroSeconds(10+304));
+  SetPifs(MicroSeconds(10+20));
+  SetCtsTimeout(MicroSeconds(10+304+20+GetDefaultMaxPropagationDelay().GetMicroSeconds ()*2));
+  SetAckTimeout(MicroSeconds(10+304+20+GetDefaultMaxPropagationDelay().GetMicroSeconds ()*2));
+}
+
+void
+WifiMac::Configure80211_10Mhz (void)
+{
+  SetSifs(MicroSeconds(32));
+  SetSlot(MicroSeconds(13));
+  SetEifsNoDifs(MicroSeconds(32+88));
+  SetPifs(MicroSeconds(32+13));
+  SetCtsTimeout(MicroSeconds(32+88+13+GetDefaultMaxPropagationDelay().GetMicroSeconds ()*2));
+  SetAckTimeout(MicroSeconds(32+88+13+GetDefaultMaxPropagationDelay().GetMicroSeconds ()*2));
+}
+
+void
+WifiMac::Configure80211_5Mhz (void)
+{
+  SetSifs(MicroSeconds(64));
+  SetSlot(MicroSeconds(21));
+  SetEifsNoDifs(MicroSeconds(64+176));
+  SetPifs(MicroSeconds(64+21));
+  SetCtsTimeout(MicroSeconds(64+176+21+GetDefaultMaxPropagationDelay().GetMicroSeconds ()*2));
+  SetAckTimeout(MicroSeconds(64+176+21+GetDefaultMaxPropagationDelay().GetMicroSeconds ()*2));
+}
+
 } // namespace ns3
diff -u -r -N ns-3-dev/src/devices/wifi/wifi-mac.h ns-3-spacing/src/devices/wifi/wifi-mac.h
--- ns-3-dev/src/devices/wifi/wifi-mac.h 2009-07-13 11:35:47.000000000 +0200
+++ ns-3-spacing/src/devices/wifi/wifi-mac.h 2009-07-13 11:27:45.000000000 +0200
@@ -206,6 +206,10 @@
    * purposes.
    */
   void NotifyRxDrop (Ptr<const Packet> packet);
+  /**
+   * \param standard the wifi standard to be configured
+   */
+  void SetStandard (enum WifiPhyStandard standard);
 
 private:
   static Time GetDefaultMaxPropagationDelay (void);
@@ -217,6 +221,12 @@
 
   Time m_maxPropagationDelay;
   uint32_t m_maxMsduSize;
+  WifiPhyStandard m_standard;
+
+  void Configure80211a (void);
+  void Configure80211b (void);
+  void Configure80211_10Mhz (void);
+  void Configure80211_5Mhz ();
 
   /**
    * The trace source fired when packets come into the "top" of the device
diff -u -r -N ns-3-dev/src/devices/wifi/wifi-phy.cc ns-3-spacing/src/devices/wifi/wifi-phy.cc
--- ns-3-dev/src/devices/wifi/wifi-phy.cc 2009-07-13 11:35:47.000000000 +0200
+++ ns-3-spacing/src/devices/wifi/wifi-phy.cc 2009-07-09 12:22:34.000000000 +0200
@@ -244,6 +244,150 @@
   return mode;
 }
 
+WifiMode
+WifiPhy::Get3mb10Mhz (void)
+{
+  static WifiMode mode = WifiModeFactory::CreateBpsk ("wifi-3mbs-10Mhz",
+                                                      true,
+                                                      10000000, 3000000, 6000000);
+  return mode;
+}
+
+WifiMode
+WifiPhy::Get4_5mb10Mhz (void)
+{
+  static WifiMode mode = WifiModeFactory::CreateBpsk ("wifi-4.5mbs-10Mhz",
+                                                      false,
+                                                      10000000, 4500000, 6000000);
+  return mode;
+}
+
+WifiMode
+WifiPhy::Get6mb10Mhz (void)
+{
+  static WifiMode mode = WifiModeFactory::CreateBpsk ("wifi-6mbs-10Mhz",
+                                                      true,
+                                                      10000000, 6000000, 12000000);
+  return mode;
+}
+
+WifiMode
+WifiPhy::Get9mb10Mhz (void)
+{
+  static WifiMode mode = WifiModeFactory::CreateBpsk ("wifi-9mbs-10Mhz",
+                                                      false,
+                                                      10000000, 9000000, 12000000);
+  return mode;
+}
+
+WifiMode
+WifiPhy::Get12mb10Mhz (void)
+{
+  static WifiMode mode = WifiModeFactory::CreateBpsk ("wifi-12mbs-10Mhz",
+                                                      true,
+                                                      10000000, 12000000, 24000000);
+  return mode;
+}
+
+WifiMode
+WifiPhy::Get18mb10Mhz (void)
+{
+  static WifiMode mode = WifiModeFactory::CreateBpsk ("wifi-18mbs-10Mhz",
+                                                      false,
+                                                      10000000, 18000000, 24000000);
+  return mode;
+}
+
+WifiMode
+WifiPhy::Get24mb10Mhz (void)
+{
+  static WifiMode mode = WifiModeFactory::CreateBpsk ("wifi-24mbs-10Mhz",
+                                                      false,
+                                                      10000000, 24000000, 36000000);
+  return mode;
+}
+
+WifiMode
+WifiPhy::Get27mb10Mhz (void)
+{
+  static WifiMode mode = WifiModeFactory::CreateBpsk ("wifi-27mbs-10Mhz",
+                                                      false,
+                                                      10000000, 27000000, 36000000);
+  return mode;
+}
+
+WifiMode
+WifiPhy::Get1_5mb5Mhz (void)
+{
+  static WifiMode mode = WifiModeFactory::CreateBpsk ("wifi-1_5mbs-5Mhz",
+                                                      true,
+                                                      5000000, 1500000, 3000000);
+  return mode;
+}
+
+WifiMode
+WifiPhy::Get2_25mb5Mhz (void)
+{
+  static WifiMode mode = WifiModeFactory::CreateBpsk ("wifi-2.25mbs-5Mhz",
+                                                      false,
+                                                      5000000, 2250000, 3000000);
+  return mode;
+}
+
+WifiMode
+WifiPhy::Get3mb5Mhz (void)
+{
+  static WifiMode mode = WifiModeFactory::CreateBpsk ("wifi-3mbs-5Mhz",
+                                                      true,
+                                                      5000000, 3000000, 6000000);
+  return mode;
+}
+
+WifiMode
+WifiPhy::Get4_5mb5Mhz (void)
+{
+  static WifiMode mode = WifiModeFactory::CreateBpsk ("wifi-4.5mbs-5Mhz",
+                                                      false,
+                                                      5000000, 4500000, 6000000);
+  return mode;
+}
+
+WifiMode
+WifiPhy::Get6mb5Mhz (void)
+{
+  static WifiMode mode = WifiModeFactory::CreateBpsk ("wifi-6mbs-5Mhz",
+                                                      true,
+                                                      5000000, 6000000, 12000000);
+  return mode;
+}
+
+WifiMode
+WifiPhy::Get9mb5Mhz (void)
+{
+  static WifiMode mode = WifiModeFactory::CreateBpsk ("wifi-9mbs-5Mhz",
+                                                      false,
+                                                      10000000, 9000000, 12000000);
+  return mode;
+}
+
+WifiMode
+WifiPhy::Get12mb5Mhz (void)
+{
+  static WifiMode mode = WifiModeFactory::CreateBpsk ("wifi-12mbs-5Mhz",
+                                                      false,
+                                                      10000000, 12000000, 18000000);
+  return mode;
+}
+
+WifiMode
+WifiPhy::Get13_5mb5Mhz (void)
+{
+  static WifiMode mode = WifiModeFactory::CreateBpsk ("wifi-13.5mbs-5Mhz",
+                                                      false,
+                                                      10000000, 13500000, 18000000);
+  return mode;
+}
+
 
 } // namespace ns3
 
@@ -265,6 +409,22 @@
     ns3::WifiPhy::Get2mbb ();
     ns3::WifiPhy::Get5_5mbb ();
     ns3::WifiPhy::Get11mbb ();
+    ns3::WifiPhy::Get3mb10Mhz ();
+    ns3::WifiPhy::Get4_5mb10Mhz ();
+    ns3::WifiPhy::Get6mb10Mhz ();
+    ns3::WifiPhy::Get9mb10Mhz ();
+    ns3::WifiPhy::Get12mb10Mhz ();
+    ns3::WifiPhy::Get18mb10Mhz ();
+    ns3::WifiPhy::Get24mb10Mhz ();
+    ns3::WifiPhy::Get27mb10Mhz ();
+    ns3::WifiPhy::Get1_5mb5Mhz ();
+    ns3::WifiPhy::Get2_25mb5Mhz ();
+    ns3::WifiPhy::Get3mb5Mhz ();
+    ns3::WifiPhy::Get4_5mb5Mhz ();
+    ns3::WifiPhy::Get6mb5Mhz ();
+    ns3::WifiPhy::Get9mb5Mhz ();
+    ns3::WifiPhy::Get12mb5Mhz ();
+    ns3::WifiPhy::Get13_5mb5Mhz ();
   }
 } g_constructor;
 }
diff -u -r -N ns-3-dev/src/devices/wifi/wifi-phy.h ns-3-spacing/src/devices/wifi/wifi-phy.h
--- ns-3-dev/src/devices/wifi/wifi-phy.h 2009-07-13 11:35:47.000000000 +0200
+++ ns-3-spacing/src/devices/wifi/wifi-phy.h 2009-07-09 12:21:10.000000000 +0200
@@ -256,6 +256,22 @@
   static WifiMode Get2mbb (void);
   static WifiMode Get5_5mbb (void);
   static WifiMode Get11mbb (void);
+  static WifiMode Get3mb10Mhz (void);
+  static WifiMode Get4_5mb10Mhz (void);
+  static WifiMode Get6mb10Mhz (void);
+  static WifiMode Get9mb10Mhz (void);
+  static WifiMode Get12mb10Mhz (void);
+  static WifiMode Get18mb10Mhz (void);
+  static WifiMode Get24mb10Mhz (void);
+  static WifiMode Get27mb10Mhz (void);
+  static WifiMode Get1_5mb5Mhz (void);
+  static WifiMode Get2_25mb5Mhz (void);
+  static WifiMode Get3mb5Mhz (void);
+  static WifiMode Get4_5mb5Mhz (void);
+  static WifiMode Get6mb5Mhz (void);
+  static WifiMode Get9mb5Mhz (void);
+  static WifiMode Get12mb5Mhz (void);
+  static WifiMode Get13_5mb5Mhz (void);
 
 
   /**
diff -u -r -N ns-3-dev/src/devices/wifi/wifi-phy-standard.h ns-3-spacing/src/devices/wifi/wifi-phy-standard.h
--- ns-3-dev/src/devices/wifi/wifi-phy-standard.h 2009-07-13 11:35:47.000000000 +0200
+++ ns-3-spacing/src/devices/wifi/wifi-phy-standard.h 2009-07-09 12:23:11.000000000 +0200
@@ -25,6 +25,8 @@
 enum WifiPhyStandard {
   WIFI_PHY_STANDARD_80211a,
   WIFI_PHY_STANDARD_80211b,
+  WIFI_PHY_STANDARD_80211_10Mhz,
+  WIFI_PHY_STANDARD_80211_5Mhz,
   WIFI_PHY_STANDARD_holland
 };
 
diff -u -r -N ns-3-dev/src/devices/wifi/yans-error-rate-model.cc ns-3-spacing/src/devices/wifi/yans-error-rate-model.cc
--- ns-3-dev/src/devices/wifi/yans-error-rate-model.cc 2009-07-13 11:35:47.000000000 +0200
+++ ns-3-spacing/src/devices/wifi/yans-error-rate-model.cc 2009-07-13 12:06:45.000000000 +0200
@@ -176,7 +176,7 @@
 double
 YansErrorRateModel::GetChunkSuccessRate (WifiMode mode, double snr, uint32_t nbits) const
 {
-  if (mode == WifiPhy::Get6mba ())
+  if (mode == WifiPhy::Get6mba () || mode == WifiPhy::Get3mb10Mhz () || mode == WifiPhy::Get1_5mb5Mhz ())
     {
       return GetFecBpskBer (snr,
                             nbits,
@@ -186,7 +186,7 @@
                             11 // adFree
                             );      
     }
-  else if (mode == WifiPhy::Get9mba ())
+  else if (mode == WifiPhy::Get9mba () || mode == WifiPhy::Get4_5mb10Mhz () || mode == WifiPhy::Get2_25mb5Mhz ())
     {
       return GetFecBpskBer (snr,
                             nbits,
@@ -196,7 +196,7 @@
                             8 // adFree
                             );
     }
-  else if (mode == WifiPhy::Get12mba ())
+  else if (mode == WifiPhy::Get12mba () || mode == WifiPhy::Get6mb10Mhz () || mode == WifiPhy::Get3mb5Mhz ())
     {
       return GetFecQamBer (snr,
                            nbits,
@@ -208,7 +208,7 @@
                            0   // adFreePlusOne
                            );
     }
-  else if (mode == WifiPhy::Get18mba ())
+  else if (mode == WifiPhy::Get18mba () || mode == WifiPhy::Get9mb10Mhz () || mode == WifiPhy::Get4_5mb5Mhz ())
     {
       return GetFecQamBer (snr,
                            nbits,
@@ -220,7 +220,7 @@
                            31 // adFreePlusOne
                            );
     }
-  else if (mode == WifiPhy::Get24mba ())
+  else if (mode == WifiPhy::Get24mba () || mode == WifiPhy::Get12mb10Mhz () || mode == WifiPhy::Get6mb5Mhz ())
     {
       return GetFecQamBer (snr,
                            nbits,
@@ -232,7 +232,7 @@
                            0   // adFreePlusOne
                            );
     }
-  else if (mode == WifiPhy::Get36mba ())
+  else if (mode == WifiPhy::Get36mba () || mode == WifiPhy::Get18mb10Mhz () || mode == WifiPhy::Get9mb5Mhz ())
     {
       return GetFecQamBer (snr,
                            nbits,
@@ -244,7 +244,7 @@
                            31  // adFreePlusOne
                            );
     }
-  else if (mode == WifiPhy::Get48mba ())
+  else if (mode == WifiPhy::Get48mba () || mode == WifiPhy::Get24mb10Mhz () || mode == WifiPhy::Get12mb5Mhz ())
     {
       return GetFecQamBer (snr,
                            nbits,
@@ -256,7 +256,7 @@
                            16  // adFreePlusOne
                            );
     }
-  else if (mode == WifiPhy::Get54mba ())
+  else if (mode == WifiPhy::Get54mba () || mode == WifiPhy::Get27mb10Mhz () || mode == WifiPhy::Get13_5mb5Mhz ())
     {
       return GetFecQamBer (snr,
                            nbits,
diff -u -r -N ns-3-dev/src/devices/wifi/yans-wifi-phy.cc ns-3-spacing/src/devices/wifi/yans-wifi-phy.cc
--- ns-3-dev/src/devices/wifi/yans-wifi-phy.cc 2009-07-13 11:35:47.000000000 +0200
+++ ns-3-spacing/src/devices/wifi/yans-wifi-phy.cc 2009-07-09 12:25:35.000000000 +0200
@@ -111,6 +111,8 @@
                    MakeEnumAccessor (&YansWifiPhy::SetStandard),
                    MakeEnumChecker (WIFI_PHY_STANDARD_80211a, "802.11a",
                                     WIFI_PHY_STANDARD_80211b, "802.11b",
+                                    WIFI_PHY_STANDARD_80211_10Mhz,"802.11_10Mhz",
+                                    WIFI_PHY_STANDARD_80211_5Mhz,"802-11_5Mhz",
                                     WIFI_PHY_STANDARD_holland, "holland"))
     .AddAttribute ("State", "The state of the PHY layer",
                    PointerValue (),
@@ -156,6 +158,12 @@
   case WIFI_PHY_STANDARD_80211b:
     Configure80211b ();
     break;
+  case WIFI_PHY_STANDARD_80211_10Mhz:
+    Configure80211_10Mhz ();
+    break;
+  case WIFI_PHY_STANDARD_80211_5Mhz:
+    Configure80211_5Mhz ();
+    break;
   case WIFI_PHY_STANDARD_holland:
     ConfigureHolland ();
     break;
@@ -461,6 +469,36 @@
 }
 
 void
+YansWifiPhy::Configure80211_10Mhz (void)
+{
+  NS_LOG_FUNCTION (this);
+  m_interference.Configure80211_10MhzParameters ();
+  m_modes.push_back (WifiPhy::Get3mb10Mhz ());
+  m_modes.push_back (WifiPhy::Get4_5mb10Mhz ());
+  m_modes.push_back (WifiPhy::Get6mb10Mhz ());
+  m_modes.push_back (WifiPhy::Get9mb10Mhz ());
+  m_modes.push_back (WifiPhy::Get12mb10Mhz ());
+  m_modes.push_back (WifiPhy::Get18mb10Mhz ());
+  m_modes.push_back (WifiPhy::Get24mb10Mhz ());
+  m_modes.push_back (WifiPhy::Get27mb10Mhz  ());
+}
+
+void
+YansWifiPhy::Configure80211_5Mhz (void)
+{
+  NS_LOG_FUNCTION (this);
+  m_interference.Configure80211_5MhzParameters ();
+  m_modes.push_back (WifiPhy::Get1_5mb5Mhz ());
+  m_modes.push_back (WifiPhy::Get2_25mb5Mhz ());
+  m_modes.push_back (WifiPhy::Get3mb5Mhz ());
+  m_modes.push_back (WifiPhy::Get4_5mb5Mhz ());
+  m_modes.push_back (WifiPhy::Get6mb5Mhz ());
+  m_modes.push_back (WifiPhy::Get9mb5Mhz ());
+  m_modes.push_back (WifiPhy::Get12mb5Mhz ());
+  m_modes.push_back (WifiPhy::Get13_5mb5Mhz  ());
+}
+
+void
 YansWifiPhy::ConfigureHolland (void)
 {
   NS_LOG_FUNCTION (this);
diff -u -r -N ns-3-dev/src/devices/wifi/yans-wifi-phy.h ns-3-spacing/src/devices/wifi/yans-wifi-phy.h
--- ns-3-dev/src/devices/wifi/yans-wifi-phy.h 2009-07-13 11:35:47.000000000 +0200
+++ ns-3-spacing/src/devices/wifi/yans-wifi-phy.h 2009-07-09 12:24:31.000000000 +0200
@@ -125,6 +125,8 @@
   virtual void DoDispose (void);
   void Configure80211a (void);
   void Configure80211b (void);
+  void Configure80211_10Mhz (void);
+  void Configure80211_5Mhz ();
   void ConfigureHolland (void);
   double GetEdThresholdW (void) const;
   double DbmToW (double dbm) const;
Los ficheros binarios ns-3-dev/wutils.pyc y ns-3-spacing/wutils.pyc son distintos


Re: 802.11 10Mhz Channel

by Mathieu Lacage :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

looks good to me. If you have commit powers, I think that you can push
it yourself. Otherwise, let me know and I will do this myself.

Mathieu


On Mon, 2009-07-13 at 12:22 +0200, Ramon Bauza wrote:

> Hi,
>
> Thank you for your comments. Please find the new patch modified
> accordingly to your suggestions. Now, WifiMacHelpers remain the same
> way as in ns-3-dev. I have also added the Configure80211b method to
> configure MAC parameters. However, I would like someone to review the
> parameters, since I am not very familiar with the 802.11b
> specification.  As Std 802.11-2007 states (page 654), I have
> considered:
>
> - SlotTime = 20us
> - SIFS = 10us
>
> Ramon.
>
> 2009/7/13 Mathieu Lacage <mathieu.lacage@...>
>         hi,
>        
>         The patch overall looks good. A couple of comments:
>        
>         1) it feels like you could move the WifiMacHelper::Configure*
>         methods to
>         the WifiMac base class (that way, you could access
>         WifiMac::GetDefaultMaxPropagationDelay directly)
>         2) maybe you could add a Standard attribute to WifiMac which
>         is similar
>         to the YansWifiPhy::Standard attribute and does the same thing
>         as
>         YansWifiPhy::SetStandard
>         3) maybe also add a Configure80211a and Configure80211b to
>         WifiMac. Erm,
>         I just realized that we currently have no set of 802.11b MAC
>         parameters
>         for the 802.11b PHY contributed by gary. If you can't bother
>         with
>         finding the right values in the spec, just add an empty
>         Configure80211b
>         method and we will fill them in later.
>        
>         Mathieu
>        
>        
>        
>        
>         On Thu, 2009-07-09 at 19:23 +0200, Ramon Bauza wrote:
>         > Hello,
>         >
>         > I would like to submit for code review the attached patch
>         implementing half
>         > and quarter-clocked Wifi operation using 5 and 10 Mhz
>         channels spacing. We
>         > would be glad to merge this new functionality in the main
>         branch if ns-3
>         > developers think it may be interesting for other people. The
>         following files
>         > have been modified (ns-3-dev):
>         >
>         > src/devices/wifi/interference-helper.cc
>         > src/devices/wifi/interference-helper.h
>         > src/devices/wifi/wifi-phy.cc
>         > src/devices/wifi/wifi-phy.h
>         > src/devices/wifi/wifi-phy-standard.h
>         > src/devices/wifi/yans-error-rate-model.cc
>         > src/devices/wifi/yans-wifi-phy.cc
>         > src/devices/wifi/yans-wifi-phy.h
>         > src/helper/nqos-wifi-mac-helper.cc
>         > src/helper/nqos-wifi-mac-helper.h
>         > src/helper/qos-wifi-mac-helper.cc
>         > src/helper/qos-wifi-mac-helper.h
>         > src/helper/wifi-helper.cc
>         > src/helper/wifi-helper.h
>         >
>         > Apart from the modifications pointed out in the previous
>         email posted some
>         > weeks ago, we have also modified some of the wifi helpers.
>         In order not to
>         > make the user set weird values for the MAC parameters
>         (slot,sifs, etc) from
>         > the script, we have modified the WifiMacHelper incorporating
>         two new
>         > functions (Configure80211_10MhzParameters and
>         Configure80211_5MhzParameters)
>         > that allows the user to automatically select the default MAC
>         parameters for
>         > 5Mhz and 10Mhz channel spacing (we have also moved the
>         function SetType and
>         > the ObjectFactory m_mac from NqosWifiMacHelper and
>         QosWifiMacHelper to
>         > WifiMacHelper).
>         >
>         > Looking forward to your comments.
>         >
>         > Best regards,
>         > Ramon Bauza.
>         >
>         > 2009/5/29 Ramon Bauza <monbauza@...>
>         >
>         > > Hello everyone,
>         > >
>         > > I am Ramon Bauza, a researcher at Miguel Hernandez
>         University (Spain).
>         > > Currently, I am involved in the EU FP7 project iTETRIS
>         which aims at
>         > > creating an integrated traffic and wireless simulation
>         platform that will
>         > > allow evaluating traffic management strategies and
>         communication protocols
>         > > in vehicular environments. The iTETRIS project employs
>         SUMO and ns-3 as
>         > > traffic simulation and wireless simulation platforms
>         respectively.
>         > >
>         > > Our research group at UMH, it is charge of implementing
>         the 802.11p (WAVE)
>         > > standard in ns-3. 802.11p is based on 802.11a, being the
>         channel bandwidth
>         > > and thus also the data rates the main differences between
>         both (802.11p uses
>         > > a 10Mhz whereas 802.11a uses 20Mhz). After implementing
>         802.11p in ns-3, we
>         > > will also look into and implement propagation models for
>         vehicular
>         > > environments that consider LOS/NLOS visibility conditions,
>         > > vehicle-to-vehicle and vehicle-to-infraestructure
>         communications, and
>         > > shadowing and multipath fading effects.
>         > >
>         > > In order to model a 10Mhz channel in ns-3, some
>         additions/modifications
>         > > should be done (some weeks ago I posted a message in the
>         user mailing list
>         > > regarding this
>         > >
>         http://groups.google.com/group/ns-3-users/browse_thread/thread/f27b1ddcf9f1d532#).
>         > > Apart from 802.11p, I think other 802.11 standards employ
>         10MHz channels and
>         > > thus probably the modeling of 10Mhz channels would also be
>         useful for the
>         > > ns-3 community working on 802.11-related topics. In fact,
>         the IEEE Std
>         > > 802.11TM-2007 standard considers 10Mhz channel spacing
>         using OFDM. If you
>         > > consider that the modeling of 10Mhz channels may be
>         beneficial for other
>         > > users we would be glad to merge the 10Mhz modeling in the
>         main branch.
>         > >
>         > > Below, I compile the needed functions and modifications we
>         plan to
>         > > introduce in ns-3 at the PHY layer for modeling a 10Mhz
>         channel:
>         > >
>         > > + wifi-phy-standard.h
>         > >
>         > >   Add WIFI_PHY_STANDARD_80211_10Mhz in the enum
>         WifiPhyStandard
>         > >
>         > > + wifi-phy.h and wifi-phy.cc
>         > >
>         > >   Declare and define the following new functions:
>         > >
>         > >     static WifiMode Get3mb10Mhz (void);
>         > >     static WifiMode Get4_5mb10Mhz (void);
>         > >     static WifiMode Get6mb10Mhz (void);
>         > >     static WifiMode Get9mb10Mhz (void);
>         > >     static WifiMode Get12mb10Mhz (void);
>         > >     static WifiMode Get18mb10Mhz (void);
>         > >     static WifiMode Get24mb10Mhz (void);
>         > >     static WifiMode Get27mb10Mhz (void);
>         > >
>         > > + yans-wifi-phy.h and yans-wifi-phy.cc
>         > >
>         > >   Declare and define the void Configure80211_10Mhz (void)
>         function.
>         > >   Modify the void SetStandard (enum WifiPhyStandard
>         standard) function so
>         > > that the user can also select a 10Mhz channel.
>         > >
>         > > + interference-helper.h and interference-helper.cc
>         > >
>         > >   Declare and define void Configure80211_10MhzParameters
>         (void);
>         > >
>         > > One function that should be modified is
>         > > InterferenceHelper::CalculateTxDuration (uint32_t size,
>         WifiMode
>         > > payloadMode, WifiPreamble preamble) const since it assumes
>         that the symbol
>         > > duration is always 4us (20 Mhz channel). This function
>         should employ a
>         > > symbol duration according to the channel used (10Mhz or
>         20Mhz). One possible
>         > > solution to solve this would be to have a new variable in
>         the class
>         > > InterferenceHelper which allows differentiating the
>         channel used. This
>         > > variable could be of type WifiPhyStandard. In the function
>         Time
>         > > InterferenceHelper::CalculateTxDuration, this new variable
>         would be examined
>         > > and the packet txon duration will be calculated based on
>         the bandwidth
>         > > channel.
>         > >
>         > > Please, I would like to have your comments on this in
>         order to proceed with
>         > > the implementation.
>         > >
>         > > Thank you in advance.
>         > > Best regards,
>         > > Ramon.
>         > >
>         > >
>         --------------------------------------------------------------------------
>         > > Ramon Bauza
>         > > Ubiquitous Wireless Communications Research Laboratory
>         > > Uwicore, http://www.uwicore.umh.es
>         > > Signal Theory and Communications Division
>         > > University Miguel Hernández (Spain)
>         > > Tel: +34 96522 2031
>         > > Fax: +34 96665 8903
>         > >
>         > >
>         ----------------------------------------------------------------------------
>         > >
>        
>        
>
>
>
> --
> --------------------------------------------------------------------------
> Ramon Bauza
> Ubiquitous Wireless Communications Research Laboratory
> Uwicore, http://www.uwicore.umh.es 
> Signal Theory and Communications Division
> University Miguel Hernández (Spain)
> Tel: +34 96522 2031
> Fax: +34 96665 8903
> ----------------------------------------------------------------------------


Re: 802.11 10Mhz Channel

by Pei, Guangyu :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi,

I double-checked the standard. I believe the following settings are correct.

+WifiMac::Configure80211b (void)
+{
+  SetSifs(MicroSeconds(10));
+  SetSlot(MicroSeconds(20));
+  SetEifsNoDifs(MicroSeconds(10+304));
+  SetPifs(MicroSeconds(10+20));
+  SetCtsTimeout(MicroSeconds(10+304+20+GetDefaultMaxPropagationDelay().GetMicroSeconds ()*2));
+  SetAckTimeout(MicroSeconds(10+304+20+GetDefaultMaxPropagationDelay().GetMicroSeconds ()*2));
+}

In particular, I believe 304 is the Ack Tx time = AckSize + PLCP Preamble + PCLP Header = 8*14 + 144 + 48 = 304

Thanks,

Gary

> -----Original Message-----
> From: Ramon Bauza [mailto:monbauza@...]
> Sent: Monday, July 13, 2009 3:22 AM
> To: Mathieu Lacage
> Cc: ns-developers@...
> Subject: Re: [Ns-developers] 802.11 10Mhz Channel
>
> Hi,
>
> Thank you for your comments. Please find the new patch
> modified accordingly to your suggestions. Now, WifiMacHelpers
> remain the same way as in ns-3-dev.
> I have also added the Configure80211b method to configure MAC
> parameters.
> However, I would like someone to review the parameters, since
> I am not very familiar with the 802.11b specification.  As
> Std 802.11-2007 states (page 654), I have considered:
>
> - SlotTime = 20us
> - SIFS = 10us
>
> Ramon.
>
> 2009/7/13 Mathieu Lacage <mathieu.lacage@...>
>
> > hi,
> >
> > The patch overall looks good. A couple of comments:
> >
> > 1) it feels like you could move the
> WifiMacHelper::Configure* methods
> > to the WifiMac base class (that way, you could access
> > WifiMac::GetDefaultMaxPropagationDelay directly)
> > 2) maybe you could add a Standard attribute to WifiMac which is
> > similar to the YansWifiPhy::Standard attribute and does the
> same thing
> > as YansWifiPhy::SetStandard
> > 3) maybe also add a Configure80211a and Configure80211b to WifiMac.
> > Erm, I just realized that we currently have no set of 802.11b MAC
> > parameters for the 802.11b PHY contributed by gary. If you can't
> > bother with finding the right values in the spec, just add an empty
> > Configure80211b method and we will fill them in later.
> >
> > Mathieu
> >
> >
> >
> > On Thu, 2009-07-09 at 19:23 +0200, Ramon Bauza wrote:
> > > Hello,
> > >
> > > I would like to submit for code review the attached patch
> > > implementing
> > half
> > > and quarter-clocked Wifi operation using 5 and 10 Mhz
> channels spacing.
> > We
> > > would be glad to merge this new functionality in the main
> branch if
> > > ns-3 developers think it may be interesting for other people. The
> > > following
> > files
> > > have been modified (ns-3-dev):
> > >
> > > src/devices/wifi/interference-helper.cc
> > > src/devices/wifi/interference-helper.h
> > > src/devices/wifi/wifi-phy.cc
> > > src/devices/wifi/wifi-phy.h
> > > src/devices/wifi/wifi-phy-standard.h
> > > src/devices/wifi/yans-error-rate-model.cc
> > > src/devices/wifi/yans-wifi-phy.cc
> > > src/devices/wifi/yans-wifi-phy.h
> > > src/helper/nqos-wifi-mac-helper.cc
> > > src/helper/nqos-wifi-mac-helper.h
> > > src/helper/qos-wifi-mac-helper.cc
> > > src/helper/qos-wifi-mac-helper.h
> > > src/helper/wifi-helper.cc
> > > src/helper/wifi-helper.h
> > >
> > > Apart from the modifications pointed out in the previous email
> > > posted
> > some
> > > weeks ago, we have also modified some of the wifi
> helpers. In order
> > > not
> > to
> > > make the user set weird values for the MAC parameters (slot,sifs,
> > > etc)
> > from
> > > the script, we have modified the WifiMacHelper
> incorporating two new
> > > functions (Configure80211_10MhzParameters and
> > Configure80211_5MhzParameters)
> > > that allows the user to automatically select the default MAC
> > > parameters
> > for
> > > 5Mhz and 10Mhz channel spacing (we have also moved the function
> > > SetType
> > and
> > > the ObjectFactory m_mac from NqosWifiMacHelper and
> QosWifiMacHelper
> > > to WifiMacHelper).
> > >
> > > Looking forward to your comments.
> > >
> > > Best regards,
> > > Ramon Bauza.
> > >
> > > 2009/5/29 Ramon Bauza <monbauza@...>
> > >
> > > > Hello everyone,
> > > >
> > > > I am Ramon Bauza, a researcher at Miguel Hernandez
> University (Spain).
> > > > Currently, I am involved in the EU FP7 project iTETRIS
> which aims
> > > > at creating an integrated traffic and wireless
> simulation platform
> > > > that
> > will
> > > > allow evaluating traffic management strategies and communication
> > protocols
> > > > in vehicular environments. The iTETRIS project employs SUMO and
> > > > ns-3 as traffic simulation and wireless simulation
> platforms respectively.
> > > >
> > > > Our research group at UMH, it is charge of implementing the
> > > > 802.11p
> > (WAVE)
> > > > standard in ns-3. 802.11p is based on 802.11a, being the channel
> > bandwidth
> > > > and thus also the data rates the main differences between both
> > > > (802.11p
> > uses
> > > > a 10Mhz whereas 802.11a uses 20Mhz). After implementing
> 802.11p in
> > ns-3, we
> > > > will also look into and implement propagation models
> for vehicular
> > > > environments that consider LOS/NLOS visibility conditions,
> > > > vehicle-to-vehicle and vehicle-to-infraestructure
> communications,
> > > > and shadowing and multipath fading effects.
> > > >
> > > > In order to model a 10Mhz channel in ns-3, some
> > > > additions/modifications should be done (some weeks ago
> I posted a
> > > > message in the user mailing
> > list
> > > > regarding this
> > > >
> >
> http://groups.google.com/group/ns-3-users/browse_thread/thread/f27b1dd
> > cf9f1d532#
> > ).
> > > > Apart from 802.11p, I think other 802.11 standards employ 10MHz
> > channels and
> > > > thus probably the modeling of 10Mhz channels would also
> be useful
> > > > for
> > the
> > > > ns-3 community working on 802.11-related topics. In
> fact, the IEEE
> > > > Std
> > > > 802.11TM-2007 standard considers 10Mhz channel spacing
> using OFDM.
> > > > If
> > you
> > > > consider that the modeling of 10Mhz channels may be
> beneficial for
> > other
> > > > users we would be glad to merge the 10Mhz modeling in
> the main branch.
> > > >
> > > > Below, I compile the needed functions and modifications
> we plan to
> > > > introduce in ns-3 at the PHY layer for modeling a 10Mhz channel:
> > > >
> > > > + wifi-phy-standard.h
> > > >
> > > >   Add WIFI_PHY_STANDARD_80211_10Mhz in the enum WifiPhyStandard
> > > >
> > > > + wifi-phy.h and wifi-phy.cc
> > > >
> > > >   Declare and define the following new functions:
> > > >
> > > >     static WifiMode Get3mb10Mhz (void);
> > > >     static WifiMode Get4_5mb10Mhz (void);
> > > >     static WifiMode Get6mb10Mhz (void);
> > > >     static WifiMode Get9mb10Mhz (void);
> > > >     static WifiMode Get12mb10Mhz (void);
> > > >     static WifiMode Get18mb10Mhz (void);
> > > >     static WifiMode Get24mb10Mhz (void);
> > > >     static WifiMode Get27mb10Mhz (void);
> > > >
> > > > + yans-wifi-phy.h and yans-wifi-phy.cc
> > > >
> > > >   Declare and define the void Configure80211_10Mhz
> (void) function.
> > > >   Modify the void SetStandard (enum WifiPhyStandard standard)
> > > > function
> > so
> > > > that the user can also select a 10Mhz channel.
> > > >
> > > > + interference-helper.h and interference-helper.cc
> > > >
> > > >   Declare and define void Configure80211_10MhzParameters (void);
> > > >
> > > > One function that should be modified is
> > > > InterferenceHelper::CalculateTxDuration (uint32_t size,
> WifiMode
> > > > payloadMode, WifiPreamble preamble) const since it assumes that
> > > > the
> > symbol
> > > > duration is always 4us (20 Mhz channel). This function should
> > > > employ a symbol duration according to the channel used
> (10Mhz or
> > > > 20Mhz). One
> > possible
> > > > solution to solve this would be to have a new variable in the
> > > > class InterferenceHelper which allows differentiating
> the channel
> > > > used. This variable could be of type WifiPhyStandard. In the
> > > > function Time InterferenceHelper::CalculateTxDuration, this new
> > > > variable would be
> > examined
> > > > and the packet txon duration will be calculated based on the
> > > > bandwidth channel.
> > > >
> > > > Please, I would like to have your comments on this in order to
> > > > proceed
> > with
> > > > the implementation.
> > > >
> > > > Thank you in advance.
> > > > Best regards,
> > > > Ramon.
> > > >
> > > >
> >
> ----------------------------------------------------------------------
> > ----
> > > > Ramon Bauza
> > > > Ubiquitous Wireless Communications Research Laboratory Uwicore,
> > > > http://www.uwicore.umh.es Signal Theory and Communications
> > > > Division University Miguel Hernández (Spain)
> > > > Tel: +34 96522 2031
> > > > Fax: +34 96665 8903
> > > >
> > > >
> >
> ----------------------------------------------------------------------
> > ------
> > > >
> >
> >
>
>
> --
> --------------------------------------------------------------
> ------------
> Ramon Bauza
> Ubiquitous Wireless Communications Research Laboratory
> Uwicore, http://www.uwicore.umh.es Signal Theory and
> Communications Division University Miguel Hernández (Spain)
> Tel: +34 96522 2031
> Fax: +34 96665 8903
> --------------------------------------------------------------
> --------------
>


Re: 802.11 10Mhz Channel

by Nicola Baldo-3 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Also CwMin should be set to 31 (instead of 15) when using 802.11b.
See IEEE Std. 802.11-2007, section 15.3.3 "DS PHY characteristics".

Nicola

Pei, Guangyu wrote:

> Hi,
>
> I double-checked the standard. I believe the following settings are correct.
>
> +WifiMac::Configure80211b (void)
> +{
> +  SetSifs(MicroSeconds(10));
> +  SetSlot(MicroSeconds(20));
> +  SetEifsNoDifs(MicroSeconds(10+304));
> +  SetPifs(MicroSeconds(10+20));
> +  SetCtsTimeout(MicroSeconds(10+304+20+GetDefaultMaxPropagationDelay().GetMicroSeconds ()*2));
> +  SetAckTimeout(MicroSeconds(10+304+20+GetDefaultMaxPropagationDelay().GetMicroSeconds ()*2));
> +}
>
> In particular, I believe 304 is the Ack Tx time = AckSize + PLCP Preamble + PCLP Header = 8*14 + 144 + 48 = 304
>
> Thanks,
>
> Gary
>
>> -----Original Message-----
>> From: Ramon Bauza [mailto:monbauza@...]
>> Sent: Monday, July 13, 2009 3:22 AM
>> To: Mathieu Lacage
>> Cc: ns-developers@...
>> Subject: Re: [Ns-developers] 802.11 10Mhz Channel
>>
>> Hi,
>>
>> Thank you for your comments. Please find the new patch
>> modified accordingly to your suggestions. Now, WifiMacHelpers
>> remain the same way as in ns-3-dev.
>> I have also added the Configure80211b method to configure MAC
>> parameters.
>> However, I would like someone to review the parameters, since
>> I am not very familiar with the 802.11b specification.  As
>> Std 802.11-2007 states (page 654), I have considered:
>>
>> - SlotTime = 20us
>> - SIFS = 10us
>>
>> Ramon.
>>

Re: 802.11 10Mhz Channel

by Pei, Guangyu :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

It seems to me that CwMin parameter is controlled by DcaTxop. Each MAC
handles its own DcaTxop.  Should we add a virtual function SetCwMin may
be added in WifiMac class? For non-QoS MACs, it seems that each mac has
only one DcaTxop and it is straightforward to add one. For QoS  MAC, it
seems that only beacon Dca needs to be set. Does this sound ok?

Gary


> -----Original Message-----
> From: Nicola Baldo [mailto:nbaldo@...]
> Sent: Thursday, July 16, 2009 9:03 AM
> To: ns-developers
> Subject: Re: [Ns-developers] 802.11 10Mhz Channel
>
> Also CwMin should be set to 31 (instead of 15) when using 802.11b.
> See IEEE Std. 802.11-2007, section 15.3.3 "DS PHY characteristics".
>
> Nicola
>
> Pei, Guangyu wrote:
> > Hi,
> >
> > I double-checked the standard. I believe the following
> settings are correct.
> >
> > +WifiMac::Configure80211b (void)
> > +{
> > +  SetSifs(MicroSeconds(10));
> > +  SetSlot(MicroSeconds(20));
> > +  SetEifsNoDifs(MicroSeconds(10+304));
> > +  SetPifs(MicroSeconds(10+20));
> > +  
> >
> +SetCtsTimeout(MicroSeconds(10+304+20+GetDefaultMaxPropagationDelay().
> > +GetMicroSeconds ()*2));
> > +  
> >
> +SetAckTimeout(MicroSeconds(10+304+20+GetDefaultMaxPropagationDelay().
> > +GetMicroSeconds ()*2)); }
> >
> > In particular, I believe 304 is the Ack Tx time = AckSize + PLCP
> > Preamble + PCLP Header = 8*14 + 144 + 48 = 304
> >
> > Thanks,
> >
> > Gary
> >
> >> -----Original Message-----
> >> From: Ramon Bauza [mailto:monbauza@...]
> >> Sent: Monday, July 13, 2009 3:22 AM
> >> To: Mathieu Lacage
> >> Cc: ns-developers@...
> >> Subject: Re: [Ns-developers] 802.11 10Mhz Channel
> >>
> >> Hi,
> >>
> >> Thank you for your comments. Please find the new patch modified
> >> accordingly to your suggestions. Now, WifiMacHelpers
> remain the same
> >> way as in ns-3-dev.
> >> I have also added the Configure80211b method to configure MAC
> >> parameters.
> >> However, I would like someone to review the parameters, since I am
> >> not very familiar with the 802.11b specification.  As Std
> 802.11-2007
> >> states (page 654), I have considered:
> >>
> >> - SlotTime = 20us
> >> - SIFS = 10us
> >>
> >> Ramon.
> >>
>


Re: 802.11 10Mhz Channel

by basim :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

hi all

CwMin parameter has to do nothing with DcaTxop. In QoS enabled MAC, each
queue handles its own DcaTxop independently.

regards
B

On Thu, Jul 16, 2009 at 11:23 PM, Pei, Guangyu <Guangyu.Pei@...>wrote:

> It seems to me that CwMin parameter is controlled by DcaTxop. Each MAC
> handles its own DcaTxop.  Should we add a virtual function SetCwMin may
> be added in WifiMac class? For non-QoS MACs, it seems that each mac has
> only one DcaTxop and it is straightforward to add one. For QoS  MAC, it
> seems that only beacon Dca needs to be set. Does this sound ok?
>
> Gary
>
>
> > -----Original Message-----
> > From: Nicola Baldo [mailto:nbaldo@...]
> > Sent: Thursday, July 16, 2009 9:03 AM
> > To: ns-developers
> > Subject: Re: [Ns-developers] 802.11 10Mhz Channel
> >
> > Also CwMin should be set to 31 (instead of 15) when using 802.11b.
> > See IEEE Std. 802.11-2007, section 15.3.3 "DS PHY characteristics".
> >
> > Nicola
> >
> > Pei, Guangyu wrote:
> > > Hi,
> > >
> > > I double-checked the standard. I believe the following
> > settings are correct.
> > >
> > > +WifiMac::Configure80211b (void)
> > > +{
> > > +  SetSifs(MicroSeconds(10));
> > > +  SetSlot(MicroSeconds(20));
> > > +  SetEifsNoDifs(MicroSeconds(10+304));
> > > +  SetPifs(MicroSeconds(10+20));
> > > +
> > >
> > +SetCtsTimeout(MicroSeconds(10+304+20+GetDefaultMaxPropagationDelay().
> > > +GetMicroSeconds ()*2));
> > > +
> > >
> > +SetAckTimeout(MicroSeconds(10+304+20+GetDefaultMaxPropagationDelay().
> > > +GetMicroSeconds ()*2)); }
> > >
> > > In particular, I believe 304 is the Ack Tx time = AckSize + PLCP
> > > Preamble + PCLP Header = 8*14 + 144 + 48 = 304
> > >
> > > Thanks,
> > >
> > > Gary
> > >
> > >> -----Original Message-----
> > >> From: Ramon Bauza [mailto:monbauza@...]
> > >> Sent: Monday, July 13, 2009 3:22 AM
> > >> To: Mathieu Lacage
> > >> Cc: ns-developers@...
> > >> Subject: Re: [Ns-developers] 802.11 10Mhz Channel
> > >>
> > >> Hi,
> > >>
> > >> Thank you for your comments. Please find the new patch modified
> > >> accordingly to your suggestions. Now, WifiMacHelpers
> > remain the same
> > >> way as in ns-3-dev.
> > >> I have also added the Configure80211b method to configure MAC
> > >> parameters.
> > >> However, I would like someone to review the parameters, since I am
> > >> not very familiar with the 802.11b specification.  As Std
> > 802.11-2007
> > >> states (page 654), I have considered:
> > >>
> > >> - SlotTime = 20us
> > >> - SIFS = 10us
> > >>
> > >> Ramon.
> > >>
> >
>
>

Re: 802.11 10Mhz Channel

by Pei, Guangyu :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi,
Here is what I see in DcaTxop:
 
 98 TypeId
 99 DcaTxop::GetTypeId (void)
100 {
101   static TypeId tid = TypeId ("ns3::DcaTxop")
102     .SetParent<Object> ()
103     .AddConstructor<DcaTxop> ()
104     .AddAttribute ("MinCw", "The minimum value of the contention
window.",
105                    UintegerValue (15),
106                    MakeUintegerAccessor (&DcaTxop::SetMinCw,
107                                          &DcaTxop::GetMinCw),
108                    MakeUintegerChecker<uint32_t> ())
109     .AddAttribute ("MaxCw", "The maximum value of the contention
window.",
110                    UintegerValue (1023),
111                    MakeUintegerAccessor (&DcaTxop::SetMaxCw,
112                                          &DcaTxop::GetMaxCw),
113                    MakeUintegerChecker<uint32_t> ())
114     .AddAttribute ("Aifsn", "The AIFSN: the default value conforms
to simple DCA.",
115                    UintegerValue (2),
116                    MakeUintegerAccessor (&DcaTxop::SetAifsn,
117                                          &DcaTxop::GetAifsn),
118                    MakeUintegerChecker<uint32_t> ())
119     ;
120   return tid;
121 }
122

The default value of 15 was set at line 105. Why do you think that CwWin
has nothing to do with DcaTxop?
 
Gary

 


________________________________

        From: Basim Javed [mailto:basimjaved@...]
        Sent: Thursday, July 16, 2009 3:17 PM
        To: Pei, Guangyu
        Cc: Nicola Baldo; ns-developers
        Subject: Re: [Ns-developers] 802.11 10Mhz Channel
       
       
        hi all
       
        CwMin parameter has to do nothing with DcaTxop. In QoS enabled
MAC, each queue handles its own DcaTxop independently.
       
        regards
        B
       
       
        On Thu, Jul 16, 2009 at 11:23 PM, Pei, Guangyu
<Guangyu.Pei@...> wrote:
       

                It seems to me that CwMin parameter is controlled by
DcaTxop. Each MAC
                handles its own DcaTxop.  Should we add a virtual
function SetCwMin may
                be added in WifiMac class? For non-QoS MACs, it seems
that each mac has
                only one DcaTxop and it is straightforward to add one.
For QoS  MAC, it
                seems that only beacon Dca needs to be set. Does this
sound ok?
               
                Gary
               


                > -----Original Message-----
                > From: Nicola Baldo [mailto:nbaldo@...]
                > Sent: Thursday, July 16, 2009 9:03 AM
                > To: ns-developers
                > Subject: Re: [Ns-developers] 802.11 10Mhz Channel
                >
                > Also CwMin should be set to 31 (instead of 15) when
using 802.11b.
                > See IEEE Std. 802.11-2007, section 15.3.3 "DS PHY
characteristics".
                >
                > Nicola
                >
                > Pei, Guangyu wrote:
                > > Hi,
                > >
                > > I double-checked the standard. I believe the
following
                > settings are correct.
                > >
                > > +WifiMac::Configure80211b (void)
                > > +{
                > > +  SetSifs(MicroSeconds(10));
                > > +  SetSlot(MicroSeconds(20));
                > > +  SetEifsNoDifs(MicroSeconds(10+304));
                > > +  SetPifs(MicroSeconds(10+20));
                > > +
                > >
                >
+SetCtsTimeout(MicroSeconds(10+304+20+GetDefaultMaxPropagationDelay().
                > > +GetMicroSeconds ()*2));
                > > +
                > >
                >
+SetAckTimeout(MicroSeconds(10+304+20+GetDefaultMaxPropagationDelay().
                > > +GetMicroSeconds ()*2)); }
                > >
                > > In particular, I believe 304 is the Ack Tx time =
AckSize + PLCP
                > > Preamble + PCLP Header = 8*14 + 144 + 48 = 304
                > >
                > > Thanks,
                > >
                > > Gary
                > >
                > >> -----Original Message-----
                > >> From: Ramon Bauza [mailto:monbauza@...]
                > >> Sent: Monday, July 13, 2009 3:22 AM
                > >> To: Mathieu Lacage
                > >> Cc: ns-developers@...
                > >> Subject: Re: [Ns-developers] 802.11 10Mhz Channel
                > >>
                > >> Hi,
                > >>
                > >> Thank you for your comments. Please find the new
patch modified
                > >> accordingly to your suggestions. Now,
WifiMacHelpers
                > remain the same
                > >> way as in ns-3-dev.
                > >> I have also added the Configure80211b method to
configure MAC
                > >> parameters.
                > >> However, I would like someone to review the
parameters, since I am
                > >> not very familiar with the 802.11b specification.
As Std
                > 802.11-2007
                > >> states (page 654), I have considered:
                > >>
                > >> - SlotTime = 20us
                > >> - SIFS = 10us
                > >>
                > >> Ramon.
                > >>
                >
               
               



Re: 802.11 10Mhz Channel

by Mathieu Lacage :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

1) you can't add a SetCwMin method on WifiMac because there can be more
than one DcaTxop per WifiMac and they should not have the same CwMin.

2) The DcaTxop parameters are initialized in the associated helpers in
src/helper. See QosWifiMacHelper::Default for example.

I don't have any bright idea right now of how this should be dealt with
and what we could do to make this both 'automatic' and flexible to do
something different. Ideas welcome.

Mathieu

On Thu, 2009-07-16 at 16:59 -0700, Pei, Guangyu wrote:

> Hi,
> Here is what I see in DcaTxop:
>  
>  98 TypeId
>  99 DcaTxop::GetTypeId (void)
> 100 {
> 101   static TypeId tid = TypeId ("ns3::DcaTxop")
> 102     .SetParent<Object> ()
> 103     .AddConstructor<DcaTxop> ()
> 104     .AddAttribute ("MinCw", "The minimum value of the contention
> window.",
> 105                    UintegerValue (15),
> 106                    MakeUintegerAccessor (&DcaTxop::SetMinCw,
> 107                                          &DcaTxop::GetMinCw),
> 108                    MakeUintegerChecker<uint32_t> ())
> 109     .AddAttribute ("MaxCw", "The maximum value of the contention
> window.",
> 110                    UintegerValue (1023),
> 111                    MakeUintegerAccessor (&DcaTxop::SetMaxCw,
> 112                                          &DcaTxop::GetMaxCw),
> 113                    MakeUintegerChecker<uint32_t> ())
> 114     .AddAttribute ("Aifsn", "The AIFSN: the default value conforms
> to simple DCA.",
> 115                    UintegerValue (2),
> 116                    MakeUintegerAccessor (&DcaTxop::SetAifsn,
> 117                                          &DcaTxop::GetAifsn),
> 118                    MakeUintegerChecker<uint32_t> ())
> 119     ;
> 120   return tid;
> 121 }
> 122
>
> The default value of 15 was set at line 105. Why do you think that CwWin
> has nothing to do with DcaTxop?
>  
> Gary
>
>  
>
>
> ________________________________
>
> From: Basim Javed [mailto:basimjaved@...]
> Sent: Thursday, July 16, 2009 3:17 PM
> To: Pei, Guangyu
> Cc: Nicola Baldo; ns-developers
> Subject: Re: [Ns-developers] 802.11 10Mhz Channel
>
>
> hi all
>
> CwMin parameter has to do nothing with DcaTxop. In QoS enabled
> MAC, each queue handles its own DcaTxop independently.
>
> regards
> B
>
>
> On Thu, Jul 16, 2009 at 11:23 PM, Pei, Guangyu
> <Guangyu.Pei@...> wrote:
>
>
> It seems to me that CwMin parameter is controlled by
> DcaTxop. Each MAC
> handles its own DcaTxop.  Should we add a virtual
> function SetCwMin may
> be added in WifiMac class? For non-QoS MACs, it seems
> that each mac has
> only one DcaTxop and it is straightforward to add one.
> For QoS  MAC, it
> seems that only beacon Dca needs to be set. Does this
> sound ok?
>
> Gary
>
>
>
> > -----Original Message-----
> > From: Nicola Baldo [mailto:nbaldo@...]
> > Sent: Thursday, July 16, 2009 9:03 AM
> > To: ns-developers
> > Subject: Re: [Ns-developers] 802.11 10Mhz Channel
> >
> > Also CwMin should be set to 31 (instead of 15) when
> using 802.11b.
> > See IEEE Std. 802.11-2007, section 15.3.3 "DS PHY
> characteristics".
> >
> > Nicola
> >
> > Pei, Guangyu wrote:
> > > Hi,
> > >
> > > I double-checked the standard. I believe the
> following
> > settings are correct.
> > >
> > > +WifiMac::Configure80211b (void)
> > > +{
> > > +  SetSifs(MicroSeconds(10));
> > > +  SetSlot(MicroSeconds(20));
> > > +  SetEifsNoDifs(MicroSeconds(10+304));
> > > +  SetPifs(MicroSeconds(10+20));
> > > +
> > >
> >
> +SetCtsTimeout(MicroSeconds(10+304+20+GetDefaultMaxPropagationDelay().
> > > +GetMicroSeconds ()*2));
> > > +
> > >
> >
> +SetAckTimeout(MicroSeconds(10+304+20+GetDefaultMaxPropagationDelay().
> > > +GetMicroSeconds ()*2)); }
> > >
> > > In particular, I believe 304 is the Ack Tx time =
> AckSize + PLCP
> > > Preamble + PCLP Header = 8*14 + 144 + 48 = 304
> > >
> > > Thanks,
> > >
> > > Gary
> > >
> > >> -----Original Message-----
> > >> From: Ramon Bauza [mailto:monbauza@...]
> > >> Sent: Monday, July 13, 2009 3:22 AM
> > >> To: Mathieu Lacage
> > >> Cc: ns-developers@...
> > >> Subject: Re: [Ns-developers] 802.11 10Mhz Channel
> > >>
> > >> Hi,
> > >>
> > >> Thank you for your comments. Please find the new
> patch modified
> > >> accordingly to your suggestions. Now,
> WifiMacHelpers
> > remain the same
> > >> way as in ns-3-dev.
> > >> I have also added the Configure80211b method to
> configure MAC
> > >> parameters.
> > >> However, I would like someone to review the
> parameters, since I am
> > >> not very familiar with the 802.11b specification.
> As Std
> > 802.11-2007
> > >> states (page 654), I have considered:
> > >>
> > >> - SlotTime = 20us
> > >> - SIFS = 10us
> > >>
> > >> Ramon.
> > >>
> >
>
>
>
>


Re: 802.11 10Mhz Channel

by Nicola Baldo-3 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

I filed a bug report about this so that we don't forget this issue.
http://www.nsnam.org/bugzilla/show_bug.cgi?id=641

Nicola


Mathieu Lacage wrote:

> 1) you can't add a SetCwMin method on WifiMac because there can be more
> than one DcaTxop per WifiMac and they should not have the same CwMin.
>
> 2) The DcaTxop parameters are initialized in the associated helpers in
> src/helper. See QosWifiMacHelper::Default for example.
>
> I don't have any bright idea right now of how this should be dealt with
> and what we could do to make this both 'automatic' and flexible to do
> something different. Ideas welcome.
>
> Mathieu
>
> On Thu, 2009-07-16 at 16:59 -0700, Pei, Guangyu wrote:
>> Hi,
>> Here is what I see in DcaTxop:
>>  
>>  98 TypeId
>>  99 DcaTxop::GetTypeId (void)
>> 100 {
>> 101   static TypeId tid = TypeId ("ns3::DcaTxop")
>> 102     .SetParent<Object> ()
>> 103     .AddConstructor<DcaTxop> ()
>> 104     .AddAttribute ("MinCw", "The minimum value of the contention
>> window.",
>> 105                    UintegerValue (15),
>> 106                    MakeUintegerAccessor (&DcaTxop::SetMinCw,
>> 107                                          &DcaTxop::GetMinCw),
>> 108                    MakeUintegerChecker<uint32_t> ())
>> 109     .AddAttribute ("MaxCw", "The maximum value of the contention
>> window.",
>> 110                    UintegerValue (1023),
>> 111                    MakeUintegerAccessor (&DcaTxop::SetMaxCw,
>> 112                                          &DcaTxop::GetMaxCw),
>> 113                    MakeUintegerChecker<uint32_t> ())
>> 114     .AddAttribute ("Aifsn", "The AIFSN: the default value conforms
>> to simple DCA.",
>> 115                    UintegerValue (2),
>> 116                    MakeUintegerAccessor (&DcaTxop::SetAifsn,
>> 117                                          &DcaTxop::GetAifsn),
>> 118                    MakeUintegerChecker<uint32_t> ())
>> 119     ;
>> 120   return tid;
>> 121 }
>> 122
>>
>> The default value of 15 was set at line 105. Why do you think that CwWin
>> has nothing to do with DcaTxop?
>>  
>> Gary
>>
>>  
>>
>>
>> ________________________________
>>
>> From: Basim Javed [mailto:basimjaved@...]
>> Sent: Thursday, July 16, 2009 3:17 PM
>> To: Pei, Guangyu
>> Cc: Nicola Baldo; ns-developers
>> Subject: Re: [Ns-developers] 802.11 10Mhz Channel
>>
>>
>> hi all
>>
>> CwMin parameter has to do nothing with DcaTxop. In QoS enabled
>> MAC, each queue handles its own DcaTxop independently.
>>
>> regards
>> B
>>
>>
>> On Thu, Jul 16, 2009 at 11:23 PM, Pei, Guangyu
>> <Guangyu.Pei@...> wrote:
>>
>>
>> It seems to me that CwMin parameter is controlled by
>> DcaTxop. Each MAC
>> handles its own DcaTxop.  Should we add a virtual
>> function SetCwMin may
>> be added in WifiMac class? For non-QoS MACs, it seems
>> that each mac has
>> only one DcaTxop and it is straightforward to add one.
>> For QoS  MAC, it
>> seems that only beacon Dca needs to be set. Does this
>> sound ok?
>>
>> Gary
>>
>>
>>
>> > -----Original Message-----
>> > From: Nicola Baldo [mailto:nbaldo@...]
>> > Sent: Thursday, July 16, 2009 9:03 AM
>> > To: ns-developers
>> > Subject: Re: [Ns-developers] 802.11 10Mhz Channel
>> >
>> > Also CwMin should be set to 31 (instead of 15) when
>> using 802.11b.
>> > See IEEE Std. 802.11-2007, section 15.3.3 "DS PHY
>> characteristics".
>> >
>> > Nicola
>> >
>> > Pei, Guangyu wrote:
>> > > Hi,
>> > >
>> > > I double-checked the standard. I believe the
>> following
>> > settings are correct.
>> > >
>> > > +WifiMac::Configure80211b (void)
>> > > +{
>> > > +  SetSifs(MicroSeconds(10));
>> > > +  SetSlot(MicroSeconds(20));
>> > > +  SetEifsNoDifs(MicroSeconds(10+304));
>> > > +  SetPifs(MicroSeconds(10+20));
>> > > +
>> > >
>> >
>> +SetCtsTimeout(MicroSeconds(10+304+20+GetDefaultMaxPropagationDelay().
>> > > +GetMicroSeconds ()*2));
>> > > +
>> > >
>> >
>> +SetAckTimeout(MicroSeconds(10+304+20+GetDefaultMaxPropagationDelay().
>> > > +GetMicroSeconds ()*2)); }
>> > >
>> > > In particular, I believe 304 is the Ack Tx time =
>> AckSize + PLCP
>> > > Preamble + PCLP Header = 8*14 + 144 + 48 = 304
>> > >
>> > > Thanks,
>> > >
>> > > Gary
>> > >
>> > >> -----Original Message-----
>> > >> From: Ramon Bauza [mailto:monbauza@...]
>> > >> Sent: Monday, July 13, 2009 3:22 AM
>> > >> To: Mathieu Lacage
>> > >> Cc: ns-developers@...
>> > >> Subject: Re: [Ns-developers] 802.11 10Mhz Channel
>> > >>
>> > >> Hi,
>> > >>
>> > >> Thank you for your comments. Please find the new
>> patch modified
>> > >> accordingly to your suggestions. Now,
>> WifiMacHelpers
>> > remain the same
>> > >> way as in ns-3-dev.
>> > >> I have also added the Configure80211b method to
>> configure MAC
>> > >> parameters.
>> > >> However, I would like someone to review the
>> parameters, since I am
>> > >> not very familiar with the 802.11b specification.
>> As Std
>> > 802.11-2007
>> > >> states (page 654), I have considered:
>> > >>
>> > >> - SlotTime = 20us
>> > >> - SIFS = 10us
>> > >>
>> > >> Ramon.
>> > >>
>> >
>>
>>
>>
>>

Re: 802.11 10Mhz Channel

by basim :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

hi

I am not sure about this particular implementation in code, but TXOP is an
independent parameter conceptually, from CWmin or Cwmax; so should be
treated accordingly. Maybe its some programming hack.
As per standard, I dont think that TXOP is influenced by a particular
setting of CWmin.
regards


On Fri, Jul 17, 2009 at 1:59 AM, Pei, Guangyu <Guangyu.Pei@...>wrote:

>  Hi,
> Here is what I see in DcaTxop:
>
>  98 TypeId
>  99 DcaTxop::GetTypeId (void)
> 100 {
> 101   static TypeId tid = TypeId ("ns3::DcaTxop")
> 102     .SetParent<Object> ()
> 103     .AddConstructor<DcaTxop> ()
> 104     .AddAttribute ("MinCw", "The minimum value of the contention
> window.",
> 105                    UintegerValue (15),
> 106                    MakeUintegerAccessor (&DcaTxop::SetMinCw,
> 107                                          &DcaTxop::GetMinCw),
> 108                    MakeUintegerChecker<uint32_t> ())
> 109     .AddAttribute ("MaxCw", "The maximum value of the contention
> window.",
> 110                    UintegerValue (1023),
> 111                    MakeUintegerAccessor (&DcaTxop::SetMaxCw,
> 112                                          &DcaTxop::GetMaxCw),
> 113                    MakeUintegerChecker<uint32_t> ())
> 114     .AddAttribute ("Aifsn", "The AIFSN: the default value conforms to
> simple DCA.",
> 115                    UintegerValue (2),
> 116                    MakeUintegerAccessor (&DcaTxop::SetAifsn,
> 117                                          &DcaTxop::GetAifsn),
> 118                    MakeUintegerChecker<uint32_t> ())
> 119     ;
> 120   return tid;
> 121 }
> 122
> The default value of 15 was set at line 105. Why do you think that CwWin
> has nothing to do with DcaTxop?
>
> Gary
>
>
>
>  ------------------------------
> *From:* Basim Javed [mailto:basimjaved@...]
> *Sent:* Thursday, July 16, 2009 3:17 PM
> *To:* Pei, Guangyu
> *Cc:* Nicola Baldo; ns-developers
>
> *Subject:* Re: [Ns-developers] 802.11 10Mhz Channel
>
> hi all
>
> CwMin parameter has to do nothing with DcaTxop. In QoS enabled MAC, each
> queue handles its own DcaTxop independently.
>
> regards
> B
>
> On Thu, Jul 16, 2009 at 11:23 PM, Pei, Guangyu <Guangyu.Pei@...>wrote:
>
>> It seems to me that CwMin parameter is controlled by DcaTxop. Each MAC
>> handles its own DcaTxop.  Should we add a virtual function SetCwMin may
>> be added in WifiMac class? For non-QoS MACs, it seems that each mac has
>> only one DcaTxop and it is straightforward to add one. For QoS  MAC, it
>> seems that only beacon Dca needs to be set. Does this sound ok?
>>
>> Gary
>>
>>
>> > -----Original Message-----
>> > From: Nicola Baldo [mailto:nbaldo@...]
>> > Sent: Thursday, July 16, 2009 9:03 AM
>> > To: ns-developers
>> > Subject: Re: [Ns-developers] 802.11 10Mhz Channel
>> >
>> > Also CwMin should be set to 31 (instead of 15) when using 802.11b.
>> > See IEEE Std. 802.11-2007, section 15.3.3 "DS PHY characteristics".
>> >
>> > Nicola
>> >
>> > Pei, Guangyu wrote:
>> > > Hi,
>> > >
>> > > I double-checked the standard. I believe the following
>> > settings are correct.
>> > >
>> > > +WifiMac::Configure80211b (void)
>> > > +{
>> > > +  SetSifs(MicroSeconds(10));
>> > > +  SetSlot(MicroSeconds(20));
>> > > +  SetEifsNoDifs(MicroSeconds(10+304));
>> > > +  SetPifs(MicroSeconds(10+20));
>> > > +
>> > >
>> > +SetCtsTimeout(MicroSeconds(10+304+20+GetDefaultMaxPropagationDelay().
>> > > +GetMicroSeconds ()*2));
>> > > +
>> > >
>> > +SetAckTimeout(MicroSeconds(10+304+20+GetDefaultMaxPropagationDelay().
>> > > +GetMicroSeconds ()*2)); }
>> > >
>> > > In particular, I believe 304 is the Ack Tx time = AckSize + PLCP
>> > > Preamble + PCLP Header = 8*14 + 144 + 48 = 304
>> > >
>> > > Thanks,
>> > >
>> > > Gary
>> > >
>> > >> -----Original Message-----
>> > >> From: Ramon Bauza [mailto:monbauza@...]
>> > >> Sent: Monday, July 13, 2009 3:22 AM
>> > >> To: Mathieu Lacage
>> > >> Cc: ns-developers@...
>> > >> Subject: Re: [Ns-developers] 802.11 10Mhz Channel
>> > >>
>> > >> Hi,
>> > >>
>> > >> Thank you for your comments. Please find the new patch modified
>> > >> accordingly to your suggestions. Now, WifiMacHelpers
>> > remain the same
>> > >> way as in ns-3-dev.
>> > >> I have also added the Configure80211b method to configure MAC
>> > >> parameters.
>> > >> However, I would like someone to review the parameters, since I am
>> > >> not very familiar with the 802.11b specification.  As Std
>> > 802.11-2007
>> > >> states (page 654), I have considered:
>> > >>
>> > >> - SlotTime = 20us
>> > >> - SIFS = 10us
>> > >>
>> > >> Ramon.
>> > >>
>> >
>>
>>
>