History

wifi: nl80211: Add EHT fixed Tx rate support

Add new attributes to support EHT MCS/NSS Tx rates and EHT GI/LTF. Parse EHT fixed MCS/NSS Tx rates and EHT GI/LTF values passed by the userspace, validate and add as part of cfg80211_bitrate_mask. MCS mask is constructed by new function, eht_build_mcs_mask(). Max NSS supported for MCS rates of 7, 9, 11 and 13 is utilized to set MCS bitmask for each NSS. MCS rates 14, and 15 if supported, are set only for NSS = 0.

Muna Sinada committed 1 year ago

Commit d0bf0611 parent 36b75dc3 files · +266 −7Browse files

Showing the changes to include/uapi (1 of 3 files). Show all

Unified · Split

include/uapi/linux/nl80211.h+39−2
@@ -1943,8 +1943,9 @@ enum nl80211_commands { · 1942 unmodified lines
1943 * The driver must also specify support for this with the extended1943 * The driver must also specify support for this with the extended
1944 * features NL80211_EXT_FEATURE_BEACON_RATE_LEGACY,1944 * features NL80211_EXT_FEATURE_BEACON_RATE_LEGACY,
1945 * NL80211_EXT_FEATURE_BEACON_RATE_HT,1945 * NL80211_EXT_FEATURE_BEACON_RATE_HT,
1946 * NL80211_EXT_FEATURE_BEACON_RATE_VHT and1946 * NL80211_EXT_FEATURE_BEACON_RATE_VHT,
1947 * NL80211_EXT_FEATURE_BEACON_RATE_HE.1947 * NL80211_EXT_FEATURE_BEACON_RATE_HE and
1948 * NL80211_EXT_FEATURE_BEACON_RATE_EHT.
1948 *1949 *
1949 * @NL80211_ATTR_FRAME_MATCH: A binary attribute which typically must contain1950 * @NL80211_ATTR_FRAME_MATCH: A binary attribute which typically must contain
1950 * at least one byte, currently used with @NL80211_CMD_REGISTER_FRAME.1951 * at least one byte, currently used with @NL80211_CMD_REGISTER_FRAME.
@@ -3736,6 +3737,22 @@ enum nl80211_eht_gi { · 1785 unmodified lines
3736 NL80211_RATE_INFO_EHT_GI_3_2,3737 NL80211_RATE_INFO_EHT_GI_3_2,
3737};3738};
3738 3739
3740/**
3741 * enum nl80211_eht_ltf - EHT long training field
3742 * @NL80211_RATE_INFO_EHT_1XLTF: 3.2 usec
3743 * @NL80211_RATE_INFO_EHT_2XLTF: 6.4 usec
3744 * @NL80211_RATE_INFO_EHT_4XLTF: 12.8 usec
3745 * @NL80211_RATE_INFO_EHT_6XLTF: 19.2 usec
3746 * @NL80211_RATE_INFO_EHT_8XLTF: 25.6 usec
3747 */
3748enum nl80211_eht_ltf {
3749 NL80211_RATE_INFO_EHT_1XLTF,
3750 NL80211_RATE_INFO_EHT_2XLTF,
3751 NL80211_RATE_INFO_EHT_4XLTF,
3752 NL80211_RATE_INFO_EHT_6XLTF,
3753 NL80211_RATE_INFO_EHT_8XLTF,
3754};
3755
3739/**3756/**
3740 * enum nl80211_eht_ru_alloc - EHT RU allocation values3757 * enum nl80211_eht_ru_alloc - EHT RU allocation values
3741 * @NL80211_RATE_INFO_EHT_RU_ALLOC_26: 26-tone RU allocation3758 * @NL80211_RATE_INFO_EHT_RU_ALLOC_26: 26-tone RU allocation
@@ -5482,6 +5499,10 @@ enum nl80211_key_attributes { · 1740 unmodified lines
5482 * see &struct nl80211_txrate_he5499 * see &struct nl80211_txrate_he
5483 * @NL80211_TXRATE_HE_GI: configure HE GI, 0.8us, 1.6us and 3.2us.5500 * @NL80211_TXRATE_HE_GI: configure HE GI, 0.8us, 1.6us and 3.2us.
5484 * @NL80211_TXRATE_HE_LTF: configure HE LTF, 1XLTF, 2XLTF and 4XLTF.5501 * @NL80211_TXRATE_HE_LTF: configure HE LTF, 1XLTF, 2XLTF and 4XLTF.
5502 * @NL80211_TXRATE_EHT: EHT rates allowed for TX rate selection,
5503 * see &struct nl80211_txrate_eht
5504 * @NL80211_TXRATE_EHT_GI: configure EHT GI, (u8, see &enum nl80211_eht_gi)
5505 * @NL80211_TXRATE_EHT_LTF: configure EHT LTF, (u8, see &enum nl80211_eht_ltf)
5485 * @__NL80211_TXRATE_AFTER_LAST: internal5506 * @__NL80211_TXRATE_AFTER_LAST: internal
5486 * @NL80211_TXRATE_MAX: highest TX rate attribute5507 * @NL80211_TXRATE_MAX: highest TX rate attribute
5487 */5508 */
@@ -5494,6 +5515,9 @@ enum nl80211_tx_rate_attributes { · 6 unmodified lines
5494 NL80211_TXRATE_HE,5515 NL80211_TXRATE_HE,
5495 NL80211_TXRATE_HE_GI,5516 NL80211_TXRATE_HE_GI,
5496 NL80211_TXRATE_HE_LTF,5517 NL80211_TXRATE_HE_LTF,
5518 NL80211_TXRATE_EHT,
5519 NL80211_TXRATE_EHT_GI,
5520 NL80211_TXRATE_EHT_LTF,
5497 5521
5498 /* keep last */5522 /* keep last */
5499 __NL80211_TXRATE_AFTER_LAST,5523 __NL80211_TXRATE_AFTER_LAST,
@@ -5526,6 +5550,15 @@ enum nl80211_txrate_gi { · 26 unmodified lines
5526 NL80211_TXRATE_FORCE_LGI,5550 NL80211_TXRATE_FORCE_LGI,
5527};5551};
5528 5552
5553#define NL80211_EHT_NSS_MAX 16
5554/**
5555 * struct nl80211_txrate_eht - EHT MCS/NSS txrate bitmap
5556 * @mcs: MCS bitmap table for each NSS (array index 0 for 1 stream, etc.)
5557 */
5558struct nl80211_txrate_eht {
5559 __u16 mcs[NL80211_EHT_NSS_MAX];
5560};
5561
5529/**5562/**
5530 * enum nl80211_band - Frequency band5563 * enum nl80211_band - Frequency band
5531 * @NL80211_BAND_2GHZ: 2.4 GHz ISM band5564 * @NL80211_BAND_2GHZ: 2.4 GHz ISM band
@@ -6650,6 +6683,9 @@ enum nl80211_feature_flags { · 1118 unmodified lines
6650 * (signaling and payload protected) A-MSDUs and this shall be advertised6683 * (signaling and payload protected) A-MSDUs and this shall be advertised
6651 * in the RSNXE.6684 * in the RSNXE.
6652 *6685 *
6686 * @NL80211_EXT_FEATURE_BEACON_RATE_EHT: Driver supports beacon rate
6687 * configuration (AP/mesh) with EHT rates.
6688 *
6653 * @NUM_NL80211_EXT_FEATURES: number of extended features.6689 * @NUM_NL80211_EXT_FEATURES: number of extended features.
6654 * @MAX_NL80211_EXT_FEATURES: highest extended feature index.6690 * @MAX_NL80211_EXT_FEATURES: highest extended feature index.
6655 */6691 */
@@ -6725,6 +6761,7 @@ enum nl80211_ext_feature_index { · 69 unmodified lines
6725 NL80211_EXT_FEATURE_OWE_OFFLOAD_AP,6761 NL80211_EXT_FEATURE_OWE_OFFLOAD_AP,
6726 NL80211_EXT_FEATURE_DFS_CONCURRENT,6762 NL80211_EXT_FEATURE_DFS_CONCURRENT,
6727 NL80211_EXT_FEATURE_SPP_AMSDU_SUPPORT,6763 NL80211_EXT_FEATURE_SPP_AMSDU_SUPPORT,
6764 NL80211_EXT_FEATURE_BEACON_RATE_EHT,
6728 6765
6729 /* add new features before the definition below */6766 /* add new features before the definition below */
6730 NUM_NL80211_EXT_FEATURES,6767 NUM_NL80211_EXT_FEATURES,

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t