A Discrete-Event Network Simulator
API
Loading...
Searching...
No Matches
he-ppdu.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2020 Orange Labs
3 *
4 * SPDX-License-Identifier: GPL-2.0-only
5 *
6 * Author: Rediet <getachew.redieteab@orange.com>
7 * Muhammad Iqbal Rochman <muhiqbalcr@uchicago.edu>
8 * Sébastien Deronne <sebastien.deronne@gmail.com> (HeSigHeader)
9 */
10
11#ifndef HE_PPDU_H
12#define HE_PPDU_H
13
14#include "ns3/ofdm-ppdu.h"
15
16#include <variant>
17
18/**
19 * @file
20 * @ingroup wifi
21 * Declaration of ns3::HePpdu class.
22 */
23
24namespace ns3
25{
26
27/// HE SIG-B Content Channels
29
30class WifiPsdu;
31
32/**
33 * @brief HE PPDU (11ax)
34 * @ingroup wifi
35 *
36 * HePpdu stores a preamble, PHY headers and a map of PSDUs of a PPDU with HE header
37 */
38class HePpdu : public OfdmPpdu
39{
40 public:
41 /// User Specific Fields in HE-SIG-Bs.
43 {
44 uint16_t staId : 11; ///< STA-ID
45 uint8_t nss : 4; ///< number of spatial streams
46 uint8_t mcs : 4; ///< MCS index
47 };
48
49 /// HE SIG-B Content Channels
50 using HeSigBContentChannels = std::vector<std::vector<HeSigBUserSpecificField>>;
51
52 /**
53 * HE-SIG PHY header for HE SU PPDUs (HE-SIG-A1/A2)
54 */
56 {
57 uint8_t m_format{1}; ///< Format bit
58 uint8_t m_bssColor{0}; ///< BSS color field
59 uint8_t m_mcs{0}; ///< MCS field
60 uint8_t m_bandwidth{0}; ///< Bandwidth field
61 uint8_t m_giLtfSize{0}; ///< GI+LTF Size field
62 uint8_t m_nsts{0}; ///< NSTS
63 };
64
65 /**
66 * HE-SIG PHY header for HE TB PPDUs (HE-SIG-A1/A2)
67 */
69 {
70 uint8_t m_format{0}; ///< Format bit
71 uint8_t m_bssColor{0}; ///< BSS color field
72 uint8_t m_bandwidth{0}; ///< Bandwidth field
73 };
74
75 /**
76 * HE-SIG PHY header for HE MU PPDUs (HE-SIG-A1/A2/B)
77 */
79 {
80 // HE-SIG-A fields
81 uint8_t m_bssColor{0}; ///< BSS color field
82 uint8_t m_bandwidth{0}; ///< Bandwidth field
83 uint8_t m_sigBMcs{0}; ///< HE-SIG-B MCS
84 uint8_t m_muMimoUsers{0}; ///< MU-MIMO users
85 uint8_t m_sigBCompression{0}; ///< SIG-B compression
86 uint8_t m_giLtfSize{0}; ///< GI+LTF Size field
87
88 // HE-SIG-B fields
89 RuAllocation m_ruAllocation; //!< RU allocations that are going to be carried in SIG-B
90 //!< common subfields
91 HeSigBContentChannels m_contentChannels; //!< HE SIG-B Content Channels
92 std::optional<Center26ToneRuIndication>
93 m_center26ToneRuIndication; //!< center 26 tone RU indication in SIG-B common subfields
94 };
95
96 /// type of the HE-SIG PHY header
97 using HeSigHeader = std::variant<std::monostate, HeSuSigHeader, HeTbSigHeader, HeMuSigHeader>;
98
99 /**
100 * The transmit power spectral density flag, namely used
101 * to correctly build PSDs for pre-HE and HE portions.
102 */
104 {
105 PSD_NON_HE_PORTION, //!< Non-HE portion of an HE PPDU
106 PSD_HE_PORTION //!< HE portion of an HE PPDU
107 };
108
109 /**
110 * Create an SU HE PPDU, storing a PSDU.
111 *
112 * @param psdu the PHY payload (PSDU)
113 * @param txVector the TXVECTOR that was used for this PPDU
114 * @param channel the operating channel of the PHY used to transmit this PPDU
115 * @param ppduDuration the transmission duration of this PPDU
116 * @param uid the unique ID of this PPDU
117 */
119 const WifiTxVector& txVector,
120 const WifiPhyOperatingChannel& channel,
121 Time ppduDuration,
122 uint64_t uid);
123 /**
124 * Create an MU HE PPDU, storing a map of PSDUs.
125 *
126 * This PPDU can either be UL or DL.
127 *
128 * @param psdus the PHY payloads (PSDUs)
129 * @param txVector the TXVECTOR that was used for this PPDU
130 * @param channel the operating channel of the PHY used to transmit this PPDU
131 * @param ppduDuration the transmission duration of this PPDU
132 * @param uid the unique ID of this PPDU or of the triggering PPDU if this is an HE TB PPDU
133 * @param flag the flag indicating the type of Tx PSD to build
134 */
135 HePpdu(const WifiConstPsduMap& psdus,
136 const WifiTxVector& txVector,
137 const WifiPhyOperatingChannel& channel,
138 Time ppduDuration,
139 uint64_t uid,
140 TxPsdFlag flag);
141
142 Time GetTxDuration() const override;
143 Ptr<WifiPpdu> Copy() const override;
144 WifiPpduType GetType() const override;
145 uint16_t GetStaId() const override;
146 MHz_u GetTxChannelWidth() const override;
147
148 /**
149 * Get the payload of the PPDU.
150 *
151 * @param bssColor the BSS color of the PHY calling this function.
152 * @param staId the STA-ID of the PHY calling this function.
153 * @return the PSDU
154 */
155 Ptr<const WifiPsdu> GetPsdu(uint8_t bssColor, uint16_t staId = SU_STA_ID) const;
156
157 /**
158 * @return the transmit PSD flag set for this PPDU
159 *
160 * @see TxPsdFlag
161 */
162 TxPsdFlag GetTxPsdFlag() const;
163
164 /**
165 * @param flag the transmit PSD flag set for this PPDU
166 *
167 * @see TxPsdFlag
168 */
169 void SetTxPsdFlag(TxPsdFlag flag) const;
170
171 /**
172 * Update the TXVECTOR for HE TB PPDUs, since the information to decode HE TB PPDUs
173 * is not available from the PHY headers but it requires information from the TRIGVECTOR
174 * of the AP expecting these HE TB PPDUs.
175 *
176 * @param trigVector the TRIGVECTOR or std::nullopt if no TRIGVECTOR is available at the caller
177 */
178 void UpdateTxVectorForUlMu(const std::optional<WifiTxVector>& trigVector) const;
179
180 /**
181 * Get the number of STAs per HE-SIG-B content channel.
182 * This is applicable only for MU.
183 * See section 27.3.10.8.3 of IEEE 802.11ax draft 4.0.
184 *
185 * @param channelWidth the channel width occupied by the PPDU
186 * @param ruAllocation 8 bit RU_ALLOCATION per 20 MHz
187 * @param center26ToneRuIndication the center 26 tone RU indication
188 * @param sigBCompression flag whether SIG-B compression is used by the PPDU
189 * @param numMuMimoUsers the number of MU-MIMO users addressed by the PPDU
190 * @return a pair containing the number of RUs in each HE-SIG-B content channel (resp. 1 and 2)
191 */
192 static std::pair<std::size_t, std::size_t> GetNumRusPerHeSigBContentChannel(
193 MHz_u channelWidth,
194 const RuAllocation& ruAllocation,
195 std::optional<Center26ToneRuIndication> center26ToneRuIndication,
196 bool sigBCompression,
197 uint8_t numMuMimoUsers);
198
199 /**
200 * Get the HE SIG-B content channels for a given PPDU
201 * IEEE 802.11ax-2021 27.3.11.8.2 HE-SIG-B content channels
202 *
203 * @param txVector the TXVECTOR used for the PPDU
204 * @param p20Index the index of the primary20 channel
205 * @return HE-SIG-B content channels
206 */
207 static HeSigBContentChannels GetHeSigBContentChannels(const WifiTxVector& txVector,
208 uint8_t p20Index);
209
210 /**
211 * Get variable length HE SIG-B field size
212 * @param channelWidth the channel width occupied by the PPDU
213 * @param ruAllocation 8 bit RU_ALLOCATION per 20 MHz
214 * @param center26ToneRuIndication the center 26 tone RU indication
215 * @param sigBCompression flag whether SIG-B compression is used by the PPDU
216 * @param numMuMimoUsers the number of MU-MIMO users addressed by the PPDU
217 * @return field size in bytes
218 */
220 MHz_u channelWidth,
221 const RuAllocation& ruAllocation,
222 std::optional<Center26ToneRuIndication> center26ToneRuIndication,
223 bool sigBCompression,
224 std::size_t numMuMimoUsers);
225
226 protected:
227 /**
228 * Fill in the TXVECTOR from PHY headers.
229 *
230 * @param txVector the TXVECTOR to fill in
231 */
232 virtual void SetTxVectorFromPhyHeaders(WifiTxVector& txVector) const;
233
234 /**
235 * Reconstruct HeMuUserInfoMap from HE-SIG-B header.
236 *
237 * @param txVector the TXVECTOR to set its HeMuUserInfoMap
238 * @param ruAllocation the RU_ALLOCATION per 20 MHz
239 * @param center26ToneRuIndication the center 26 tone RU indication
240 * @param contentChannels the HE-SIG-B content channels
241 * @param sigBCompression flag whether SIG-B compression is used by the PPDU
242 * @param numMuMimoUsers the number of MU-MIMO users addressed by the PPDU
243 */
244 void SetHeMuUserInfos(WifiTxVector& txVector,
245 const RuAllocation& ruAllocation,
246 std::optional<Center26ToneRuIndication> center26ToneRuIndication,
247 const HeSigBContentChannels& contentChannels,
248 bool sigBCompression,
249 uint8_t numMuMimoUsers) const;
250
251 /**
252 * Get the RU specification that has been assigned a given user.
253 *
254 * @param ruAllocIndex the index of the RU allocation
255 * @param ruSpecs RU specs deduced from the RU allocation
256 * @param ruType RU type of the user to be assigned
257 * @param ruIndex RU index of the user to be assigned
258 * @param bw the total bandwidth used for the transmission
259 * @return the value used to encode the bandwidth field in HE-SIG-A
260 */
261 virtual WifiRu::RuSpec GetRuSpec(std::size_t ruAllocIndex,
262 const std::vector<WifiRu::RuSpec>& ruSpecs,
263 RuType ruType,
264 std::size_t ruIndex,
265 MHz_u bw) const;
266
267 /**
268 * Convert channel width expressed in MHz to bandwidth field encoding in HE-SIG-A.
269 *
270 * @param channelWidth the channel width in MHz
271 * @return the value used to encode the bandwidth field in HE-SIG-A
272 */
273 static uint8_t GetChannelWidthEncodingFromMhz(MHz_u channelWidth);
274
275 /**
276 * Convert number of spatial streams to NSTS field encoding in HE-SIG-A.
277 *
278 * @param nss the number of spatial streams
279 * @return the value used to encode the NSTS field in HE-SIG-A
280 */
281 static uint8_t GetNstsEncodingFromNss(uint8_t nss);
282
283 /**
284 * Convert guard interval and NLTF to its encoding in HE-SIG-A.
285 *
286 * @param guardInterval the guard interval
287 * @param nltf the the number of long training symbols
288 * @return the value used to encode the NSTS field in HE-SIG-A
289 */
290 static uint8_t GetGuardIntervalAndNltfEncoding(Time guardInterval, uint8_t nltf);
291
292 /**
293 * Convert number of spatial streams from NSTS field encoding in HE-SIG-A.
294 *
295 * @param nsts the value of the NSTS field in HE-SIG-A
296 * @return the number of spatial streams
297 */
298 static uint8_t GetNssFromNstsEncoding(uint8_t nsts);
299
300 /**
301 * Convert channel width expressed in MHz from bandwidth field encoding in HE-SIG-A.
302 *
303 * @param bandwidth the value of the bandwidth field in HE-SIG-A
304 * @return the channel width in MHz
305 */
306 static MHz_u GetChannelWidthMhzFromEncoding(uint8_t bandwidth);
307
308 /**
309 * Convert guard interval from its encoding in HE-SIG-A.
310 *
311 * @param giAndNltfSize the value used to encode the guard interval and NLTF field in HE-SIG-A
312 * @return the guard interval
313 */
314 static Time GetGuardIntervalFromEncoding(uint8_t giAndNltfSize);
315
316 /**
317 * Convert number of MU-MIMO users to its encoding in HE-SIG-A.
318 *
319 * @param nUsers the number of MU-MIMO users
320 * @return the number of MU-MIMO users to its encoding in HE-SIG-A
321 */
322 static uint8_t GetMuMimoUsersEncoding(uint8_t nUsers);
323
324 /**
325 * Convert number of MU-MIMO users from its encoding in HE-SIG-A.
326 *
327 * @param encoding the number of MU-MIMO users encoded in HE-SIG-A
328 * @return the number of MU-MIMO users from its encoding in HE-SIG-A
329 */
330 static uint8_t GetMuMimoUsersFromEncoding(uint8_t encoding);
331
332 mutable TxPsdFlag m_txPsdFlag; //!< the transmit power spectral density flag
333
334 private:
335 std::string PrintPayload() const override;
336 WifiTxVector DoGetTxVector() const override;
337
338 /**
339 * Fill in the PHY headers.
340 *
341 * @param txVector the TXVECTOR that was used for this PPDU
342 * @param ppduDuration the transmission duration of this PPDU
343 */
344 void SetPhyHeaders(const WifiTxVector& txVector, Time ppduDuration);
345
346 /**
347 * Fill in the L-SIG header.
348 *
349 * @param ppduDuration the transmission duration of this PPDU
350 */
351 void SetLSigHeader(Time ppduDuration);
352
353 /**
354 * Fill in the HE-SIG header.
355 *
356 * @param txVector the TXVECTOR that was used for this PPDU
357 */
358 void SetHeSigHeader(const WifiTxVector& txVector);
359
360 /**
361 * Return true if the PPDU is a MU PPDU
362 * @return true if the PPDU is a MU PPDU
363 */
364 virtual bool IsMu() const;
365
366 /**
367 * Return true if the PPDU is a DL MU PPDU
368 * @return true if the PPDU is a DL MU PPDU
369 */
370 virtual bool IsDlMu() const;
371
372 /**
373 * Return true if the PPDU is an UL MU PPDU
374 * @return true if the PPDU is an UL MU PPDU
375 */
376 virtual bool IsUlMu() const;
377
378 HeSigHeader m_heSig; //!< the HE-SIG PHY header
379};
380
381/**
382 * @brief Stream insertion operator.
383 *
384 * @param os the stream
385 * @param flag the transmit power spectral density flag
386 * @returns a reference to the stream
387 */
388std::ostream& operator<<(std::ostream& os, const HePpdu::TxPsdFlag& flag);
389
390} // namespace ns3
391
392#endif /* HE_PPDU_H */
HE PPDU (11ax)
Definition he-ppdu.h:39
HeSigHeader m_heSig
the HE-SIG PHY header
Definition he-ppdu.h:378
void SetTxPsdFlag(TxPsdFlag flag) const
Definition he-ppdu.cc:501
WifiTxVector DoGetTxVector() const override
Get the TXVECTOR used to send the PPDU.
Definition he-ppdu.cc:157
virtual void SetTxVectorFromPhyHeaders(WifiTxVector &txVector) const
Fill in the TXVECTOR from PHY headers.
Definition he-ppdu.cc:166
void UpdateTxVectorForUlMu(const std::optional< WifiTxVector > &trigVector) const
Update the TXVECTOR for HE TB PPDUs, since the information to decode HE TB PPDUs is not available fro...
Definition he-ppdu.cc:508
Ptr< WifiPpdu > Copy() const override
Copy this instance.
Definition he-ppdu.cc:393
MHz_u GetTxChannelWidth() const override
Get the channel width over which the PPDU will effectively be transmitted.
Definition he-ppdu.cc:475
TxPsdFlag
The transmit power spectral density flag, namely used to correctly build PSDs for pre-HE and HE porti...
Definition he-ppdu.h:104
@ PSD_HE_PORTION
HE portion of an HE PPDU.
Definition he-ppdu.h:106
@ PSD_NON_HE_PORTION
Non-HE portion of an HE PPDU.
Definition he-ppdu.h:105
virtual bool IsDlMu() const
Return true if the PPDU is a DL MU PPDU.
Definition he-ppdu.cc:419
void SetHeMuUserInfos(WifiTxVector &txVector, const RuAllocation &ruAllocation, std::optional< Center26ToneRuIndication > center26ToneRuIndication, const HeSigBContentChannels &contentChannels, bool sigBCompression, uint8_t numMuMimoUsers) const
Reconstruct HeMuUserInfoMap from HE-SIG-B header.
Definition he-ppdu.cc:249
Time GetTxDuration() const override
Get the total transmission duration of the PPDU.
Definition he-ppdu.cc:371
virtual bool IsUlMu() const
Return true if the PPDU is an UL MU PPDU.
Definition he-ppdu.cc:425
static uint8_t GetNstsEncodingFromNss(uint8_t nss)
Convert number of spatial streams to NSTS field encoding in HE-SIG-A.
Definition he-ppdu.cc:959
static uint32_t GetSigBFieldSize(MHz_u channelWidth, const RuAllocation &ruAllocation, std::optional< Center26ToneRuIndication > center26ToneRuIndication, bool sigBCompression, std::size_t numMuMimoUsers)
Get variable length HE SIG-B field size.
Definition he-ppdu.cc:818
virtual WifiRu::RuSpec GetRuSpec(std::size_t ruAllocIndex, const std::vector< WifiRu::RuSpec > &ruSpecs, RuType ruType, std::size_t ruIndex, MHz_u bw) const
Get the RU specification that has been assigned a given user.
Definition he-ppdu.cc:216
void SetHeSigHeader(const WifiTxVector &txVector)
Fill in the HE-SIG header.
Definition he-ppdu.cc:111
static uint8_t GetNssFromNstsEncoding(uint8_t nsts)
Convert number of spatial streams from NSTS field encoding in HE-SIG-A.
Definition he-ppdu.cc:966
static Time GetGuardIntervalFromEncoding(uint8_t giAndNltfSize)
Convert guard interval from its encoding in HE-SIG-A.
Definition he-ppdu.cc:941
std::variant< std::monostate, HeSuSigHeader, HeTbSigHeader, HeMuSigHeader > HeSigHeader
type of the HE-SIG PHY header
Definition he-ppdu.h:97
void SetPhyHeaders(const WifiTxVector &txVector, Time ppduDuration)
Fill in the PHY headers.
Definition he-ppdu.cc:84
std::string PrintPayload() const override
Print the payload of the PPDU.
Definition he-ppdu.cc:861
uint16_t GetStaId() const override
Get the ID of the STA that transmitted the PPDU for UL MU, SU_STA_ID otherwise.
Definition he-ppdu.cc:468
static HeSigBContentChannels GetHeSigBContentChannels(const WifiTxVector &txVector, uint8_t p20Index)
Get the HE SIG-B content channels for a given PPDU IEEE 802.11ax-2021 27.3.11.8.2 HE-SIG-B content ch...
Definition he-ppdu.cc:655
std::vector< std::vector< HeSigBUserSpecificField > > HeSigBContentChannels
HE SIG-B Content Channels.
Definition he-ppdu.h:50
WifiPpduType GetType() const override
Return the PPDU type (.
Definition he-ppdu.cc:399
TxPsdFlag GetTxPsdFlag() const
Definition he-ppdu.cc:495
static uint8_t GetMuMimoUsersEncoding(uint8_t nUsers)
Convert number of MU-MIMO users to its encoding in HE-SIG-A.
Definition he-ppdu.cc:972
static MHz_u GetChannelWidthMhzFromEncoding(uint8_t bandwidth)
Convert channel width expressed in MHz from bandwidth field encoding in HE-SIG-A.
Definition he-ppdu.cc:898
virtual bool IsMu() const
Return true if the PPDU is a MU PPDU.
Definition he-ppdu.cc:413
static std::pair< std::size_t, std::size_t > GetNumRusPerHeSigBContentChannel(MHz_u channelWidth, const RuAllocation &ruAllocation, std::optional< Center26ToneRuIndication > center26ToneRuIndication, bool sigBCompression, uint8_t numMuMimoUsers)
Get the number of STAs per HE-SIG-B content channel.
Definition he-ppdu.cc:544
static uint8_t GetChannelWidthEncodingFromMhz(MHz_u channelWidth)
Convert channel width expressed in MHz to bandwidth field encoding in HE-SIG-A.
Definition he-ppdu.cc:877
void SetLSigHeader(Time ppduDuration)
Fill in the L-SIG header.
Definition he-ppdu.cc:92
HePpdu(Ptr< const WifiPsdu > psdu, const WifiTxVector &txVector, const WifiPhyOperatingChannel &channel, Time ppduDuration, uint64_t uid)
Create an SU HE PPDU, storing a PSDU.
Definition he-ppdu.cc:66
static uint8_t GetGuardIntervalAndNltfEncoding(Time guardInterval, uint8_t nltf)
Convert guard interval and NLTF to its encoding in HE-SIG-A.
Definition he-ppdu.cc:919
TxPsdFlag m_txPsdFlag
the transmit power spectral density flag
Definition he-ppdu.h:332
static uint8_t GetMuMimoUsersFromEncoding(uint8_t encoding)
Convert number of MU-MIMO users from its encoding in HE-SIG-A.
Definition he-ppdu.cc:979
OFDM PPDU (11a)
Definition ofdm-ppdu.h:36
Smart pointer class similar to boost::intrusive_ptr.
Simulation virtual time values and global simulation resolution.
Definition nstime.h:94
Class that keeps track of all information about the current PHY operating channel.
Ptr< const WifiPsdu > GetPsdu() const
Get the payload of the PPDU.
Definition wifi-ppdu.cc:140
WifiPsdu stores an MPDU, S-MPDU or A-MPDU, by keeping header(s) and payload(s) separate for each cons...
Definition wifi-psdu.h:33
std::variant< HeRu::RuSpec, EhtRu::RuSpec > RuSpec
variant of the RU specification
Definition wifi-ru.h:27
This class mimics the TXVECTOR which is to be passed to the PHY in order to define the parameters whi...
WifiPpduType
The type of PPDU (SU, DL MU, or UL MU)
Every class exported by the ns3 library is enclosed in the ns3 namespace.
std::ostream & operator<<(std::ostream &os, const Angles &a)
Definition angles.cc:148
RuType
The different Resource Unit (RU) types.
Definition wifi-types.h:98
double MHz_u
MHz weak type.
Definition wifi-units.h:31
std::unordered_map< uint16_t, Ptr< const WifiPsdu > > WifiConstPsduMap
Map of const PSDUs indexed by STA-ID.
Definition wifi-ppdu.h:38
static constexpr uint16_t SU_STA_ID
STA_ID to identify a single user (SU)
Definition wifi-mode.h:24
constexpr size_t WIFI_MAX_NUM_HE_SIGB_CONTENT_CHANNELS
HE SIG-B Content Channels.
Definition he-ppdu.h:28
std::vector< uint16_t > RuAllocation
9 bits RU_ALLOCATION per 20 MHz
HE-SIG PHY header for HE MU PPDUs (HE-SIG-A1/A2/B)
Definition he-ppdu.h:79
uint8_t m_giLtfSize
GI+LTF Size field.
Definition he-ppdu.h:86
uint8_t m_bssColor
BSS color field.
Definition he-ppdu.h:81
HeSigBContentChannels m_contentChannels
HE SIG-B Content Channels.
Definition he-ppdu.h:91
RuAllocation m_ruAllocation
RU allocations that are going to be carried in SIG-B common subfields.
Definition he-ppdu.h:89
uint8_t m_sigBMcs
HE-SIG-B MCS.
Definition he-ppdu.h:83
uint8_t m_sigBCompression
SIG-B compression.
Definition he-ppdu.h:85
std::optional< Center26ToneRuIndication > m_center26ToneRuIndication
center 26 tone RU indication in SIG-B common subfields
Definition he-ppdu.h:93
uint8_t m_muMimoUsers
MU-MIMO users.
Definition he-ppdu.h:84
uint8_t m_bandwidth
Bandwidth field.
Definition he-ppdu.h:82
User Specific Fields in HE-SIG-Bs.
Definition he-ppdu.h:43
uint8_t nss
number of spatial streams
Definition he-ppdu.h:45
HE-SIG PHY header for HE SU PPDUs (HE-SIG-A1/A2)
Definition he-ppdu.h:56
uint8_t m_bssColor
BSS color field.
Definition he-ppdu.h:58
uint8_t m_mcs
MCS field.
Definition he-ppdu.h:59
uint8_t m_giLtfSize
GI+LTF Size field.
Definition he-ppdu.h:61
uint8_t m_bandwidth
Bandwidth field.
Definition he-ppdu.h:60
uint8_t m_format
Format bit.
Definition he-ppdu.h:57
HE-SIG PHY header for HE TB PPDUs (HE-SIG-A1/A2)
Definition he-ppdu.h:69
uint8_t m_format
Format bit.
Definition he-ppdu.h:70
uint8_t m_bandwidth
Bandwidth field.
Definition he-ppdu.h:72
uint8_t m_bssColor
BSS color field.
Definition he-ppdu.h:71