aboutsummaryrefslogtreecommitdiffstats
path: root/package/kernel/mac80211/patches/subsys/389-ieee80211-add-TWT-element-definitions.patch
diff options
context:
space:
mode:
Diffstat (limited to 'package/kernel/mac80211/patches/subsys/389-ieee80211-add-TWT-element-definitions.patch')
-rw-r--r--package/kernel/mac80211/patches/subsys/389-ieee80211-add-TWT-element-definitions.patch112
1 files changed, 112 insertions, 0 deletions
diff --git a/package/kernel/mac80211/patches/subsys/389-ieee80211-add-TWT-element-definitions.patch b/package/kernel/mac80211/patches/subsys/389-ieee80211-add-TWT-element-definitions.patch
new file mode 100644
index 0000000000..369619938e
--- /dev/null
+++ b/package/kernel/mac80211/patches/subsys/389-ieee80211-add-TWT-element-definitions.patch
@@ -0,0 +1,112 @@
+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