A Discrete-Event Network Simulator
Go to the documentation of this file.
1/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
3 * Copyright (c) 2008 INRIA
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License version 2 as
7 * published by the Free Software Foundation;
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 *
18 * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
19 */
21#ifndef WIFI_MAC_H
22#define WIFI_MAC_H
24#include "wifi-standards.h"
26#include "qos-utils.h"
27#include "ssid.h"
28#include <list>
29#include <memory>
30#include <optional>
31#include <set>
32#include <unordered_map>
33#include <vector>
35namespace ns3 {
37class Txop;
38class WifiNetDevice;
39class QosTxop;
40class WifiPsdu;
41class MacRxMiddle;
42class MacTxMiddle;
43class WifiMacQueue;
44class WifiMpdu;
45class HtConfiguration;
46class VhtConfiguration;
47class HeConfiguration;
48class EhtConfiguration;
49class FrameExchangeManager;
50class ChannelAccessManager;
51class ExtendedCapabilities;
52class WifiMacQueueScheduler;
63 OCB
71enum WifiMacDropReason : uint8_t
79typedef std::unordered_map <uint16_t /* staId */, Ptr<WifiPsdu> /* PSDU */> WifiPsduMap;
90class WifiMac : public Object
97 static TypeId GetTypeId (void);
99 WifiMac ();
100 virtual ~WifiMac ();
102 // Delete copy constructor and assignment operator to avoid misuse
103 WifiMac (const WifiMac &) = delete;
104 WifiMac &operator= (const WifiMac &) = delete;
111 void SetDevice (const Ptr<WifiNetDevice> device);
117 Ptr<WifiNetDevice> GetDevice (void) const;
140 uint8_t GetNLinks (void) const;
147 virtual std::optional<uint8_t> GetLinkIdByAddress (const Mac48Address& address) const;
154 Ptr<Txop> GetTxop (void) const;
168 Ptr<QosTxop> GetQosTxop (uint8_t tid) const;
177 virtual Ptr<WifiMacQueue> GetTxopQueue (AcIndex ac) const;
184 virtual void SetMacQueueScheduler (Ptr<WifiMacQueueScheduler> scheduler);
205 TypeOfStation GetTypeOfStation (void) const;
210 void SetSsid (Ssid ssid);
218 void SetPromisc (void);
225 void SetCtsToSelfSupported (bool enable);
230 Mac48Address GetAddress (void) const;
234 Ssid GetSsid (void) const;
238 virtual void SetAddress (Mac48Address address);
243 Mac48Address GetBssid (uint8_t linkId) const;
248 void SetBssid (Mac48Address bssid, uint8_t linkId);
257 virtual bool CanForwardPacketsTo (Mac48Address to) const = 0;
269 virtual void Enqueue (Ptr<Packet> packet, Mac48Address to, Mac48Address from);
278 virtual void Enqueue (Ptr<Packet> packet, Mac48Address to) = 0;
286 virtual bool SupportsSendFrom (void) const;
291 virtual void SetWifiPhys (const std::vector<Ptr<WifiPhy>>& phys);
296 Ptr<WifiPhy> GetWifiPhy (uint8_t linkId = SINGLE_LINK_OP_ID) const;
300 void ResetWifiPhys (void);
309 void SetWifiRemoteStationManagers (const std::vector<Ptr<WifiRemoteStationManager>>& stationManagers);
330 void SetForwardUpCallback (ForwardUpCallback upCallback);
334 virtual void SetLinkUpCallback (Callback<void> linkUp);
338 void SetLinkDownCallback (Callback<void> linkDown);
339 /* Next functions are not pure virtual so non QoS WifiMacs are not
340 * forced to implement them.
341 */
348 virtual void NotifyChannelSwitching (uint8_t linkId);
357 void NotifyTx (Ptr<const Packet> packet);
365 void NotifyTxDrop (Ptr<const Packet> packet);
371 void NotifyRx (Ptr<const Packet> packet);
383 void NotifyRxDrop (Ptr<const Packet> packet);
393 virtual void ConfigureStandard (WifiStandard standard);
424 HtCapabilities GetHtCapabilities (uint8_t linkId) const;
431 VhtCapabilities GetVhtCapabilities (uint8_t linkId) const;
438 HeCapabilities GetHeCapabilities (uint8_t linkId) const;
445 EhtCapabilities GetEhtCapabilities (uint8_t linkId) const;
452 bool GetQosSupported () const;
459 bool GetErpSupported (uint8_t linkId) const;
466 bool GetDsssSupported (uint8_t linkId) const;
472 bool GetHtSupported () const;
479 bool GetVhtSupported (uint8_t linkId) const;
485 bool GetHeSupported () const;
491 bool GetEhtSupported () const;
506 uint16_t GetMaxAmsduSize (AcIndex ac) const;
510 void DoInitialize () override;
511 void DoDispose () override;
520 virtual void ConfigureContentionWindow (uint32_t cwMin, uint32_t cwMax);
529 void SetQosSupported (bool enable);
537 void SetShortSlotTimeSupported (bool enable);
541 bool GetShortSlotTimeSupported (void) const;
548 Ptr<QosTxop> GetVOQueue (void) const;
554 Ptr<QosTxop> GetVIQueue (void) const;
560 Ptr<QosTxop> GetBEQueue (void) const;
566 Ptr<QosTxop> GetBKQueue (void) const;
588 virtual void Receive (Ptr<const WifiMpdu> mpdu, uint8_t linkId);
614 {
616 virtual ~LinkEntity ();
618 uint8_t id;
624 bool erpSupported {false};
626 bool dsssSupported {false};
628 };
636 LinkEntity& GetLink (uint8_t linkId) const;
657 void ConfigureDcf (Ptr<Txop> dcf, uint32_t cwmin, uint32_t cwmax,
658 std::list<bool> isDsss, AcIndex ac);
665 void ConfigurePhyDependentParameters (uint8_t linkId);
673 void SetupEdcaQueue (AcIndex ac);
689 virtual std::unique_ptr<LinkEntity> CreateLinkEntity (void) const;
697 void SetErpSupported (bool enable, uint8_t linkId);
704 void SetDsssSupported (bool enable, uint8_t linkId);
711 void SetVoBlockAckThreshold (uint8_t threshold);
717 void SetViBlockAckThreshold (uint8_t threshold);
723 void SetBeBlockAckThreshold (uint8_t threshold);
729 void SetBkBlockAckThreshold (uint8_t threshold);
777 std::vector<std::unique_ptr<LinkEntity>> m_links;
785 typedef std::map<AcIndex, Ptr<QosTxop>, std::greater<AcIndex>> EdcaQueues;
873 typedef void (* MpduResponseTimeoutCallback)(uint8_t reason, Ptr<const WifiMpdu> mpdu,
874 const WifiTxVector& txVector);
892 typedef void (* PsduResponseTimeoutCallback)(uint8_t reason, Ptr<const WifiPsdu> psdu,
893 const WifiTxVector& txVector);
912 typedef void (* PsduMapResponseTimeoutCallback)(uint8_t reason, WifiPsduMap* psduMap,
913 const std::set<Mac48Address>* missingStations,
914 std::size_t nTotalStations);
926} //namespace ns3
928#endif /* WIFI_MAC_H */
Callback template class.
Definition: callback.h:422
The IEEE 802.11be EHT Capabilities.
The Extended Capabilities Information Element.
The IEEE 802.11ax HE Capabilities.
The HT Capabilities Information Element.
an EUI-48 address
Definition: mac48-address.h:44
A base class which provides memory management and object aggregation.
Definition: object.h:88
The IEEE 802.11 SSID Information Element.
Definition: ssid.h:36
Forward calls to a chain of Callback.
a unique identifier for an interface.
Definition: type-id.h:59
The IEEE 802.11ac VHT Capabilities.
base class for all MAC-level wifi objects.
Definition: wifi-mac.h:91
uint16_t GetMaxAmsduSize(AcIndex ac) const
Return the maximum A-MSDU size of the given Access Category.
Definition: wifi-mac.cc:1550
Ptr< FrameExchangeManager > GetFrameExchangeManager(uint8_t linkId=SINGLE_LINK_OP_ID) const
Get the Frame Exchange Manager associated with the given link.
Definition: wifi-mac.cc:792
Ptr< HtConfiguration > GetHtConfiguration(void) const
Definition: wifi-mac.cc:1187
virtual void NotifyChannelSwitching(uint8_t linkId)
Notify that channel on the given link has been switched.
Definition: wifi-mac.cc:524
virtual void SetMacQueueScheduler(Ptr< WifiMacQueueScheduler > scheduler)
Set the wifi MAC queue scheduler.
Definition: wifi-mac.cc:511
Mac48Address GetBssid(uint8_t linkId) const
Definition: wifi-mac.cc:438
void ResetWifiPhys(void)
Remove currently attached WifiPhy objects from this MAC.
Definition: wifi-mac.cc:906
void(* PsduResponseTimeoutCallback)(uint8_t reason, Ptr< const WifiPsdu > psdu, const WifiTxVector &txVector)
TracedCallback signature for PSDU response timeout events.
Definition: wifi-mac.h:892
uint16_t m_viMaxAmsduSize
maximum A-MSDU size for AC_VI (in bytes)
Definition: wifi-mac.h:792
bool m_shortSlotTimeSupported
flag whether short slot time is supported
Definition: wifi-mac.h:771
void ConfigurePhyDependentParameters(uint8_t linkId)
Configure PHY dependent parameters such as CWmin and CWmax on the given link.
Definition: wifi-mac.cc:731
ExtendedCapabilities GetExtendedCapabilities(void) const
Return the extended capabilities of the device.
Definition: wifi-mac.cc:1316
DroppedMpduTracedCallback m_droppedMpduCallback
This trace indicates that an MPDU was dropped for the given reason.
Definition: wifi-mac.h:858
TracedCallback< WifiMacDropReason, Ptr< const WifiMpdu > > DroppedMpduTracedCallback
TracedCallback for MPDU drop events typedef.
Definition: wifi-mac.h:853
Ptr< EhtConfiguration > GetEhtConfiguration(void) const
Definition: wifi-mac.cc:1205
bool GetShortSlotTimeSupported(void) const
Definition: wifi-mac.cc:1011
bool m_qosSupported
This Boolean is set true iff this WifiMac is to model 802.11e/WMM style Quality of Service.
Definition: wifi-mac.h:769
Ptr< HeConfiguration > GetHeConfiguration(void) const
Definition: wifi-mac.cc:1199
Ptr< QosTxop > GetBKQueue(void) const
Accessor for the AC_BK channel access function.
Definition: wifi-mac.cc:498
VhtCapabilities GetVhtCapabilities(uint8_t linkId) const
Return the VHT capabilities of the device for the given link.
Definition: wifi-mac.cc:1383
uint8_t GetNLinks(void) const
Get the number of links (can be greater than 1 for 11be devices only).
Definition: wifi-mac.cc:854
Callback< void > m_linkDown
Callback when a link is down.
Definition: wifi-mac.h:644
bool GetQosSupported() const
Return whether the device supports QoS.
Definition: wifi-mac.cc:961
virtual void SetAddress(Mac48Address address)
Definition: wifi-mac.cc:405
Ptr< Txop > m_txop
TXOP used for transmission of frames to non-QoS peers.
Definition: wifi-mac.h:640
void SetQosSupported(bool enable)
Enable or disable QoS support for the device.
Definition: wifi-mac.cc:924
Mac48Address m_address
MAC address of this station.
Definition: wifi-mac.h:779
Ssid GetSsid(void) const
Definition: wifi-mac.cc:425
uint16_t m_voMaxAmsduSize
maximum A-MSDU size for AC_VO (in bytes)
Definition: wifi-mac.h:791
Ptr< MacRxMiddle > m_rxMiddle
RX middle (defragmentation etc.)
Definition: wifi-mac.h:638
Ptr< WifiMacQueueScheduler > m_scheduler
wifi MAC queue scheduler
Definition: wifi-mac.h:641
void DoInitialize() override
Initialize() implementation.
Definition: wifi-mac.cc:322
std::vector< std::unique_ptr< LinkEntity > > m_links
vector of Link objects
Definition: wifi-mac.h:777
TypeOfStation m_typeOfStation
the type of station
Definition: wifi-mac.h:774
uint32_t m_beMaxAmpduSize
maximum A-MPDU size for AC_BE (in bytes)
Definition: wifi-mac.h:798
virtual void ConfigureStandard(WifiStandard standard)
Definition: wifi-mac.cc:686
Mac48Address GetAddress(void) const
Definition: wifi-mac.cc:412
void SetWifiRemoteStationManagers(const std::vector< Ptr< WifiRemoteStationManager > > &stationManagers)
Definition: wifi-mac.cc:811
std::map< AcIndex, Ptr< QosTxop >, std::greater< AcIndex > > EdcaQueues
This type defines a mapping between an Access Category index, and a pointer to the corresponding chan...
Definition: wifi-mac.h:785
void SetBeBlockAckThreshold(uint8_t threshold)
Set the block ack threshold for AC_BE.
Definition: wifi-mac.cc:1256
bool GetErpSupported(uint8_t linkId) const
Return whether the device supports ERP on the given link.
Definition: wifi-mac.cc:967
void SetPromisc(void)
Sets the interface in promiscuous mode.
Definition: wifi-mac.cc:444
Ptr< QosTxop > GetBEQueue(void) const
Accessor for the AC_BE channel access function.
Definition: wifi-mac.cc:492
bool GetHtSupported() const
Return whether the device supports HT.
Definition: wifi-mac.cc:1211
virtual void Enqueue(Ptr< Packet > packet, Mac48Address to)=0
TracedCallback< Ptr< const Packet > > m_macTxTrace
The trace source fired when packets come into the "top" of the device at the L3/L2 transition,...
Definition: wifi-mac.h:809
void SetErpSupported(bool enable, uint8_t linkId)
Enable or disable ERP support for the given link.
Definition: wifi-mac.cc:973
uint32_t m_voMaxAmpduSize
maximum A-MPDU size for AC_VO (in bytes)
Definition: wifi-mac.h:796
void(* MpduResponseTimeoutCallback)(uint8_t reason, Ptr< const WifiMpdu > mpdu, const WifiTxVector &txVector)
TracedCallback signature for MPDU response timeout events.
Definition: wifi-mac.h:873
void ConfigureDcf(Ptr< Txop > dcf, uint32_t cwmin, uint32_t cwmax, std::list< bool > isDsss, AcIndex ac)
Definition: wifi-mac.cc:613
WifiMac(const WifiMac &)=delete
Ptr< WifiNetDevice > m_device
Pointer to the device.
Definition: wifi-mac.h:776
void SetSsid(Ssid ssid)
Definition: wifi-mac.cc:418
void SetTypeOfStation(TypeOfStation type)
This method is invoked by a subclass to specify what type of station it is implementing.
Definition: wifi-mac.cc:380
MpduTracedCallback m_ackedMpduCallback
ack'ed MPDU callback
Definition: wifi-mac.h:863
Ptr< WifiPhy > GetWifiPhy(uint8_t linkId=SINGLE_LINK_OP_ID) const
Definition: wifi-mac.cc:899
Ptr< QosTxop > GetVOQueue(void) const
Accessor for the AC_VO channel access function.
Definition: wifi-mac.cc:480
MpduTracedCallback m_nackedMpduCallback
nack'ed MPDU callback
Definition: wifi-mac.h:864
bool GetEhtSupported() const
Return whether the device supports EHT.
Definition: wifi-mac.cc:1230
bool GetHeSupported() const
Return whether the device supports HE.
Definition: wifi-mac.cc:1224
HtCapabilities GetHtCapabilities(uint8_t linkId) const
Return the HT capabilities of the device for the given link.
Definition: wifi-mac.cc:1327
void SetBkBlockAckThreshold(uint8_t threshold)
Set the block ack threshold for AC_BK.
Definition: wifi-mac.cc:1266
TracedCallback< const WifiMacHeader & > m_txErrCallback
transmit error callback
Definition: wifi-mac.h:842
void SetVoBlockAckThreshold(uint8_t threshold)
Set the block ack threshold for AC_VO.
Definition: wifi-mac.cc:1236
virtual std::optional< uint8_t > GetLinkIdByAddress(const Mac48Address &address) const
Get the ID of the link having the given MAC address, if any.
Definition: wifi-mac.cc:860
Ptr< WifiMacQueueScheduler > GetMacQueueScheduler(void) const
Get the wifi MAC queue scheduler.
Definition: wifi-mac.cc:518
Ptr< QosTxop > GetVIQueue(void) const
Accessor for the AC_VI channel access function.
Definition: wifi-mac.cc:486
void NotifyPromiscRx(Ptr< const Packet > packet)
Definition: wifi-mac.cc:557
static TypeId GetTypeId(void)
Get the type ID.
Definition: wifi-mac.cc:64
void SetWifiRemoteStationManager(Ptr< WifiRemoteStationManager > stationManager)
Definition: wifi-mac.cc:804
void SetBeBlockAckInactivityTimeout(uint16_t timeout)
Set BE block ack inactivity timeout.
Definition: wifi-mac.cc:1296
TracedCallback< Ptr< const Packet > > m_macRxTrace
The trace source fired for packets successfully received by the device immediately before being forwa...
Definition: wifi-mac.h:832
bool GetVhtSupported(uint8_t linkId) const
Return whether the device supports VHT on the given link.
Definition: wifi-mac.cc:1217
void SetDsssSupported(bool enable, uint8_t linkId)
Enable or disable DSSS support for the given link.
Definition: wifi-mac.cc:984
TracedCallback< Ptr< const Packet > > m_macTxDropTrace
The trace source fired when packets coming into the "top" of the device are dropped at the MAC layer ...
Definition: wifi-mac.h:816
TracedCallback< Ptr< const WifiMpdu > > MpduTracedCallback
TracedCallback for acked/nacked MPDUs typedef.
Definition: wifi-mac.h:861
Ptr< MacTxMiddle > m_txMiddle
TX middle (aggregation etc.)
Definition: wifi-mac.h:639
void NotifyTx(Ptr< const Packet > packet)
Definition: wifi-mac.cc:539
uint32_t GetMaxAmpduSize(AcIndex ac) const
Return the maximum A-MPDU size of the given Access Category.
Definition: wifi-mac.cc:1525
Ssid m_ssid
Service Set ID (SSID)
Definition: wifi-mac.h:780
TypeOfStation GetTypeOfStation(void) const
Return the type of station.
Definition: wifi-mac.cc:387
virtual void DeaggregateAmsduAndForward(Ptr< const WifiMpdu > mpdu)
This method can be called to de-aggregate an A-MSDU and forward the constituent packets up the stack.
Definition: wifi-mac.cc:1176
void SetBssid(Mac48Address bssid, uint8_t linkId)
Definition: wifi-mac.cc:431
virtual std::unique_ptr< LinkEntity > CreateLinkEntity(void) const
Create a LinkEntity object.
Definition: wifi-mac.cc:840
Ptr< FrameExchangeManager > SetupFrameExchangeManager(WifiStandard standard)
Create a Frame Exchange Manager depending on the supported version of the standard.
Definition: wifi-mac.cc:748
virtual void Enqueue(Ptr< Packet > packet, Mac48Address to, Mac48Address from)
Definition: wifi-mac.cc:1044
void NotifyRx(Ptr< const Packet > packet)
Definition: wifi-mac.cc:551
TracedCallback< Ptr< const Packet > > m_macRxDropTrace
The trace source fired when packets coming into the "top" of the device are dropped at the MAC layer ...
Definition: wifi-mac.h:839
MpduResponseTimeoutTracedCallback m_mpduResponseTimeoutCallback
MPDU response timeout traced callback.
Definition: wifi-mac.h:883
void SetForwardUpCallback(ForwardUpCallback upCallback)
Definition: wifi-mac.cc:1023
PsduMapResponseTimeoutTracedCallback m_psduMapResponseTimeoutCallback
PSDU map response timeout traced callback.
Definition: wifi-mac.h:923
TracedCallback< Ptr< const Packet > > m_macPromiscRxTrace
The trace source fired for packets successfully received by the device immediately before being forwa...
Definition: wifi-mac.h:824
uint16_t m_bkMaxAmsduSize
maximum A-MSDU size for AC_BK (in bytes)
Definition: wifi-mac.h:794
void SetBkBlockAckInactivityTimeout(uint16_t timeout)
Set BK block ack inactivity timeout.
Definition: wifi-mac.cc:1306
Ptr< VhtConfiguration > GetVhtConfiguration(void) const
Definition: wifi-mac.cc:1193
virtual Ptr< WifiMacQueue > GetTxopQueue(AcIndex ac) const
Get the wifi MAC queue of the (Qos)Txop associated with the given AC, if such (Qos)Txop is installed,...
Definition: wifi-mac.cc:504
void SetViBlockAckThreshold(uint8_t threshold)
Set the block ack threshold for AC_VI.
Definition: wifi-mac.cc:1246
void SetViBlockAckInactivityTimeout(uint16_t timeout)
Set VI block ack inactivity timeout.
Definition: wifi-mac.cc:1286
void SetupEdcaQueue(AcIndex ac)
This method is a private utility invoked to configure the channel access function for the specified A...
Definition: wifi-mac.cc:569
void SetLinkDownCallback(Callback< void > linkDown)
Definition: wifi-mac.cc:1037
virtual ~WifiMac()
Definition: wifi-mac.cc:58
void NotifyRxDrop(Ptr< const Packet > packet)
Definition: wifi-mac.cc:563
virtual void SetLinkUpCallback(Callback< void > linkUp)
Definition: wifi-mac.cc:1030
Ptr< WifiRemoteStationManager > GetWifiRemoteStationManager(uint8_t linkId=0) const
Definition: wifi-mac.cc:834
void SetDevice(const Ptr< WifiNetDevice > device)
Sets the device this PHY is associated with.
Definition: wifi-mac.cc:393
void SetCtsToSelfSupported(bool enable)
Enable or disable CTS-to-self feature.
Definition: wifi-mac.cc:997
Ptr< WifiNetDevice > GetDevice(void) const
Return the device this PHY is associated with.
Definition: wifi-mac.cc:399
EdcaQueues m_edca
This is a map from Access Category index to the corresponding channel access function.
Definition: wifi-mac.h:789
uint32_t m_bkMaxAmpduSize
maximum A-MPDU size for AC_BK (in bytes)
Definition: wifi-mac.h:799
void ForwardUp(Ptr< const Packet > packet, Mac48Address from, Mac48Address to)
Forward the packet up to the device.
Definition: wifi-mac.cc:1055
virtual void ConfigureContentionWindow(uint32_t cwMin, uint32_t cwMax)
Definition: wifi-mac.cc:590
TracedCallback< uint8_t, Ptr< const WifiPsdu >, const WifiTxVector & > PsduResponseTimeoutTracedCallback
TracedCallback for PSDU response timeout events typedef.
Definition: wifi-mac.h:896
TracedCallback< uint8_t, Ptr< const WifiMpdu >, const WifiTxVector & > MpduResponseTimeoutTracedCallback
TracedCallback for MPDU response timeout events typedef.
Definition: wifi-mac.h:877
virtual void Receive(Ptr< const WifiMpdu > mpdu, uint8_t linkId)
This method acts as the MacRxMiddle receive callback and is invoked to notify us that a frame has bee...
Definition: wifi-mac.cc:1062
void(* DroppedMpduCallback)(WifiMacDropReason reason, Ptr< const WifiMpdu > mpdu)
TracedCallback signature for MPDU drop events.
Definition: wifi-mac.h:850
ForwardUpCallback m_forwardUp
Callback to forward packet up the stack.
Definition: wifi-mac.h:801
EhtCapabilities GetEhtCapabilities(uint8_t linkId) const
Return the EHT capabilities of the device for the given link.
Definition: wifi-mac.cc:1515
TracedCallback< uint8_t, WifiPsduMap *, const std::set< Mac48Address > *, std::size_t > PsduMapResponseTimeoutTracedCallback
TracedCallback for PSDU map response timeout events typedef.
Definition: wifi-mac.h:917
TracedCallback< const WifiMacHeader & > m_txOkCallback
transmit OK callback
Definition: wifi-mac.h:841
Callback< void > m_linkUp
Callback when a link is up.
Definition: wifi-mac.h:643
LinkEntity & GetLink(uint8_t linkId) const
Get a reference to the link associated with the given ID.
Definition: wifi-mac.cc:846
HeCapabilities GetHeCapabilities(uint8_t linkId) const
Return the HE capabilities of the device for the given link.
Definition: wifi-mac.cc:1461
WifiMac & operator=(const WifiMac &)=delete
virtual bool CanForwardPacketsTo(Mac48Address to) const =0
Return true if packets can be forwarded to the given destination, false otherwise.
virtual void SetWifiPhys(const std::vector< Ptr< WifiPhy > > &phys)
Definition: wifi-mac.cc:873
Callback< void, Ptr< const Packet >, Mac48Address, Mac48Address > ForwardUpCallback
This type defines the callback of a higher layer that a WifiMac(-derived) object invokes to pass a pa...
Definition: wifi-mac.h:324
virtual bool SupportsSendFrom(void) const
Definition: wifi-mac.cc:1017
PsduResponseTimeoutTracedCallback m_psduResponseTimeoutCallback
PSDU response timeout traced callback.
Definition: wifi-mac.h:902
Ptr< QosTxop > GetQosTxop(AcIndex ac) const
Accessor for a specified EDCA object.
Definition: wifi-mac.cc:459
void(* PsduMapResponseTimeoutCallback)(uint8_t reason, WifiPsduMap *psduMap, const std::set< Mac48Address > *missingStations, std::size_t nTotalStations)
TracedCallback signature for PSDU map response timeout events.
Definition: wifi-mac.h:912
void NotifyTxDrop(Ptr< const Packet > packet)
Definition: wifi-mac.cc:545
void DoDispose() override
Destructor implementation.
Definition: wifi-mac.cc:338
bool GetDsssSupported(uint8_t linkId) const
Return whether the device supports DSSS on the given link.
Definition: wifi-mac.cc:991
Ptr< ChannelAccessManager > GetChannelAccessManager(uint8_t linkId=SINGLE_LINK_OP_ID) const
Get the Channel Access Manager associated with the given link.
Definition: wifi-mac.cc:798
void SetVoBlockAckInactivityTimeout(uint16_t timeout)
Set VO block ack inactivity timeout.
Definition: wifi-mac.cc:1276
void SetShortSlotTimeSupported(bool enable)
Enable or disable short slot time feature.
Definition: wifi-mac.cc:1004
bool m_ctsToSelfSupported
flag indicating whether CTS-To-Self is supported
Definition: wifi-mac.h:772
Ptr< Txop > GetTxop(void) const
Accessor for the Txop object.
Definition: wifi-mac.cc:453
uint16_t m_beMaxAmsduSize
maximum A-MSDU size for AC_BE (in bytes)
Definition: wifi-mac.h:793
uint32_t m_viMaxAmpduSize
maximum A-MPDU size for AC_VI (in bytes)
Definition: wifi-mac.h:797
This class mimics the TXVECTOR which is to be passed to the PHY in order to define the parameters whi...
Identifies the IEEE 802.11 specifications that a Wifi device can be configured to use.
The reason why an MPDU was dropped.
Definition: wifi-mac.h:72
This enumeration defines the Access Categories as an enumeration with values corresponding to the AC ...
Definition: qos-utils.h:73
Definition: first.py:40
Every class exported by the ns3 library is enclosed in the ns3 namespace.
Enumeration for type of station.
Definition: wifi-mac.h:58
Definition: wifi-mac.h:61
Definition: wifi-mac.h:62
Definition: wifi-mac.h:59
@ AP
Definition: wifi-mac.h:60
Definition: wifi-mac.h:63
static constexpr uint8_t SINGLE_LINK_OP_ID
Link ID for single link operations (helps tracking places where correct link ID is to be used to supp...
Definition: wifi-utils.h:138
std::unordered_map< uint16_t, Ptr< WifiPsdu > > WifiPsduMap
Map of PSDUs indexed by STA-ID.
Definition: wifi-mac.h:76
Definition: wifi-mac.h:73
Definition: wifi-mac.h:74
Definition: wifi-mac.h:75
Definition: third.py:88
ns3::Time timeout