forked from openwrt/openwrt
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
mac80211: backport AP mode TWT support
Required for an upcoming mt76 update Signed-off-by: Felix Fietkau <nbd@nbd.name>
- Loading branch information
Showing
3 changed files
with
693 additions
and
1 deletion.
There are no files selected for viewing
112 changes: 112 additions & 0 deletions
112
package/kernel/mac80211/patches/subsys/389-ieee80211-add-TWT-element-definitions.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |
Oops, something went wrong.