wifi: ieee80211: define some UHR link reconfiguration frame types

Define some values needed for UHR link reconfiguration frames,
in particular to prepare for UHR mode change request/handling.

Link: https://patch.msgid.link/20260529102644.03029bae6447.If22b0c1e10d9db712dca408a420469b3d385b4ea@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
Johannes Berg 2026-05-29 10:24:54 +02:00
parent b3d5193305
commit 50aa66ac01
2 changed files with 68 additions and 0 deletions

View File

@ -8,6 +8,7 @@
#define LINUX_IEEE80211_UHR_H
#include <linux/types.h>
#include <linux/bitfield.h>
#include <linux/if_ether.h>
#define IEEE80211_UHR_OPER_PARAMS_DPS_ENA 0x0001
@ -463,4 +464,54 @@ struct ieee80211_smd_info {
__le16 timeout;
} __packed;
enum ieee80211_protected_uhr_action {
IEEE80211_PROTECTED_UHR_ACTION_LINK_RECONFIG_REQUEST = 0,
IEEE80211_PROTECTED_UHR_ACTION_LINK_RECONFIG_RESPONSE = 1,
IEEE80211_PROTECTED_UHR_ACTION_LINK_RECONFIG_NOTIFY = 2,
};
enum ieee80211_uhr_link_reconfig_request_type {
IEEE80211_UHR_LINK_RECONFIG_REQUEST_ST_PREP = 0,
IEEE80211_UHR_LINK_RECONFIG_REQUEST_ST_EXEC = 1,
IEEE80211_UHR_LINK_RECONFIG_REQUEST_OMP_REQUEST = 3,
};
enum ieee80211_uhr_link_reconfig_response_type {
IEEE80211_UHR_LINK_RECONFIG_RESPONSE_ST_PREP = 0,
IEEE80211_UHR_LINK_RECONFIG_RESPONSE_ST_EXEC = 1,
};
enum ieee80211_uhr_link_reconfig_notify_type {
IEEE80211_UHR_LINK_RECONFIG_NOTIFY_DL_DRAINED = 2,
IEEE80211_UHR_LINK_RECONFIG_NOTIFY_OMP_RESPONSE = 3,
};
enum ieee80211_uhr_mode_change_control {
IEEE80211_UHR_MODE_CHANGE_CONTROL_MODE_ID = 0x003f,
IEEE80211_UHR_MODE_CHANGE_CONTROL_MODE_ENABLE = 0x0040,
IEEE80211_UHR_MODE_CHANGE_CONTROL_MODE_UPDATE = 0x0080,
IEEE80211_UHR_MODE_CHANGE_CONTROL_MODE_LENGTH = 0x0f00,
IEEE80211_UHR_MODE_CHANGE_CONTROL_MODE_SPECIFIC = 0xf000,
};
enum ieee80211_uhr_mode_change_mode_id {
IEEE80211_UHR_MODE_CHANGE_MODE_ID_DPS = 0,
IEEE80211_UHR_MODE_CHANGE_MODE_ID_NPCA = 1,
IEEE80211_UHR_MODE_CHANGE_MODE_ID_DUO = 2,
IEEE80211_UHR_MODE_CHANGE_MODE_ID_DSO = 3,
IEEE80211_UHR_MODE_CHANGE_MODE_ID_P_EDCA = 4,
IEEE80211_UHR_MODE_CHANGE_MODE_ID_ELR_RX = 5,
IEEE80211_UHR_MODE_CHANGE_MODE_ID_AOM = 6,
IEEE80211_UHR_MODE_CHANGE_MODE_ID_LLI = 7,
IEEE80211_UHR_MODE_CHANGE_MODE_ID_CO_BF = 8,
IEEE80211_UHR_MODE_CHANGE_MODE_ID_CO_SR = 9,
IEEE80211_UHR_MODE_CHANGE_MODE_ID_EMLSR = 10,
IEEE80211_UHR_MODE_CHANGE_MODE_ID_DBE = 11,
};
struct ieee80211_uhr_mode_change_tuple {
__le16 control;
u8 variable[];
} __packed;
#endif /* LINUX_IEEE80211_UHR_H */

View File

@ -1174,6 +1174,22 @@ struct ieee80211_mgmt {
u8 control;
u8 variable[];
} __packed eml_omn;
struct {
u8 dialog_token;
u8 type;
u8 variable[];
} __packed uhr_link_reconf_req;
struct {
u8 dialog_token;
u8 type;
u8 count;
u8 variable[];
} __packed uhr_link_reconf_resp;
struct {
u8 dialog_token;
u8 type;
u8 variable[];
} __packed uhr_link_reconf_notif;
};
} __packed action;
DECLARE_FLEX_ARRAY(u8, body); /* Generic frame body */
@ -1837,6 +1853,7 @@ enum ieee80211_category {
WLAN_CATEGORY_VHT = 21,
WLAN_CATEGORY_S1G = 22,
WLAN_CATEGORY_PROTECTED_EHT = 37,
WLAN_CATEGORY_PROTECTED_UHR = 43,
WLAN_CATEGORY_VENDOR_SPECIFIC_PROTECTED = 126,
WLAN_CATEGORY_VENDOR_SPECIFIC = 127,
};