aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/ieee80211.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/ieee80211.h')
-rw-r--r--include/linux/ieee80211.h112
1 files changed, 100 insertions, 12 deletions
diff --git a/include/linux/ieee80211.h b/include/linux/ieee80211.h
index 163c840437d6..97b2eae6a22c 100644
--- a/include/linux/ieee80211.h
+++ b/include/linux/ieee80211.h
@@ -120,6 +120,26 @@
120#define IEEE80211_QOS_CTL_TID_MASK 0x000F 120#define IEEE80211_QOS_CTL_TID_MASK 0x000F
121#define IEEE80211_QOS_CTL_TAG1D_MASK 0x0007 121#define IEEE80211_QOS_CTL_TAG1D_MASK 0x0007
122 122
123/* U-APSD queue for WMM IEs sent by AP */
124#define IEEE80211_WMM_IE_AP_QOSINFO_UAPSD (1<<7)
125
126/* U-APSD queues for WMM IEs sent by STA */
127#define IEEE80211_WMM_IE_STA_QOSINFO_AC_VO (1<<0)
128#define IEEE80211_WMM_IE_STA_QOSINFO_AC_VI (1<<1)
129#define IEEE80211_WMM_IE_STA_QOSINFO_AC_BK (1<<2)
130#define IEEE80211_WMM_IE_STA_QOSINFO_AC_BE (1<<3)
131#define IEEE80211_WMM_IE_STA_QOSINFO_AC_MASK 0x0f
132
133/* U-APSD max SP length for WMM IEs sent by STA */
134#define IEEE80211_WMM_IE_STA_QOSINFO_SP_ALL 0x00
135#define IEEE80211_WMM_IE_STA_QOSINFO_SP_2 0x01
136#define IEEE80211_WMM_IE_STA_QOSINFO_SP_4 0x02
137#define IEEE80211_WMM_IE_STA_QOSINFO_SP_6 0x03
138#define IEEE80211_WMM_IE_STA_QOSINFO_SP_MASK 0x03
139#define IEEE80211_WMM_IE_STA_QOSINFO_SP_SHIFT 5
140
141#define IEEE80211_HT_CTL_LEN 4
142
123struct ieee80211_hdr { 143struct ieee80211_hdr {
124 __le16 frame_control; 144 __le16 frame_control;
125 __le16 duration_id; 145 __le16 duration_id;
@@ -130,6 +150,25 @@ struct ieee80211_hdr {
130 u8 addr4[6]; 150 u8 addr4[6];
131} __attribute__ ((packed)); 151} __attribute__ ((packed));
132 152
153struct ieee80211_hdr_3addr {
154 __le16 frame_control;
155 __le16 duration_id;
156 u8 addr1[6];
157 u8 addr2[6];
158 u8 addr3[6];
159 __le16 seq_ctrl;
160} __attribute__ ((packed));
161
162struct ieee80211_qos_hdr {
163 __le16 frame_control;
164 __le16 duration_id;
165 u8 addr1[6];
166 u8 addr2[6];
167 u8 addr3[6];
168 __le16 seq_ctrl;
169 __le16 qos_ctrl;
170} __attribute__ ((packed));
171
133/** 172/**
134 * ieee80211_has_tods - check if IEEE80211_FCTL_TODS is set 173 * ieee80211_has_tods - check if IEEE80211_FCTL_TODS is set
135 * @fc: frame control bytes in little-endian byteorder 174 * @fc: frame control bytes in little-endian byteorder
@@ -707,6 +746,10 @@ struct ieee80211_mgmt {
707 u8 action; 746 u8 action;
708 u8 trans_id[WLAN_SA_QUERY_TR_ID_LEN]; 747 u8 trans_id[WLAN_SA_QUERY_TR_ID_LEN];
709 } __attribute__ ((packed)) sa_query; 748 } __attribute__ ((packed)) sa_query;
749 struct {
750 u8 action;
751 u8 smps_control;
752 } __attribute__ ((packed)) ht_smps;
710 } u; 753 } u;
711 } __attribute__ ((packed)) action; 754 } __attribute__ ((packed)) action;
712 } u; 755 } u;
@@ -771,7 +814,10 @@ struct ieee80211_bar {
771/** 814/**
772 * struct ieee80211_mcs_info - MCS information 815 * struct ieee80211_mcs_info - MCS information
773 * @rx_mask: RX mask 816 * @rx_mask: RX mask
774 * @rx_highest: highest supported RX rate 817 * @rx_highest: highest supported RX rate. If set represents
818 * the highest supported RX data rate in units of 1 Mbps.
819 * If this field is 0 this value should not be used to
820 * consider the highest RX data rate supported.
775 * @tx_params: TX parameters 821 * @tx_params: TX parameters
776 */ 822 */
777struct ieee80211_mcs_info { 823struct ieee80211_mcs_info {
@@ -824,11 +870,13 @@ struct ieee80211_ht_cap {
824#define IEEE80211_HT_CAP_LDPC_CODING 0x0001 870#define IEEE80211_HT_CAP_LDPC_CODING 0x0001
825#define IEEE80211_HT_CAP_SUP_WIDTH_20_40 0x0002 871#define IEEE80211_HT_CAP_SUP_WIDTH_20_40 0x0002
826#define IEEE80211_HT_CAP_SM_PS 0x000C 872#define IEEE80211_HT_CAP_SM_PS 0x000C
873#define IEEE80211_HT_CAP_SM_PS_SHIFT 2
827#define IEEE80211_HT_CAP_GRN_FLD 0x0010 874#define IEEE80211_HT_CAP_GRN_FLD 0x0010
828#define IEEE80211_HT_CAP_SGI_20 0x0020 875#define IEEE80211_HT_CAP_SGI_20 0x0020
829#define IEEE80211_HT_CAP_SGI_40 0x0040 876#define IEEE80211_HT_CAP_SGI_40 0x0040
830#define IEEE80211_HT_CAP_TX_STBC 0x0080 877#define IEEE80211_HT_CAP_TX_STBC 0x0080
831#define IEEE80211_HT_CAP_RX_STBC 0x0300 878#define IEEE80211_HT_CAP_RX_STBC 0x0300
879#define IEEE80211_HT_CAP_RX_STBC_SHIFT 8
832#define IEEE80211_HT_CAP_DELAY_BA 0x0400 880#define IEEE80211_HT_CAP_DELAY_BA 0x0400
833#define IEEE80211_HT_CAP_MAX_AMSDU 0x0800 881#define IEEE80211_HT_CAP_MAX_AMSDU 0x0800
834#define IEEE80211_HT_CAP_DSSSCCK40 0x1000 882#define IEEE80211_HT_CAP_DSSSCCK40 0x1000
@@ -839,6 +887,7 @@ struct ieee80211_ht_cap {
839/* 802.11n HT capability AMPDU settings (for ampdu_params_info) */ 887/* 802.11n HT capability AMPDU settings (for ampdu_params_info) */
840#define IEEE80211_HT_AMPDU_PARM_FACTOR 0x03 888#define IEEE80211_HT_AMPDU_PARM_FACTOR 0x03
841#define IEEE80211_HT_AMPDU_PARM_DENSITY 0x1C 889#define IEEE80211_HT_AMPDU_PARM_DENSITY 0x1C
890#define IEEE80211_HT_AMPDU_PARM_DENSITY_SHIFT 2
842 891
843/* 892/*
844 * Maximum length of AMPDU that the STA can receive. 893 * Maximum length of AMPDU that the STA can receive.
@@ -922,12 +971,17 @@ struct ieee80211_ht_info {
922#define IEEE80211_MAX_AMPDU_BUF 0x40 971#define IEEE80211_MAX_AMPDU_BUF 0x40
923 972
924 973
925/* Spatial Multiplexing Power Save Modes */ 974/* Spatial Multiplexing Power Save Modes (for capability) */
926#define WLAN_HT_CAP_SM_PS_STATIC 0 975#define WLAN_HT_CAP_SM_PS_STATIC 0
927#define WLAN_HT_CAP_SM_PS_DYNAMIC 1 976#define WLAN_HT_CAP_SM_PS_DYNAMIC 1
928#define WLAN_HT_CAP_SM_PS_INVALID 2 977#define WLAN_HT_CAP_SM_PS_INVALID 2
929#define WLAN_HT_CAP_SM_PS_DISABLED 3 978#define WLAN_HT_CAP_SM_PS_DISABLED 3
930 979
980/* for SM power control field lower two bits */
981#define WLAN_HT_SMPS_CONTROL_DISABLED 0
982#define WLAN_HT_SMPS_CONTROL_STATIC 1
983#define WLAN_HT_SMPS_CONTROL_DYNAMIC 3
984
931/* Authentication algorithms */ 985/* Authentication algorithms */
932#define WLAN_AUTH_OPEN 0 986#define WLAN_AUTH_OPEN 0
933#define WLAN_AUTH_SHARED_KEY 1 987#define WLAN_AUTH_SHARED_KEY 1
@@ -1071,12 +1125,12 @@ enum ieee80211_eid {
1071 WLAN_EID_TIM = 5, 1125 WLAN_EID_TIM = 5,
1072 WLAN_EID_IBSS_PARAMS = 6, 1126 WLAN_EID_IBSS_PARAMS = 6,
1073 WLAN_EID_CHALLENGE = 16, 1127 WLAN_EID_CHALLENGE = 16,
1074 /* 802.11d */ 1128
1075 WLAN_EID_COUNTRY = 7, 1129 WLAN_EID_COUNTRY = 7,
1076 WLAN_EID_HP_PARAMS = 8, 1130 WLAN_EID_HP_PARAMS = 8,
1077 WLAN_EID_HP_TABLE = 9, 1131 WLAN_EID_HP_TABLE = 9,
1078 WLAN_EID_REQUEST = 10, 1132 WLAN_EID_REQUEST = 10,
1079 /* 802.11e */ 1133
1080 WLAN_EID_QBSS_LOAD = 11, 1134 WLAN_EID_QBSS_LOAD = 11,
1081 WLAN_EID_EDCA_PARAM_SET = 12, 1135 WLAN_EID_EDCA_PARAM_SET = 12,
1082 WLAN_EID_TSPEC = 13, 1136 WLAN_EID_TSPEC = 13,
@@ -1099,7 +1153,7 @@ enum ieee80211_eid {
1099 WLAN_EID_PREP = 69, 1153 WLAN_EID_PREP = 69,
1100 WLAN_EID_PERR = 70, 1154 WLAN_EID_PERR = 70,
1101 WLAN_EID_RANN = 49, /* compatible with FreeBSD */ 1155 WLAN_EID_RANN = 49, /* compatible with FreeBSD */
1102 /* 802.11h */ 1156
1103 WLAN_EID_PWR_CONSTRAINT = 32, 1157 WLAN_EID_PWR_CONSTRAINT = 32,
1104 WLAN_EID_PWR_CAPABILITY = 33, 1158 WLAN_EID_PWR_CAPABILITY = 33,
1105 WLAN_EID_TPC_REQUEST = 34, 1159 WLAN_EID_TPC_REQUEST = 34,
@@ -1110,20 +1164,41 @@ enum ieee80211_eid {
1110 WLAN_EID_MEASURE_REPORT = 39, 1164 WLAN_EID_MEASURE_REPORT = 39,
1111 WLAN_EID_QUIET = 40, 1165 WLAN_EID_QUIET = 40,
1112 WLAN_EID_IBSS_DFS = 41, 1166 WLAN_EID_IBSS_DFS = 41,
1113 /* 802.11g */ 1167
1114 WLAN_EID_ERP_INFO = 42, 1168 WLAN_EID_ERP_INFO = 42,
1115 WLAN_EID_EXT_SUPP_RATES = 50, 1169 WLAN_EID_EXT_SUPP_RATES = 50,
1116 /* 802.11n */ 1170
1117 WLAN_EID_HT_CAPABILITY = 45, 1171 WLAN_EID_HT_CAPABILITY = 45,
1118 WLAN_EID_HT_INFORMATION = 61, 1172 WLAN_EID_HT_INFORMATION = 61,
1119 /* 802.11i */ 1173
1120 WLAN_EID_RSN = 48, 1174 WLAN_EID_RSN = 48,
1121 WLAN_EID_TIMEOUT_INTERVAL = 56, 1175 WLAN_EID_MMIE = 76,
1122 WLAN_EID_MMIE = 76 /* 802.11w */,
1123 WLAN_EID_WPA = 221, 1176 WLAN_EID_WPA = 221,
1124 WLAN_EID_GENERIC = 221, 1177 WLAN_EID_GENERIC = 221,
1125 WLAN_EID_VENDOR_SPECIFIC = 221, 1178 WLAN_EID_VENDOR_SPECIFIC = 221,
1126 WLAN_EID_QOS_PARAMETER = 222 1179 WLAN_EID_QOS_PARAMETER = 222,
1180
1181 WLAN_EID_AP_CHAN_REPORT = 51,
1182 WLAN_EID_NEIGHBOR_REPORT = 52,
1183 WLAN_EID_RCPI = 53,
1184 WLAN_EID_BSS_AVG_ACCESS_DELAY = 63,
1185 WLAN_EID_ANTENNA_INFO = 64,
1186 WLAN_EID_RSNI = 65,
1187 WLAN_EID_MEASUREMENT_PILOT_TX_INFO = 66,
1188 WLAN_EID_BSS_AVAILABLE_CAPACITY = 67,
1189 WLAN_EID_BSS_AC_ACCESS_DELAY = 68,
1190 WLAN_EID_RRM_ENABLED_CAPABILITIES = 70,
1191 WLAN_EID_MULTIPLE_BSSID = 71,
1192
1193 WLAN_EID_MOBILITY_DOMAIN = 54,
1194 WLAN_EID_FAST_BSS_TRANSITION = 55,
1195 WLAN_EID_TIMEOUT_INTERVAL = 56,
1196 WLAN_EID_RIC_DATA = 57,
1197 WLAN_EID_RIC_DESCRIPTOR = 75,
1198
1199 WLAN_EID_DSE_REGISTERED_LOCATION = 58,
1200 WLAN_EID_SUPPORTED_REGULATORY_CLASSES = 59,
1201 WLAN_EID_EXT_CHANSWITCH_ANN = 60,
1127}; 1202};
1128 1203
1129/* Action category code */ 1204/* Action category code */
@@ -1137,6 +1212,8 @@ enum ieee80211_category {
1137 WLAN_CATEGORY_SA_QUERY = 8, 1212 WLAN_CATEGORY_SA_QUERY = 8,
1138 WLAN_CATEGORY_PROTECTED_DUAL_OF_ACTION = 9, 1213 WLAN_CATEGORY_PROTECTED_DUAL_OF_ACTION = 9,
1139 WLAN_CATEGORY_WMM = 17, 1214 WLAN_CATEGORY_WMM = 17,
1215 WLAN_CATEGORY_MESH_PLINK = 30, /* Pending ANA approval */
1216 WLAN_CATEGORY_MESH_PATH_SEL = 32, /* Pending ANA approval */
1140 WLAN_CATEGORY_VENDOR_SPECIFIC_PROTECTED = 126, 1217 WLAN_CATEGORY_VENDOR_SPECIFIC_PROTECTED = 126,
1141 WLAN_CATEGORY_VENDOR_SPECIFIC = 127, 1218 WLAN_CATEGORY_VENDOR_SPECIFIC = 127,
1142}; 1219};
@@ -1150,6 +1227,18 @@ enum ieee80211_spectrum_mgmt_actioncode {
1150 WLAN_ACTION_SPCT_CHL_SWITCH = 4, 1227 WLAN_ACTION_SPCT_CHL_SWITCH = 4,
1151}; 1228};
1152 1229
1230/* HT action codes */
1231enum ieee80211_ht_actioncode {
1232 WLAN_HT_ACTION_NOTIFY_CHANWIDTH = 0,
1233 WLAN_HT_ACTION_SMPS = 1,
1234 WLAN_HT_ACTION_PSMP = 2,
1235 WLAN_HT_ACTION_PCO_PHASE = 3,
1236 WLAN_HT_ACTION_CSI = 4,
1237 WLAN_HT_ACTION_NONCOMPRESSED_BF = 5,
1238 WLAN_HT_ACTION_COMPRESSED_BF = 6,
1239 WLAN_HT_ACTION_ASEL_IDX_FEEDBACK = 7,
1240};
1241
1153/* Security key length */ 1242/* Security key length */
1154enum ieee80211_key_len { 1243enum ieee80211_key_len {
1155 WLAN_KEY_LEN_WEP40 = 5, 1244 WLAN_KEY_LEN_WEP40 = 5,
@@ -1238,7 +1327,6 @@ enum ieee80211_back_actioncode {
1238enum ieee80211_back_parties { 1327enum ieee80211_back_parties {
1239 WLAN_BACK_RECIPIENT = 0, 1328 WLAN_BACK_RECIPIENT = 0,
1240 WLAN_BACK_INITIATOR = 1, 1329 WLAN_BACK_INITIATOR = 1,
1241 WLAN_BACK_TIMER = 2,
1242}; 1330};
1243 1331
1244/* SA Query action */ 1332/* SA Query action */