src/devices/wifi/sta-wifi-mac.cc
author Dean Armstrong <deanarm@gmail.com>
Wed, 01 Dec 2010 22:13:26 +0000
changeset 6674 52f8688d6d01
parent 6673 ec22aa763e2d
permissions -rw-r--r--
Bug 978: Run check-style.py on files touched in the reorganisation Cosmetic changes only in this one (hence the reason I wanted them kept separate from the the previous changeset).
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
     1
/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
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> ())
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    84
    .AddAttribute ("ActiveProbing", "If true, we send probe requests. If false, we don't.",
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
    {
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   148
      TryToEnsureAssociated ();
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);
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   214
  switch (m_state) {
6674
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   215
    case ASSOCIATED:
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   216
      return;
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   217
      break;
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   218
    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
   219
      /* 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
   220
         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
   221
         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
   222
         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
   223
       */
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   224
      break;
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   225
    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
   226
      /* 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
   227
       * 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
   228
       * 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
   229
       */
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   230
      m_linkDown ();
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   231
      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
   232
      SendProbeRequest ();
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   233
      break;
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   234
    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
   235
      /* 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
   236
         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
   237
         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
   238
         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
   239
       */
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   240
      break;
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   241
    case REFUSED:
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   242
      /* 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
   243
         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
   244
         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
   245
       */
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   246
      break;
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   247
    }
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   248
}
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
void
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   251
StaWifiMac::AssocRequestTimeout (void)
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   252
{
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   253
  NS_LOG_FUNCTION (this);
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   254
  SetState (WAIT_ASSOC_RESP);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   255
  SendAssociationRequest ();
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   256
}
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
void
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   259
StaWifiMac::ProbeRequestTimeout (void)
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   260
{
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   261
  NS_LOG_FUNCTION (this);
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   262
  SetState (WAIT_PROBE_RESP);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   263
  SendProbeRequest ();
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   264
}
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
void
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   267
StaWifiMac::MissedBeacons (void)
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   268
{
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   269
  NS_LOG_FUNCTION (this);
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   270
  if (m_beaconWatchdogEnd > Simulator::Now ())
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   271
    {
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   272
      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
   273
                                              &StaWifiMac::MissedBeacons, this);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   274
      return;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   275
    }
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   276
  NS_LOG_DEBUG ("beacon missed");
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   277
  SetState (BEACON_MISSED);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   278
  TryToEnsureAssociated ();
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   279
}
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
void
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   282
StaWifiMac::RestartBeaconWatchdog (Time delay)
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   283
{
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   284
  NS_LOG_FUNCTION (this << delay);
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   285
  m_beaconWatchdogEnd = std::max (Simulator::Now () + delay, m_beaconWatchdogEnd);
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   286
  if (Simulator::GetDelayLeft (m_beaconWatchdog) < delay &&
6674
52f8688d6d01 Bug 978: Run check-style.py on files touched in the reorganisation
Dean Armstrong <deanarm@gmail.com>
parents: 6673
diff changeset
   287
      m_beaconWatchdog.IsExpired ())
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   288
    {
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   289
      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
   290
      m_beaconWatchdog = Simulator::Schedule (delay, &StaWifiMac::MissedBeacons, this);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   291
    }
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
bool
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   295
StaWifiMac::IsAssociated (void) const
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   296
{
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
   297
  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
   298
}
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
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   300
bool
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   301
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
   302
{
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
  return m_state == WAIT_ASSOC_RESP;
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   304
}
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
void
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   307
StaWifiMac::Enqueue (Ptr<const Packet> packet, Mac48Address to)
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   308
{
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   309
  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
   310
  if (!IsAssociated ())
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   311
    {
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   312
      NotifyTxDrop (packet);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   313
      TryToEnsureAssociated ();
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   314
      return;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   315
    }
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   316
  WifiMacHeader hdr;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   317
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   318
  // 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
   319
  // 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
   320
  // 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
   321
  uint8_t tid = 0;
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   322
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   323
  // 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
   324
  // 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
   325
  // 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
   326
  // 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
   327
  // 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
   328
  if (m_qosSupported)
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   329
    {
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   330
      hdr.SetType (WIFI_MAC_QOSDATA);
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   331
      hdr.SetQosAckPolicy (WifiMacHeader::NORMAL_ACK);
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   332
      hdr.SetQosNoEosp ();
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   333
      hdr.SetQosNoAmsdu ();
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   334
      // 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
   335
      // supported for now
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   336
      hdr.SetQosTxopLimit (0);
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   337
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   338
      // 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
   339
      tid = QosUtilsGetTidForPacket (packet);
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   340
      // 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
   341
      // 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
   342
      // mean that AC_BE is used.
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   343
      if (tid >= 7)
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   344
        {
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   345
          tid = 0;
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   346
        }
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   347
      hdr.SetQosTid (tid);
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   348
    }
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   349
  else
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   350
    {
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   351
      hdr.SetTypeData ();
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   352
    }
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   353
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   354
  hdr.SetAddr1 (GetBssid ());
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   355
  hdr.SetAddr2 (m_low->GetAddress ());
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   356
  hdr.SetAddr3 (to);
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   357
  hdr.SetDsNotFrom ();
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   358
  hdr.SetDsTo ();
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   359
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   360
  if (m_qosSupported)
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   361
    {
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   362
      // 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
   363
      NS_ASSERT (tid < 8);
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   364
      m_edca[QosUtilsMapTidToAc (tid)]->Queue (packet, hdr);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   365
    }
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   366
  else
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   367
    {
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   368
      m_dca->Queue (packet, hdr);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   369
    }
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
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   372
void
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   373
StaWifiMac::Receive (Ptr<Packet> packet, const WifiMacHeader *hdr)
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   374
{
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   375
  NS_LOG_FUNCTION (this << packet << hdr);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   376
  NS_ASSERT (!hdr->IsCtl ());
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   377
  if (hdr->GetAddr3 () == GetAddress ())
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   378
    {
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   379
      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
   380
      return;
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   381
    }
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   382
  else if (hdr->GetAddr1 () != GetAddress () &&
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   383
           !hdr->GetAddr1 ().IsGroup ())
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   384
    {
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   385
      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
   386
      NotifyRxDrop (packet);
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   387
      return;
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   388
    }
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   389
  else if (hdr->IsData ())
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   390
    {
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   391
      if (!IsAssociated ())
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   392
        {
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   393
          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
   394
          NotifyRxDrop (packet);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   395
          return;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   396
        }
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   397
      if (!(hdr->IsFromDs () && !hdr->IsToDs ()))
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   398
        {
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   399
          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
   400
          NotifyRxDrop (packet);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   401
          return;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   402
        }
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   403
      if (hdr->GetAddr2 () != GetBssid ())
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   404
        {
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   405
          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
   406
          NotifyRxDrop (packet);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   407
          return;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   408
        }
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   409
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   410
      if (hdr->IsQosData ())
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   411
        {
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   412
          if (hdr->IsQosAmsdu ())
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   413
            {
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   414
              NS_ASSERT (hdr->GetAddr3 () == GetBssid ());
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   415
              DeaggregateAmsduAndForward (packet, hdr);
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   416
              packet = 0;
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   417
            }
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   418
          else
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   419
            {
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   420
              ForwardUp (packet, hdr->GetAddr3 (), hdr->GetAddr1 ());
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   421
            }
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   422
        }
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   423
      else
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   424
        {
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   425
          ForwardUp (packet, hdr->GetAddr3 (), hdr->GetAddr1 ());
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   426
        }
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   427
      return;
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   428
    }
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   429
  else if (hdr->IsProbeReq () ||
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   430
           hdr->IsAssocReq ())
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   431
    {
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   432
      // 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
   433
      NotifyRxDrop (packet);
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   434
      return;
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   435
    }
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   436
  else if (hdr->IsBeacon ())
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   437
    {
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   438
      MgtBeaconHeader beacon;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   439
      packet->RemoveHeader (beacon);
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   440
      bool goodBeacon = false;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   441
      if (GetSsid ().IsBroadcast () ||
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   442
          beacon.GetSsid ().IsEqual (GetSsid ()))
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   443
        {
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   444
          goodBeacon = true;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   445
        }
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
   446
      if ((IsWaitAssocResp () || IsAssociated ()) && hdr->GetAddr3 () != GetBssid ())
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   447
        {
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   448
          goodBeacon = false;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   449
        }
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   450
      if (goodBeacon)
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   451
        {
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   452
          Time delay = MicroSeconds (beacon.GetBeaconIntervalUs () * m_maxMissedBeacons);
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   453
          RestartBeaconWatchdog (delay);
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   454
          SetBssid (hdr->GetAddr3 ());
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   455
        }
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   456
      if (goodBeacon && m_state == BEACON_MISSED)
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   457
        {
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   458
          SetState (WAIT_ASSOC_RESP);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   459
          SendAssociationRequest ();
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   460
        }
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   461
      return;
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   462
    }
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   463
  else if (hdr->IsProbeResp ())
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   464
    {
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   465
      if (m_state == WAIT_PROBE_RESP)
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   466
        {
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   467
          MgtProbeResponseHeader probeResp;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   468
          packet->RemoveHeader (probeResp);
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   469
          if (!probeResp.GetSsid ().IsEqual (GetSsid ()))
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   470
            {
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   471
              //not a probe resp for our ssid.
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   472
              return;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   473
            }
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   474
          SetBssid (hdr->GetAddr3 ());
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   475
          Time delay = MicroSeconds (probeResp.GetBeaconIntervalUs () * m_maxMissedBeacons);
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   476
          RestartBeaconWatchdog (delay);
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   477
          if (m_probeRequestEvent.IsRunning ())
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   478
            {
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   479
              m_probeRequestEvent.Cancel ();
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   480
            }
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   481
          SetState (WAIT_ASSOC_RESP);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   482
          SendAssociationRequest ();
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   483
        }
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   484
      return;
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   485
    }
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   486
  else if (hdr->IsAssocResp ())
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   487
    {
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   488
      if (m_state == WAIT_ASSOC_RESP)
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   489
        {
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   490
          MgtAssocResponseHeader assocResp;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   491
          packet->RemoveHeader (assocResp);
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   492
          if (m_assocRequestEvent.IsRunning ())
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   493
            {
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   494
              m_assocRequestEvent.Cancel ();
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   495
            }
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   496
          if (assocResp.GetStatusCode ().IsSuccess ())
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   497
            {
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   498
              SetState (ASSOCIATED);
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   499
              NS_LOG_DEBUG ("assoc completed");
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   500
              SupportedRates rates = assocResp.GetSupportedRates ();
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   501
              for (uint32_t i = 0; i < m_phy->GetNModes (); i++)
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   502
                {
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   503
                  WifiMode mode = m_phy->GetMode (i);
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   504
                  if (rates.IsSupportedRate (mode.GetDataRate ()))
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   505
                    {
6065
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 5819
diff changeset
   506
                      m_stationManager->AddSupportedMode (hdr->GetAddr2 (), mode);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   507
                      if (rates.IsBasicRate (mode.GetDataRate ()))
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   508
                        {
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   509
                          m_stationManager->AddBasicMode (mode);
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   510
                        }
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
              if (!m_linkUp.IsNull ())
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   514
                {
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   515
                  m_linkUp ();
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   516
                }
5953
9e400f6b8a2c handle wifi action frames in high MACs
Mirko Banchi <mk.banchi@gmail.com>
parents: 5906
diff changeset
   517
            }
9e400f6b8a2c handle wifi action frames in high MACs
Mirko Banchi <mk.banchi@gmail.com>
parents: 5906
diff changeset
   518
          else
9e400f6b8a2c handle wifi action frames in high MACs
Mirko Banchi <mk.banchi@gmail.com>
parents: 5906
diff changeset
   519
            {
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   520
              NS_LOG_DEBUG ("assoc refused");
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   521
              SetState (REFUSED);
5953
9e400f6b8a2c handle wifi action frames in high MACs
Mirko Banchi <mk.banchi@gmail.com>
parents: 5906
diff changeset
   522
            }
9e400f6b8a2c handle wifi action frames in high MACs
Mirko Banchi <mk.banchi@gmail.com>
parents: 5906
diff changeset
   523
        }
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   524
      return;
5953
9e400f6b8a2c handle wifi action frames in high MACs
Mirko Banchi <mk.banchi@gmail.com>
parents: 5906
diff changeset
   525
    }
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   526
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   527
  // 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
   528
  // 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
   529
  // Management Action frames.
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   530
  RegularWifiMac::Receive (packet, hdr);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   531
}
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
SupportedRates
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   534
StaWifiMac::GetSupportedRates (void) const
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   535
{
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   536
  SupportedRates rates;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   537
  for (uint32_t i = 0; i < m_phy->GetNModes (); i++)
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   538
    {
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   539
      WifiMode mode = m_phy->GetMode (i);
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   540
      rates.AddSupportedRate (mode.GetDataRate ());
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   541
    }
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   542
  return rates;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   543
}
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
void
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   546
StaWifiMac::SetState (MacState value)
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   547
{
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   548
  if (value == ASSOCIATED &&
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   549
      m_state != ASSOCIATED)
6080
41ee42654550 Bug 706
Kirill Andreev <andreev@iitp.ru>
parents: 6068
diff changeset
   550
    {
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   551
      m_assocLogger (GetBssid ());
6080
41ee42654550 Bug 706
Kirill Andreev <andreev@iitp.ru>
parents: 6068
diff changeset
   552
    }
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   553
  else if (value != ASSOCIATED &&
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   554
           m_state == ASSOCIATED)
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   555
    {
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   556
      m_deAssocLogger (GetBssid ());
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   557
    }
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   558
  m_state = value;
6080
41ee42654550 Bug 706
Kirill Andreev <andreev@iitp.ru>
parents: 6068
diff changeset
   559
}
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   560
6673
ec22aa763e2d Bug 978: Consolidate Wi-Fi MAC high functionality
Dean Armstrong <deanarm@gmail.com>
parents: 6597
diff changeset
   561
} // namespace ns3