mac80211: Update to version 5.11.22-1
[openwrt/staging/mkresin.git] / package / kernel / mac80211 / patches / subsys / 389-ieee80211-add-TWT-element-definitions.patch
1 From: Lorenzo Bianconi <lorenzo@kernel.org>
2 Date: Mon, 23 Aug 2021 20:02:38 +0200
3 Subject: [PATCH] ieee80211: add TWT element definitions
4
5 Introduce TWT definitions and TWT Information element structure
6 in ieee80211.h
7
8 Tested-by: Peter Chiu <chui-hao.chiu@mediatek.com>
9 Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
10 Link: https://lore.kernel.org/r/71d8b581fe4b5abc5b92f8d77ac2de3e2f7591b6.1629741512.git.lorenzo@kernel.org
11 Signed-off-by: Johannes Berg <johannes.berg@intel.com>
12 ---
13
14 --- a/include/linux/ieee80211.h
15 +++ b/include/linux/ieee80211.h
16 @@ -1088,6 +1088,48 @@ struct ieee80211_ext {
17 } u;
18 } __packed __aligned(2);
19
20 +#define IEEE80211_TWT_CONTROL_NDP BIT(0)
21 +#define IEEE80211_TWT_CONTROL_RESP_MODE BIT(1)
22 +#define IEEE80211_TWT_CONTROL_NEG_TYPE_BROADCAST BIT(3)
23 +#define IEEE80211_TWT_CONTROL_RX_DISABLED BIT(4)
24 +#define IEEE80211_TWT_CONTROL_WAKE_DUR_UNIT BIT(5)
25 +
26 +#define IEEE80211_TWT_REQTYPE_REQUEST BIT(0)
27 +#define IEEE80211_TWT_REQTYPE_SETUP_CMD GENMASK(3, 1)
28 +#define IEEE80211_TWT_REQTYPE_TRIGGER BIT(4)
29 +#define IEEE80211_TWT_REQTYPE_IMPLICIT BIT(5)
30 +#define IEEE80211_TWT_REQTYPE_FLOWTYPE BIT(6)
31 +#define IEEE80211_TWT_REQTYPE_FLOWID GENMASK(9, 7)
32 +#define IEEE80211_TWT_REQTYPE_WAKE_INT_EXP GENMASK(14, 10)
33 +#define IEEE80211_TWT_REQTYPE_PROTECTION BIT(15)
34 +
35 +enum ieee80211_twt_setup_cmd {
36 + TWT_SETUP_CMD_REQUEST,
37 + TWT_SETUP_CMD_SUGGEST,
38 + TWT_SETUP_CMD_DEMAND,
39 + TWT_SETUP_CMD_GROUPING,
40 + TWT_SETUP_CMD_ACCEPT,
41 + TWT_SETUP_CMD_ALTERNATE,
42 + TWT_SETUP_CMD_DICTATE,
43 + TWT_SETUP_CMD_REJECT,
44 +};
45 +
46 +struct ieee80211_twt_params {
47 + __le16 req_type;
48 + __le64 twt;
49 + u8 min_twt_dur;
50 + __le16 mantissa;
51 + u8 channel;
52 +} __packed;
53 +
54 +struct ieee80211_twt_setup {
55 + u8 dialog_token;
56 + u8 element_id;
57 + u8 length;
58 + u8 control;
59 + u8 params[];
60 +} __packed;
61 +
62 struct ieee80211_mgmt {
63 __le16 frame_control;
64 __le16 duration;
65 @@ -1252,6 +1294,10 @@ struct ieee80211_mgmt {
66 __le16 toa_error;
67 u8 variable[0];
68 } __packed ftm;
69 + struct {
70 + u8 action_code;
71 + u8 variable[];
72 + } __packed s1g;
73 } u;
74 } __packed action;
75 } u;
76 @@ -2881,6 +2927,7 @@ enum ieee80211_eid {
77 WLAN_EID_AID_RESPONSE = 211,
78 WLAN_EID_S1G_BCN_COMPAT = 213,
79 WLAN_EID_S1G_SHORT_BCN_INTERVAL = 214,
80 + WLAN_EID_S1G_TWT = 216,
81 WLAN_EID_S1G_CAPABILITIES = 217,
82 WLAN_EID_VENDOR_SPECIFIC = 221,
83 WLAN_EID_QOS_PARAMETER = 222,
84 @@ -2949,6 +2996,7 @@ enum ieee80211_category {
85 WLAN_CATEGORY_FST = 18,
86 WLAN_CATEGORY_UNPROT_DMG = 20,
87 WLAN_CATEGORY_VHT = 21,
88 + WLAN_CATEGORY_S1G = 22,
89 WLAN_CATEGORY_VENDOR_SPECIFIC_PROTECTED = 126,
90 WLAN_CATEGORY_VENDOR_SPECIFIC = 127,
91 };
92 @@ -3022,6 +3070,20 @@ enum ieee80211_key_len {
93 WLAN_KEY_LEN_BIP_GMAC_256 = 32,
94 };
95
96 +enum ieee80211_s1g_actioncode {
97 + WLAN_S1G_AID_SWITCH_REQUEST,
98 + WLAN_S1G_AID_SWITCH_RESPONSE,
99 + WLAN_S1G_SYNC_CONTROL,
100 + WLAN_S1G_STA_INFO_ANNOUNCE,
101 + WLAN_S1G_EDCA_PARAM_SET,
102 + WLAN_S1G_EL_OPERATION,
103 + WLAN_S1G_TWT_SETUP,
104 + WLAN_S1G_TWT_TEARDOWN,
105 + WLAN_S1G_SECT_GROUP_ID_LIST,
106 + WLAN_S1G_SECT_ID_FEEDBACK,
107 + WLAN_S1G_TWT_INFORMATION = 11,
108 +};
109 +
110 #define IEEE80211_WEP_IV_LEN 4
111 #define IEEE80211_WEP_ICV_LEN 4
112 #define IEEE80211_CCMP_HDR_LEN 8