src/wifi/model/rraa-wifi-manager.cc
author Ghada Badawy <gbadawy@gmail.com>
Tue, 13 Aug 2013 22:05:25 -0700
changeset 10139 17a71cd49da3
parent 7385 10beb0e53130
child 10410 4d4eb8097fa3
permissions -rw-r--r--
partial 802.11n support
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
7385
10beb0e53130 standardize emacs c++ mode comments
Vedran Miletić <rivanvx@gmail.com>
parents: 7141
diff changeset
     1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2351
84e79f06621c RRAA implementation.
Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
     2
/*
84e79f06621c RRAA implementation.
Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
     3
 * Copyright (c) 2004,2005,2006 INRIA
84e79f06621c RRAA implementation.
Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
     4
 *
84e79f06621c RRAA implementation.
Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
     6
 * it under the terms of the GNU General Public License version 2 as
2351
84e79f06621c RRAA implementation.
Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
     7
 * published by the Free Software Foundation;
84e79f06621c RRAA implementation.
Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
     8
 *
84e79f06621c RRAA implementation.
Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
84e79f06621c RRAA implementation.
Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
84e79f06621c RRAA implementation.
Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
84e79f06621c RRAA implementation.
Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    12
 * GNU General Public License for more details.
84e79f06621c RRAA implementation.
Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    13
 *
84e79f06621c RRAA implementation.
Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    14
 * You should have received a copy of the GNU General Public License
84e79f06621c RRAA implementation.
Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    15
 * along with this program; if not, write to the Free Software
84e79f06621c RRAA implementation.
Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    16
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
84e79f06621c RRAA implementation.
Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    17
 *
84e79f06621c RRAA implementation.
Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    18
 * Author: Federico Maguolo <maguolof@dei.unipd.it>
84e79f06621c RRAA implementation.
Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    19
 */
84e79f06621c RRAA implementation.
Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    20
2544
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
    21
#include "rraa-wifi-manager.h"
2351
84e79f06621c RRAA implementation.
Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    22
#include "ns3/assert.h"
84e79f06621c RRAA implementation.
Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    23
#include "ns3/log.h"
2544
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
    24
#include "ns3/boolean.h"
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
    25
#include "ns3/double.h"
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
    26
#include "ns3/uinteger.h"
2351
84e79f06621c RRAA implementation.
Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    27
#include "ns3/simulator.h"
84e79f06621c RRAA implementation.
Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    28
10139
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 7385
diff changeset
    29
#define Min(a,b) ((a < b) ? a : b)
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 7385
diff changeset
    30
2544
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
    31
NS_LOG_COMPONENT_DEFINE ("RraaWifiManager");
2351
84e79f06621c RRAA implementation.
Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    32
84e79f06621c RRAA implementation.
Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    33
namespace ns3 {
4350
04bbe6fbdf3a register a correct TypeId
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4210
diff changeset
    34
6065
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
    35
struct RraaWifiRemoteStation : public WifiRemoteStation
2351
84e79f06621c RRAA implementation.
Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    36
{
6065
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
    37
  uint32_t m_counter;
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
    38
  uint32_t m_failed;
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
    39
  uint32_t m_rtsWnd;
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
    40
  uint32_t m_rtsCounter;
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
    41
  Time m_lastReset;
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
    42
  bool m_rtsOn;
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
    43
  bool m_lastFrameFail;
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
    44
  bool m_initialized;
2351
84e79f06621c RRAA implementation.
Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    45
6065
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
    46
  uint32_t m_rate;
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
    47
};
2351
84e79f06621c RRAA implementation.
Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    48
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
    49
NS_OBJECT_ENSURE_REGISTERED (RraaWifiManager);
2351
84e79f06621c RRAA implementation.
Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
    50
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
    51
TypeId
2544
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
    52
RraaWifiManager::GetTypeId (void)
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
    53
{
4350
04bbe6fbdf3a register a correct TypeId
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4210
diff changeset
    54
  static TypeId tid = TypeId ("ns3::RraaWifiManager")
2544
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
    55
    .SetParent<WifiRemoteStationManager> ()
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
    56
    .AddConstructor<RraaWifiManager> ()
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
    57
    .AddAttribute ("Basic",
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
    58
                   "If true the RRAA-BASIC algorithm will be used, otherwise the RRAA wil be used",
2965
4b28e9740e3b get rid of Attribute class. Use AttributeValue subclasses directly.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2784
diff changeset
    59
                   BooleanValue (false),
2544
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
    60
                   MakeBooleanAccessor (&RraaWifiManager::m_basic),
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
    61
                   MakeBooleanChecker ())
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
    62
    .AddAttribute ("Timeout",
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
    63
                   "Timeout for the RRAA BASIC loss estimaton block (s)",
2965
4b28e9740e3b get rid of Attribute class. Use AttributeValue subclasses directly.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2784
diff changeset
    64
                   TimeValue (Seconds (0.05)),
2544
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
    65
                   MakeTimeAccessor (&RraaWifiManager::m_timeout),
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
    66
                   MakeTimeChecker ())
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
    67
    .AddAttribute ("ewndFor54mbps",
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
    68
                   "ewnd parameter for 54 Mbs data mode",
2965
4b28e9740e3b get rid of Attribute class. Use AttributeValue subclasses directly.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2784
diff changeset
    69
                   UintegerValue (40),
2544
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
    70
                   MakeUintegerAccessor (&RraaWifiManager::m_ewndfor54),
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
    71
                   MakeUintegerChecker<uint32_t> ())
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
    72
    .AddAttribute ("ewndFor48mbps",
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
    73
                   "ewnd parameter for 48 Mbs data mode",
2965
4b28e9740e3b get rid of Attribute class. Use AttributeValue subclasses directly.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2784
diff changeset
    74
                   UintegerValue (40),
2544
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
    75
                   MakeUintegerAccessor (&RraaWifiManager::m_ewndfor48),
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
    76
                   MakeUintegerChecker<uint32_t> ())
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
    77
    .AddAttribute ("ewndFor36mbps",
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
    78
                   "ewnd parameter for 36 Mbs data mode",
2965
4b28e9740e3b get rid of Attribute class. Use AttributeValue subclasses directly.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2784
diff changeset
    79
                   UintegerValue (40),
2544
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
    80
                   MakeUintegerAccessor (&RraaWifiManager::m_ewndfor36),
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
    81
                   MakeUintegerChecker<uint32_t> ())
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
    82
    .AddAttribute ("ewndFor24mbps",
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
    83
                   "ewnd parameter for 24 Mbs data mode",
2965
4b28e9740e3b get rid of Attribute class. Use AttributeValue subclasses directly.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2784
diff changeset
    84
                   UintegerValue (40),
2544
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
    85
                   MakeUintegerAccessor (&RraaWifiManager::m_ewndfor24),
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
    86
                   MakeUintegerChecker<uint32_t> ())
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
    87
    .AddAttribute ("ewndFor18mbps",
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
    88
                   "ewnd parameter for 18 Mbs data mode",
2965
4b28e9740e3b get rid of Attribute class. Use AttributeValue subclasses directly.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2784
diff changeset
    89
                   UintegerValue (20),
2544
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
    90
                   MakeUintegerAccessor (&RraaWifiManager::m_ewndfor18),
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
    91
                   MakeUintegerChecker<uint32_t> ())
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
    92
    .AddAttribute ("ewndFor12mbps",
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
    93
                   "ewnd parameter for 12 Mbs data mode",
2965
4b28e9740e3b get rid of Attribute class. Use AttributeValue subclasses directly.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2784
diff changeset
    94
                   UintegerValue (20),
2544
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
    95
                   MakeUintegerAccessor (&RraaWifiManager::m_ewndfor12),
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
    96
                   MakeUintegerChecker<uint32_t> ())
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
    97
    .AddAttribute ("ewndFor9mbps",
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
    98
                   "ewnd parameter for 9 Mbs data mode",
2965
4b28e9740e3b get rid of Attribute class. Use AttributeValue subclasses directly.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2784
diff changeset
    99
                   UintegerValue (10),
2544
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   100
                   MakeUintegerAccessor (&RraaWifiManager::m_ewndfor9),
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   101
                   MakeUintegerChecker<uint32_t> ())
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   102
    .AddAttribute ("ewndFor6mbps",
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   103
                   "ewnd parameter for 6 Mbs data mode",
2965
4b28e9740e3b get rid of Attribute class. Use AttributeValue subclasses directly.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2784
diff changeset
   104
                   UintegerValue (6),
2544
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   105
                   MakeUintegerAccessor (&RraaWifiManager::m_ewndfor6),
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   106
                   MakeUintegerChecker<uint32_t> ())
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   107
    .AddAttribute ("poriFor48mbps",
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   108
                   "Pori parameter for 48 Mbs data mode",
2965
4b28e9740e3b get rid of Attribute class. Use AttributeValue subclasses directly.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2784
diff changeset
   109
                   DoubleValue (0.047),
2544
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   110
                   MakeDoubleAccessor (&RraaWifiManager::m_porifor48),
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   111
                   MakeDoubleChecker<double> ())
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   112
    .AddAttribute ("poriFor36mbps",
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   113
                   "Pori parameter for 36 Mbs data mode",
2965
4b28e9740e3b get rid of Attribute class. Use AttributeValue subclasses directly.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2784
diff changeset
   114
                   DoubleValue (0.115),
2544
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   115
                   MakeDoubleAccessor (&RraaWifiManager::m_porifor36),
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   116
                   MakeDoubleChecker<double> ())
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   117
    .AddAttribute ("poriFor24mbps",
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   118
                   "Pori parameter for 24 Mbs data mode",
2965
4b28e9740e3b get rid of Attribute class. Use AttributeValue subclasses directly.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2784
diff changeset
   119
                   DoubleValue (0.1681),
2544
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   120
                   MakeDoubleAccessor (&RraaWifiManager::m_porifor24),
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   121
                   MakeDoubleChecker<double> ())
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   122
    .AddAttribute ("poriFor18mbps",
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   123
                   "Pori parameter for 18 Mbs data mode",
2965
4b28e9740e3b get rid of Attribute class. Use AttributeValue subclasses directly.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2784
diff changeset
   124
                   DoubleValue (0.1325),
2544
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   125
                   MakeDoubleAccessor (&RraaWifiManager::m_porifor18),
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   126
                   MakeDoubleChecker<double> ())
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   127
    .AddAttribute ("poriFor12mbps",
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   128
                   "Pori parameter for 12 Mbs data mode",
2965
4b28e9740e3b get rid of Attribute class. Use AttributeValue subclasses directly.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2784
diff changeset
   129
                   DoubleValue (0.1861),
2544
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   130
                   MakeDoubleAccessor (&RraaWifiManager::m_porifor12),
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   131
                   MakeDoubleChecker<double> ())
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   132
    .AddAttribute ("poriFor9mbps",
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   133
                   "Pori parameter for 9 Mbs data mode",
2965
4b28e9740e3b get rid of Attribute class. Use AttributeValue subclasses directly.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2784
diff changeset
   134
                   DoubleValue (0.1434),
2544
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   135
                   MakeDoubleAccessor (&RraaWifiManager::m_porifor9),
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   136
                   MakeDoubleChecker<double> ())
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   137
    .AddAttribute ("poriFor6mbps",
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   138
                   "Pori parameter for 6 Mbs data mode",
2965
4b28e9740e3b get rid of Attribute class. Use AttributeValue subclasses directly.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2784
diff changeset
   139
                   DoubleValue (0.5),
2544
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   140
                   MakeDoubleAccessor (&RraaWifiManager::m_porifor6),
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   141
                   MakeDoubleChecker<double> ())
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   142
    .AddAttribute ("pmtlFor54mbps",
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   143
                   "Pmtl parameter for 54 Mbs data mode",
2965
4b28e9740e3b get rid of Attribute class. Use AttributeValue subclasses directly.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2784
diff changeset
   144
                   DoubleValue (0.094),
2544
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   145
                   MakeDoubleAccessor (&RraaWifiManager::m_pmtlfor54),
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   146
                   MakeDoubleChecker<double> ())
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   147
    .AddAttribute ("pmtlFor48mbps",
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   148
                   "Pmtl parameter for 48 Mbs data mode",
2965
4b28e9740e3b get rid of Attribute class. Use AttributeValue subclasses directly.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2784
diff changeset
   149
                   DoubleValue (0.23),
2544
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   150
                   MakeDoubleAccessor (&RraaWifiManager::m_pmtlfor48),
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   151
                   MakeDoubleChecker<double> ())
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   152
    .AddAttribute ("pmtlFor36mbps",
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   153
                   "Pmtl parameter for 36 Mbs data mode",
2965
4b28e9740e3b get rid of Attribute class. Use AttributeValue subclasses directly.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2784
diff changeset
   154
                   DoubleValue (0.3363),
2544
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   155
                   MakeDoubleAccessor (&RraaWifiManager::m_pmtlfor36),
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   156
                   MakeDoubleChecker<double> ())
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   157
    .AddAttribute ("pmtlFor24mbps",
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   158
                   "Pmtl parameter for 24 Mbs data mode",
2965
4b28e9740e3b get rid of Attribute class. Use AttributeValue subclasses directly.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2784
diff changeset
   159
                   DoubleValue (0.265),
2544
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   160
                   MakeDoubleAccessor (&RraaWifiManager::m_pmtlfor24),
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   161
                   MakeDoubleChecker<double> ())
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   162
    .AddAttribute ("pmtlFor18mbps",
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   163
                   "Pmtl parameter for 18 Mbs data mode",
2965
4b28e9740e3b get rid of Attribute class. Use AttributeValue subclasses directly.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2784
diff changeset
   164
                   DoubleValue (0.3722),
2544
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   165
                   MakeDoubleAccessor (&RraaWifiManager::m_pmtlfor18),
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   166
                   MakeDoubleChecker<double> ())
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   167
    .AddAttribute ("pmtlFor12mbps",
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   168
                   "Pmtl parameter for 12 Mbs data mode",
2965
4b28e9740e3b get rid of Attribute class. Use AttributeValue subclasses directly.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2784
diff changeset
   169
                   DoubleValue (0.2868),
2544
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   170
                   MakeDoubleAccessor (&RraaWifiManager::m_pmtlfor12),
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   171
                   MakeDoubleChecker<double> ())
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   172
    .AddAttribute ("pmtlFor9mbps",
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   173
                   "Pmtl parameter for 9 Mbs data mode",
2965
4b28e9740e3b get rid of Attribute class. Use AttributeValue subclasses directly.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2784
diff changeset
   174
                   DoubleValue (0.3932),
2544
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   175
                   MakeDoubleAccessor (&RraaWifiManager::m_pmtlfor9),
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   176
                   MakeDoubleChecker<double> ())
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   177
  ;
2544
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   178
  return tid;
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   179
}
2351
84e79f06621c RRAA implementation.
Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
   180
84e79f06621c RRAA implementation.
Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
   181
2544
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   182
RraaWifiManager::RraaWifiManager ()
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   183
{
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   184
}
2544
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   185
RraaWifiManager::~RraaWifiManager ()
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   186
{
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   187
}
2351
84e79f06621c RRAA implementation.
Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
   188
6065
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   189
2544
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   190
WifiRemoteStation *
6065
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   191
RraaWifiManager::DoCreateStation (void) const
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   192
{
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   193
  RraaWifiRemoteStation *station = new RraaWifiRemoteStation ();
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   194
  station->m_initialized = false;
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   195
  station->m_rtsWnd = 0;
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   196
  station->m_rtsCounter = 0;
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   197
  station->m_rtsOn = false;
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   198
  station->m_lastFrameFail = false;
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   199
  return station;
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   200
}
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   201
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   202
void
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   203
RraaWifiManager::ResetCountersBasic (RraaWifiRemoteStation *station)
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   204
{
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   205
  if (!station->m_initialized)
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   206
    {
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   207
      station->m_rate = GetMaxRate (station);
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   208
      station->m_initialized = true;
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   209
    }
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   210
  station->m_failed = 0;
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   211
  station->m_counter = GetThresholds (station, station->m_rate).ewnd;
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   212
  station->m_lastReset = Simulator::Now ();
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   213
}
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   214
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   215
uint32_t
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   216
RraaWifiManager::GetMaxRate (RraaWifiRemoteStation *station)
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   217
{
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   218
  return GetNSupported (station) - 1;
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   219
}
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   220
uint32_t
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   221
RraaWifiManager::GetMinRate (RraaWifiRemoteStation *station)
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   222
{
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   223
  return 0;
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   224
}
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   225
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   226
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   227
void
6065
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   228
RraaWifiManager::DoReportRtsFailed (WifiRemoteStation *st)
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   229
{
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   230
}
6065
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   231
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   232
void
6065
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   233
RraaWifiManager::DoReportDataFailed (WifiRemoteStation *st)
2351
84e79f06621c RRAA implementation.
Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
   234
{
6065
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   235
  RraaWifiRemoteStation *station = (RraaWifiRemoteStation *) st;
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   236
  station->m_lastFrameFail = true;
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   237
  CheckTimeout (station);
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   238
  station->m_counter--;
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   239
  station->m_failed++;
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   240
  RunBasicAlgorithm (station);
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   241
}
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   242
void
6065
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   243
RraaWifiManager::DoReportRxOk (WifiRemoteStation *st,
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   244
                               double rxSnr, WifiMode txMode)
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   245
{
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   246
}
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   247
void
6065
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   248
RraaWifiManager::DoReportRtsOk (WifiRemoteStation *st,
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   249
                                double ctsSnr, WifiMode ctsMode, double rtsSnr)
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   250
{
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   251
  NS_LOG_DEBUG ("self=" << st << " rts ok");
6065
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   252
}
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   253
void
6065
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   254
RraaWifiManager::DoReportDataOk (WifiRemoteStation *st,
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   255
                                 double ackSnr, WifiMode ackMode, double dataSnr)
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   256
{
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   257
  RraaWifiRemoteStation *station = (RraaWifiRemoteStation *) st;
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   258
  station->m_lastFrameFail = false;
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   259
  CheckTimeout (station);
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   260
  station->m_counter--;
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   261
  RunBasicAlgorithm (station);
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   262
}
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   263
void
6065
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   264
RraaWifiManager::DoReportFinalRtsFailed (WifiRemoteStation *st)
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   265
{
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   266
}
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   267
void
6065
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   268
RraaWifiManager::DoReportFinalDataFailed (WifiRemoteStation *st)
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   269
{
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   270
}
6065
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   271
10139
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 7385
diff changeset
   272
WifiTxVector
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 7385
diff changeset
   273
RraaWifiManager::DoGetDataTxVector (WifiRemoteStation *st,
6065
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   274
                                uint32_t size)
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   275
{
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   276
  RraaWifiRemoteStation *station = (RraaWifiRemoteStation *) st;
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   277
  if (!station->m_initialized)
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   278
    {
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   279
      ResetCountersBasic (station);
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   280
    }
10139
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 7385
diff changeset
   281
  return WifiTxVector (GetSupported (station, station->m_rate), GetDefaultTxPowerLevel (), GetLongRetryCount (station), GetShortGuardInterval (station), Min (GetNumberOfReceiveAntennas (station),GetNumberOfTransmitAntennas()), GetNumberOfTransmitAntennas (station), GetStbc (station));
6065
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   282
}
10139
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 7385
diff changeset
   283
WifiTxVector
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 7385
diff changeset
   284
RraaWifiManager::DoGetRtsTxVector (WifiRemoteStation *st)
6065
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   285
{
10139
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 7385
diff changeset
   286
  return WifiTxVector (GetSupported (st, 0), GetDefaultTxPowerLevel (), GetShortRetryCount (st), GetShortGuardInterval (st), Min (GetNumberOfReceiveAntennas (st),GetNumberOfTransmitAntennas()), GetNumberOfTransmitAntennas (st), GetStbc (st));
2351
84e79f06621c RRAA implementation.
Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
   287
}
84e79f06621c RRAA implementation.
Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
   288
84e79f06621c RRAA implementation.
Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
   289
bool
6065
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   290
RraaWifiManager::DoNeedRts (WifiRemoteStation *st,
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   291
                            Ptr<const Packet> packet, bool normally)
2351
84e79f06621c RRAA implementation.
Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
   292
{
6065
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   293
  RraaWifiRemoteStation *station = (RraaWifiRemoteStation *) st;
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   294
  if (m_basic)
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   295
    {
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   296
      return normally;
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   297
    }
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   298
  ARts (station);
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   299
  return station->m_rtsOn;
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   300
}
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   301
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   302
void
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   303
RraaWifiManager::CheckTimeout (RraaWifiRemoteStation *station)
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   304
{
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   305
  Time d = Simulator::Now () - station->m_lastReset;
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   306
  if (station->m_counter == 0 || d > m_timeout)
6065
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   307
    {
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   308
      ResetCountersBasic (station);
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   309
    }
2351
84e79f06621c RRAA implementation.
Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
   310
}
84e79f06621c RRAA implementation.
Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
   311
6065
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   312
void
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   313
RraaWifiManager::RunBasicAlgorithm (RraaWifiRemoteStation *station)
2351
84e79f06621c RRAA implementation.
Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
   314
{
6065
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   315
  ThresholdsItem thresholds = GetThresholds (station, station->m_rate);
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   316
  double ploss = (double) station->m_failed / (double) thresholds.ewnd;
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   317
  if (station->m_counter == 0
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   318
      || ploss > thresholds.pmtl)
6065
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   319
    {
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   320
      if (station->m_rate > GetMinRate (station)
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   321
          && ploss > thresholds.pmtl)
6065
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   322
        {
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   323
          station->m_rate--;
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   324
        }
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   325
      else if (station->m_rate < GetMaxRate (station)
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   326
               && ploss < thresholds.pori)
6065
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   327
        {
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   328
          station->m_rate++;
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   329
        }
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   330
      ResetCountersBasic (station);
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   331
    }
2351
84e79f06621c RRAA implementation.
Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
   332
}
84e79f06621c RRAA implementation.
Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
   333
6065
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   334
void
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   335
RraaWifiManager::ARts (RraaWifiRemoteStation *station)
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   336
{
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   337
  if (!station->m_rtsOn
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   338
      && station->m_lastFrameFail)
6065
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   339
    {
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   340
      station->m_rtsWnd++;
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   341
      station->m_rtsCounter = station->m_rtsWnd;
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   342
    }
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   343
  else if ((station->m_rtsOn && station->m_lastFrameFail)
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   344
           || (!station->m_rtsOn && !station->m_lastFrameFail))
6065
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   345
    {
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   346
      station->m_rtsWnd = station->m_rtsWnd / 2;
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   347
      station->m_rtsCounter = station->m_rtsWnd;
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   348
    }
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   349
  if (station->m_rtsCounter > 0)
6065
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   350
    {
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   351
      station->m_rtsOn = true;
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   352
      station->m_rtsCounter--;
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   353
    }
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   354
  else
6065
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   355
    {
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   356
      station->m_rtsOn = false;
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   357
    }
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   358
}
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   359
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   360
struct RraaWifiManager::ThresholdsItem
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   361
RraaWifiManager::GetThresholds (RraaWifiRemoteStation *station,
6065
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   362
                                uint32_t rate) const
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   363
{
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   364
  WifiMode mode = GetSupported (station, rate);
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   365
  return GetThresholds (mode);
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   366
}
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   367
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   368
struct RraaWifiManager::ThresholdsItem
2544
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   369
RraaWifiManager::GetThresholds (WifiMode mode) const
2351
84e79f06621c RRAA implementation.
Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
   370
{
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   371
  switch (mode.GetDataRate () / 1000000)
6065
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   372
    {
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   373
    case 54:
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   374
      {
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   375
        ThresholdsItem mode54 = {
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   376
          54000000,
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   377
          0.0,
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   378
          m_pmtlfor54,
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   379
          m_ewndfor54
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   380
        };
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   381
        return mode54;
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   382
      } break;
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   383
    case 48:
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   384
      {
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   385
        ThresholdsItem mode48 = {
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   386
          48000000,
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   387
          m_porifor48,
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   388
          m_pmtlfor48,
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   389
          m_ewndfor48
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   390
        };
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   391
        return mode48;
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   392
      } break;
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   393
    case 36:
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   394
      {
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   395
        ThresholdsItem mode36 = {
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   396
          36000000,
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   397
          m_porifor36,
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   398
          m_pmtlfor36,
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   399
          m_ewndfor36
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   400
        };
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   401
        return mode36;
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   402
      } break;
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   403
    case 24:
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   404
      {
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   405
        ThresholdsItem mode24 = {
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   406
          24000000,
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   407
          m_porifor24,
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   408
          m_pmtlfor24,
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   409
          m_ewndfor24
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   410
        };
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   411
        return mode24;
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   412
      } break;
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   413
    case 18:
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   414
      {
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   415
        ThresholdsItem mode18 = {
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   416
          18000000,
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   417
          m_porifor18,
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   418
          m_pmtlfor18,
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   419
          m_ewndfor18
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   420
        };
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   421
        return mode18;
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   422
      } break;
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   423
    case 12:
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   424
      {
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   425
        ThresholdsItem mode12 = {
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   426
          12000000,
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   427
          m_porifor12,
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   428
          m_pmtlfor12,
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   429
          m_ewndfor12
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   430
        };
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   431
        return mode12;
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   432
      } break;
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   433
    case 9:
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   434
      {
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   435
        ThresholdsItem mode9 =  {
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   436
          9000000,
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   437
          m_porifor9,
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   438
          m_pmtlfor9,
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   439
          m_ewndfor9
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   440
        };
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   441
        return mode9;
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   442
      } break;
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   443
    case 6:
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   444
      {
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   445
        ThresholdsItem mode6 =  {
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   446
          6000000,
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   447
          m_porifor6,
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   448
          1.0,
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   449
          m_ewndfor6
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   450
        };
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   451
        return mode6;
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   452
      } break;
6065
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   453
    }
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   454
  NS_ASSERT_MSG (false, "Thresholds for an unknown mode are asked (" << mode << ")");
2544
2e6e1a6e0d94 port last rate control algorithms
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2351
diff changeset
   455
  return ThresholdsItem ();
2351
84e79f06621c RRAA implementation.
Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
   456
}
84e79f06621c RRAA implementation.
Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
   457
6065
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   458
bool
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   459
RraaWifiManager::IsLowLatency (void) const
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   460
{
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   461
  return true;
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   462
}
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4350
diff changeset
   463
2351
84e79f06621c RRAA implementation.
Federico Maguolo <maguolof@dei.unipd.it>
parents:
diff changeset
   464
} // namespace ns3