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 * @param instantiateHeaders flag used to instantiate HE header, should be disabled by child
118 * classes
119 */
121 const WifiTxVector& txVector,
122 const WifiPhyOperatingChannel& channel,
123 Time ppduDuration,
124 uint64_t uid,
125 bool instantiateHeaders = true);
126 /**
127 * Create an MU HE PPDU, storing a map of PSDUs.
128 *
129 * This PPDU can either be UL or DL.
130 *
131 * @param psdus the PHY payloads (PSDUs)
132 * @param txVector the TXVECTOR that was used for this PPDU
133 * @param channel the operating channel of the PHY used to transmit this PPDU
134 * @param ppduDuration the transmission duration of this PPDU
135 * @param uid the unique ID of this PPDU or of the triggering PPDU if this is an HE TB PPDU
136 * @param flag the flag indicating the type of Tx PSD to build
137 * @param instantiateHeaders flag used to instantiate HE header, should be disabled by child
138 * classes
139 */
140 HePpdu(const WifiConstPsduMap& psdus,
141 const WifiTxVector& txVector,
142 const WifiPhyOperatingChannel& channel,
143 Time ppduDuration,
144 uint64_t uid,
145 TxPsdFlag flag,
146 bool instantiateHeaders = true);
147
148 Time GetTxDuration() const override;
149 Ptr<WifiPpdu> Copy() const override;
150 WifiPpduType GetType() const override;
151 uint16_t GetStaId() const override;
152 MHz_u GetTxChannelWidth() const override;
153
154 /**
155 * Get the payload of the PPDU.
156 *
157 * @param bssColor the BSS color of the PHY calling this function.
158 * @param staId the STA-ID of the PHY calling this function.
159 * @return the PSDU
160 */
161 virtual Ptr<const WifiPsdu> GetPsdu(uint8_t bssColor, uint16_t staId = SU_STA_ID) const;
162
163 /**
164 * @return the transmit PSD flag set for this PPDU
165 *
166 * @see TxPsdFlag
167 */
168 TxPsdFlag GetTxPsdFlag() const;
169
170 /**
171 * @param flag the transmit PSD flag set for this PPDU
172 *
173 * @see TxPsdFlag
174 */
175 void SetTxPsdFlag(TxPsdFlag flag) const;
176
177 /**
178 * Update the TXVECTOR for HE TB PPDUs, since the information to decode HE TB PPDUs
179 * is not available from the PHY headers but it requires information from the TRIGVECTOR
180 * of the AP expecting these HE TB PPDUs.
181 *
182 * @param trigVector the TRIGVECTOR or std::nullopt if no TRIGVECTOR is available at the caller
183 */
184 void UpdateTxVectorForUlMu(const std::optional<WifiTxVector>& trigVector) const;
185
186 /**
187 * Get the number of STAs per HE-SIG-B content channel.
188 * This is applicable only for MU.
189 * See section 27.3.10.8.3 of IEEE 802.11ax draft 4.0.
190 *
191 * @param channelWidth the channel width occupied by the PPDU
192 * @param mc the modulation class used for the transmission of the PPDU
193 * @param ruAllocation 8 bit RU_ALLOCATION per 20 MHz
194 * @param center26ToneRuIndication the center 26 tone RU indication
195 * @param sigBCompression flag whether SIG-B compression is used by the PPDU
196 * @param numMuMimoUsers the number of MU-MIMO users addressed by the PPDU
197 * @return a pair containing the number of RUs in each HE-SIG-B content channel (resp. 1 and 2)
198 */
199 static std::pair<std::size_t, std::size_t> GetNumRusPerHeSigBContentChannel(
200 MHz_u channelWidth,
202 const RuAllocation& ruAllocation,
203 std::optional<Center26ToneRuIndication> center26ToneRuIndication,
204 bool sigBCompression,
205 uint8_t numMuMimoUsers);
206
207 /**
208 * Get the HE SIG-B content channels for a given PPDU
209 * IEEE 802.11ax-2021 27.3.11.8.2 HE-SIG-B content channels
210 *
211 * @param txVector the TXVECTOR used for the PPDU
212 * @param p20Index the index of the primary20 channel
213 * @return HE-SIG-B content channels
214 */
215 static HeSigBContentChannels GetHeSigBContentChannels(const WifiTxVector& txVector,
216 uint8_t p20Index);
217
218 /**
219 * Get variable length HE SIG-B field size
220 * @param channelWidth the channel width occupied by the PPDU
221 * @param mc the modulation class used for the transmission of the PPDU
222 * @param ruAllocation 8 bit RU_ALLOCATION per 20 MHz
223 * @param center26ToneRuIndication the center 26 tone RU indication
224 * @param sigBCompression flag whether SIG-B compression is used by the PPDU
225 * @param numMuMimoUsers the number of MU-MIMO users addressed by the PPDU
226 * @return field size in bytes
227 */
229 MHz_u channelWidth,
231 const RuAllocation& ruAllocation,
232 std::optional<Center26ToneRuIndication> center26ToneRuIndication,
233 bool sigBCompression,
234 std::size_t numMuMimoUsers);
235
236 protected:
237 /**
238 * Fill in the TXVECTOR from PHY headers.
239 *
240 * @param txVector the TXVECTOR to fill in
241 */
242 virtual void SetTxVectorFromPhyHeaders(WifiTxVector& txVector) const;
243
244 /**
245 * Fill in the L-SIG header.
246 *
247 * @param ppduDuration the transmission duration of this PPDU
248 */
249 void SetLSigHeader(Time ppduDuration);
250
251 /**
252 * Reconstruct HeMuUserInfoMap from HE-SIG-B header.
253 *
254 * @param txVector the TXVECTOR to set its HeMuUserInfoMap
255 * @param mc the modulation class used for the transmission of the PPDU
256 * @param ruAllocation the RU_ALLOCATION per 20 MHz
257 * @param center26ToneRuIndication the center 26 tone RU indication
258 * @param contentChannels the HE-SIG-B content channels
259 * @param sigBCompression flag whether SIG-B compression is used by the PPDU
260 * @param numMuMimoUsers the number of MU-MIMO users addressed by the PPDU
261 */
262 void SetHeMuUserInfos(WifiTxVector& txVector,
264 const RuAllocation& ruAllocation,
265 std::optional<Center26ToneRuIndication> center26ToneRuIndication,
266 const HeSigBContentChannels& contentChannels,
267 bool sigBCompression,
268 uint8_t numMuMimoUsers) const;
269
270 /**
271 * Get the RU specification that has been assigned a given user.
272 *
273 * @param ruAllocIndex the index of the RU allocation
274 * @param bw the total bandwidth used for the transmission
275 * @param ruType RU type of the user to be assigned
276 * @param phyIndex RU PHY index of the user to be assigned
277 * @return the value used to encode the bandwidth field in HE-SIG-A
278 */
279 virtual WifiRu::RuSpec GetRuSpec(std::size_t ruAllocIndex,
280 MHz_u bw,
281 RuType ruType,
282 std::size_t phyIndex) const;
283
284 /**
285 * Convert channel width expressed in MHz to bandwidth field encoding in HE-SIG-A.
286 *
287 * @param channelWidth the channel width in MHz
288 * @return the value used to encode the bandwidth field in HE-SIG-A
289 */
290 static uint8_t GetChannelWidthEncodingFromMhz(MHz_u channelWidth);
291
292 /**
293 * Convert number of spatial streams to NSTS field encoding in HE-SIG-A.
294 *
295 * @param nss the number of spatial streams
296 * @return the value used to encode the NSTS field in HE-SIG-A
297 */
298 static uint8_t GetNstsEncodingFromNss(uint8_t nss);
299
300 /**
301 * Convert guard interval and NLTF to its encoding in HE-SIG-A.
302 *
303 * @param guardInterval the guard interval
304 * @param nltf the the number of long training symbols
305 * @return the value used to encode the NSTS field in HE-SIG-A
306 */
307 static uint8_t GetGuardIntervalAndNltfEncoding(Time guardInterval, uint8_t nltf);
308
309 /**
310 * Convert number of spatial streams from NSTS field encoding in HE-SIG-A.
311 *
312 * @param nsts the value of the NSTS field in HE-SIG-A
313 * @return the number of spatial streams
314 */
315 static uint8_t GetNssFromNstsEncoding(uint8_t nsts);
316
317 /**
318 * Convert channel width expressed in MHz from bandwidth field encoding in HE-SIG-A.
319 *
320 * @param bandwidth the value of the bandwidth field in HE-SIG-A
321 * @return the channel width in MHz
322 */
323 static MHz_u GetChannelWidthMhzFromEncoding(uint8_t bandwidth);
324
325 /**
326 * Convert guard interval from its encoding in HE-SIG-A.
327 *
328 * @param giAndNltfSize the value used to encode the guard interval and NLTF field in HE-SIG-A
329 * @return the guard interval
330 */
331 static Time GetGuardIntervalFromEncoding(uint8_t giAndNltfSize);
332
333 /**
334 * Convert number of MU-MIMO users to its encoding in HE-SIG-A.
335 *
336 * @param nUsers the number of MU-MIMO users
337 * @return the number of MU-MIMO users to its encoding in HE-SIG-A
338 */
339 static uint8_t GetMuMimoUsersEncoding(uint8_t nUsers);
340
341 /**
342 * Convert number of MU-MIMO users from its encoding in HE-SIG-A.
343 *
344 * @param encoding the number of MU-MIMO users encoded in HE-SIG-A
345 * @return the number of MU-MIMO users from its encoding in HE-SIG-A
346 */
347 static uint8_t GetMuMimoUsersFromEncoding(uint8_t encoding);
348
349 mutable TxPsdFlag m_txPsdFlag; //!< the transmit power spectral density flag
350
351 private:
352 std::string PrintPayload() const override;
353 WifiTxVector DoGetTxVector() const override;
354
355 /**
356 * Fill in the PHY headers.
357 *
358 * @param txVector the TXVECTOR that was used for this PPDU
359 * @param ppduDuration the transmission duration of this PPDU
360 */
361 virtual void SetPhyHeaders(const WifiTxVector& txVector, Time ppduDuration);
362
363 /**
364 * Fill in the HE-SIG header.
365 *
366 * @param txVector the TXVECTOR that was used for this PPDU
367 */
368 void SetHeSigHeader(const WifiTxVector& txVector);
369
370 /**
371 * Return true if the PPDU is a MU PPDU
372 * @return true if the PPDU is a MU PPDU
373 */
374 virtual bool IsMu() const;
375
376 /**
377 * Return true if the PPDU is a DL MU PPDU
378 * @return true if the PPDU is a DL MU PPDU
379 */
380 virtual bool IsDlMu() const;
381
382 /**
383 * Return true if the PPDU is an UL MU PPDU
384 * @return true if the PPDU is an UL MU PPDU
385 */
386 virtual bool IsUlMu() const;
387
388 HeSigHeader m_heSig; //!< the HE-SIG PHY header
389};
390
391/**
392 * @brief Stream insertion operator.
393 *
394 * @param os the stream
395 * @param flag the transmit power spectral density flag
396 * @returns a reference to the stream
397 */
398std::ostream& operator<<(std::ostream& os, const HePpdu::TxPsdFlag& flag);
399
400} // namespace ns3
401
402#endif /* HE_PPDU_H */
HE PPDU (11ax)
Definition he-ppdu.h:39
HeSigHeader m_heSig
the HE-SIG PHY header
Definition he-ppdu.h:388
void SetTxPsdFlag(TxPsdFlag flag) const
Definition he-ppdu.cc:509
WifiTxVector DoGetTxVector() const override
Get the TXVECTOR used to send the PPDU.
Definition he-ppdu.cc:167
virtual void SetTxVectorFromPhyHeaders(WifiTxVector &txVector) const
Fill in the TXVECTOR from PHY headers.
Definition he-ppdu.cc:176
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:516
Ptr< WifiPpdu > Copy() const override
Copy this instance.
Definition he-ppdu.cc:401
MHz_u GetTxChannelWidth() const override
Get the channel width over which the PPDU will effectively be transmitted.
Definition he-ppdu.cc:483
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:427
Time GetTxDuration() const override
Get the total transmission duration of the PPDU.
Definition he-ppdu.cc:379
virtual bool IsUlMu() const
Return true if the PPDU is an UL MU PPDU.
Definition he-ppdu.cc:433
static uint8_t GetNstsEncodingFromNss(uint8_t nss)
Convert number of spatial streams to NSTS field encoding in HE-SIG-A.
Definition he-ppdu.cc:975
static std::pair< std::size_t, std::size_t > GetNumRusPerHeSigBContentChannel(MHz_u channelWidth, WifiModulationClass mc, 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:552
static uint32_t GetSigBFieldSize(MHz_u channelWidth, WifiModulationClass mc, 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:832
void SetHeSigHeader(const WifiTxVector &txVector)
Fill in the HE-SIG header.
Definition he-ppdu.cc:121
static uint8_t GetNssFromNstsEncoding(uint8_t nsts)
Convert number of spatial streams from NSTS field encoding in HE-SIG-A.
Definition he-ppdu.cc:982
static Time GetGuardIntervalFromEncoding(uint8_t giAndNltfSize)
Convert guard interval from its encoding in HE-SIG-A.
Definition he-ppdu.cc:957
std::variant< std::monostate, HeSuSigHeader, HeTbSigHeader, HeMuSigHeader > HeSigHeader
type of the HE-SIG PHY header
Definition he-ppdu.h:97
virtual void SetPhyHeaders(const WifiTxVector &txVector, Time ppduDuration)
Fill in the PHY headers.
Definition he-ppdu.cc:94
std::string PrintPayload() const override
Print the payload of the PPDU.
Definition he-ppdu.cc:877
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:476
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:663
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:407
TxPsdFlag GetTxPsdFlag() const
Definition he-ppdu.cc:503
static uint8_t GetMuMimoUsersEncoding(uint8_t nUsers)
Convert number of MU-MIMO users to its encoding in HE-SIG-A.
Definition he-ppdu.cc:988
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:914
virtual bool IsMu() const
Return true if the PPDU is a MU PPDU.
Definition he-ppdu.cc:421
HePpdu(Ptr< const WifiPsdu > psdu, const WifiTxVector &txVector, const WifiPhyOperatingChannel &channel, Time ppduDuration, uint64_t uid, bool instantiateHeaders=true)
Create an SU HE PPDU, storing a PSDU.
Definition he-ppdu.cc:71
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:893
void SetLSigHeader(Time ppduDuration)
Fill in the L-SIG header.
Definition he-ppdu.cc:102
void SetHeMuUserInfos(WifiTxVector &txVector, WifiModulationClass mc, 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:251
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:935
TxPsdFlag m_txPsdFlag
the transmit power spectral density flag
Definition he-ppdu.h:349
static uint8_t GetMuMimoUsersFromEncoding(uint8_t encoding)
Convert number of MU-MIMO users from its encoding in HE-SIG-A.
Definition he-ppdu.cc:995
virtual WifiRu::RuSpec GetRuSpec(std::size_t ruAllocIndex, MHz_u bw, RuType ruType, std::size_t phyIndex) const
Get the RU specification that has been assigned a given user.
Definition he-ppdu.cc:227
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:142
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)
WifiModulationClass
This enumeration defines the modulation classes per (Table 10-6 "Modulation classes"; IEEE 802....
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:99
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)
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