Commit 7bf9b9a0 authored by Johannes Berg's avatar Johannes Berg

wireless: define operating mode action frame

Define the action frame format, the VHT category
and its action types and the field format and EID
for operating mode notifications. The frame may
be used outside of VHT context as well, so don't
include "VHT" in the names.
Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent e1a0c6b3
...@@ -714,6 +714,30 @@ enum ieee80211_ht_chanwidth_values { ...@@ -714,6 +714,30 @@ enum ieee80211_ht_chanwidth_values {
IEEE80211_HT_CHANWIDTH_ANY = 1, IEEE80211_HT_CHANWIDTH_ANY = 1,
}; };
/**
* enum ieee80211_opmode_bits - VHT operating mode field bits
* @IEEE80211_OPMODE_NOTIF_CHANWIDTH_MASK: channel width mask
* @IEEE80211_OPMODE_NOTIF_CHANWIDTH_20MHZ: 20 MHz channel width
* @IEEE80211_OPMODE_NOTIF_CHANWIDTH_40MHZ: 40 MHz channel width
* @IEEE80211_OPMODE_NOTIF_CHANWIDTH_80MHZ: 80 MHz channel width
* @IEEE80211_OPMODE_NOTIF_CHANWIDTH_160MHZ: 160 MHz or 80+80 MHz channel width
* @IEEE80211_OPMODE_NOTIF_RX_NSS_MASK: number of spatial streams mask
* (the NSS value is the value of this field + 1)
* @IEEE80211_OPMODE_NOTIF_RX_NSS_SHIFT: number of spatial streams shift
* @IEEE80211_OPMODE_NOTIF_RX_NSS_TYPE_BF: indicates streams in SU-MIMO PPDU
* using a beamforming steering matrix
*/
enum ieee80211_vht_opmode_bits {
IEEE80211_OPMODE_NOTIF_CHANWIDTH_MASK = 3,
IEEE80211_OPMODE_NOTIF_CHANWIDTH_20MHZ = 0,
IEEE80211_OPMODE_NOTIF_CHANWIDTH_40MHZ = 1,
IEEE80211_OPMODE_NOTIF_CHANWIDTH_80MHZ = 2,
IEEE80211_OPMODE_NOTIF_CHANWIDTH_160MHZ = 3,
IEEE80211_OPMODE_NOTIF_RX_NSS_MASK = 0x70,
IEEE80211_OPMODE_NOTIF_RX_NSS_SHIFT = 4,
IEEE80211_OPMODE_NOTIF_RX_NSS_TYPE_BF = 0x80,
};
#define WLAN_SA_QUERY_TR_ID_LEN 2 #define WLAN_SA_QUERY_TR_ID_LEN 2
struct ieee80211_mgmt { struct ieee80211_mgmt {
...@@ -844,6 +868,10 @@ struct ieee80211_mgmt { ...@@ -844,6 +868,10 @@ struct ieee80211_mgmt {
__le16 capability; __le16 capability;
u8 variable[0]; u8 variable[0];
} __packed tdls_discover_resp; } __packed tdls_discover_resp;
struct {
u8 action_code;
u8 operating_mode;
} __packed vht_opmode_notif;
} u; } u;
} __packed action; } __packed action;
} u; } u;
...@@ -1598,6 +1626,7 @@ enum ieee80211_eid { ...@@ -1598,6 +1626,7 @@ enum ieee80211_eid {
WLAN_EID_VHT_CAPABILITY = 191, WLAN_EID_VHT_CAPABILITY = 191,
WLAN_EID_VHT_OPERATION = 192, WLAN_EID_VHT_OPERATION = 192,
WLAN_EID_OPMODE_NOTIF = 199,
/* 802.11ad */ /* 802.11ad */
WLAN_EID_NON_TX_BSSID_CAP = 83, WLAN_EID_NON_TX_BSSID_CAP = 83,
...@@ -1652,6 +1681,7 @@ enum ieee80211_category { ...@@ -1652,6 +1681,7 @@ enum ieee80211_category {
WLAN_CATEGORY_WMM = 17, WLAN_CATEGORY_WMM = 17,
WLAN_CATEGORY_FST = 18, WLAN_CATEGORY_FST = 18,
WLAN_CATEGORY_UNPROT_DMG = 20, WLAN_CATEGORY_UNPROT_DMG = 20,
WLAN_CATEGORY_VHT = 21,
WLAN_CATEGORY_VENDOR_SPECIFIC_PROTECTED = 126, WLAN_CATEGORY_VENDOR_SPECIFIC_PROTECTED = 126,
WLAN_CATEGORY_VENDOR_SPECIFIC = 127, WLAN_CATEGORY_VENDOR_SPECIFIC = 127,
}; };
...@@ -1677,6 +1707,13 @@ enum ieee80211_ht_actioncode { ...@@ -1677,6 +1707,13 @@ enum ieee80211_ht_actioncode {
WLAN_HT_ACTION_ASEL_IDX_FEEDBACK = 7, WLAN_HT_ACTION_ASEL_IDX_FEEDBACK = 7,
}; };
/* VHT action codes */
enum ieee80211_vht_actioncode {
WLAN_VHT_ACTION_COMPRESSED_BF = 0,
WLAN_VHT_ACTION_GROUPID_MGMT = 1,
WLAN_VHT_ACTION_OPMODE_NOTIF = 2,
};
/* Self Protected Action codes */ /* Self Protected Action codes */
enum ieee80211_self_protected_actioncode { enum ieee80211_self_protected_actioncode {
WLAN_SP_RESERVED = 0, WLAN_SP_RESERVED = 0,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment