src/wifi/model/sta-wifi-mac.cc
author Vedran Miletić <rivanvx@gmail.com>
Tue, 02 Aug 2011 17:42:33 -0400
changeset 7385 10beb0e53130
parent 7141 072fb225b714
child 10139 17a71cd49da3
permissions -rw-r--r--
standardize emacs c++ mode comments
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; -*- */
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
     2
/*
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
     3
 * Copyright (c) 2006, 2009 INRIA
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
     4
 * Copyright (c) 2009 MIRKO BANCHI
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
     5
 *
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
     6
 * This program is free software; you can redistribute it and/or modify
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
     7
 * it under the terms of the GNU General Public License version 2 as
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
     8
 * published by the Free Software Foundation;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
     9
 *
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    10
 * This program is distributed in the hope that it will be useful,
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    13
 * GNU General Public License for more details.
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    14
 *
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    16
 * along with this program; if not, write to the Free Software
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    17
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    18
 *
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    19
 * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    20
 * Author: Mirko Banchi <mk.banchi@gmail.com>
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    21
 */
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
    22
#include "sta-wifi-mac.h"
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
    23
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    24
#include "ns3/log.h"
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    25
#include "ns3/simulator.h"
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    26
#include "ns3/string.h"
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    27
#include "ns3/pointer.h"
6065
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 5819
diff changeset
    28
#include "ns3/boolean.h"
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
    29
#include "ns3/trace-source-accessor.h"
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    30
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    31
#include "qos-tag.h"
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    32
#include "mac-low.h"
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    33
#include "dcf-manager.h"
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    34
#include "mac-rx-middle.h"
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    35
#include "mac-tx-middle.h"
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    36
#include "wifi-mac-header.h"
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    37
#include "msdu-aggregator.h"
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    38
#include "amsdu-subframe-header.h"
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    39
#include "mgt-headers.h"
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    40
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
    41
NS_LOG_COMPONENT_DEFINE ("StaWifiMac");
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
    42
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
    43
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
    44
/*
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
    45
 * The state machine for this STA is:
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
    46
 --------------                                          -----------
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
    47
 | Associated |   <--------------------      ------->    | Refused |
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
    48
 --------------                        \    /            -----------
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
    49
    \                                   \  /
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
    50
     \    -----------------     -----------------------------
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
    51
      \-> | Beacon Missed | --> | Wait Association Response |
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
    52
          -----------------     -----------------------------
6674
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
    53
                \                       ^
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
    54
                 \                      |
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
    55
                  \    -----------------------
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
    56
                   \-> | Wait Probe Response |
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
    57
                       -----------------------
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
    58
 */
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    59
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    60
namespace ns3 {
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    61
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
    62
NS_OBJECT_ENSURE_REGISTERED (StaWifiMac);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    63
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    64
TypeId
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
    65
StaWifiMac::GetTypeId (void)
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    66
{
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
    67
  static TypeId tid = TypeId ("ns3::StaWifiMac")
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
    68
    .SetParent<RegularWifiMac> ()
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
    69
    .AddConstructor<StaWifiMac> ()
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    70
    .AddAttribute ("ProbeRequestTimeout", "The interval between two consecutive probe request attempts.",
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    71
                   TimeValue (Seconds (0.05)),
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
    72
                   MakeTimeAccessor (&StaWifiMac::m_probeRequestTimeout),
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    73
                   MakeTimeChecker ())
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    74
    .AddAttribute ("AssocRequestTimeout", "The interval between two consecutive assoc request attempts.",
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    75
                   TimeValue (Seconds (0.5)),
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
    76
                   MakeTimeAccessor (&StaWifiMac::m_assocRequestTimeout),
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    77
                   MakeTimeChecker ())
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
    78
    .AddAttribute ("MaxMissedBeacons",
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    79
                   "Number of beacons which much be consecutively missed before "
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    80
                   "we attempt to restart association.",
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    81
                   UintegerValue (10),
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
    82
                   MakeUintegerAccessor (&StaWifiMac::m_maxMissedBeacons),
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    83
                   MakeUintegerChecker<uint32_t> ())
6993
9f51576c4d7b fixed ActiveProbing for StaWifiMac (bug 1060)
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
    84
    .AddAttribute ("ActiveProbing", "If true, we send probe requests. If false, we don't. NOTE: if more than one STA in your simulation is using active probing, you should enable it at a different simulation time for each STA, otherwise all the STAs will start sending probes at the same time resulting in collisions. See bug 1060 for more info.",
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    85
                   BooleanValue (false),
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
    86
                   MakeBooleanAccessor (&StaWifiMac::SetActiveProbing),
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    87
                   MakeBooleanChecker ())
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
    88
    .AddTraceSource ("Assoc", "Associated with an access point.",
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
    89
                     MakeTraceSourceAccessor (&StaWifiMac::m_assocLogger))
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
    90
    .AddTraceSource ("DeAssoc", "Association with an access point lost.",
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
    91
                     MakeTraceSourceAccessor (&StaWifiMac::m_deAssocLogger))
6674
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
    92
  ;
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    93
  return tid;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    94
}
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    95
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
    96
StaWifiMac::StaWifiMac ()
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    97
  : m_state (BEACON_MISSED),
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    98
    m_probeRequestEvent (),
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    99
    m_assocRequestEvent (),
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   100
    m_beaconWatchdogEnd (Seconds (0.0))
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   101
{
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   102
  NS_LOG_FUNCTION (this);
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   103
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   104
  // Let the lower layers know that we are acting as a non-AP STA in
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   105
  // an infrastructure BSS.
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   106
  SetTypeOfStation (STA);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   107
}
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   108
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   109
StaWifiMac::~StaWifiMac ()
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   110
{
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   111
  NS_LOG_FUNCTION (this);
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   112
}
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   113
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   114
void
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   115
StaWifiMac::SetMaxMissedBeacons (uint32_t missed)
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   116
{
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   117
  NS_LOG_FUNCTION (this << missed);
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   118
  m_maxMissedBeacons = missed;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   119
}
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   120
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   121
void
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   122
StaWifiMac::SetProbeRequestTimeout (Time timeout)
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   123
{
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   124
  NS_LOG_FUNCTION (this << timeout);
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   125
  m_probeRequestTimeout = timeout;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   126
}
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   127
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   128
void
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   129
StaWifiMac::SetAssocRequestTimeout (Time timeout)
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   130
{
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   131
  NS_LOG_FUNCTION (this << timeout);
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   132
  m_assocRequestTimeout = timeout;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   133
}
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   134
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   135
void
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   136
StaWifiMac::StartActiveAssociation (void)
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   137
{
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   138
  NS_LOG_FUNCTION (this);
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   139
  TryToEnsureAssociated ();
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   140
}
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   141
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   142
void
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   143
StaWifiMac::SetActiveProbing (bool enable)
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   144
{
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   145
  NS_LOG_FUNCTION (this << enable);
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   146
  if (enable)
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   147
    {
6993
9f51576c4d7b fixed ActiveProbing for StaWifiMac (bug 1060)
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   148
      Simulator::ScheduleNow (&StaWifiMac::TryToEnsureAssociated, this);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   149
    }
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   150
  else
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   151
    {
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   152
      m_probeRequestEvent.Cancel ();
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   153
    }
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   154
}
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   155
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   156
void
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   157
StaWifiMac::SendProbeRequest (void)
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   158
{
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   159
  NS_LOG_FUNCTION (this);
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   160
  WifiMacHeader hdr;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   161
  hdr.SetProbeReq ();
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   162
  hdr.SetAddr1 (Mac48Address::GetBroadcast ());
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   163
  hdr.SetAddr2 (GetAddress ());
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   164
  hdr.SetAddr3 (Mac48Address::GetBroadcast ());
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   165
  hdr.SetDsNotFrom ();
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   166
  hdr.SetDsNotTo ();
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   167
  Ptr<Packet> packet = Create<Packet> ();
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   168
  MgtProbeRequestHeader probe;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   169
  probe.SetSsid (GetSsid ());
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   170
  probe.SetSupportedRates (GetSupportedRates ());
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   171
  packet->AddHeader (probe);
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   172
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   173
  // The standard is not clear on the correct queue for management
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   174
  // frames if we are a QoS AP. The approach taken here is to always
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   175
  // use the DCF for these regardless of whether we have a QoS
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   176
  // association or not.
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   177
  m_dca->Queue (packet, hdr);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   178
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   179
  m_probeRequestEvent = Simulator::Schedule (m_probeRequestTimeout,
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   180
                                             &StaWifiMac::ProbeRequestTimeout, this);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   181
}
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   182
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   183
void
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   184
StaWifiMac::SendAssociationRequest (void)
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   185
{
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   186
  NS_LOG_FUNCTION (this << GetBssid ());
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   187
  WifiMacHeader hdr;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   188
  hdr.SetAssocReq ();
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   189
  hdr.SetAddr1 (GetBssid ());
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   190
  hdr.SetAddr2 (GetAddress ());
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   191
  hdr.SetAddr3 (GetBssid ());
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   192
  hdr.SetDsNotFrom ();
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   193
  hdr.SetDsNotTo ();
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   194
  Ptr<Packet> packet = Create<Packet> ();
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   195
  MgtAssocRequestHeader assoc;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   196
  assoc.SetSsid (GetSsid ());
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   197
  assoc.SetSupportedRates (GetSupportedRates ());
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   198
  packet->AddHeader (assoc);
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   199
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   200
  // The standard is not clear on the correct queue for management
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   201
  // frames if we are a QoS AP. The approach taken here is to always
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   202
  // use the DCF for these regardless of whether we have a QoS
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   203
  // association or not.
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   204
  m_dca->Queue (packet, hdr);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   205
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   206
  m_assocRequestEvent = Simulator::Schedule (m_assocRequestTimeout,
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   207
                                             &StaWifiMac::AssocRequestTimeout, this);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   208
}
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   209
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   210
void
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   211
StaWifiMac::TryToEnsureAssociated (void)
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   212
{
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   213
  NS_LOG_FUNCTION (this);
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6993
diff changeset
   214
  switch (m_state)
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6993
diff changeset
   215
    {
6674
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   216
    case ASSOCIATED:
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   217
      return;
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   218
      break;
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   219
    case WAIT_PROBE_RESP:
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   220
      /* we have sent a probe request earlier so we
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   221
         do not need to re-send a probe request immediately.
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   222
         We just need to wait until probe-request-timeout
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   223
         or until we get a probe response
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   224
       */
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   225
      break;
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   226
    case BEACON_MISSED:
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   227
      /* we were associated but we missed a bunch of beacons
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   228
       * so we should assume we are not associated anymore.
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   229
       * We try to initiate a probe request now.
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   230
       */
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   231
      m_linkDown ();
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   232
      SetState (WAIT_PROBE_RESP);
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   233
      SendProbeRequest ();
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   234
      break;
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   235
    case WAIT_ASSOC_RESP:
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   236
      /* we have sent an assoc request so we do not need to
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   237
         re-send an assoc request right now. We just need to
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   238
         wait until either assoc-request-timeout or until
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   239
         we get an assoc response.
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   240
       */
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   241
      break;
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   242
    case REFUSED:
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   243
      /* we have sent an assoc request and received a negative
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   244
         assoc resp. We wait until someone restarts an
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   245
         association with a given ssid.
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   246
       */
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   247
      break;
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   248
    }
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   249
}
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   250
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   251
void
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   252
StaWifiMac::AssocRequestTimeout (void)
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   253
{
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   254
  NS_LOG_FUNCTION (this);
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   255
  SetState (WAIT_ASSOC_RESP);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   256
  SendAssociationRequest ();
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   257
}
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   258
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   259
void
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   260
StaWifiMac::ProbeRequestTimeout (void)
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   261
{
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   262
  NS_LOG_FUNCTION (this);
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   263
  SetState (WAIT_PROBE_RESP);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   264
  SendProbeRequest ();
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   265
}
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   266
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   267
void
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   268
StaWifiMac::MissedBeacons (void)
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   269
{
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   270
  NS_LOG_FUNCTION (this);
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   271
  if (m_beaconWatchdogEnd > Simulator::Now ())
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   272
    {
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   273
      m_beaconWatchdog = Simulator::Schedule (m_beaconWatchdogEnd - Simulator::Now (),
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   274
                                              &StaWifiMac::MissedBeacons, this);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   275
      return;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   276
    }
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   277
  NS_LOG_DEBUG ("beacon missed");
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   278
  SetState (BEACON_MISSED);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   279
  TryToEnsureAssociated ();
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   280
}
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   281
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   282
void
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   283
StaWifiMac::RestartBeaconWatchdog (Time delay)
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   284
{
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   285
  NS_LOG_FUNCTION (this << delay);
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   286
  m_beaconWatchdogEnd = std::max (Simulator::Now () + delay, m_beaconWatchdogEnd);
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6993
diff changeset
   287
  if (Simulator::GetDelayLeft (m_beaconWatchdog) < delay
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6993
diff changeset
   288
      && m_beaconWatchdog.IsExpired ())
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   289
    {
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   290
      NS_LOG_DEBUG ("really restart watchdog.");
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   291
      m_beaconWatchdog = Simulator::Schedule (delay, &StaWifiMac::MissedBeacons, this);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   292
    }
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   293
}
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   294
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   295
bool
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   296
StaWifiMac::IsAssociated (void) const
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   297
{
4609
6ec902d6af68 bug 605: Nqsta MAC should ignore beacons SSIDs while waiting for association response
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 4461
diff changeset
   298
  return m_state == ASSOCIATED;
6ec902d6af68 bug 605: Nqsta MAC should ignore beacons SSIDs while waiting for association response
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 4461
diff changeset
   299
}
6ec902d6af68 bug 605: Nqsta MAC should ignore beacons SSIDs while waiting for association response
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 4461
diff changeset
   300
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   301
bool
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   302
StaWifiMac::IsWaitAssocResp (void) const
4609
6ec902d6af68 bug 605: Nqsta MAC should ignore beacons SSIDs while waiting for association response
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 4461
diff changeset
   303
{
6ec902d6af68 bug 605: Nqsta MAC should ignore beacons SSIDs while waiting for association response
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 4461
diff changeset
   304
  return m_state == WAIT_ASSOC_RESP;
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   305
}
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   306
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   307
void
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   308
StaWifiMac::Enqueue (Ptr<const Packet> packet, Mac48Address to)
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   309
{
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   310
  NS_LOG_FUNCTION (this << packet << to);
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   311
  if (!IsAssociated ())
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   312
    {
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   313
      NotifyTxDrop (packet);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   314
      TryToEnsureAssociated ();
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   315
      return;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   316
    }
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   317
  WifiMacHeader hdr;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   318
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   319
  // If we are not a QoS AP then we definitely want to use AC_BE to
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   320
  // transmit the packet. A TID of zero will map to AC_BE (through \c
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   321
  // QosUtilsMapTidToAc()), so we use that as our default here.
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   322
  uint8_t tid = 0;
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   323
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   324
  // For now, an AP that supports QoS does not support non-QoS
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   325
  // associations, and vice versa. In future the AP model should
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   326
  // support simultaneously associated QoS and non-QoS STAs, at which
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   327
  // point there will need to be per-association QoS state maintained
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   328
  // by the association state machine, and consulted here.
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   329
  if (m_qosSupported)
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   330
    {
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   331
      hdr.SetType (WIFI_MAC_QOSDATA);
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   332
      hdr.SetQosAckPolicy (WifiMacHeader::NORMAL_ACK);
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   333
      hdr.SetQosNoEosp ();
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   334
      hdr.SetQosNoAmsdu ();
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   335
      // Transmission of multiple frames in the same TXOP is not
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   336
      // supported for now
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   337
      hdr.SetQosTxopLimit (0);
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   338
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   339
      // Fill in the QoS control field in the MAC header
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   340
      tid = QosUtilsGetTidForPacket (packet);
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   341
      // Any value greater than 7 is invalid and likely indicates that
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   342
      // the packet had no QoS tag, so we revert to zero, which'll
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   343
      // mean that AC_BE is used.
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   344
      if (tid >= 7)
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   345
        {
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   346
          tid = 0;
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   347
        }
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   348
      hdr.SetQosTid (tid);
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   349
    }
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   350
  else
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   351
    {
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   352
      hdr.SetTypeData ();
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   353
    }
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   354
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   355
  hdr.SetAddr1 (GetBssid ());
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   356
  hdr.SetAddr2 (m_low->GetAddress ());
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   357
  hdr.SetAddr3 (to);
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   358
  hdr.SetDsNotFrom ();
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   359
  hdr.SetDsTo ();
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   360
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   361
  if (m_qosSupported)
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   362
    {
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   363
      // Sanity check that the TID is valid
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   364
      NS_ASSERT (tid < 8);
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   365
      m_edca[QosUtilsMapTidToAc (tid)]->Queue (packet, hdr);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   366
    }
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   367
  else
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   368
    {
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   369
      m_dca->Queue (packet, hdr);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   370
    }
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   371
}
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   372
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   373
void
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   374
StaWifiMac::Receive (Ptr<Packet> packet, const WifiMacHeader *hdr)
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   375
{
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   376
  NS_LOG_FUNCTION (this << packet << hdr);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   377
  NS_ASSERT (!hdr->IsCtl ());
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   378
  if (hdr->GetAddr3 () == GetAddress ())
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   379
    {
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   380
      NS_LOG_LOGIC ("packet sent by us.");
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   381
      return;
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   382
    }
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6993
diff changeset
   383
  else if (hdr->GetAddr1 () != GetAddress ()
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6993
diff changeset
   384
           && !hdr->GetAddr1 ().IsGroup ())
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   385
    {
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   386
      NS_LOG_LOGIC ("packet is not for us");
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   387
      NotifyRxDrop (packet);
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   388
      return;
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   389
    }
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   390
  else if (hdr->IsData ())
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   391
    {
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   392
      if (!IsAssociated ())
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   393
        {
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   394
          NS_LOG_LOGIC ("Received data frame while not associated: ignore");
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   395
          NotifyRxDrop (packet);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   396
          return;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   397
        }
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   398
      if (!(hdr->IsFromDs () && !hdr->IsToDs ()))
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   399
        {
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   400
          NS_LOG_LOGIC ("Received data frame not from the DS: ignore");
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   401
          NotifyRxDrop (packet);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   402
          return;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   403
        }
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   404
      if (hdr->GetAddr2 () != GetBssid ())
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   405
        {
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   406
          NS_LOG_LOGIC ("Received data frame not from the BSS we are associated with: ignore");
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   407
          NotifyRxDrop (packet);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   408
          return;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   409
        }
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   410
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   411
      if (hdr->IsQosData ())
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   412
        {
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   413
          if (hdr->IsQosAmsdu ())
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   414
            {
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   415
              NS_ASSERT (hdr->GetAddr3 () == GetBssid ());
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   416
              DeaggregateAmsduAndForward (packet, hdr);
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   417
              packet = 0;
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   418
            }
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   419
          else
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   420
            {
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   421
              ForwardUp (packet, hdr->GetAddr3 (), hdr->GetAddr1 ());
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   422
            }
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   423
        }
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   424
      else
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   425
        {
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   426
          ForwardUp (packet, hdr->GetAddr3 (), hdr->GetAddr1 ());
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   427
        }
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   428
      return;
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   429
    }
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6993
diff changeset
   430
  else if (hdr->IsProbeReq ()
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6993
diff changeset
   431
           || hdr->IsAssocReq ())
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   432
    {
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   433
      // This is a frame aimed at an AP, so we can safely ignore it.
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   434
      NotifyRxDrop (packet);
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   435
      return;
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   436
    }
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   437
  else if (hdr->IsBeacon ())
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   438
    {
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   439
      MgtBeaconHeader beacon;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   440
      packet->RemoveHeader (beacon);
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   441
      bool goodBeacon = false;
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6993
diff changeset
   442
      if (GetSsid ().IsBroadcast ()
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6993
diff changeset
   443
          || beacon.GetSsid ().IsEqual (GetSsid ()))
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   444
        {
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   445
          goodBeacon = true;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   446
        }
4609
6ec902d6af68 bug 605: Nqsta MAC should ignore beacons SSIDs while waiting for association response
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 4461
diff changeset
   447
      if ((IsWaitAssocResp () || IsAssociated ()) && hdr->GetAddr3 () != GetBssid ())
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   448
        {
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   449
          goodBeacon = false;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   450
        }
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   451
      if (goodBeacon)
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   452
        {
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   453
          Time delay = MicroSeconds (beacon.GetBeaconIntervalUs () * m_maxMissedBeacons);
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   454
          RestartBeaconWatchdog (delay);
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   455
          SetBssid (hdr->GetAddr3 ());
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   456
        }
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   457
      if (goodBeacon && m_state == BEACON_MISSED)
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   458
        {
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   459
          SetState (WAIT_ASSOC_RESP);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   460
          SendAssociationRequest ();
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   461
        }
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   462
      return;
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   463
    }
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   464
  else if (hdr->IsProbeResp ())
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   465
    {
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   466
      if (m_state == WAIT_PROBE_RESP)
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   467
        {
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   468
          MgtProbeResponseHeader probeResp;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   469
          packet->RemoveHeader (probeResp);
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   470
          if (!probeResp.GetSsid ().IsEqual (GetSsid ()))
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   471
            {
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   472
              //not a probe resp for our ssid.
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   473
              return;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   474
            }
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   475
          SetBssid (hdr->GetAddr3 ());
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   476
          Time delay = MicroSeconds (probeResp.GetBeaconIntervalUs () * m_maxMissedBeacons);
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   477
          RestartBeaconWatchdog (delay);
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   478
          if (m_probeRequestEvent.IsRunning ())
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   479
            {
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   480
              m_probeRequestEvent.Cancel ();
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   481
            }
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   482
          SetState (WAIT_ASSOC_RESP);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   483
          SendAssociationRequest ();
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   484
        }
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   485
      return;
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   486
    }
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   487
  else if (hdr->IsAssocResp ())
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   488
    {
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   489
      if (m_state == WAIT_ASSOC_RESP)
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   490
        {
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   491
          MgtAssocResponseHeader assocResp;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   492
          packet->RemoveHeader (assocResp);
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   493
          if (m_assocRequestEvent.IsRunning ())
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   494
            {
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   495
              m_assocRequestEvent.Cancel ();
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   496
            }
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   497
          if (assocResp.GetStatusCode ().IsSuccess ())
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   498
            {
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   499
              SetState (ASSOCIATED);
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   500
              NS_LOG_DEBUG ("assoc completed");
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   501
              SupportedRates rates = assocResp.GetSupportedRates ();
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   502
              for (uint32_t i = 0; i < m_phy->GetNModes (); i++)
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   503
                {
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   504
                  WifiMode mode = m_phy->GetMode (i);
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   505
                  if (rates.IsSupportedRate (mode.GetDataRate ()))
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   506
                    {
6065
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 5819
diff changeset
   507
                      m_stationManager->AddSupportedMode (hdr->GetAddr2 (), mode);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   508
                      if (rates.IsBasicRate (mode.GetDataRate ()))
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   509
                        {
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   510
                          m_stationManager->AddBasicMode (mode);
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   511
                        }
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   512
                    }
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   513
                }
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   514
              if (!m_linkUp.IsNull ())
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   515
                {
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   516
                  m_linkUp ();
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   517
                }
5953
9e400f6b8a2c handle wifi action frames in high MACs
Mirko Banchi <mk.banchi@gmail.com>
parents: 5906
diff changeset
   518
            }
9e400f6b8a2c handle wifi action frames in high MACs
Mirko Banchi <mk.banchi@gmail.com>
parents: 5906
diff changeset
   519
          else
9e400f6b8a2c handle wifi action frames in high MACs
Mirko Banchi <mk.banchi@gmail.com>
parents: 5906
diff changeset
   520
            {
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   521
              NS_LOG_DEBUG ("assoc refused");
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   522
              SetState (REFUSED);
5953
9e400f6b8a2c handle wifi action frames in high MACs
Mirko Banchi <mk.banchi@gmail.com>
parents: 5906
diff changeset
   523
            }
9e400f6b8a2c handle wifi action frames in high MACs
Mirko Banchi <mk.banchi@gmail.com>
parents: 5906
diff changeset
   524
        }
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   525
      return;
5953
9e400f6b8a2c handle wifi action frames in high MACs
Mirko Banchi <mk.banchi@gmail.com>
parents: 5906
diff changeset
   526
    }
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   527
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   528
  // Invoke the receive handler of our parent class to deal with any
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   529
  // other frames. Specifically, this will handle Block Ack-related
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   530
  // Management Action frames.
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   531
  RegularWifiMac::Receive (packet, hdr);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   532
}
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   533
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   534
SupportedRates
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   535
StaWifiMac::GetSupportedRates (void) const
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   536
{
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   537
  SupportedRates rates;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   538
  for (uint32_t i = 0; i < m_phy->GetNModes (); i++)
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   539
    {
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   540
      WifiMode mode = m_phy->GetMode (i);
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   541
      rates.AddSupportedRate (mode.GetDataRate ());
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   542
    }
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   543
  return rates;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   544
}
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   545
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   546
void
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   547
StaWifiMac::SetState (MacState value)
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   548
{
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6993
diff changeset
   549
  if (value == ASSOCIATED
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6993
diff changeset
   550
      && m_state != ASSOCIATED)
6080
41ee42654550 Bug 706
Kirill Andreev <andreev@iitp.ru>
parents: 6068
diff changeset
   551
    {
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   552
      m_assocLogger (GetBssid ());
6080
41ee42654550 Bug 706
Kirill Andreev <andreev@iitp.ru>
parents: 6068
diff changeset
   553
    }
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6993
diff changeset
   554
  else if (value != ASSOCIATED
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6993
diff changeset
   555
           && m_state == ASSOCIATED)
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   556
    {
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   557
      m_deAssocLogger (GetBssid ());
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   558
    }
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   559
  m_state = value;
6080
41ee42654550 Bug 706
Kirill Andreev <andreev@iitp.ru>
parents: 6068
diff changeset
   560
}
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   561
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   562
} // namespace ns3