mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-28 01:28:59 +00:00
2007d4e208
Required for an upcoming mt76 update Signed-off-by: Felix Fietkau <nbd@nbd.name> (cherry-picked from commit978e822db3
) (cherry-picked from commitaf9d31aacc
)
113 lines
3.1 KiB
Diff
113 lines
3.1 KiB
Diff
From: Lorenzo Bianconi <lorenzo@kernel.org>
|
|
Date: Mon, 23 Aug 2021 20:02:38 +0200
|
|
Subject: [PATCH] ieee80211: add TWT element definitions
|
|
|
|
Introduce TWT definitions and TWT Information element structure
|
|
in ieee80211.h
|
|
|
|
Tested-by: Peter Chiu <chui-hao.chiu@mediatek.com>
|
|
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
|
|
Link: https://lore.kernel.org/r/71d8b581fe4b5abc5b92f8d77ac2de3e2f7591b6.1629741512.git.lorenzo@kernel.org
|
|
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
|
---
|
|
|
|
--- a/include/linux/ieee80211.h
|
|
+++ b/include/linux/ieee80211.h
|
|
@@ -1088,6 +1088,48 @@ struct ieee80211_ext {
|
|
} u;
|
|
} __packed __aligned(2);
|
|
|
|
+#define IEEE80211_TWT_CONTROL_NDP BIT(0)
|
|
+#define IEEE80211_TWT_CONTROL_RESP_MODE BIT(1)
|
|
+#define IEEE80211_TWT_CONTROL_NEG_TYPE_BROADCAST BIT(3)
|
|
+#define IEEE80211_TWT_CONTROL_RX_DISABLED BIT(4)
|
|
+#define IEEE80211_TWT_CONTROL_WAKE_DUR_UNIT BIT(5)
|
|
+
|
|
+#define IEEE80211_TWT_REQTYPE_REQUEST BIT(0)
|
|
+#define IEEE80211_TWT_REQTYPE_SETUP_CMD GENMASK(3, 1)
|
|
+#define IEEE80211_TWT_REQTYPE_TRIGGER BIT(4)
|
|
+#define IEEE80211_TWT_REQTYPE_IMPLICIT BIT(5)
|
|
+#define IEEE80211_TWT_REQTYPE_FLOWTYPE BIT(6)
|
|
+#define IEEE80211_TWT_REQTYPE_FLOWID GENMASK(9, 7)
|
|
+#define IEEE80211_TWT_REQTYPE_WAKE_INT_EXP GENMASK(14, 10)
|
|
+#define IEEE80211_TWT_REQTYPE_PROTECTION BIT(15)
|
|
+
|
|
+enum ieee80211_twt_setup_cmd {
|
|
+ TWT_SETUP_CMD_REQUEST,
|
|
+ TWT_SETUP_CMD_SUGGEST,
|
|
+ TWT_SETUP_CMD_DEMAND,
|
|
+ TWT_SETUP_CMD_GROUPING,
|
|
+ TWT_SETUP_CMD_ACCEPT,
|
|
+ TWT_SETUP_CMD_ALTERNATE,
|
|
+ TWT_SETUP_CMD_DICTATE,
|
|
+ TWT_SETUP_CMD_REJECT,
|
|
+};
|
|
+
|
|
+struct ieee80211_twt_params {
|
|
+ __le16 req_type;
|
|
+ __le64 twt;
|
|
+ u8 min_twt_dur;
|
|
+ __le16 mantissa;
|
|
+ u8 channel;
|
|
+} __packed;
|
|
+
|
|
+struct ieee80211_twt_setup {
|
|
+ u8 dialog_token;
|
|
+ u8 element_id;
|
|
+ u8 length;
|
|
+ u8 control;
|
|
+ u8 params[];
|
|
+} __packed;
|
|
+
|
|
struct ieee80211_mgmt {
|
|
__le16 frame_control;
|
|
__le16 duration;
|
|
@@ -1252,6 +1294,10 @@ struct ieee80211_mgmt {
|
|
__le16 toa_error;
|
|
u8 variable[0];
|
|
} __packed ftm;
|
|
+ struct {
|
|
+ u8 action_code;
|
|
+ u8 variable[];
|
|
+ } __packed s1g;
|
|
} u;
|
|
} __packed action;
|
|
} u;
|
|
@@ -2880,6 +2926,7 @@ enum ieee80211_eid {
|
|
WLAN_EID_AID_RESPONSE = 211,
|
|
WLAN_EID_S1G_BCN_COMPAT = 213,
|
|
WLAN_EID_S1G_SHORT_BCN_INTERVAL = 214,
|
|
+ WLAN_EID_S1G_TWT = 216,
|
|
WLAN_EID_S1G_CAPABILITIES = 217,
|
|
WLAN_EID_VENDOR_SPECIFIC = 221,
|
|
WLAN_EID_QOS_PARAMETER = 222,
|
|
@@ -2948,6 +2995,7 @@ enum ieee80211_category {
|
|
WLAN_CATEGORY_FST = 18,
|
|
WLAN_CATEGORY_UNPROT_DMG = 20,
|
|
WLAN_CATEGORY_VHT = 21,
|
|
+ WLAN_CATEGORY_S1G = 22,
|
|
WLAN_CATEGORY_VENDOR_SPECIFIC_PROTECTED = 126,
|
|
WLAN_CATEGORY_VENDOR_SPECIFIC = 127,
|
|
};
|
|
@@ -3021,6 +3069,20 @@ enum ieee80211_key_len {
|
|
WLAN_KEY_LEN_BIP_GMAC_256 = 32,
|
|
};
|
|
|
|
+enum ieee80211_s1g_actioncode {
|
|
+ WLAN_S1G_AID_SWITCH_REQUEST,
|
|
+ WLAN_S1G_AID_SWITCH_RESPONSE,
|
|
+ WLAN_S1G_SYNC_CONTROL,
|
|
+ WLAN_S1G_STA_INFO_ANNOUNCE,
|
|
+ WLAN_S1G_EDCA_PARAM_SET,
|
|
+ WLAN_S1G_EL_OPERATION,
|
|
+ WLAN_S1G_TWT_SETUP,
|
|
+ WLAN_S1G_TWT_TEARDOWN,
|
|
+ WLAN_S1G_SECT_GROUP_ID_LIST,
|
|
+ WLAN_S1G_SECT_ID_FEEDBACK,
|
|
+ WLAN_S1G_TWT_INFORMATION = 11,
|
|
+};
|
|
+
|
|
#define IEEE80211_WEP_IV_LEN 4
|
|
#define IEEE80211_WEP_ICV_LEN 4
|
|
#define IEEE80211_CCMP_HDR_LEN 8
|