Lines Matching +full:rates +full:- +full:mcs
1 /*-
2 * SPDX-License-Identifier: BSD-2-Clause
5 * Copyright (c) 2002-2008 Sam Leffler, Errno Consulting
53 * PHY mode; this is not really a mode as multi-mode devices
100 IEEE80211_PROT_RTSCTS = 2, /* RTS-CTS */
113 IEEE80211_AUTH_SHARED = 2, /* shared-key */
115 IEEE80211_AUTH_AUTO = 4, /* auto-select/accept */
177 #define IEEE80211_CHAN_DYN 0x00000400 /* Dynamic CCK-OFDM channel */
242 (((_c)->ic_flags & IEEE80211_CHAN_FHSS) == IEEE80211_CHAN_FHSS)
244 (((_c)->ic_flags & IEEE80211_CHAN_A) == IEEE80211_CHAN_A)
246 (((_c)->ic_flags & IEEE80211_CHAN_B) == IEEE80211_CHAN_B)
248 (((_c)->ic_flags & IEEE80211_CHAN_PUREG) == IEEE80211_CHAN_PUREG)
250 (((_c)->ic_flags & IEEE80211_CHAN_G) == IEEE80211_CHAN_G)
254 (((_c)->ic_flags & IEEE80211_CHAN_ST) == IEEE80211_CHAN_ST)
256 (((_c)->ic_flags & IEEE80211_CHAN_108A) == IEEE80211_CHAN_108A)
258 (((_c)->ic_flags & IEEE80211_CHAN_108G) == IEEE80211_CHAN_108G)
261 (((_c)->ic_flags & IEEE80211_CHAN_2GHZ) != 0)
263 (((_c)->ic_flags & IEEE80211_CHAN_5GHZ) != 0)
265 (((_c)->ic_flags & IEEE80211_CHAN_PASSIVE) != 0)
267 (((_c)->ic_flags & (IEEE80211_CHAN_OFDM | IEEE80211_CHAN_DYN)) != 0)
269 (((_c)->ic_flags & (IEEE80211_CHAN_CCK | IEEE80211_CHAN_DYN)) != 0)
271 (((_c)->ic_flags & IEEE80211_CHAN_DYN) == IEEE80211_CHAN_DYN)
273 (((_c)->ic_flags & IEEE80211_CHAN_GFSK) != 0)
275 (((_c)->ic_flags & IEEE80211_CHAN_TURBO) != 0)
277 (((_c)->ic_flags & IEEE80211_CHAN_STURBO) != 0)
279 (((_c)->ic_flags & \
282 (((_c)->ic_flags & IEEE80211_CHAN_HALF) != 0)
284 (((_c)->ic_flags & IEEE80211_CHAN_QUARTER) != 0)
286 (((_c)->ic_flags & (IEEE80211_CHAN_QUARTER | IEEE80211_CHAN_HALF)) == 0)
288 (((_c)->ic_flags & IEEE80211_CHAN_GSM) != 0)
290 (((_c)->ic_flags & IEEE80211_CHAN_HT) != 0)
292 (((_c)->ic_flags & IEEE80211_CHAN_HT20) != 0)
294 (((_c)->ic_flags & IEEE80211_CHAN_HT40) != 0)
296 (((_c)->ic_flags & IEEE80211_CHAN_HT40U) != 0)
298 (((_c)->ic_flags & IEEE80211_CHAN_HT40D) != 0)
301 ((_c)->ic_flags & IEEE80211_CHAN_HT) != 0)
304 ((_c)->ic_flags & IEEE80211_CHAN_HT) != 0)
306 (((_c)->ic_flags & IEEE80211_CHAN_DFS) != 0)
308 (((_c)->ic_flags & IEEE80211_CHAN_NOADHOC) != 0)
310 (((_c)->ic_flags & IEEE80211_CHAN_NOHOSTAP) != 0)
312 (((_c)->ic_flags & IEEE80211_CHAN_11D) != 0)
315 (((_c)->ic_flags & IEEE80211_CHAN_VHT) != 0)
318 ((_c)->ic_flags & IEEE80211_CHAN_VHT) != 0)
321 ((_c)->ic_flags & IEEE80211_CHAN_VHT) != 0)
323 (((_c)->ic_flags & IEEE80211_CHAN_VHT20) != 0)
325 (((_c)->ic_flags & IEEE80211_CHAN_VHT40) != 0)
327 (((_c)->ic_flags & IEEE80211_CHAN_VHT40U) != 0)
329 (((_c)->ic_flags & IEEE80211_CHAN_VHT40D) != 0)
332 ((_c)->ic_flags & IEEE80211_CHAN_VHT) != 0)
335 ((_c)->ic_flags & IEEE80211_CHAN_VHT) != 0)
337 (((_c)->ic_flags & IEEE80211_CHAN_VHT80) != 0)
339 (((_c)->ic_flags & IEEE80211_CHAN_VHT160) != 0)
341 (((_c)->ic_flags & IEEE80211_CHAN_VHT80P80) != 0)
343 #define IEEE80211_CHAN2IEEE(_c) (_c)->ic_ieee
352 (((_c)->ic_state & IEEE80211_CHANSTATE_RADAR) != 0)
354 (((_c)->ic_state & IEEE80211_CHANSTATE_CACDONE) != 0)
356 (((_c)->ic_state & IEEE80211_CHANSTATE_CWINT) != 0)
360 #define IEEE80211_FH_CHAN(set,pat) (((set)-1)*IEEE80211_FH_CHANMOD+(pat))
364 #define IEEE80211_TID_SIZE (WME_NUM_TID+1) /* WME TID's +1 for non-QoS */
365 #define IEEE80211_NONQOS_TID WME_NUM_TID /* index for non-QoS sta */
381 #define IEEE80211_RATE_MAXSIZE 15 /* max rates we'll handle */
390 * legacy rates the entries are MCS rates. We define
404 * Per-mode transmit parameters/controls visible to user space.
406 * modes or on a per-client basis according to the capabilities
409 * MCS are distinguished from legacy rates by or'ing in 0x80.
412 uint8_t ucastrate; /* ucast data rate (legacy/MCS|0x80) */
413 uint8_t mgmtrate; /* mgmt frame rate (legacy/MCS|0x80) */
414 uint8_t mcastrate; /* multicast rate (legacy/MCS|0x80) */
419 * Per-mode roaming state visible to user space. There are two
427 uint8_t rate; /* tx rate thresh (.5 Mb/s or MCS) */
448 * This is the number of sub-channels for a channel.
449 * 0 - pri20
450 * 1 - sec20 (HT40, VHT40)
451 * 2 - sec40 (VHT80)
452 * 3 - sec80 (VHT80+80, VHT160)
488 #define IEEE80211_C_SWAMSDUTX 0x00100000 /* CAPABILITY: software A-MSDU TX */
489 #define IEEE80211_C_UAPSD 0x00200000 /* CAPABILITY: U-APSD */
496 #define IEEE80211_C_WDS 0x08000000 /* CAPABILITY: 4-addr support */
515 * ic_htcaps/iv_htcaps: HT-specific device/driver capabilities
517 * NB: the low 16-bits are the 802.11 definitions, the upper
518 * 16-bits are used to define s/w/driver capabilities.
520 #define IEEE80211_HTC_AMPDU 0x00010000 /* CAPABILITY: A-MPDU tx */
521 #define IEEE80211_HTC_AMSDU 0x00020000 /* CAPABILITY: A-MSDU tx */
526 #define IEEE80211_HTC_RXUNEQUAL 0x00200000 /* CAPABILITY: RX unequal MCS */
528 #define IEEE80211_HTC_TXUNEQUAL 0x00800000 /* CAPABILITY: TX unequal MCS */
531 #define IEEE80211_HTC_RX_AMSDU_AMPDU 0x04000000 /* CAPABILITY: RX A-MSDU in A-MPDU */
532 #define IEEE80211_HTC_TX_AMSDU_AMPDU 0x08000000 /* CAPABILITY: TX A-MSDU in A-MPDU */
542 * These represent what's in 802.11-2016 - Table 9-133 - AKM Suite Selectors.
561 * RX status notification - which fields are valid.
566 #define IEEE80211_R_C_NF 0x00000008 /* per-chain NF value valid */
567 #define IEEE80211_R_C_RSSI 0x00000010 /* per-chain RSSI value valid */
568 #define IEEE80211_R_C_EVM 0x00000020 /* per-chain EVM valid */
579 * RX status notification - describe the packet.
592 #define IEEE80211_RX_F_SHORTGI 0x00000800 /* This is a short-GI frame */
618 int16_t c_nf_ctl[IEEE80211_MAX_CHAINS]; /* per-chain NF */
619 int16_t c_nf_ext[IEEE80211_MAX_CHAINS]; /* per-chain NF */
620 int16_t c_rssi_ctl[IEEE80211_MAX_CHAINS]; /* per-chain RSSI */
621 int16_t c_rssi_ext[IEEE80211_MAX_CHAINS]; /* per-chain RSSI */
627 uint8_t c_rate; /* legacy; 11n rate code; VHT MCS */
640 /* per-chain, per-pilot EVM values */
646 uint8_t c_vhtnss; /* VHT - number of spatial streams */