src/wifi/model/edca-txop-n.cc
author Ghada Badawy <gbadawy@gmail.com>
Wed, 28 Jan 2015 10:11:32 -0800
changeset 11174 780a43e4980c
parent 11159 b744c32b69bc
child 11245 5c781d7e5a25
permissions -rw-r--r--
add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
7385
10beb0e53130 standardize emacs c++ mode comments
Vedran Miletić <rivanvx@gmail.com>
parents: 7252
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
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
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
 */
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    22
#include "ns3/log.h"
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    23
#include "ns3/assert.h"
7013
1db4e43e30e8 fixed Bug 1090 - WifiMacQueue is not accessible through the attribute path
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
    24
#include "ns3/pointer.h"
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    25
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    26
#include "edca-txop-n.h"
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    27
#include "mac-low.h"
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    28
#include "dcf-manager.h"
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    29
#include "mac-tx-middle.h"
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    30
#include "wifi-mac-trailer.h"
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    31
#include "wifi-mac.h"
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    32
#include "random-stream.h"
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    33
#include "wifi-mac-queue.h"
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    34
#include "msdu-aggregator.h"
5953
9e400f6b8a2c handle wifi action frames in high MACs
Mirko Banchi <mk.banchi@gmail.com>
parents: 5952
diff changeset
    35
#include "mgt-headers.h"
5963
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
    36
#include "qos-blocked-destinations.h"
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    37
5976
dba5c9b69c3b use NS_LOG_APPEND_CONTEXT instead of MY_DEBUG macro
Mirko Banchi <mk.banchi@gmail.com>
parents: 5965
diff changeset
    38
#undef NS_LOG_APPEND_CONTEXT
7252
c8200621e252 rerun check-style.py with uncrustify-0.58
Tom Henderson <tomh@tomh.org>
parents: 7141
diff changeset
    39
#define NS_LOG_APPEND_CONTEXT if (m_low != 0) { std::clog << "[mac=" << m_low->GetAddress () << "] "; }
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    40
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    41
namespace ns3 {
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    42
10968
2d29fee2b7b8 [Bug 1551] Redux: NS_LOG_COMPONENT_DEFINE inside or outside of ns3 namespace?
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 10652
diff changeset
    43
NS_LOG_COMPONENT_DEFINE ("EdcaTxopN");
2d29fee2b7b8 [Bug 1551] Redux: NS_LOG_COMPONENT_DEFINE inside or outside of ns3 namespace?
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 10652
diff changeset
    44
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    45
class EdcaTxopN::Dcf : public DcfState
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    46
{
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    47
public:
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
    48
  Dcf (EdcaTxopN * txop)
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    49
    : m_txop (txop)
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
    50
  {
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
    51
  }
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    52
private:
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
    53
  virtual void DoNotifyAccessGranted (void)
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
    54
  {
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    55
    m_txop->NotifyAccessGranted ();
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    56
  }
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
    57
  virtual void DoNotifyInternalCollision (void)
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
    58
  {
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    59
    m_txop->NotifyInternalCollision ();
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    60
  }
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
    61
  virtual void DoNotifyCollision (void)
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
    62
  {
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    63
    m_txop->NotifyCollision ();
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    64
  }
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
    65
  virtual void DoNotifyChannelSwitching (void)
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
    66
  {
5189
8fcdf87a790a Channel switching support for Wifi
Ramon Bauza
parents: 4720
diff changeset
    67
    m_txop->NotifyChannelSwitching ();
8fcdf87a790a Channel switching support for Wifi
Ramon Bauza
parents: 4720
diff changeset
    68
  }
11159
b744c32b69bc patch to support IEEE 1609.4 MAC extension in wave module
Junling Bu <linlinjavaer@gmail.com>
parents: 10968
diff changeset
    69
  virtual void DoNotifySleep (void)
b744c32b69bc patch to support IEEE 1609.4 MAC extension in wave module
Junling Bu <linlinjavaer@gmail.com>
parents: 10968
diff changeset
    70
  {
b744c32b69bc patch to support IEEE 1609.4 MAC extension in wave module
Junling Bu <linlinjavaer@gmail.com>
parents: 10968
diff changeset
    71
    m_txop->NotifySleep ();
b744c32b69bc patch to support IEEE 1609.4 MAC extension in wave module
Junling Bu <linlinjavaer@gmail.com>
parents: 10968
diff changeset
    72
  }
b744c32b69bc patch to support IEEE 1609.4 MAC extension in wave module
Junling Bu <linlinjavaer@gmail.com>
parents: 10968
diff changeset
    73
  virtual void DoNotifyWakeUp (void)
b744c32b69bc patch to support IEEE 1609.4 MAC extension in wave module
Junling Bu <linlinjavaer@gmail.com>
parents: 10968
diff changeset
    74
  {
b744c32b69bc patch to support IEEE 1609.4 MAC extension in wave module
Junling Bu <linlinjavaer@gmail.com>
parents: 10968
diff changeset
    75
    m_txop->NotifyWakeUp ();
b744c32b69bc patch to support IEEE 1609.4 MAC extension in wave module
Junling Bu <linlinjavaer@gmail.com>
parents: 10968
diff changeset
    76
  }
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    77
  EdcaTxopN *m_txop;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    78
};
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    79
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    80
class EdcaTxopN::TransmissionListener : public MacLowTransmissionListener
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    81
{
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    82
public:
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
    83
  TransmissionListener (EdcaTxopN * txop)
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    84
    : MacLowTransmissionListener (),
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
    85
      m_txop (txop) {
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
    86
  }
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
    87
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    88
  virtual ~TransmissionListener () {}
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    89
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
    90
  virtual void GotCts (double snr, WifiMode txMode)
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
    91
  {
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    92
    m_txop->GotCts (snr, txMode);
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    93
  }
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
    94
  virtual void MissedCts (void)
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
    95
  {
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    96
    m_txop->MissedCts ();
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
    97
  }
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
    98
  virtual void GotAck (double snr, WifiMode txMode)
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
    99
  {
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   100
    m_txop->GotAck (snr, txMode);
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   101
  }
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   102
  virtual void MissedAck (void)
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   103
  {
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   104
    m_txop->MissedAck ();
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   105
  }
11174
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   106
  virtual void GotBlockAck (const CtrlBAckResponseHeader *blockAck, Mac48Address source, WifiMode txMode)
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   107
  {
11174
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   108
    m_txop->GotBlockAck (blockAck, source,txMode);
5955
10fbe045901e add support for block ack in MacLowTransmissionListener
Mirko Banchi <mk.banchi@gmail.com>
parents: 5953
diff changeset
   109
  }
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   110
  virtual void MissedBlockAck (void)
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   111
  {
5958
dd0accd82659 add block ack timeouts
Mirko Banchi <mk.banchi@gmail.com>
parents: 5955
diff changeset
   112
    m_txop->MissedBlockAck ();
dd0accd82659 add block ack timeouts
Mirko Banchi <mk.banchi@gmail.com>
parents: 5955
diff changeset
   113
  }
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   114
  virtual void StartNext (void)
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   115
  {
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   116
    m_txop->StartNext ();
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   117
  }
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   118
  virtual void Cancel (void)
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   119
  {
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   120
    m_txop->Cancel ();
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   121
  }
9176
41ab1e874804 Bug 555 - DCF immediate access fix
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 8981
diff changeset
   122
  virtual void EndTxNoAck (void)
41ab1e874804 Bug 555 - DCF immediate access fix
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 8981
diff changeset
   123
  {
41ab1e874804 Bug 555 - DCF immediate access fix
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 8981
diff changeset
   124
    m_txop->EndTxNoAck ();
41ab1e874804 Bug 555 - DCF immediate access fix
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 8981
diff changeset
   125
  }
11174
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   126
  virtual Ptr<WifiMacQueue> GetQueue (void)
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   127
  { 
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   128
    return m_txop->GetEdcaQueue ();
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   129
  }
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
private:
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   132
  EdcaTxopN *m_txop;
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
5964
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
   135
class EdcaTxopN::BlockAckEventListener : public MacLowBlockAckEventListener
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
   136
{
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
   137
public:
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   138
  BlockAckEventListener (EdcaTxopN * txop)
5964
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
   139
    : MacLowBlockAckEventListener (),
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   140
      m_txop (txop) {
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   141
  }
5964
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
   142
  virtual ~BlockAckEventListener () {}
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
   143
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   144
  virtual void BlockAckInactivityTimeout (Mac48Address address, uint8_t tid)
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   145
  {
5964
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
   146
    m_txop->SendDelbaFrame (address, tid, false);
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
   147
  }
11174
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   148
  virtual Ptr<WifiMacQueue> GetQueue (void)
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   149
  { 
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   150
    return m_txop->GetEdcaQueue ();
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   151
  }
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   152
  virtual  void CompleteTransfer (Mac48Address recipient, uint8_t tid)
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   153
  {
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   154
    m_txop->CompleteAmpduTransfer (recipient, tid);
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   155
  }
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   156
  virtual void SetAmpdu(bool ampdu)
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   157
  {
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   158
    return m_txop->SetAmpduExist (ampdu);
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   159
  }
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   160
  virtual void CompleteMpduTx(Ptr<const Packet> packet, WifiMacHeader hdr, Time tstamp)
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   161
  {
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   162
    m_txop->CompleteMpduTx (packet, hdr, tstamp);
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   163
  }
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   164
  virtual uint16_t GetNextSequenceNumberfor (WifiMacHeader *hdr)
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   165
  {
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   166
    return m_txop->GetNextSequenceNumberfor (hdr);
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   167
  }
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   168
  virtual uint16_t PeekNextSequenceNumberfor (WifiMacHeader *hdr)
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   169
  {
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   170
    return m_txop->PeekNextSequenceNumberfor (hdr);
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   171
  }
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   172
  virtual Ptr<const Packet> PeekNextPacketInBaQueue (WifiMacHeader &header, Mac48Address recipient, uint8_t tid, Time *timestamp)
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   173
  {
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   174
    return m_txop->PeekNextRetransmitPacket (header, recipient, tid, timestamp);
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   175
  }
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   176
  virtual void RemoveFromBaQueue (uint8_t tid, Mac48Address recipient, uint16_t seqnumber)
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   177
  {
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   178
     m_txop->RemoveRetransmitPacket(tid, recipient, seqnumber);
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   179
  }
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   180
  virtual bool GetBlockAckAgreementExists (Mac48Address address, uint8_t tid)
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   181
  {
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   182
    return m_txop->GetBaAgreementExists (address,tid);
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   183
  }
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   184
  virtual uint32_t GetNOutstandingPackets (Mac48Address address, uint8_t tid)
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   185
  {
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   186
    return m_txop->GetNOutstandingPacketsInBa (address, tid);
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   187
  }
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   188
  virtual uint32_t GetNRetryNeededPackets (Mac48Address recipient, uint8_t tid) const
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   189
  {
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   190
    return m_txop->GetNRetryNeededPackets (recipient, tid);
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   191
  }
5964
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
   192
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
   193
private:
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
   194
  EdcaTxopN *m_txop;
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
   195
};
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
   196
10652
dc18deba4502 [doxygen] Revert r10410, r10411, r10412
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 10410
diff changeset
   197
NS_OBJECT_ENSURE_REGISTERED (EdcaTxopN);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   198
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   199
TypeId
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   200
EdcaTxopN::GetTypeId (void)
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   201
{
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   202
  static TypeId tid = TypeId ("ns3::EdcaTxopN")
6477
55e4c70ff299 fixed Bug 941 - Wifi Dcf attributes not reachable
Nicola Baldo <nbaldo@cttc.es>
parents: 6331
diff changeset
   203
    .SetParent (ns3::Dcf::GetTypeId ())
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   204
    .AddConstructor<EdcaTxopN> ()
5963
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
   205
    .AddAttribute ("BlockAckThreshold", "If number of packets in this queue reaches this value,\
7252
c8200621e252 rerun check-style.py with uncrustify-0.58
Tom Henderson <tomh@tomh.org>
parents: 7141
diff changeset
   206
                                         block ack mechanism is used. If this value is 0, block ack is never used.",
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   207
                   UintegerValue (0),
5963
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
   208
                   MakeUintegerAccessor (&EdcaTxopN::SetBlockAckThreshold,
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
   209
                                         &EdcaTxopN::GetBlockAckThreshold),
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
   210
                   MakeUintegerChecker<uint8_t> (0, 64))
5965
4e64e751be07 add support to block ack tear down in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5964
diff changeset
   211
    .AddAttribute ("BlockAckInactivityTimeout", "Represents max time (blocks of 1024 micro seconds) allowed for block ack\
4e64e751be07 add support to block ack tear down in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5964
diff changeset
   212
                                                 inactivity. If this value isn't equal to 0 a timer start after that a\
4e64e751be07 add support to block ack tear down in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5964
diff changeset
   213
                                                 block ack setup is completed and will be reset every time that a block\
7252
c8200621e252 rerun check-style.py with uncrustify-0.58
Tom Henderson <tomh@tomh.org>
parents: 7141
diff changeset
   214
                                                 ack frame is received. If this value is 0, block ack inactivity timeout won't be used.",
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   215
                   UintegerValue (0),
6294
6cefb3c0696a add methods in QosWifiMacHelper for block ack parameters setup
Mirko Banchi <mk.banchi@gmail.com>
parents: 6242
diff changeset
   216
                   MakeUintegerAccessor (&EdcaTxopN::SetBlockAckInactivityTimeout),
5965
4e64e751be07 add support to block ack tear down in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5964
diff changeset
   217
                   MakeUintegerChecker<uint16_t> ())
7013
1db4e43e30e8 fixed Bug 1090 - WifiMacQueue is not accessible through the attribute path
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   218
    .AddAttribute ("Queue", "The WifiMacQueue object",
1db4e43e30e8 fixed Bug 1090 - WifiMacQueue is not accessible through the attribute path
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   219
                   PointerValue (),
11174
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   220
                   MakePointerAccessor (&EdcaTxopN::GetEdcaQueue),
7013
1db4e43e30e8 fixed Bug 1090 - WifiMacQueue is not accessible through the attribute path
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   221
                   MakePointerChecker<WifiMacQueue> ())
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   222
  ;
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   223
  return tid;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   224
}
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   225
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   226
EdcaTxopN::EdcaTxopN ()
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   227
  : m_manager (0),
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   228
    m_currentPacket (0),
5963
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
   229
    m_aggregator (0),
11174
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   230
    m_blockAckType (COMPRESSED_BLOCK_ACK),
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   231
    m_ampduExist (false)
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   232
{
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   233
  NS_LOG_FUNCTION (this);
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   234
  m_transmissionListener = new EdcaTxopN::TransmissionListener (this);
5964
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
   235
  m_blockAckListener = new EdcaTxopN::BlockAckEventListener (this);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   236
  m_dcf = new EdcaTxopN::Dcf (this);
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   237
  m_queue = CreateObject<WifiMacQueue> ();
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   238
  m_rng = new RealRandomStream ();
5963
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
   239
  m_qosBlockedDestinations = new QosBlockedDestinations ();
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
   240
  m_baManager = new BlockAckManager ();
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
   241
  m_baManager->SetQueue (m_queue);
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
   242
  m_baManager->SetBlockAckType (m_blockAckType);
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
   243
  m_baManager->SetBlockDestinationCallback (MakeCallback (&QosBlockedDestinations::Block, m_qosBlockedDestinations));
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
   244
  m_baManager->SetUnblockDestinationCallback (MakeCallback (&QosBlockedDestinations::Unblock, m_qosBlockedDestinations));
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
   245
  m_baManager->SetMaxPacketDelay (m_queue->GetMaxDelay ());
11174
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   246
  m_baManager->SetTxOkCallback (MakeCallback (&EdcaTxopN::BaTxOk, this));
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   247
  m_baManager->SetTxFailedCallback (MakeCallback (&EdcaTxopN::BaTxFailed, this));
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
EdcaTxopN::~EdcaTxopN ()
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   251
{
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   252
  NS_LOG_FUNCTION (this);
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
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   255
void
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   256
EdcaTxopN::DoDispose (void)
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
  NS_LOG_FUNCTION (this);
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   259
  m_queue = 0;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   260
  m_low = 0;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   261
  m_stationManager = 0;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   262
  delete m_transmissionListener;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   263
  delete m_dcf;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   264
  delete m_rng;
5963
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
   265
  delete m_qosBlockedDestinations;
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
   266
  delete m_baManager;
5964
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
   267
  delete m_blockAckListener;
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   268
  m_transmissionListener = 0;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   269
  m_dcf = 0;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   270
  m_rng = 0;
5963
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
   271
  m_qosBlockedDestinations = 0;
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
   272
  m_baManager = 0;
5964
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
   273
  m_blockAckListener = 0;
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   274
  m_txMiddle = 0;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   275
  m_aggregator = 0;
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
11174
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   278
bool
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   279
EdcaTxopN::GetBaAgreementExists (Mac48Address address, uint8_t tid)
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   280
{
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   281
  return m_baManager->ExistsAgreement (address, tid); 
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   282
}
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   283
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   284
uint32_t
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   285
EdcaTxopN::GetNOutstandingPacketsInBa (Mac48Address address, uint8_t tid)
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   286
{
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   287
  return m_baManager->GetNBufferedPackets (address, tid); 
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   288
}
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   289
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   290
uint32_t
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   291
EdcaTxopN::GetNRetryNeededPackets (Mac48Address recipient, uint8_t tid) const
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   292
{
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   293
 return m_baManager->GetNRetryNeededPackets (recipient, tid);
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   294
}
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   295
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   296
void
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   297
EdcaTxopN::CompleteAmpduTransfer (Mac48Address recipient, uint8_t tid)
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   298
{
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   299
  m_baManager->CompleteAmpduExchange (recipient, tid);
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   300
}
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   301
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   302
void
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   303
EdcaTxopN::SetManager (DcfManager *manager)
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
  NS_LOG_FUNCTION (this << manager);
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   306
  m_manager = manager;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   307
  m_manager->Add (m_dcf);
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
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   310
void
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   311
EdcaTxopN::SetTxOkCallback (TxOk callback)
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   312
{
9711
7f4c6aa52b52 Further work on cleaning up function logging of wifi module.
Edvin Močibob <edvin.mocibob@gmail.com>
parents: 9703
diff changeset
   313
  NS_LOG_FUNCTION (this << &callback);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   314
  m_txOkCallback = callback;
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
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   317
void
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   318
EdcaTxopN::SetTxFailedCallback (TxFailed callback)
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   319
{
9711
7f4c6aa52b52 Further work on cleaning up function logging of wifi module.
Edvin Močibob <edvin.mocibob@gmail.com>
parents: 9703
diff changeset
   320
  NS_LOG_FUNCTION (this << &callback);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   321
  m_txFailedCallback = callback;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   322
}
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   323
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   324
void
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   325
EdcaTxopN::SetWifiRemoteStationManager (Ptr<WifiRemoteStationManager> remoteManager)
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   326
{
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   327
  NS_LOG_FUNCTION (this << remoteManager);
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   328
  m_stationManager = remoteManager;
11174
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   329
  m_baManager->SetWifiRemoteStationManager(m_stationManager);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   330
}
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   331
void
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   332
EdcaTxopN::SetTypeOfStation (enum TypeOfStation type)
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   333
{
9711
7f4c6aa52b52 Further work on cleaning up function logging of wifi module.
Edvin Močibob <edvin.mocibob@gmail.com>
parents: 9703
diff changeset
   334
  NS_LOG_FUNCTION (this << static_cast<uint32_t> (type));
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   335
  m_typeOfStation = type;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   336
}
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   337
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   338
enum TypeOfStation
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   339
EdcaTxopN::GetTypeOfStation (void) const
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   340
{
9711
7f4c6aa52b52 Further work on cleaning up function logging of wifi module.
Edvin Močibob <edvin.mocibob@gmail.com>
parents: 9703
diff changeset
   341
  NS_LOG_FUNCTION (this);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   342
  return m_typeOfStation;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   343
}
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   344
7013
1db4e43e30e8 fixed Bug 1090 - WifiMacQueue is not accessible through the attribute path
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   345
Ptr<WifiMacQueue >
11174
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   346
EdcaTxopN::GetEdcaQueue () const
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   347
{
7013
1db4e43e30e8 fixed Bug 1090 - WifiMacQueue is not accessible through the attribute path
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   348
  NS_LOG_FUNCTION (this);
1db4e43e30e8 fixed Bug 1090 - WifiMacQueue is not accessible through the attribute path
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   349
  return m_queue;
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   350
}
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   351
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   352
void
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   353
EdcaTxopN::SetMinCw (uint32_t minCw)
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
  NS_LOG_FUNCTION (this << minCw);
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   356
  m_dcf->SetCwMin (minCw);
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   357
}
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   358
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   359
void
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   360
EdcaTxopN::SetMaxCw (uint32_t maxCw)
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   361
{
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   362
  NS_LOG_FUNCTION (this << maxCw);
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   363
  m_dcf->SetCwMax (maxCw);
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   364
}
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   365
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   366
void
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   367
EdcaTxopN::SetAifsn (uint32_t aifsn)
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   368
{
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   369
  NS_LOG_FUNCTION (this << aifsn);
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   370
  m_dcf->SetAifsn (aifsn);
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
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   373
uint32_t
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   374
EdcaTxopN::GetMinCw (void) const
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   375
{
9711
7f4c6aa52b52 Further work on cleaning up function logging of wifi module.
Edvin Močibob <edvin.mocibob@gmail.com>
parents: 9703
diff changeset
   376
  NS_LOG_FUNCTION (this);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   377
  return m_dcf->GetCwMin ();
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   378
}
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   379
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   380
uint32_t
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   381
EdcaTxopN::GetMaxCw (void) const
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   382
{
9711
7f4c6aa52b52 Further work on cleaning up function logging of wifi module.
Edvin Močibob <edvin.mocibob@gmail.com>
parents: 9703
diff changeset
   383
  NS_LOG_FUNCTION (this);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   384
  return m_dcf->GetCwMax ();
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
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   387
uint32_t
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   388
EdcaTxopN::GetAifsn (void) const
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   389
{
9711
7f4c6aa52b52 Further work on cleaning up function logging of wifi module.
Edvin Močibob <edvin.mocibob@gmail.com>
parents: 9703
diff changeset
   390
  NS_LOG_FUNCTION (this);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   391
  return m_dcf->GetAifsn ();
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   392
}
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   393
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   394
void
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   395
EdcaTxopN::SetTxMiddle (MacTxMiddle *txMiddle)
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   396
{
9711
7f4c6aa52b52 Further work on cleaning up function logging of wifi module.
Edvin Močibob <edvin.mocibob@gmail.com>
parents: 9703
diff changeset
   397
  NS_LOG_FUNCTION (this << txMiddle);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   398
  m_txMiddle = txMiddle;
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
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   401
Ptr<MacLow>
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   402
EdcaTxopN::Low (void)
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   403
{
9711
7f4c6aa52b52 Further work on cleaning up function logging of wifi module.
Edvin Močibob <edvin.mocibob@gmail.com>
parents: 9703
diff changeset
   404
  NS_LOG_FUNCTION (this);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   405
  return m_low;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   406
}
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   407
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   408
void
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   409
EdcaTxopN::SetLow (Ptr<MacLow> low)
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   410
{
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   411
  NS_LOG_FUNCTION (this << low);
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   412
  m_low = low;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   413
}
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   414
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   415
bool
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   416
EdcaTxopN::NeedsAccess (void) const
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   417
{
9711
7f4c6aa52b52 Further work on cleaning up function logging of wifi module.
Edvin Močibob <edvin.mocibob@gmail.com>
parents: 9703
diff changeset
   418
  NS_LOG_FUNCTION (this);
5963
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
   419
  return !m_queue->IsEmpty () || m_currentPacket != 0 || m_baManager->HasPackets ();
4408
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
11174
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   422
uint16_t EdcaTxopN::GetNextSequenceNumberfor (WifiMacHeader *hdr)
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   423
{
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   424
  return m_txMiddle->GetNextSequenceNumberfor (hdr);
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   425
}
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   426
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   427
uint16_t EdcaTxopN::PeekNextSequenceNumberfor (WifiMacHeader *hdr)
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   428
{
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   429
  return m_txMiddle->PeekNextSequenceNumberfor (hdr);
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   430
}
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   431
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   432
Ptr<const Packet>
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   433
EdcaTxopN::PeekNextRetransmitPacket (WifiMacHeader &header,Mac48Address recipient, uint8_t tid, Time *timestamp)
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   434
{
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   435
  return m_baManager->PeekNextPacket (header,recipient,tid, timestamp);
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   436
}
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   437
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   438
void
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   439
EdcaTxopN::RemoveRetransmitPacket (uint8_t tid, Mac48Address recipient, uint16_t seqnumber)
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   440
{
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   441
   m_baManager->RemovePacket (tid, recipient, seqnumber);
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   442
}
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   443
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   444
void
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   445
EdcaTxopN::NotifyAccessGranted (void)
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   446
{
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   447
  NS_LOG_FUNCTION (this);
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   448
  if (m_currentPacket == 0)
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   449
    {
5963
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
   450
      if (m_queue->IsEmpty () && !m_baManager->HasPackets ())
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   451
        {
5976
dba5c9b69c3b use NS_LOG_APPEND_CONTEXT instead of MY_DEBUG macro
Mirko Banchi <mk.banchi@gmail.com>
parents: 5965
diff changeset
   452
          NS_LOG_DEBUG ("queue is empty");
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   453
          return;
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   454
        }
6485
429560e899ab Bug 842 - During retransmission of a BAR i must wait for a Block ack response and not for a normal ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 6477
diff changeset
   455
      if (m_baManager->HasBar (m_currentBar))
5963
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
   456
        {
6485
429560e899ab Bug 842 - During retransmission of a BAR i must wait for a Block ack response and not for a normal ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 6477
diff changeset
   457
          SendBlockAckRequest (m_currentBar);
5963
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
   458
          return;
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
   459
        }
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
   460
      /* check if packets need retransmission are stored in BlockAckManager */
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
   461
      m_currentPacket = m_baManager->GetNextPacket (m_currentHdr);
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
   462
      if (m_currentPacket == 0)
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
   463
        {
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
   464
          if (m_queue->PeekFirstAvailable (&m_currentHdr, m_currentPacketTimestamp, m_qosBlockedDestinations) == 0)
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
   465
            {
5976
dba5c9b69c3b use NS_LOG_APPEND_CONTEXT instead of MY_DEBUG macro
Mirko Banchi <mk.banchi@gmail.com>
parents: 5965
diff changeset
   466
              NS_LOG_DEBUG ("no available packets in the queue");
5963
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
   467
              return;
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
   468
            }
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   469
          if (m_currentHdr.IsQosData () && !m_currentHdr.GetAddr1 ().IsBroadcast ()
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   470
              && m_blockAckThreshold > 0
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   471
              && !m_baManager->ExistsAgreement (m_currentHdr.GetAddr1 (), m_currentHdr.GetQosTid ())
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   472
              && SetupBlockAckIfNeeded ())
5963
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
   473
            {
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
   474
              return;
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
   475
            }
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
   476
          m_currentPacket = m_queue->DequeueFirstAvailable (&m_currentHdr, m_currentPacketTimestamp, m_qosBlockedDestinations);
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
   477
          NS_ASSERT (m_currentPacket != 0);
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   478
5963
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
   479
          uint16_t sequence = m_txMiddle->GetNextSequenceNumberfor (&m_currentHdr);
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
   480
          m_currentHdr.SetSequenceNumber (sequence);
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
   481
          m_currentHdr.SetFragmentNumber (0);
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
   482
          m_currentHdr.SetNoMoreFragments ();
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
   483
          m_currentHdr.SetNoRetry ();
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
   484
          m_fragmentNumber = 0;
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   485
          NS_LOG_DEBUG ("dequeued size=" << m_currentPacket->GetSize () <<
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   486
                        ", to=" << m_currentHdr.GetAddr1 () <<
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   487
                        ", seq=" << m_currentHdr.GetSequenceControl ());
5963
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
   488
          if (m_currentHdr.IsQosData () && !m_currentHdr.GetAddr1 ().IsBroadcast ())
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
   489
            {
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
   490
              VerifyBlockAck ();
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
   491
            }
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
   492
        }
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
  MacLowTransmissionParameters params;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   495
  params.DisableOverrideDurationId ();
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   496
  if (m_currentHdr.GetAddr1 ().IsGroup ())
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   497
    {
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   498
      params.DisableRts ();
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   499
      params.DisableAck ();
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   500
      params.DisableNextData ();
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   501
      m_low->StartTransmission (m_currentPacket,
5963
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
   502
                                &m_currentHdr,
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
   503
                                params,
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
   504
                                m_transmissionListener);
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   505
5976
dba5c9b69c3b use NS_LOG_APPEND_CONTEXT instead of MY_DEBUG macro
Mirko Banchi <mk.banchi@gmail.com>
parents: 5965
diff changeset
   506
      NS_LOG_DEBUG ("tx broadcast");
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   507
    }
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   508
  else if (m_currentHdr.GetType () == WIFI_MAC_CTL_BACKREQ)
6485
429560e899ab Bug 842 - During retransmission of a BAR i must wait for a Block ack response and not for a normal ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 6477
diff changeset
   509
    {
429560e899ab Bug 842 - During retransmission of a BAR i must wait for a Block ack response and not for a normal ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 6477
diff changeset
   510
      SendBlockAckRequest (m_currentBar);
429560e899ab Bug 842 - During retransmission of a BAR i must wait for a Block ack response and not for a normal ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 6477
diff changeset
   511
    }
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   512
  else
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   513
    {
11174
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   514
        if (m_currentHdr.IsQosData () && m_currentHdr.IsQosBlockAck ())
5963
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
   515
        {
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
   516
          params.DisableAck ();
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
   517
        }
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
   518
      else
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   519
        {
5963
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
   520
          params.EnableAck ();
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
   521
        }
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   522
      if (NeedFragmentation () && ((m_currentHdr.IsQosData ()
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   523
                                    && !m_currentHdr.IsQosAmsdu ())
9715
90e0789f7951 Bug 1579 - edca-txop-n fragmentation causes segfault
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 9711
diff changeset
   524
                                   || 
90e0789f7951 Bug 1579 - edca-txop-n fragmentation causes segfault
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 9711
diff changeset
   525
                                   (m_currentHdr.IsData ()
90e0789f7951 Bug 1579 - edca-txop-n fragmentation causes segfault
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 9711
diff changeset
   526
                                    && !m_currentHdr.IsQosData () && m_currentHdr.IsQosAmsdu ()))
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   527
          && (m_blockAckThreshold == 0
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   528
              || m_blockAckType == BASIC_BLOCK_ACK))
5963
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
   529
        {
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
   530
          //With COMPRESSED_BLOCK_ACK fragmentation must be avoided.
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   531
          params.DisableRts ();
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   532
          WifiMacHeader hdr;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   533
          Ptr<Packet> fragment = GetFragmentPacket (&hdr);
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   534
          if (IsLastFragment ())
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   535
            {
5976
dba5c9b69c3b use NS_LOG_APPEND_CONTEXT instead of MY_DEBUG macro
Mirko Banchi <mk.banchi@gmail.com>
parents: 5965
diff changeset
   536
              NS_LOG_DEBUG ("fragmenting last fragment size=" << fragment->GetSize ());
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   537
              params.DisableNextData ();
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   538
            }
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   539
          else
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   540
            {
5976
dba5c9b69c3b use NS_LOG_APPEND_CONTEXT instead of MY_DEBUG macro
Mirko Banchi <mk.banchi@gmail.com>
parents: 5965
diff changeset
   541
              NS_LOG_DEBUG ("fragmenting size=" << fragment->GetSize ());
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   542
              params.EnableNextData (GetNextFragmentSize ());
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   543
            }
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   544
          m_low->StartTransmission (fragment, &hdr, params,
5963
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
   545
                                    m_transmissionListener);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   546
        }
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   547
      else
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   548
        {
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   549
          WifiMacHeader peekedHdr;
11174
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   550
          Time tstamp;
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   551
          if (m_currentHdr.IsQosData ()
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   552
              && m_queue->PeekByTidAndAddress (&peekedHdr, m_currentHdr.GetQosTid (),
11174
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   553
                                               WifiMacHeader::ADDR1, m_currentHdr.GetAddr1 (), &tstamp)
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   554
              && !m_currentHdr.GetAddr1 ().IsBroadcast ()
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   555
              && m_aggregator != 0 && !m_currentHdr.IsRetry ())
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   556
            {
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   557
              /* here is performed aggregation */
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   558
              Ptr<Packet> currentAggregatedPacket = Create<Packet> ();
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   559
              m_aggregator->Aggregate (m_currentPacket, currentAggregatedPacket,
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   560
                                       MapSrcAddressForAggregation (peekedHdr),
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   561
                                       MapDestAddressForAggregation (peekedHdr));
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   562
              bool aggregated = false;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   563
              bool isAmsdu = false;
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   564
              Ptr<const Packet> peekedPacket = m_queue->PeekByTidAndAddress (&peekedHdr, m_currentHdr.GetQosTid (),
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   565
                                                                             WifiMacHeader::ADDR1,
11174
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   566
                                                                             m_currentHdr.GetAddr1 (), &tstamp);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   567
              while (peekedPacket != 0)
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   568
                {
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   569
                  aggregated = m_aggregator->Aggregate (peekedPacket, currentAggregatedPacket,
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   570
                                                        MapSrcAddressForAggregation (peekedHdr),
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   571
                                                        MapDestAddressForAggregation (peekedHdr));
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   572
                  if (aggregated)
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   573
                    {
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   574
                      isAmsdu = true;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   575
                      m_queue->Remove (peekedPacket);
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   576
                    }
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   577
                  else
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   578
                    {
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   579
                      break;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   580
                    }
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   581
                  peekedPacket = m_queue->PeekByTidAndAddress (&peekedHdr, m_currentHdr.GetQosTid (),
11174
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   582
                                                               WifiMacHeader::ADDR1, m_currentHdr.GetAddr1 (), &tstamp);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   583
                }
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   584
              if (isAmsdu)
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   585
                {
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   586
                  m_currentHdr.SetQosAmsdu ();
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   587
                  m_currentHdr.SetAddr3 (m_low->GetBssid ());
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   588
                  m_currentPacket = currentAggregatedPacket;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   589
                  currentAggregatedPacket = 0;
5976
dba5c9b69c3b use NS_LOG_APPEND_CONTEXT instead of MY_DEBUG macro
Mirko Banchi <mk.banchi@gmail.com>
parents: 5965
diff changeset
   590
                  NS_LOG_DEBUG ("tx unicast A-MSDU");
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   591
                }
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   592
            }
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   593
          if (NeedRts ())
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   594
            {
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   595
              params.EnableRts ();
5976
dba5c9b69c3b use NS_LOG_APPEND_CONTEXT instead of MY_DEBUG macro
Mirko Banchi <mk.banchi@gmail.com>
parents: 5965
diff changeset
   596
              NS_LOG_DEBUG ("tx unicast rts");
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   597
            }
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   598
          else
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   599
            {
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   600
              params.DisableRts ();
5976
dba5c9b69c3b use NS_LOG_APPEND_CONTEXT instead of MY_DEBUG macro
Mirko Banchi <mk.banchi@gmail.com>
parents: 5965
diff changeset
   601
              NS_LOG_DEBUG ("tx unicast");
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   602
            }
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   603
          params.DisableNextData ();
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   604
          m_low->StartTransmission (m_currentPacket, &m_currentHdr,
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   605
                                    params, m_transmissionListener);
11174
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   606
          if(!GetAmpduExist())
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   607
            CompleteTx ();
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   608
        }
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   609
    }
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   610
}
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   611
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   612
void EdcaTxopN::NotifyInternalCollision (void)
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   613
{
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   614
  NS_LOG_FUNCTION (this);
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   615
  NotifyCollision ();
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   616
}
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   617
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   618
void
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   619
EdcaTxopN::NotifyCollision (void)
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   620
{
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   621
  NS_LOG_FUNCTION (this);
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   622
  m_dcf->StartBackoffNow (m_rng->GetNext (0, m_dcf->GetCw ()));
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   623
  RestartAccessIfNeeded ();
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   624
}
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   625
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   626
void
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   627
EdcaTxopN::GotCts (double snr, WifiMode txMode)
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   628
{
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   629
  NS_LOG_FUNCTION (this << snr << txMode);
5976
dba5c9b69c3b use NS_LOG_APPEND_CONTEXT instead of MY_DEBUG macro
Mirko Banchi <mk.banchi@gmail.com>
parents: 5965
diff changeset
   630
  NS_LOG_DEBUG ("got cts");
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   631
}
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   632
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   633
void
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   634
EdcaTxopN::MissedCts (void)
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   635
{
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   636
  NS_LOG_FUNCTION (this);
5976
dba5c9b69c3b use NS_LOG_APPEND_CONTEXT instead of MY_DEBUG macro
Mirko Banchi <mk.banchi@gmail.com>
parents: 5965
diff changeset
   637
  NS_LOG_DEBUG ("missed cts");
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   638
  if (!NeedRtsRetransmission ())
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   639
    {
5976
dba5c9b69c3b use NS_LOG_APPEND_CONTEXT instead of MY_DEBUG macro
Mirko Banchi <mk.banchi@gmail.com>
parents: 5965
diff changeset
   640
      NS_LOG_DEBUG ("Cts Fail");
6065
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 5819
diff changeset
   641
      m_stationManager->ReportFinalRtsFailed (m_currentHdr.GetAddr1 (), &m_currentHdr);
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   642
      if (!m_txFailedCallback.IsNull ())
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   643
        {
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   644
          m_txFailedCallback (m_currentHdr);
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   645
        }
11174
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   646
      if (GetAmpduExist())
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   647
        {
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   648
          m_low->FlushAggregateQueue ();
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   649
        }
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   650
      // to reset the dcf.
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   651
      m_currentPacket = 0;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   652
      m_dcf->ResetCw ();
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   653
    }
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   654
  else
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   655
    {
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   656
      m_dcf->UpdateFailedCw ();
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   657
    }
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   658
  m_dcf->StartBackoffNow (m_rng->GetNext (0, m_dcf->GetCw ()));
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   659
  RestartAccessIfNeeded ();
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   660
}
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   661
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   662
void
5189
8fcdf87a790a Channel switching support for Wifi
Ramon Bauza
parents: 4720
diff changeset
   663
EdcaTxopN::NotifyChannelSwitching (void)
8fcdf87a790a Channel switching support for Wifi
Ramon Bauza
parents: 4720
diff changeset
   664
{
9711
7f4c6aa52b52 Further work on cleaning up function logging of wifi module.
Edvin Močibob <edvin.mocibob@gmail.com>
parents: 9703
diff changeset
   665
  NS_LOG_FUNCTION (this);
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   666
  m_queue->Flush ();
5189
8fcdf87a790a Channel switching support for Wifi
Ramon Bauza
parents: 4720
diff changeset
   667
  m_currentPacket = 0;
8fcdf87a790a Channel switching support for Wifi
Ramon Bauza
parents: 4720
diff changeset
   668
}
11159
b744c32b69bc patch to support IEEE 1609.4 MAC extension in wave module
Junling Bu <linlinjavaer@gmail.com>
parents: 10968
diff changeset
   669
void
b744c32b69bc patch to support IEEE 1609.4 MAC extension in wave module
Junling Bu <linlinjavaer@gmail.com>
parents: 10968
diff changeset
   670
EdcaTxopN::NotifySleep (void)
b744c32b69bc patch to support IEEE 1609.4 MAC extension in wave module
Junling Bu <linlinjavaer@gmail.com>
parents: 10968
diff changeset
   671
{
b744c32b69bc patch to support IEEE 1609.4 MAC extension in wave module
Junling Bu <linlinjavaer@gmail.com>
parents: 10968
diff changeset
   672
  NS_LOG_FUNCTION (this);
b744c32b69bc patch to support IEEE 1609.4 MAC extension in wave module
Junling Bu <linlinjavaer@gmail.com>
parents: 10968
diff changeset
   673
  if (m_currentPacket != 0)
b744c32b69bc patch to support IEEE 1609.4 MAC extension in wave module
Junling Bu <linlinjavaer@gmail.com>
parents: 10968
diff changeset
   674
    {
b744c32b69bc patch to support IEEE 1609.4 MAC extension in wave module
Junling Bu <linlinjavaer@gmail.com>
parents: 10968
diff changeset
   675
      m_queue->PushFront (m_currentPacket, m_currentHdr);
b744c32b69bc patch to support IEEE 1609.4 MAC extension in wave module
Junling Bu <linlinjavaer@gmail.com>
parents: 10968
diff changeset
   676
      m_currentPacket = 0;
b744c32b69bc patch to support IEEE 1609.4 MAC extension in wave module
Junling Bu <linlinjavaer@gmail.com>
parents: 10968
diff changeset
   677
    }
b744c32b69bc patch to support IEEE 1609.4 MAC extension in wave module
Junling Bu <linlinjavaer@gmail.com>
parents: 10968
diff changeset
   678
}
b744c32b69bc patch to support IEEE 1609.4 MAC extension in wave module
Junling Bu <linlinjavaer@gmail.com>
parents: 10968
diff changeset
   679
void
b744c32b69bc patch to support IEEE 1609.4 MAC extension in wave module
Junling Bu <linlinjavaer@gmail.com>
parents: 10968
diff changeset
   680
EdcaTxopN::NotifyWakeUp (void)
b744c32b69bc patch to support IEEE 1609.4 MAC extension in wave module
Junling Bu <linlinjavaer@gmail.com>
parents: 10968
diff changeset
   681
{
b744c32b69bc patch to support IEEE 1609.4 MAC extension in wave module
Junling Bu <linlinjavaer@gmail.com>
parents: 10968
diff changeset
   682
  NS_LOG_FUNCTION (this);
b744c32b69bc patch to support IEEE 1609.4 MAC extension in wave module
Junling Bu <linlinjavaer@gmail.com>
parents: 10968
diff changeset
   683
  RestartAccessIfNeeded ();
b744c32b69bc patch to support IEEE 1609.4 MAC extension in wave module
Junling Bu <linlinjavaer@gmail.com>
parents: 10968
diff changeset
   684
}
5189
8fcdf87a790a Channel switching support for Wifi
Ramon Bauza
parents: 4720
diff changeset
   685
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   686
void
5819
514ec98954ab Wifi code cleanup: Correcting various const keyword ordering and removing superfluous (boolean)?true:false.
Timo Bingmann <tbns@idlebox.net>
parents: 5189
diff changeset
   687
EdcaTxopN::Queue (Ptr<const Packet> packet, const WifiMacHeader &hdr)
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   688
{
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   689
  NS_LOG_FUNCTION (this << packet << &hdr);
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   690
  WifiMacTrailer fcs;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   691
  uint32_t fullPacketSize = hdr.GetSerializedSize () + packet->GetSize () + fcs.GetSerializedSize ();
6065
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 5819
diff changeset
   692
  m_stationManager->PrepareForQueue (hdr.GetAddr1 (), &hdr,
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 5819
diff changeset
   693
                                     packet, fullPacketSize);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   694
  m_queue->Enqueue (packet, hdr);
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   695
  StartAccessIfNeeded ();
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   696
}
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   697
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   698
void
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   699
EdcaTxopN::GotAck (double snr, WifiMode txMode)
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   700
{
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   701
  NS_LOG_FUNCTION (this << snr << txMode);
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   702
  if (!NeedFragmentation ()
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   703
      || IsLastFragment ()
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   704
      || m_currentHdr.IsQosAmsdu ())
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   705
    {
5976
dba5c9b69c3b use NS_LOG_APPEND_CONTEXT instead of MY_DEBUG macro
Mirko Banchi <mk.banchi@gmail.com>
parents: 5965
diff changeset
   706
      NS_LOG_DEBUG ("got ack. tx done.");
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   707
      if (!m_txOkCallback.IsNull ())
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   708
        {
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   709
          m_txOkCallback (m_currentHdr);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   710
        }
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   711
5964
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
   712
      if (m_currentHdr.IsAction ())
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
   713
        {
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
   714
          WifiActionHeader actionHdr;
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
   715
          Ptr<Packet> p = m_currentPacket->Copy ();
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
   716
          p->RemoveHeader (actionHdr);
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   717
          if (actionHdr.GetCategory () == WifiActionHeader::BLOCK_ACK
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   718
              && actionHdr.GetAction ().blockAck == WifiActionHeader::BLOCK_ACK_DELBA)
5964
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
   719
            {
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
   720
              MgtDelBaHeader delBa;
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
   721
              p->PeekHeader (delBa);
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
   722
              if (delBa.IsByOriginator ())
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
   723
                {
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
   724
                  m_baManager->TearDownBlockAck (m_currentHdr.GetAddr1 (), delBa.GetTid ());
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
   725
                }
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
   726
              else
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
   727
                {
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
   728
                  m_low->DestroyBlockAckAgreement (m_currentHdr.GetAddr1 (), delBa.GetTid ());
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
   729
                }
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
   730
            }
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
   731
        }
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   732
      m_currentPacket = 0;
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   733
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   734
      m_dcf->ResetCw ();
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   735
      m_dcf->StartBackoffNow (m_rng->GetNext (0, m_dcf->GetCw ()));
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   736
      RestartAccessIfNeeded ();
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   737
    }
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   738
  else
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   739
    {
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   740
      NS_LOG_DEBUG ("got ack. tx not done, size=" << m_currentPacket->GetSize ());
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   741
    }
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   742
}
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   743
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   744
void
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   745
EdcaTxopN::MissedAck (void)
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   746
{
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   747
  NS_LOG_FUNCTION (this);
5976
dba5c9b69c3b use NS_LOG_APPEND_CONTEXT instead of MY_DEBUG macro
Mirko Banchi <mk.banchi@gmail.com>
parents: 5965
diff changeset
   748
  NS_LOG_DEBUG ("missed ack");
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   749
  if (!NeedDataRetransmission ())
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   750
    {
5976
dba5c9b69c3b use NS_LOG_APPEND_CONTEXT instead of MY_DEBUG macro
Mirko Banchi <mk.banchi@gmail.com>
parents: 5965
diff changeset
   751
      NS_LOG_DEBUG ("Ack Fail");
6065
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 5819
diff changeset
   752
      m_stationManager->ReportFinalDataFailed (m_currentHdr.GetAddr1 (), &m_currentHdr);
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   753
      if (!m_txFailedCallback.IsNull ())
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   754
        {
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   755
          m_txFailedCallback (m_currentHdr);
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   756
        }
11174
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   757
      if (!GetAmpduExist())
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   758
        {
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   759
        // to reset the dcf.
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   760
        m_currentPacket = 0;
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   761
        }
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   762
      else
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   763
        {
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   764
          NS_LOG_DEBUG ("Transmit Block Ack Request");
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   765
          CtrlBAckRequestHeader reqHdr;
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   766
          reqHdr.SetType (COMPRESSED_BLOCK_ACK);
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   767
          uint8_t tid = m_currentHdr.GetQosTid ();
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   768
          reqHdr.SetStartingSequence (m_txMiddle->PeekNextSequenceNumberfor (&m_currentHdr));
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   769
          reqHdr.SetTidInfo (tid);
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   770
          reqHdr.SetHtImmediateAck(true);
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   771
          Ptr<Packet> bar = Create<Packet> ();
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   772
          bar->AddHeader (reqHdr);
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   773
          Bar request (bar, m_currentHdr.GetAddr1 (), tid, reqHdr.MustSendHtImmediateAck());
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   774
          m_currentBar = request;
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   775
          WifiMacHeader hdr;
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   776
          hdr.SetType (WIFI_MAC_CTL_BACKREQ);
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   777
          hdr.SetAddr1 (request.recipient);
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   778
          hdr.SetAddr2 (m_low->GetAddress ());
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   779
          hdr.SetAddr3 (m_low->GetBssid ());
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   780
          hdr.SetDsNotTo ();
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   781
          hdr.SetDsNotFrom ();
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   782
          hdr.SetNoRetry ();
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   783
          hdr.SetNoMoreFragments ();
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   784
          m_currentPacket = request.bar;
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   785
          m_currentHdr = hdr;
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   786
        }
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   787
      m_dcf->ResetCw ();
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   788
    }
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   789
  else
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   790
    {
5976
dba5c9b69c3b use NS_LOG_APPEND_CONTEXT instead of MY_DEBUG macro
Mirko Banchi <mk.banchi@gmail.com>
parents: 5965
diff changeset
   791
      NS_LOG_DEBUG ("Retransmit");
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   792
      m_currentHdr.SetRetry ();
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   793
      m_dcf->UpdateFailedCw ();
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   794
    }
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   795
  m_dcf->StartBackoffNow (m_rng->GetNext (0, m_dcf->GetCw ()));
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   796
  RestartAccessIfNeeded ();
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   797
}
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   798
5958
dd0accd82659 add block ack timeouts
Mirko Banchi <mk.banchi@gmail.com>
parents: 5955
diff changeset
   799
void
dd0accd82659 add block ack timeouts
Mirko Banchi <mk.banchi@gmail.com>
parents: 5955
diff changeset
   800
EdcaTxopN::MissedBlockAck (void)
dd0accd82659 add block ack timeouts
Mirko Banchi <mk.banchi@gmail.com>
parents: 5955
diff changeset
   801
{
dd0accd82659 add block ack timeouts
Mirko Banchi <mk.banchi@gmail.com>
parents: 5955
diff changeset
   802
  NS_LOG_FUNCTION (this);
5976
dba5c9b69c3b use NS_LOG_APPEND_CONTEXT instead of MY_DEBUG macro
Mirko Banchi <mk.banchi@gmail.com>
parents: 5965
diff changeset
   803
  NS_LOG_DEBUG ("missed block ack");
11174
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   804
  if (NeedBarRetransmission())
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   805
  {
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   806
    if (!GetAmpduExist())
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   807
    {
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   808
      //should i report this to station addressed by ADDR1?
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   809
      NS_LOG_DEBUG ("Retransmit block ack request");
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   810
      m_currentHdr.SetRetry ();
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   811
    }
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   812
    else
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   813
    {
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   814
          //standard says when loosing a BlockAck originator may send a BAR page 139
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   815
          NS_LOG_DEBUG ("Transmit Block Ack Request"); 
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   816
          CtrlBAckRequestHeader reqHdr;
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   817
          reqHdr.SetType (COMPRESSED_BLOCK_ACK);
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   818
          uint8_t tid = 0;
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   819
          if (m_currentHdr.IsQosData())
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   820
            {
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   821
               tid = m_currentHdr.GetQosTid ();
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   822
               reqHdr.SetStartingSequence (m_currentHdr.GetSequenceNumber ());
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   823
            }
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   824
          else if (m_currentHdr.IsBlockAckReq())
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   825
            {
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   826
              CtrlBAckRequestHeader baReqHdr;
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   827
              m_currentPacket->PeekHeader (baReqHdr);
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   828
              tid = baReqHdr.GetTidInfo ();
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   829
              reqHdr.SetStartingSequence (baReqHdr.GetStartingSequence ());
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   830
            }
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   831
         else if (m_currentHdr.IsBlockAck())
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   832
           {
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   833
             CtrlBAckResponseHeader baRespHdr;
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   834
             m_currentPacket->PeekHeader (baRespHdr);
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   835
             tid = baRespHdr.GetTidInfo();
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   836
             reqHdr.SetStartingSequence (m_currentHdr.GetSequenceNumber ());
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   837
           }   
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   838
        reqHdr.SetTidInfo (tid);
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   839
        reqHdr.SetHtImmediateAck (true);
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   840
        Ptr<Packet> bar = Create<Packet> ();
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   841
        bar->AddHeader (reqHdr);
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   842
        Bar request (bar, m_currentHdr.GetAddr1 (), tid, reqHdr.MustSendHtImmediateAck ());
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   843
        m_currentBar = request;
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   844
        WifiMacHeader hdr;
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   845
        hdr.SetType (WIFI_MAC_CTL_BACKREQ);
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   846
        hdr.SetAddr1 (request.recipient);
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   847
        hdr.SetAddr2 (m_low->GetAddress ());
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   848
        hdr.SetAddr3 (m_low->GetBssid ());
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   849
        hdr.SetDsNotTo ();
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   850
        hdr.SetDsNotFrom ();
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   851
        hdr.SetNoRetry ();
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   852
        hdr.SetNoMoreFragments ();
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   853
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   854
        m_currentPacket = request.bar;
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   855
        m_currentHdr = hdr;
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   856
      }
5958
dd0accd82659 add block ack timeouts
Mirko Banchi <mk.banchi@gmail.com>
parents: 5955
diff changeset
   857
  m_dcf->UpdateFailedCw ();
11174
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   858
  }
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   859
  else
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   860
  {
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   861
      NS_LOG_DEBUG ("Block Ack Request Fail");
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   862
      // to reset the dcf.
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   863
      m_currentPacket = 0;
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   864
      m_dcf->ResetCw ();
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   865
  }
5958
dd0accd82659 add block ack timeouts
Mirko Banchi <mk.banchi@gmail.com>
parents: 5955
diff changeset
   866
  m_dcf->StartBackoffNow (m_rng->GetNext (0, m_dcf->GetCw ()));
dd0accd82659 add block ack timeouts
Mirko Banchi <mk.banchi@gmail.com>
parents: 5955
diff changeset
   867
  RestartAccessIfNeeded ();
dd0accd82659 add block ack timeouts
Mirko Banchi <mk.banchi@gmail.com>
parents: 5955
diff changeset
   868
}
dd0accd82659 add block ack timeouts
Mirko Banchi <mk.banchi@gmail.com>
parents: 5955
diff changeset
   869
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   870
Ptr<MsduAggregator>
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   871
EdcaTxopN::GetMsduAggregator (void) const
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   872
{
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   873
  return m_aggregator;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   874
}
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   875
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   876
void
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   877
EdcaTxopN::RestartAccessIfNeeded (void)
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   878
{
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   879
  NS_LOG_FUNCTION (this);
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   880
  if ((m_currentPacket != 0
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   881
       || !m_queue->IsEmpty () || m_baManager->HasPackets ())
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   882
      && !m_dcf->IsAccessRequested ())
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   883
    {
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   884
      m_manager->RequestAccess (m_dcf);
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   885
    }
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   886
}
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   887
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   888
void
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   889
EdcaTxopN::StartAccessIfNeeded (void)
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   890
{
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   891
  NS_LOG_FUNCTION (this);
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   892
  if (m_currentPacket == 0
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   893
      && (!m_queue->IsEmpty () || m_baManager->HasPackets ())
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   894
      && !m_dcf->IsAccessRequested ())
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   895
    {
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   896
      m_manager->RequestAccess (m_dcf);
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   897
    }
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   898
}
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   899
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   900
bool
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   901
EdcaTxopN::NeedRts (void)
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   902
{
9711
7f4c6aa52b52 Further work on cleaning up function logging of wifi module.
Edvin Močibob <edvin.mocibob@gmail.com>
parents: 9703
diff changeset
   903
  NS_LOG_FUNCTION (this);
6065
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 5819
diff changeset
   904
  return m_stationManager->NeedRts (m_currentHdr.GetAddr1 (), &m_currentHdr,
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 5819
diff changeset
   905
                                    m_currentPacket);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   906
}
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   907
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   908
bool
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   909
EdcaTxopN::NeedRtsRetransmission (void)
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   910
{
9711
7f4c6aa52b52 Further work on cleaning up function logging of wifi module.
Edvin Močibob <edvin.mocibob@gmail.com>
parents: 9703
diff changeset
   911
  NS_LOG_FUNCTION (this);
6065
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 5819
diff changeset
   912
  return m_stationManager->NeedRtsRetransmission (m_currentHdr.GetAddr1 (), &m_currentHdr,
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 5819
diff changeset
   913
                                                  m_currentPacket);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   914
}
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   915
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   916
bool
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   917
EdcaTxopN::NeedDataRetransmission (void)
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   918
{
9711
7f4c6aa52b52 Further work on cleaning up function logging of wifi module.
Edvin Močibob <edvin.mocibob@gmail.com>
parents: 9703
diff changeset
   919
  NS_LOG_FUNCTION (this);
6065
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 5819
diff changeset
   920
  return m_stationManager->NeedDataRetransmission (m_currentHdr.GetAddr1 (), &m_currentHdr,
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 5819
diff changeset
   921
                                                   m_currentPacket);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   922
}
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   923
11174
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   924
bool
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   925
EdcaTxopN::NeedBarRetransmission (void)
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   926
{
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   927
   uint8_t tid = 0;
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   928
   uint16_t seqNumber = 0;
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   929
   if (m_currentHdr.IsQosData ())
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   930
     {
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   931
       tid = m_currentHdr.GetQosTid ();
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   932
       seqNumber = m_currentHdr.GetSequenceNumber ();
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   933
     }
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   934
  else if (m_currentHdr.IsBlockAckReq ())
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   935
    {
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   936
      CtrlBAckRequestHeader baReqHdr;
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   937
      m_currentPacket->PeekHeader (baReqHdr);
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   938
      tid = baReqHdr.GetTidInfo ();
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   939
      seqNumber = baReqHdr.GetStartingSequence ();
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   940
     }
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   941
  else if (m_currentHdr.IsBlockAck ())
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   942
     {
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   943
        CtrlBAckResponseHeader baRespHdr;
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   944
        m_currentPacket->PeekHeader (baRespHdr);
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   945
        tid = baRespHdr.GetTidInfo ();
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   946
        seqNumber = m_currentHdr.GetSequenceNumber ();
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   947
     }  
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   948
  return m_baManager->NeedBarRetransmission (tid, seqNumber, m_currentHdr.GetAddr1 ());
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   949
}
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
   950
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   951
void
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   952
EdcaTxopN::NextFragment (void)
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   953
{
9711
7f4c6aa52b52 Further work on cleaning up function logging of wifi module.
Edvin Močibob <edvin.mocibob@gmail.com>
parents: 9703
diff changeset
   954
  NS_LOG_FUNCTION (this);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   955
  m_fragmentNumber++;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   956
}
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   957
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   958
void
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   959
EdcaTxopN::StartNext (void)
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   960
{
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   961
  NS_LOG_FUNCTION (this);
5976
dba5c9b69c3b use NS_LOG_APPEND_CONTEXT instead of MY_DEBUG macro
Mirko Banchi <mk.banchi@gmail.com>
parents: 5965
diff changeset
   962
  NS_LOG_DEBUG ("start next packet fragment");
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   963
  /* this callback is used only for fragments. */
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   964
  NextFragment ();
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   965
  WifiMacHeader hdr;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   966
  Ptr<Packet> fragment = GetFragmentPacket (&hdr);
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   967
  MacLowTransmissionParameters params;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   968
  params.EnableAck ();
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   969
  params.DisableRts ();
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   970
  params.DisableOverrideDurationId ();
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   971
  if (IsLastFragment ())
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   972
    {
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   973
      params.DisableNextData ();
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   974
    }
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
   975
  else
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   976
    {
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   977
      params.EnableNextData (GetNextFragmentSize ());
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   978
    }
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   979
  Low ()->StartTransmission (fragment, &hdr, params, m_transmissionListener);
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   980
}
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   981
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   982
void
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   983
EdcaTxopN::Cancel (void)
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   984
{
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   985
  NS_LOG_FUNCTION (this);
5976
dba5c9b69c3b use NS_LOG_APPEND_CONTEXT instead of MY_DEBUG macro
Mirko Banchi <mk.banchi@gmail.com>
parents: 5965
diff changeset
   986
  NS_LOG_DEBUG ("transmission cancelled");
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   987
}
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
   988
9176
41ab1e874804 Bug 555 - DCF immediate access fix
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 8981
diff changeset
   989
void
41ab1e874804 Bug 555 - DCF immediate access fix
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 8981
diff changeset
   990
EdcaTxopN::EndTxNoAck (void)
41ab1e874804 Bug 555 - DCF immediate access fix
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 8981
diff changeset
   991
{
41ab1e874804 Bug 555 - DCF immediate access fix
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 8981
diff changeset
   992
  NS_LOG_FUNCTION (this);
41ab1e874804 Bug 555 - DCF immediate access fix
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 8981
diff changeset
   993
  NS_LOG_DEBUG ("a transmission that did not require an ACK just finished");
41ab1e874804 Bug 555 - DCF immediate access fix
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 8981
diff changeset
   994
  m_currentPacket = 0;
41ab1e874804 Bug 555 - DCF immediate access fix
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 8981
diff changeset
   995
  m_dcf->ResetCw ();
41ab1e874804 Bug 555 - DCF immediate access fix
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 8981
diff changeset
   996
  m_dcf->StartBackoffNow (m_rng->GetNext (0, m_dcf->GetCw ()));
41ab1e874804 Bug 555 - DCF immediate access fix
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 8981
diff changeset
   997
  StartAccessIfNeeded ();
41ab1e874804 Bug 555 - DCF immediate access fix
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 8981
diff changeset
   998
}
41ab1e874804 Bug 555 - DCF immediate access fix
Daniel Lertpratchya <nikkipui@gmail.com>
parents: 8981
diff changeset
   999
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1000
bool
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1001
EdcaTxopN::NeedFragmentation (void) const
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1002
{
9711
7f4c6aa52b52 Further work on cleaning up function logging of wifi module.
Edvin Močibob <edvin.mocibob@gmail.com>
parents: 9703
diff changeset
  1003
  NS_LOG_FUNCTION (this);
6065
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 5819
diff changeset
  1004
  return m_stationManager->NeedFragmentation (m_currentHdr.GetAddr1 (), &m_currentHdr,
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 5819
diff changeset
  1005
                                              m_currentPacket);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1006
}
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1007
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1008
uint32_t
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1009
EdcaTxopN::GetFragmentSize (void)
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1010
{
9711
7f4c6aa52b52 Further work on cleaning up function logging of wifi module.
Edvin Močibob <edvin.mocibob@gmail.com>
parents: 9703
diff changeset
  1011
  NS_LOG_FUNCTION (this);
6065
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 5819
diff changeset
  1012
  return m_stationManager->GetFragmentSize (m_currentHdr.GetAddr1 (), &m_currentHdr,
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 5819
diff changeset
  1013
                                            m_currentPacket, m_fragmentNumber);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1014
}
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1015
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1016
uint32_t
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
  1017
EdcaTxopN::GetNextFragmentSize (void)
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1018
{
9711
7f4c6aa52b52 Further work on cleaning up function logging of wifi module.
Edvin Močibob <edvin.mocibob@gmail.com>
parents: 9703
diff changeset
  1019
  NS_LOG_FUNCTION (this);
6065
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 5819
diff changeset
  1020
  return m_stationManager->GetFragmentSize (m_currentHdr.GetAddr1 (), &m_currentHdr,
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 5819
diff changeset
  1021
                                            m_currentPacket, m_fragmentNumber + 1);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1022
}
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1023
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1024
uint32_t
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
  1025
EdcaTxopN::GetFragmentOffset (void)
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1026
{
9711
7f4c6aa52b52 Further work on cleaning up function logging of wifi module.
Edvin Močibob <edvin.mocibob@gmail.com>
parents: 9703
diff changeset
  1027
  NS_LOG_FUNCTION (this);
6065
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 5819
diff changeset
  1028
  return m_stationManager->GetFragmentOffset (m_currentHdr.GetAddr1 (), &m_currentHdr,
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 5819
diff changeset
  1029
                                              m_currentPacket, m_fragmentNumber);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1030
}
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1031
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1032
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1033
bool
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1034
EdcaTxopN::IsLastFragment (void) const
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1035
{
9711
7f4c6aa52b52 Further work on cleaning up function logging of wifi module.
Edvin Močibob <edvin.mocibob@gmail.com>
parents: 9703
diff changeset
  1036
  NS_LOG_FUNCTION (this);
6065
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 5819
diff changeset
  1037
  return m_stationManager->IsLastFragment (m_currentHdr.GetAddr1 (), &m_currentHdr,
0f012e7d9128 bug 602
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 5819
diff changeset
  1038
                                           m_currentPacket, m_fragmentNumber);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1039
}
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1040
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1041
Ptr<Packet>
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1042
EdcaTxopN::GetFragmentPacket (WifiMacHeader *hdr)
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1043
{
9711
7f4c6aa52b52 Further work on cleaning up function logging of wifi module.
Edvin Močibob <edvin.mocibob@gmail.com>
parents: 9703
diff changeset
  1044
  NS_LOG_FUNCTION (this << hdr);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1045
  *hdr = m_currentHdr;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1046
  hdr->SetFragmentNumber (m_fragmentNumber);
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1047
  uint32_t startOffset = GetFragmentOffset ();
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1048
  Ptr<Packet> fragment;
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
  1049
  if (IsLastFragment ())
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1050
    {
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1051
      hdr->SetNoMoreFragments ();
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
  1052
    }
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
  1053
  else
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1054
    {
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1055
      hdr->SetMoreFragments ();
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1056
    }
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
  1057
  fragment = m_currentPacket->CreateFragment (startOffset,
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1058
                                              GetFragmentSize ());
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1059
  return fragment;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1060
}
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1061
5964
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
  1062
void
6331
eee2eab36748 Bug 910: Replace AccessClass with 802.11-style AcIndex
Dean Armstrong <deanarm@gmail.com>
parents: 6294
diff changeset
  1063
EdcaTxopN::SetAccessCategory (enum AcIndex ac)
5964
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
  1064
{
9711
7f4c6aa52b52 Further work on cleaning up function logging of wifi module.
Edvin Močibob <edvin.mocibob@gmail.com>
parents: 9703
diff changeset
  1065
  NS_LOG_FUNCTION (this << static_cast<uint32_t> (ac));
5964
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
  1066
  m_ac = ac;
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
  1067
}
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
  1068
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1069
Mac48Address
5819
514ec98954ab Wifi code cleanup: Correcting various const keyword ordering and removing superfluous (boolean)?true:false.
Timo Bingmann <tbns@idlebox.net>
parents: 5189
diff changeset
  1070
EdcaTxopN::MapSrcAddressForAggregation (const WifiMacHeader &hdr)
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1071
{
9711
7f4c6aa52b52 Further work on cleaning up function logging of wifi module.
Edvin Močibob <edvin.mocibob@gmail.com>
parents: 9703
diff changeset
  1072
  NS_LOG_FUNCTION (this << &hdr);
4434
5e3d1c06662f Fix build on osx-ppc optimized gcc 4.0.1
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4408
diff changeset
  1073
  Mac48Address retval;
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1074
  if (m_typeOfStation == STA || m_typeOfStation == ADHOC_STA)
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1075
    {
4434
5e3d1c06662f Fix build on osx-ppc optimized gcc 4.0.1
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4408
diff changeset
  1076
      retval = hdr.GetAddr2 ();
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1077
    }
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1078
  else
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1079
    {
4434
5e3d1c06662f Fix build on osx-ppc optimized gcc 4.0.1
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4408
diff changeset
  1080
      retval = hdr.GetAddr3 ();
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1081
    }
4434
5e3d1c06662f Fix build on osx-ppc optimized gcc 4.0.1
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4408
diff changeset
  1082
  return retval;
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1083
}
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1084
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1085
Mac48Address
5819
514ec98954ab Wifi code cleanup: Correcting various const keyword ordering and removing superfluous (boolean)?true:false.
Timo Bingmann <tbns@idlebox.net>
parents: 5189
diff changeset
  1086
EdcaTxopN::MapDestAddressForAggregation (const WifiMacHeader &hdr)
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1087
{
9711
7f4c6aa52b52 Further work on cleaning up function logging of wifi module.
Edvin Močibob <edvin.mocibob@gmail.com>
parents: 9703
diff changeset
  1088
  NS_LOG_FUNCTION (this << &hdr);
4434
5e3d1c06662f Fix build on osx-ppc optimized gcc 4.0.1
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4408
diff changeset
  1089
  Mac48Address retval;
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1090
  if (m_typeOfStation == AP || m_typeOfStation == ADHOC_STA)
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1091
    {
4434
5e3d1c06662f Fix build on osx-ppc optimized gcc 4.0.1
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4408
diff changeset
  1092
      retval = hdr.GetAddr1 ();
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1093
    }
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1094
  else
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1095
    {
4434
5e3d1c06662f Fix build on osx-ppc optimized gcc 4.0.1
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4408
diff changeset
  1096
      retval = hdr.GetAddr3 ();
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1097
    }
4434
5e3d1c06662f Fix build on osx-ppc optimized gcc 4.0.1
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 4408
diff changeset
  1098
  return retval;
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1099
}
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1100
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1101
void
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1102
EdcaTxopN::SetMsduAggregator (Ptr<MsduAggregator> aggr)
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1103
{
9711
7f4c6aa52b52 Further work on cleaning up function logging of wifi module.
Edvin Močibob <edvin.mocibob@gmail.com>
parents: 9703
diff changeset
  1104
  NS_LOG_FUNCTION (this << aggr);
4408
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1105
  m_aggregator = aggr;
76a169b3db3d add qos MACs
Mirko Banchi <mk.banchi@gmail.com>
parents:
diff changeset
  1106
}
5906
509b5089a081 Revert bug 706 fix because it breaks the regression testing
Faker Moatamri <faker.moatamri@sophia.inria.fr>
parents: 5903
diff changeset
  1107
5952
0588b01cd77e WifiMacQueue now supports head pushing
Mirko Banchi <mk.banchi@gmail.com>
parents: 5906
diff changeset
  1108
void
0588b01cd77e WifiMacQueue now supports head pushing
Mirko Banchi <mk.banchi@gmail.com>
parents: 5906
diff changeset
  1109
EdcaTxopN::PushFront (Ptr<const Packet> packet, const WifiMacHeader &hdr)
0588b01cd77e WifiMacQueue now supports head pushing
Mirko Banchi <mk.banchi@gmail.com>
parents: 5906
diff changeset
  1110
{
0588b01cd77e WifiMacQueue now supports head pushing
Mirko Banchi <mk.banchi@gmail.com>
parents: 5906
diff changeset
  1111
  NS_LOG_FUNCTION (this << packet << &hdr);
0588b01cd77e WifiMacQueue now supports head pushing
Mirko Banchi <mk.banchi@gmail.com>
parents: 5906
diff changeset
  1112
  WifiMacTrailer fcs;
0588b01cd77e WifiMacQueue now supports head pushing
Mirko Banchi <mk.banchi@gmail.com>
parents: 5906
diff changeset
  1113
  uint32_t fullPacketSize = hdr.GetSerializedSize () + packet->GetSize () + fcs.GetSerializedSize ();
6068
a2127017ecb4 merge with HEAD
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6065 5999
diff changeset
  1114
  m_stationManager->PrepareForQueue (hdr.GetAddr1 (), &hdr,
a2127017ecb4 merge with HEAD
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 6065 5999
diff changeset
  1115
                                     packet, fullPacketSize);
5952
0588b01cd77e WifiMacQueue now supports head pushing
Mirko Banchi <mk.banchi@gmail.com>
parents: 5906
diff changeset
  1116
  m_queue->PushFront (packet, hdr);
0588b01cd77e WifiMacQueue now supports head pushing
Mirko Banchi <mk.banchi@gmail.com>
parents: 5906
diff changeset
  1117
  StartAccessIfNeeded ();
0588b01cd77e WifiMacQueue now supports head pushing
Mirko Banchi <mk.banchi@gmail.com>
parents: 5906
diff changeset
  1118
}
0588b01cd77e WifiMacQueue now supports head pushing
Mirko Banchi <mk.banchi@gmail.com>
parents: 5906
diff changeset
  1119
5953
9e400f6b8a2c handle wifi action frames in high MACs
Mirko Banchi <mk.banchi@gmail.com>
parents: 5952
diff changeset
  1120
void
9e400f6b8a2c handle wifi action frames in high MACs
Mirko Banchi <mk.banchi@gmail.com>
parents: 5952
diff changeset
  1121
EdcaTxopN::GotAddBaResponse (const MgtAddBaResponseHeader *respHdr, Mac48Address recipient)
9e400f6b8a2c handle wifi action frames in high MACs
Mirko Banchi <mk.banchi@gmail.com>
parents: 5952
diff changeset
  1122
{
9711
7f4c6aa52b52 Further work on cleaning up function logging of wifi module.
Edvin Močibob <edvin.mocibob@gmail.com>
parents: 9703
diff changeset
  1123
  NS_LOG_FUNCTION (this << respHdr << recipient);
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
  1124
  NS_LOG_DEBUG ("received ADDBA response from " << recipient);
5963
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1125
  uint8_t tid = respHdr->GetTid ();
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1126
  if (m_baManager->ExistsAgreementInState (recipient, tid, OriginatorBlockAckAgreement::PENDING))
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
  1127
    {
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
  1128
      if (respHdr->GetStatusCode ().IsSuccess ())
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
  1129
        {
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
  1130
          NS_LOG_DEBUG ("block ack agreement established with " << recipient);
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
  1131
          m_baManager->UpdateAgreement (respHdr, recipient);
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
  1132
        }
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
  1133
      else
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
  1134
        {
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
  1135
          NS_LOG_DEBUG ("discard ADDBA response" << recipient);
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
  1136
          m_baManager->NotifyAgreementUnsuccessful (recipient, tid);
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
  1137
        }
5963
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1138
    }
5953
9e400f6b8a2c handle wifi action frames in high MACs
Mirko Banchi <mk.banchi@gmail.com>
parents: 5952
diff changeset
  1139
  RestartAccessIfNeeded ();
9e400f6b8a2c handle wifi action frames in high MACs
Mirko Banchi <mk.banchi@gmail.com>
parents: 5952
diff changeset
  1140
}
9e400f6b8a2c handle wifi action frames in high MACs
Mirko Banchi <mk.banchi@gmail.com>
parents: 5952
diff changeset
  1141
5955
10fbe045901e add support for block ack in MacLowTransmissionListener
Mirko Banchi <mk.banchi@gmail.com>
parents: 5953
diff changeset
  1142
void
5965
4e64e751be07 add support to block ack tear down in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5964
diff changeset
  1143
EdcaTxopN::GotDelBaFrame (const MgtDelBaHeader *delBaHdr, Mac48Address recipient)
4e64e751be07 add support to block ack tear down in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5964
diff changeset
  1144
{
9711
7f4c6aa52b52 Further work on cleaning up function logging of wifi module.
Edvin Močibob <edvin.mocibob@gmail.com>
parents: 9703
diff changeset
  1145
  NS_LOG_FUNCTION (this << delBaHdr << recipient);
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
  1146
  NS_LOG_DEBUG ("received DELBA frame from=" << recipient);
5965
4e64e751be07 add support to block ack tear down in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5964
diff changeset
  1147
  m_baManager->TearDownBlockAck (recipient, delBaHdr->GetTid ());
4e64e751be07 add support to block ack tear down in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5964
diff changeset
  1148
}
4e64e751be07 add support to block ack tear down in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5964
diff changeset
  1149
4e64e751be07 add support to block ack tear down in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5964
diff changeset
  1150
void
11174
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
  1151
EdcaTxopN::GotBlockAck (const CtrlBAckResponseHeader *blockAck, Mac48Address recipient, WifiMode txMode)
5955
10fbe045901e add support for block ack in MacLowTransmissionListener
Mirko Banchi <mk.banchi@gmail.com>
parents: 5953
diff changeset
  1152
{
9711
7f4c6aa52b52 Further work on cleaning up function logging of wifi module.
Edvin Močibob <edvin.mocibob@gmail.com>
parents: 9703
diff changeset
  1153
  NS_LOG_FUNCTION (this << blockAck << recipient);
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
  1154
  NS_LOG_DEBUG ("got block ack from=" << recipient);
11174
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
  1155
  m_baManager->NotifyGotBlockAck (blockAck, recipient, txMode);
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
  1156
  if (!m_txOkCallback.IsNull ())
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
  1157
    {
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
  1158
      m_txOkCallback (m_currentHdr);
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
  1159
    }
5955
10fbe045901e add support for block ack in MacLowTransmissionListener
Mirko Banchi <mk.banchi@gmail.com>
parents: 5953
diff changeset
  1160
  m_currentPacket = 0;
10fbe045901e add support for block ack in MacLowTransmissionListener
Mirko Banchi <mk.banchi@gmail.com>
parents: 5953
diff changeset
  1161
  m_dcf->ResetCw ();
10fbe045901e add support for block ack in MacLowTransmissionListener
Mirko Banchi <mk.banchi@gmail.com>
parents: 5953
diff changeset
  1162
  m_dcf->StartBackoffNow (m_rng->GetNext (0, m_dcf->GetCw ()));
10fbe045901e add support for block ack in MacLowTransmissionListener
Mirko Banchi <mk.banchi@gmail.com>
parents: 5953
diff changeset
  1163
  RestartAccessIfNeeded ();
10fbe045901e add support for block ack in MacLowTransmissionListener
Mirko Banchi <mk.banchi@gmail.com>
parents: 5953
diff changeset
  1164
}
10fbe045901e add support for block ack in MacLowTransmissionListener
Mirko Banchi <mk.banchi@gmail.com>
parents: 5953
diff changeset
  1165
5963
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1166
void
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1167
EdcaTxopN::VerifyBlockAck (void)
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1168
{
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1169
  NS_LOG_FUNCTION (this);
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1170
  uint8_t tid = m_currentHdr.GetQosTid ();
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1171
  Mac48Address recipient = m_currentHdr.GetAddr1 ();
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1172
  uint16_t sequence = m_currentHdr.GetSequenceNumber ();
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1173
  if (m_baManager->ExistsAgreementInState (recipient, tid, OriginatorBlockAckAgreement::INACTIVE))
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1174
    {
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1175
      m_baManager->SwitchToBlockAckIfNeeded (recipient, tid, sequence);
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1176
    }
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1177
  if (m_baManager->ExistsAgreementInState (recipient, tid, OriginatorBlockAckAgreement::ESTABLISHED))
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1178
    {
11174
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
  1179
        m_currentHdr.SetQosAckPolicy (WifiMacHeader::BLOCK_ACK);
5963
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1180
    }
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1181
}
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1182
11174
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
  1183
bool EdcaTxopN::GetAmpduExist(void)
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
  1184
{
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
  1185
  return m_ampduExist;
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
  1186
}
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
  1187
 
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
  1188
void EdcaTxopN::SetAmpduExist(bool ampdu)
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
  1189
{
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
  1190
  m_ampduExist = ampdu;
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
  1191
}
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
  1192
5963
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1193
void
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1194
EdcaTxopN::CompleteTx (void)
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1195
{
9711
7f4c6aa52b52 Further work on cleaning up function logging of wifi module.
Edvin Močibob <edvin.mocibob@gmail.com>
parents: 9703
diff changeset
  1196
  NS_LOG_FUNCTION (this);
5963
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1197
  if (m_currentHdr.IsQosData () && m_currentHdr.IsQosBlockAck ())
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1198
    {
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1199
      if (!m_currentHdr.IsRetry ())
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1200
        {
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1201
          m_baManager->StorePacket (m_currentPacket, m_currentHdr, m_currentPacketTimestamp);
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1202
        }
6592
6ef5141e7bcf Packets that cannot be acknowledged in the block ack bitmap must not be transmitted
Mirko Banchi <mk.banchi@gmail.com>
parents: 6485
diff changeset
  1203
      m_baManager->NotifyMpduTransmission (m_currentHdr.GetAddr1 (), m_currentHdr.GetQosTid (),
6ef5141e7bcf Packets that cannot be acknowledged in the block ack bitmap must not be transmitted
Mirko Banchi <mk.banchi@gmail.com>
parents: 6485
diff changeset
  1204
                                           m_txMiddle->GetNextSeqNumberByTidAndAddress (m_currentHdr.GetQosTid (),
11174
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
  1205
                                                                                        m_currentHdr.GetAddr1 ()), WifiMacHeader::BLOCK_ACK);
5963
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1206
    }
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1207
}
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1208
11174
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
  1209
void
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
  1210
EdcaTxopN::CompleteMpduTx (Ptr<const Packet> packet, WifiMacHeader hdr, Time tstamp)
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
  1211
{
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
  1212
    m_baManager->StorePacket (packet, hdr, tstamp);
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
  1213
    m_baManager->NotifyMpduTransmission (hdr.GetAddr1 (), hdr.GetQosTid (),
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
  1214
                                         m_txMiddle->GetNextSeqNumberByTidAndAddress (hdr.GetQosTid (),
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
  1215
                                                                                      hdr.GetAddr1 ()), WifiMacHeader::NORMAL_ACK);
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
  1216
}
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
  1217
5963
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1218
bool
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1219
EdcaTxopN::SetupBlockAckIfNeeded ()
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1220
{
9711
7f4c6aa52b52 Further work on cleaning up function logging of wifi module.
Edvin Močibob <edvin.mocibob@gmail.com>
parents: 9703
diff changeset
  1221
  NS_LOG_FUNCTION (this);
5963
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1222
  uint8_t tid = m_currentHdr.GetQosTid ();
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1223
  Mac48Address recipient = m_currentHdr.GetAddr1 ();
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1224
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1225
  uint32_t packets = m_queue->GetNPacketsByTidAndAddress (tid, WifiMacHeader::ADDR1, recipient);
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1226
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1227
  if (packets >= m_blockAckThreshold)
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1228
    {
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1229
      /* Block ack setup */
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1230
      uint16_t startingSequence = m_txMiddle->GetNextSeqNumberByTidAndAddress (tid, recipient);
5965
4e64e751be07 add support to block ack tear down in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5964
diff changeset
  1231
      SendAddBaRequest (recipient, tid, startingSequence, m_blockAckInactivityTimeout, true);
5963
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1232
      return true;
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1233
    }
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1234
  return false;
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1235
}
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1236
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1237
void
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1238
EdcaTxopN::SendBlockAckRequest (const struct Bar &bar)
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1239
{
9711
7f4c6aa52b52 Further work on cleaning up function logging of wifi module.
Edvin Močibob <edvin.mocibob@gmail.com>
parents: 9703
diff changeset
  1240
  NS_LOG_FUNCTION (this << &bar);
5963
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1241
  WifiMacHeader hdr;
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1242
  hdr.SetType (WIFI_MAC_CTL_BACKREQ);
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1243
  hdr.SetAddr1 (bar.recipient);
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1244
  hdr.SetAddr2 (m_low->GetAddress ());
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1245
  hdr.SetAddr3 (m_low->GetBssid ());
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1246
  hdr.SetDsNotTo ();
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1247
  hdr.SetDsNotFrom ();
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1248
  hdr.SetNoRetry ();
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1249
  hdr.SetNoMoreFragments ();
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1250
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1251
  m_currentPacket = bar.bar;
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1252
  m_currentHdr = hdr;
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1253
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1254
  MacLowTransmissionParameters params;
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1255
  params.DisableRts ();
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1256
  params.DisableNextData ();
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1257
  params.DisableOverrideDurationId ();
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1258
  if (bar.immediate)
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1259
    {
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1260
      if (m_blockAckType == BASIC_BLOCK_ACK)
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1261
        {
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1262
          params.EnableBasicBlockAck ();
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1263
        }
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1264
      else if (m_blockAckType == COMPRESSED_BLOCK_ACK)
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1265
        {
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1266
          params.EnableCompressedBlockAck ();
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1267
        }
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1268
      else if (m_blockAckType == MULTI_TID_BLOCK_ACK)
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1269
        {
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1270
          NS_FATAL_ERROR ("Multi-tid block ack is not supported");
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1271
        }
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1272
    }
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1273
  else
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1274
    {
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1275
      //Delayed block ack
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1276
      params.EnableAck ();
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1277
    }
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1278
  m_low->StartTransmission (m_currentPacket, &m_currentHdr, params, m_transmissionListener);
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1279
}
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1280
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1281
void
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1282
EdcaTxopN::CompleteConfig (void)
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1283
{
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1284
  NS_LOG_FUNCTION (this);
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1285
  m_baManager->SetTxMiddle (m_txMiddle);
5964
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
  1286
  m_low->RegisterBlockAckListenerForAc (m_ac, m_blockAckListener);
5965
4e64e751be07 add support to block ack tear down in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5964
diff changeset
  1287
  m_baManager->SetBlockAckInactivityCallback (MakeCallback (&EdcaTxopN::SendDelbaFrame, this));
5963
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1288
}
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1289
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1290
void
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1291
EdcaTxopN::SetBlockAckThreshold (uint8_t threshold)
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1292
{
9711
7f4c6aa52b52 Further work on cleaning up function logging of wifi module.
Edvin Močibob <edvin.mocibob@gmail.com>
parents: 9703
diff changeset
  1293
  NS_LOG_FUNCTION (this << static_cast<uint32_t> (threshold));
5963
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1294
  m_blockAckThreshold = threshold;
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1295
  m_baManager->SetBlockAckThreshold (threshold);
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1296
}
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1297
6294
6cefb3c0696a add methods in QosWifiMacHelper for block ack parameters setup
Mirko Banchi <mk.banchi@gmail.com>
parents: 6242
diff changeset
  1298
void
6cefb3c0696a add methods in QosWifiMacHelper for block ack parameters setup
Mirko Banchi <mk.banchi@gmail.com>
parents: 6242
diff changeset
  1299
EdcaTxopN::SetBlockAckInactivityTimeout (uint16_t timeout)
6cefb3c0696a add methods in QosWifiMacHelper for block ack parameters setup
Mirko Banchi <mk.banchi@gmail.com>
parents: 6242
diff changeset
  1300
{
9711
7f4c6aa52b52 Further work on cleaning up function logging of wifi module.
Edvin Močibob <edvin.mocibob@gmail.com>
parents: 9703
diff changeset
  1301
  NS_LOG_FUNCTION (this << timeout);
6294
6cefb3c0696a add methods in QosWifiMacHelper for block ack parameters setup
Mirko Banchi <mk.banchi@gmail.com>
parents: 6242
diff changeset
  1302
  m_blockAckInactivityTimeout = timeout;
6cefb3c0696a add methods in QosWifiMacHelper for block ack parameters setup
Mirko Banchi <mk.banchi@gmail.com>
parents: 6242
diff changeset
  1303
}
6cefb3c0696a add methods in QosWifiMacHelper for block ack parameters setup
Mirko Banchi <mk.banchi@gmail.com>
parents: 6242
diff changeset
  1304
5963
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1305
uint8_t
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1306
EdcaTxopN::GetBlockAckThreshold (void) const
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1307
{
9711
7f4c6aa52b52 Further work on cleaning up function logging of wifi module.
Edvin Močibob <edvin.mocibob@gmail.com>
parents: 9703
diff changeset
  1308
  NS_LOG_FUNCTION (this);
5963
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1309
  return m_blockAckThreshold;
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1310
}
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1311
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1312
void
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
  1313
EdcaTxopN::SendAddBaRequest (Mac48Address dest, uint8_t tid, uint16_t startSeq,
5963
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1314
                             uint16_t timeout, bool immediateBAck)
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1315
{
9711
7f4c6aa52b52 Further work on cleaning up function logging of wifi module.
Edvin Močibob <edvin.mocibob@gmail.com>
parents: 9703
diff changeset
  1316
  NS_LOG_FUNCTION (this << dest << static_cast<uint32_t> (tid) << startSeq << timeout << immediateBAck);
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
  1317
  NS_LOG_DEBUG ("sent ADDBA request to " << dest);
5963
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1318
  WifiMacHeader hdr;
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1319
  hdr.SetAction ();
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1320
  hdr.SetAddr1 (dest);
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1321
  hdr.SetAddr2 (m_low->GetAddress ());
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1322
  hdr.SetAddr3 (m_low->GetAddress ());
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1323
  hdr.SetDsNotTo ();
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1324
  hdr.SetDsNotFrom ();
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
  1325
5963
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1326
  WifiActionHeader actionHdr;
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1327
  WifiActionHeader::ActionValue action;
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1328
  action.blockAck = WifiActionHeader::BLOCK_ACK_ADDBA_REQUEST;
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1329
  actionHdr.SetAction (WifiActionHeader::BLOCK_ACK, action);
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1330
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1331
  Ptr<Packet> packet = Create<Packet> ();
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1332
  /*Setting ADDBARequest header*/
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1333
  MgtAddBaRequestHeader reqHdr;
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1334
  reqHdr.SetAmsduSupport (true);
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1335
  if (immediateBAck)
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1336
    {
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1337
      reqHdr.SetImmediateBlockAck ();
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1338
    }
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1339
  else
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1340
    {
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1341
      reqHdr.SetDelayedBlockAck ();
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1342
    }
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1343
  reqHdr.SetTid (tid);
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1344
  /* For now we don't use buffer size field in the ADDBA request frame. The recipient
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1345
   * will choose how many packets it can receive under block ack.
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1346
   */
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1347
  reqHdr.SetBufferSize (0);
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1348
  reqHdr.SetTimeout (timeout);
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1349
  reqHdr.SetStartingSequence (startSeq);
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1350
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1351
  m_baManager->CreateAgreement (&reqHdr, dest);
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
  1352
5963
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1353
  packet->AddHeader (reqHdr);
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1354
  packet->AddHeader (actionHdr);
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
  1355
5963
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1356
  m_currentPacket = packet;
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1357
  m_currentHdr = hdr;
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1358
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1359
  uint16_t sequence = m_txMiddle->GetNextSequenceNumberfor (&m_currentHdr);
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1360
  m_currentHdr.SetSequenceNumber (sequence);
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1361
  m_currentHdr.SetFragmentNumber (0);
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1362
  m_currentHdr.SetNoMoreFragments ();
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1363
  m_currentHdr.SetNoRetry ();
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
  1364
5963
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1365
  MacLowTransmissionParameters params;
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1366
  params.EnableAck ();
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1367
  params.DisableRts ();
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1368
  params.DisableNextData ();
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1369
  params.DisableOverrideDurationId ();
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
  1370
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
  1371
  m_low->StartTransmission (m_currentPacket, &m_currentHdr, params,
5963
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1372
                            m_transmissionListener);
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1373
}
5f82c5a7068e add support to block ack in EdcaTxopN
Mirko Banchi <mk.banchi@gmail.com>
parents: 5958
diff changeset
  1374
5964
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
  1375
void
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
  1376
EdcaTxopN::SendDelbaFrame (Mac48Address addr, uint8_t tid, bool byOriginator)
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
  1377
{
9711
7f4c6aa52b52 Further work on cleaning up function logging of wifi module.
Edvin Močibob <edvin.mocibob@gmail.com>
parents: 9703
diff changeset
  1378
  NS_LOG_FUNCTION (this << addr << static_cast<uint32_t> (tid) << byOriginator);
5964
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
  1379
  WifiMacHeader hdr;
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
  1380
  hdr.SetAction ();
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
  1381
  hdr.SetAddr1 (addr);
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
  1382
  hdr.SetAddr2 (m_low->GetAddress ());
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
  1383
  hdr.SetAddr3 (m_low->GetAddress ());
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
  1384
  hdr.SetDsNotTo ();
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
  1385
  hdr.SetDsNotFrom ();
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
  1386
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
  1387
  MgtDelBaHeader delbaHdr;
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
  1388
  delbaHdr.SetTid (tid);
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
  1389
  if (byOriginator)
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
  1390
    {
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
  1391
      delbaHdr.SetByOriginator ();
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
  1392
    }
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
  1393
  else
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
  1394
    {
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
  1395
      delbaHdr.SetByRecipient ();
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
  1396
    }
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
  1397
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
  1398
  WifiActionHeader actionHdr;
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
  1399
  WifiActionHeader::ActionValue action;
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
  1400
  action.blockAck = WifiActionHeader::BLOCK_ACK_DELBA;
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
  1401
  actionHdr.SetAction (WifiActionHeader::BLOCK_ACK, action);
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 7013
diff changeset
  1402
5964
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
  1403
  Ptr<Packet> packet = Create<Packet> ();
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
  1404
  packet->AddHeader (delbaHdr);
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
  1405
  packet->AddHeader (actionHdr);
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
  1406
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
  1407
  PushFront (packet, hdr);
8a59a619c30e add support to block ack tear down in MacLow
Mirko Banchi <mk.banchi@gmail.com>
parents: 5963
diff changeset
  1408
}
8981
7e1c95c4d1a7 Replace src/wifi usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents: 7386
diff changeset
  1409
7e1c95c4d1a7 Replace src/wifi usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents: 7386
diff changeset
  1410
int64_t
7e1c95c4d1a7 Replace src/wifi usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents: 7386
diff changeset
  1411
EdcaTxopN::AssignStreams (int64_t stream)
7e1c95c4d1a7 Replace src/wifi usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents: 7386
diff changeset
  1412
{
7e1c95c4d1a7 Replace src/wifi usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents: 7386
diff changeset
  1413
  NS_LOG_FUNCTION (this << stream);
7e1c95c4d1a7 Replace src/wifi usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents: 7386
diff changeset
  1414
  m_rng->AssignStreams (stream);
7e1c95c4d1a7 Replace src/wifi usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents: 7386
diff changeset
  1415
  return 1;
7e1c95c4d1a7 Replace src/wifi usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents: 7386
diff changeset
  1416
}
7e1c95c4d1a7 Replace src/wifi usage of RandomVariable with RandomVariableStream
Mitch Watrous
parents: 7386
diff changeset
  1417
6080
41ee42654550 Bug 706
Kirill Andreev <andreev@iitp.ru>
parents: 6068
diff changeset
  1418
void
9703
681f35b212ff Rename Start and DoStart methods to Initialize and DoInitialize
Vedran Miletić <rivanvx@gmail.com>
parents: 9238
diff changeset
  1419
EdcaTxopN::DoInitialize ()
6080
41ee42654550 Bug 706
Kirill Andreev <andreev@iitp.ru>
parents: 6068
diff changeset
  1420
{
9711
7f4c6aa52b52 Further work on cleaning up function logging of wifi module.
Edvin Močibob <edvin.mocibob@gmail.com>
parents: 9703
diff changeset
  1421
  NS_LOG_FUNCTION (this);
6080
41ee42654550 Bug 706
Kirill Andreev <andreev@iitp.ru>
parents: 6068
diff changeset
  1422
  m_dcf->ResetCw ();
41ee42654550 Bug 706
Kirill Andreev <andreev@iitp.ru>
parents: 6068
diff changeset
  1423
  m_dcf->StartBackoffNow (m_rng->GetNext (0, m_dcf->GetCw ()));
9703
681f35b212ff Rename Start and DoStart methods to Initialize and DoInitialize
Vedran Miletić <rivanvx@gmail.com>
parents: 9238
diff changeset
  1424
  ns3::Dcf::DoInitialize ();
6080
41ee42654550 Bug 706
Kirill Andreev <andreev@iitp.ru>
parents: 6068
diff changeset
  1425
}
11174
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
  1426
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
  1427
void
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
  1428
EdcaTxopN::BaTxOk (const WifiMacHeader &hdr)
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
  1429
{
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
  1430
  NS_LOG_FUNCTION (this << hdr);
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
  1431
  if (!m_txOkCallback.IsNull ())
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
  1432
    {
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
  1433
      m_txOkCallback (m_currentHdr);
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
  1434
    }
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
  1435
}
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
  1436
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
  1437
void
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
  1438
EdcaTxopN::BaTxFailed (const WifiMacHeader &hdr)
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
  1439
{
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
  1440
  NS_LOG_FUNCTION (this << hdr);
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
  1441
  if (!m_txFailedCallback.IsNull ())
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
  1442
    {
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
  1443
      m_txFailedCallback (m_currentHdr);
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
  1444
    }
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
  1445
}
780a43e4980c add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis)
Ghada Badawy <gbadawy@gmail.com>
parents: 11159
diff changeset
  1446
7386
2310ed220a61 standardize ns-3 namespace declaration format
Vedran Miletić <rivanvx@gmail.com>
parents: 7385
diff changeset
  1447
} // namespace ns3