Loading fw/wmi_tlv_defs.h +38 −10 Original line number Diff line number Diff line /* * Copyright (c) 2010-2020 The Linux Foundation. All rights reserved. * Copyright (c) 2010-2021 The Linux Foundation. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * Loading Loading @@ -1133,6 +1133,8 @@ typedef enum { WMITLV_TAG_STRUC_wmi_ctrl_path_twt_stats_struct, WMITLV_TAG_STRUC_wmi_ctrl_path_calibration_stats_struct, WMITLV_TAG_STRUC_wmi_twt_notify_event_fixed_param, WMITLV_TAG_STRUC_wmi_mlo_link_set_active_cmd_fixed_param, WMITLV_TAG_STRUC_wmi_mlo_link_set_active_resp_event_fixed_param, } WMITLV_TAG_ID; /* Loading Loading @@ -1589,6 +1591,7 @@ typedef enum { OP(WMI_VDEV_SET_TPC_POWER_CMDID) \ OP(WMI_VDEV_TID_LATENCY_CONFIG_CMDID) \ OP(WMI_PEER_TID_LATENCY_CONFIG_CMDID) \ OP(WMI_MLO_LINK_SET_ACTIVE_CMDID) \ /* add new CMD_LIST elements above this line */ Loading Loading @@ -1850,6 +1853,7 @@ typedef enum { OP(WMI_TWT_NUDGE_DIALOG_COMPLETE_EVENTID) \ OP(WMI_REG_CHAN_LIST_CC_EXT_EVENTID) \ OP(WMI_TWT_NOTIFY_EVENTID) \ OP(WMI_MLO_LINK_SET_ACTIVE_RESP_EVENTID) \ /* add new EVT_LIST elements above this line */ Loading @@ -1867,7 +1871,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_INIT_CMDID); /* Peer create Cmd */ #define WMITLV_TABLE_WMI_PEER_CREATE_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_peer_create_cmd_fixed_param, wmi_peer_create_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_peer_create_cmd_fixed_param, wmi_peer_create_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_peer_create_mlo_params, mlo_params, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_PEER_CREATE_CMDID); Loading Loading @@ -2226,7 +2231,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_SET_WMM_PARAMS_CMDID); #define WMITLV_TABLE_WMI_VDEV_START_REQUEST_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_vdev_start_request_cmd_fixed_param, wmi_vdev_start_request_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_channel, wmi_channel, chan, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_p2p_noa_descriptor, noa_descriptors, WMITLV_SIZE_VAR) WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_p2p_noa_descriptor, noa_descriptors, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_vdev_start_mlo_params, mlo_params, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_START_REQUEST_CMDID); Loading Loading @@ -2319,7 +2325,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_IPSEC_NATKEEPALIVE_FILTER_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, peer_legacy_rates, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, peer_ht_rates, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_vht_rate_set, wmi_vht_rate_set, peer_vht_rates, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_he_rate_set, peer_he_rates, WMITLV_SIZE_VAR) WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_he_rate_set, peer_he_rates, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_peer_assoc_mlo_params, mlo_params, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_PEER_ASSOC_CMDID); Loading Loading @@ -2465,7 +2472,9 @@ WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_SPECTRAL_SCAN_ENABLE_CMDID); /* Request stats Cmd */ #define WMITLV_TABLE_WMI_REQUEST_STATS_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_request_stats_cmd_fixed_param, wmi_request_stats_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_inst_rssi_stats_params, inst_rssi_params, WMITLV_SIZE_VAR) WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_inst_rssi_stats_params, inst_rssi_params, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, vdev_id_bitmap, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_FIXED_STRUC, wmi_mac_addr, mld_macaddr, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_REQUEST_STATS_CMDID); Loading Loading @@ -2497,13 +2506,17 @@ WMITLV_CREATE_PARAM_STRUC(WMI_DIAG_EVENT_LOG_CONFIG_CMDID); /* Set config params */ #define WMITLV_TABLE_WMI_START_LINK_STATS_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_start_link_stats_cmd_fixed_param, wmi_start_link_stats_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_start_link_stats_cmd_fixed_param, wmi_start_link_stats_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, vdev_id_bitmap, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_FIXED_STRUC, wmi_mac_addr, mld_macaddr, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_START_LINK_STATS_CMDID); /* Request to clear link stats */ #define WMITLV_TABLE_WMI_CLEAR_LINK_STATS_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_clear_link_stats_cmd_fixed_param, wmi_clear_link_stats_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_clear_link_stats_cmd_fixed_param, wmi_clear_link_stats_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, vdev_id_bitmap, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_FIXED_STRUC, wmi_mac_addr, mld_macaddr, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_CLEAR_LINK_STATS_CMDID); Loading Loading @@ -3019,7 +3032,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_SET_CUSTOM_AGGR_SIZE_CMDID); /* Vdev create Cmd */ #define WMITLV_TABLE_WMI_VDEV_CREATE_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_vdev_create_cmd_fixed_param, wmi_vdev_create_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_vdev_txrx_streams, cfg_txrx_streams, WMITLV_SIZE_VAR) WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_vdev_txrx_streams, cfg_txrx_streams, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_vdev_create_mlo_params, mlo_params, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_CREATE_CMDID); Loading Loading @@ -3507,7 +3521,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PEER_GET_ESTIMATED_LINKSPEED_CMDID); /* ext stats Request */ #define WMITLV_TABLE_WMI_REQUEST_STATS_EXT_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_req_stats_ext_cmd_fixed_param, wmi_req_stats_ext_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, data, WMITLV_SIZE_VAR) WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, data, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, vdev_id_bitmap, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_REQUEST_STATS_EXT_CMDID); /* 2.4Ghz HT40 OBSS scan enable */ Loading Loading @@ -4572,6 +4587,13 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_GET_TPC_STATS_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_enable_duration_based_tx_mode_selection_cmd_fixed_param, wmi_pdev_enable_duration_based_tx_mode_selection_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_ENABLE_DURATION_BASED_TX_MODE_SELECTION_CMDID); /* MLO set link for active or inactive Cmd */ #define WMITLV_TABLE_WMI_MLO_LINK_SET_ACTIVE_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mlo_link_set_active_cmd_fixed_param, wmi_mlo_link_set_active_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_mlo_set_active_link_number_param, link_number_param, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, vdev_id_bitmap, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_MLO_LINK_SET_ACTIVE_CMDID); /************************** TLV definitions of WMI events *******************************/ Loading Loading @@ -6172,10 +6194,16 @@ WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_BCN_LATENCY_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_twt_session_stats_info, twt_sessions, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_TWT_SESSION_STATS_EVENTID); /* TWT Stats session event */ #define WMITLV_TABLE_WMI_MLO_LINK_SET_ACTIVE_RESP_EVENTID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mlo_link_set_active_resp_event_fixed_param, wmi_mlo_link_set_active_resp_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, force_active_vdev_bitmap, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, force_inactive_vdev_bitmap, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_MLO_LINK_SET_ACTIVE_RESP_EVENTID); #ifdef __cplusplus } #endif #endif /*_WMI_TLV_DEFS_H_*/ fw/wmi_unified.h +183 −5 Original line number Diff line number Diff line Loading @@ -267,6 +267,7 @@ typedef enum { WMI_GRP_ATM, /* 0x45 ATM (Air Time Management group) */ WMI_GRP_VENDOR, /* 0x46 vendor specific group */ WMI_GRP_LATENCY, /* 0x47 TID/AC level latency config */ WMI_GRP_MLO, /* 0x48 MLO(Multiple Link Operation) management */ } WMI_GRP_ID; #define WMI_CMD_GRP_START_ID(grp_id) (((grp_id) << 12) | 0x1) Loading Loading @@ -1359,6 +1360,10 @@ typedef enum { WMI_VDEV_TID_LATENCY_CONFIG_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_LATENCY), /** TID Latency Request command */ WMI_PEER_TID_LATENCY_CONFIG_CMDID, /** WMI commands specific to MLO **/ /** MLO link active / inactive Request command */ WMI_MLO_LINK_SET_ACTIVE_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_MLO), } WMI_CMD_ID; typedef enum { Loading Loading @@ -2063,6 +2068,10 @@ typedef enum { WMI_VENDOR_VDEV_EVENTID, WMI_VENDOR_PEER_EVENTID, /** Further vendor event IDs can be added below **/ /** WMI event specific to MLO **/ /** MLO link active / inactive response event */ WMI_MLO_LINK_SET_ACTIVE_RESP_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_MLO), } WMI_EVT_ID; /* defines for OEM message sub-types */ Loading Loading @@ -8174,6 +8183,14 @@ typedef struct { /* * This TLV is (optionally) followed by other TLVs: * wmi_inst_rssi_stats_params inst_rssi_params; * A_UINT32 vdev_id_bitmap[]; * This array is present and non-zero length in MLO case, stats should * only be provided from the vdev_id_bitmap in the bitmap when it is * present. * wmi_mac_addr mld_macaddr[]; * This array is present and non-zero length in MLO case, stats should * only be provided from the peers with the MLD MAC addresses specified * in the array. */ } wmi_request_stats_cmd_fixed_param; Loading Loading @@ -8381,6 +8398,16 @@ typedef struct { A_UINT32 request_id; /** peer MAC address */ wmi_mac_addr peer_macaddr; /* * This TLV is (optionally) followed by other TLVs: * A_UINT32 vdev_id_bitmap[]; * This array is present and non-zero length in MLO case, stats should only * be provided from the vdev_id_bitmap in the bitmap when it is present. * wmi_mac_addr mld_macaddr[]; * This array is present and non-zero length in MLO case, stats should only * be provided from the peers with the MLD MAC addresses specified * in the array. */ } wmi_request_link_stats_cmd_fixed_param; typedef struct { Loading @@ -8397,6 +8424,16 @@ typedef struct { A_UINT32 get_sta_stats_id; /** pdev_id for identifying the MAC. See macros starting with WMI_PDEV_ID_ for values. In non-DBDC case host should set it to 0. */ A_UINT32 pdev_id; /* * This TLV is (optionally) followed by other TLVs: * A_UINT32 vdev_id_bitmap[]; * This array is present and non-zero length in MLO case, stats should only * be provided from the vdev_id_bitmap in the bitmap when it is present. * wmi_mac_addr mld_macaddr[]; * This array is present and non-zero length in MLO case, stats should only * be provided from the peers with the MLD MAC addresses specified * in the array. */ } wmi_request_unified_ll_get_sta_cmd_fixed_param; #define WLM_STATS_REQ_LINK 0x00000001 Loading Loading @@ -10221,6 +10258,9 @@ typedef struct { A_UINT32 vdevid_trans; /* This TLV is followed by another TLV of array of structures * wmi_vdev_txrx_streams cfg_txrx_streams[]; * wmi_vdev_create_mlo_params mlo_params[0,1]; * optional TLV, only present for MLO vdev; * if the vdev is not MLO the array length should be 0. */ } wmi_vdev_create_cmd_fixed_param; Loading @@ -10243,6 +10283,45 @@ typedef struct { A_UINT32 start_time; /** 32 bit tsf time when in starts */ } wmi_p2p_noa_descriptor; /* * mlo_flags sub-fields: * bits 0 - mlo enable flag; * bits 1 - assoc link flag; * bits 2 - primary_umac flag; */ #define WMI_MLO_FLAGS_GET_ENABLED(mlo_flags) WMI_GET_BITS(mlo_flags, 0, 1) #define WMI_MLO_FLAGS_SET_ENABLED(mlo_flags, value) WMI_SET_BITS(mlo_flags, 0, 1, value) #define WMI_MLO_FLAGS_GET_ASSOC_LINK(mlo_flags) WMI_GET_BITS(mlo_flags, 1, 1) #define WMI_MLO_FLAGS_SET_ASSOC_LINK(mlo_flags, value) WMI_SET_BITS(mlo_flags, 1, 1, value) #define WMI_MLO_FLAGS_GET_PRIMARY_UMAC(mlo_flags) WMI_GET_BITS(mlo_flags, 2, 1) #define WMI_MLO_FLAGS_SET_PRIMARY_UMAC(mlo_flags, value) WMI_SET_BITS(mlo_flags, 2, 1, value) /* this structure used for pass mlo flags*/ typedef struct { union { struct { A_UINT32 mlo_enabled:1, /* indicate is MLO enabled */ mlo_assoc_link:1, /* indicate is the link used to initialize the association of mlo connection */ mlo_primary_umac:1, /* indicate is the link on primary UMAC, WIN only flag */ unused: 29; }; A_UINT32 mlo_flags; }; } wmi_mlo_flags; /* this TLV structure used for pass mlo parameters on vdev create*/ typedef struct { A_UINT32 tlv_header; /** TLV tag and len; */ /** MLD MAC address */ wmi_mac_addr mld_macaddr; } wmi_vdev_create_mlo_params; /* this TLV structure used for pass mlo parameters on vdev start*/ typedef struct { A_UINT32 tlv_header; /** TLV tag and len; */ wmi_mlo_flags mlo_flags; /*only mlo enable and assoc link flag need by vdev start*/ } wmi_vdev_start_mlo_params; /** values for vdev_type */ #define WMI_VDEV_TYPE_AP 0x1 #define WMI_VDEV_TYPE_STA 0x2 Loading Loading @@ -11001,6 +11080,9 @@ typedef struct { /* The TLVs follows this structure: * wmi_channel chan; <-- WMI channel * wmi_p2p_noa_descriptor noa_descriptors[]; <-- actual p2p NOA descriptor from scan entry * wmi_vdev_start_mlo_params mlo_params[0,1]; <-- vdev start MLO parameters * optional TLV, only present for MLO vdevs, * If the vdev is non-MLO the array length should be 0. */ } wmi_vdev_start_request_cmd_fixed_param; Loading Loading @@ -13451,6 +13533,12 @@ enum wmi_peer_type { WMI_PEER_TYPE_ROAMOFFLOAD_TEMP = 128, /* Temporarily created during offload roam */ }; /* this TLV structure used for providing mlo parameters on peer create */ typedef struct { A_UINT32 tlv_header; /** TLV tag and len */ wmi_mlo_flags mlo_flags; /* only mlo enable flag need by STA mode peer create */ } wmi_peer_create_mlo_params; typedef struct { A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_peer_create_cmd_fixed_param */ /** unique id identifying the VDEV, generated by the caller */ Loading @@ -13459,6 +13547,12 @@ typedef struct { wmi_mac_addr peer_macaddr; /** peer type: see enum values above */ A_UINT32 peer_type; /* The TLVs follows this structure: * wmi_peer_create_mlo_params mlo_params[]; <-- MLO flags on peer_create * Optional TLV, only present for MLO peers. * If the peer is non-MLO, the array length should be 0. * Only mlo_enable flag required by MCC to decide MAC address to be used. */ } wmi_peer_create_cmd_fixed_param; typedef struct { Loading Loading @@ -14062,6 +14156,15 @@ enum WMI_PEER_STA_TYPE { #define WMI_PEER_ASSOC_GET_BSS_MAX_IDLE_PERIOD(_dword) \ WMI_GET_BITS(_dword, WMI_PEER_ASSOC_BSS_MAX_IDLE_PERIOD_BITPOS, 16) /* This TLV structure used to pass mlo Parameters on peer assoc, only apply for mlo-peers */ typedef struct { A_UINT32 tlv_header; /** TLV tag and len; */ /** MLO flags */ wmi_mlo_flags mlo_flags; /** MLD MAC address */ wmi_mac_addr vdev_macaddr; } wmi_peer_assoc_mlo_params; typedef struct { A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_peer_assoc_complete_cmd_fixed_param */ /** peer MAC address */ Loading Loading @@ -14186,6 +14289,9 @@ typedef struct { * A_UINT8 peer_ht_rates[]; * wmi_vht_rate_set peer_vht_rates; <-- VHT capabilties of the peer * WMI_he_rate_set_peer_he_rates; <-- HE capabilities of the peer * wmi_peer_assoc_mlo_params mlo_params[0,1]; <-- MLO parameters opt. TLV * Only present for MLO peers. * For non-MLO peers the array length should be 0. */ } wmi_peer_assoc_complete_cmd_fixed_param; Loading Loading @@ -21408,6 +21514,10 @@ typedef struct { * from application/service to firmware where Host drv is pass through . * Following this structure is the TLV: * A_UINT8 data[]; <-- length in byte given by field data_len. * A_UINT32 vdev_id_bitmap[]; * This array is present and non-zero length in MLO case, stats should * only be provided from the vdev_id_bitmap in the bitmap when it is * present. */ } wmi_req_stats_ext_cmd_fixed_param; Loading Loading @@ -28114,6 +28224,7 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command) WMI_RETURN_STRING(WMI_VDEV_SET_TPC_POWER_CMDID); WMI_RETURN_STRING(WMI_VDEV_TID_LATENCY_CONFIG_CMDID); WMI_RETURN_STRING(WMI_PEER_TID_LATENCY_CONFIG_CMDID); WMI_RETURN_STRING(WMI_MLO_LINK_SET_ACTIVE_CMDID); } return "Invalid WMI cmd"; Loading Loading @@ -33433,6 +33544,73 @@ typedef struct wmi_peer_vendor_cmd */ } wmi_peer_vendor_cmd_fixed_param; typedef enum { WMI_MLO_LINK_FORCE_ACTIVE = 1, /* Force specific links active */ WMI_MLO_LINK_FORCE_INACTIVE = 2, /* Force specific links inactive */ WMI_MLO_LINK_FORCE_ACTIVE_LINK_NUM = 3, /* Force active a number of links, firmware to decide which links to inactive */ WMI_MLO_LINK_FORCE_INACTIVE_LINK_NUM = 4, /* Force inactive a number of links, firmware to decide which links to inactive */ WMI_MLO_LINK_NO_FORCE = 5, /* Cancel the force operation of specific links, allow firmware to decide */ } WMI_MLO_LINK_FORCE_MODE; typedef enum { WMI_MLO_LINK_FORCE_REASON_NEW_CONNECT = 1, /* Set force specific links because of new connection */ WMI_MLO_LINK_FORCE_REASON_NEW_DISCONNECT = 2, /* Set force specific links because of new dis-connection */ } WMI_MLO_LINK_FORCE_REASON; typedef struct wmi_mlo_link_set_active_cmd { /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_mlo_link_set_active_cmd_fixed_param; */ A_UINT32 tlv_header; /** enum WMI_MLO_LINK_FORCE_MODE */ A_UINT32 force_mode; /** reason of force link active / inactive, enum WMI_MLO_LINK_FORCE_REASON */ A_UINT32 reason; /* The TLVs follows this structure: * wmi_mlo_set_active_link_number_param link_number_param[]; * Link number parameters, optional TLV. * Present when force type is WMI_MLO_LINK_FORCE_ACTIVE_LINK_NUM or * WMI_MLO_LINK_FORCE_INACTIVE_LINK_NUM. * In other cases the length of array should be 0. * A_UINT32 vdev_id_bitmap[]; * Optional TLV, present when force type is WMI_MLO_LINK_FORCE_ACTIVE * or WMI_MLO_LINK_FORCE_INACTIVE or WMI_MLO_LINK_NO_FORCE, * to specific the vdevs to configure. * In other cases the length of the array should be 0. */ } wmi_mlo_link_set_active_cmd_fixed_param; typedef struct wmi_mlo_set_active_link_number_param { /** TLV tag and len; */ A_UINT32 tlv_header; /** number of link to be config */ A_UINT32 num_of_link; /** VDEV type, see values for vdev_type (WMI_VDEV_TYPE_AP,WMI_VDEV_TYPE_STA, * WMI_VDEV_TYPE_IBSS, WMI_VDEV_TYPE_MONITOR,WMI_VDEV_TYPE_NAN,WMI_VDEV_TYPE_NDI ...) */ A_UINT32 vdev_type; /** VDEV subtype, see values for vdev_subtype (WMI_UNIFIED_VDEV_SUBTYPE_P2P_DEVICE, * WMI_UNIFIED_VDEV_SUBTYPE_P2P_CLIENT, WMI_UNIFIED_VDEV_SUBTYPE_P2P_GO ...)*/ A_UINT32 vdev_subtype; /** home channel frequency in MHz of the vdev*/ A_UINT32 home_freq; } wmi_mlo_set_active_link_number_param; typedef struct wmi_mlo_link_set_active_resp_event { /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_mlo_link_set_active_resp_event_fixed_param; */ A_UINT32 tlv_header; /** Return status. 0 for success, non-zero otherwise */ A_UINT32 status; /* The TLVs follows this structure: * A_UINT32 force_active_vdev_bitmap[]; <-- current force active vdev. * A_UINT32 force_inactive_vdev_bitmap[]; <-- current force inactive vdevs */ } wmi_mlo_link_set_active_resp_event_fixed_param; /* ADD NEW DEFS HERE */ fw/wmi_version.h +1 −1 Original line number Diff line number Diff line Loading @@ -36,7 +36,7 @@ #define __WMI_VER_MINOR_ 0 /** WMI revision number has to be incremented when there is a * change that may or may not break compatibility. */ #define __WMI_REVISION_ 957 #define __WMI_REVISION_ 958 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work Loading Loading
fw/wmi_tlv_defs.h +38 −10 Original line number Diff line number Diff line /* * Copyright (c) 2010-2020 The Linux Foundation. All rights reserved. * Copyright (c) 2010-2021 The Linux Foundation. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * Loading Loading @@ -1133,6 +1133,8 @@ typedef enum { WMITLV_TAG_STRUC_wmi_ctrl_path_twt_stats_struct, WMITLV_TAG_STRUC_wmi_ctrl_path_calibration_stats_struct, WMITLV_TAG_STRUC_wmi_twt_notify_event_fixed_param, WMITLV_TAG_STRUC_wmi_mlo_link_set_active_cmd_fixed_param, WMITLV_TAG_STRUC_wmi_mlo_link_set_active_resp_event_fixed_param, } WMITLV_TAG_ID; /* Loading Loading @@ -1589,6 +1591,7 @@ typedef enum { OP(WMI_VDEV_SET_TPC_POWER_CMDID) \ OP(WMI_VDEV_TID_LATENCY_CONFIG_CMDID) \ OP(WMI_PEER_TID_LATENCY_CONFIG_CMDID) \ OP(WMI_MLO_LINK_SET_ACTIVE_CMDID) \ /* add new CMD_LIST elements above this line */ Loading Loading @@ -1850,6 +1853,7 @@ typedef enum { OP(WMI_TWT_NUDGE_DIALOG_COMPLETE_EVENTID) \ OP(WMI_REG_CHAN_LIST_CC_EXT_EVENTID) \ OP(WMI_TWT_NOTIFY_EVENTID) \ OP(WMI_MLO_LINK_SET_ACTIVE_RESP_EVENTID) \ /* add new EVT_LIST elements above this line */ Loading @@ -1867,7 +1871,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_INIT_CMDID); /* Peer create Cmd */ #define WMITLV_TABLE_WMI_PEER_CREATE_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_peer_create_cmd_fixed_param, wmi_peer_create_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_peer_create_cmd_fixed_param, wmi_peer_create_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_peer_create_mlo_params, mlo_params, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_PEER_CREATE_CMDID); Loading Loading @@ -2226,7 +2231,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_SET_WMM_PARAMS_CMDID); #define WMITLV_TABLE_WMI_VDEV_START_REQUEST_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_vdev_start_request_cmd_fixed_param, wmi_vdev_start_request_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_channel, wmi_channel, chan, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_p2p_noa_descriptor, noa_descriptors, WMITLV_SIZE_VAR) WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_p2p_noa_descriptor, noa_descriptors, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_vdev_start_mlo_params, mlo_params, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_START_REQUEST_CMDID); Loading Loading @@ -2319,7 +2325,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_IPSEC_NATKEEPALIVE_FILTER_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, peer_legacy_rates, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, peer_ht_rates, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_vht_rate_set, wmi_vht_rate_set, peer_vht_rates, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_he_rate_set, peer_he_rates, WMITLV_SIZE_VAR) WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_he_rate_set, peer_he_rates, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_peer_assoc_mlo_params, mlo_params, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_PEER_ASSOC_CMDID); Loading Loading @@ -2465,7 +2472,9 @@ WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_SPECTRAL_SCAN_ENABLE_CMDID); /* Request stats Cmd */ #define WMITLV_TABLE_WMI_REQUEST_STATS_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_request_stats_cmd_fixed_param, wmi_request_stats_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_inst_rssi_stats_params, inst_rssi_params, WMITLV_SIZE_VAR) WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_inst_rssi_stats_params, inst_rssi_params, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, vdev_id_bitmap, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_FIXED_STRUC, wmi_mac_addr, mld_macaddr, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_REQUEST_STATS_CMDID); Loading Loading @@ -2497,13 +2506,17 @@ WMITLV_CREATE_PARAM_STRUC(WMI_DIAG_EVENT_LOG_CONFIG_CMDID); /* Set config params */ #define WMITLV_TABLE_WMI_START_LINK_STATS_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_start_link_stats_cmd_fixed_param, wmi_start_link_stats_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_start_link_stats_cmd_fixed_param, wmi_start_link_stats_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, vdev_id_bitmap, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_FIXED_STRUC, wmi_mac_addr, mld_macaddr, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_START_LINK_STATS_CMDID); /* Request to clear link stats */ #define WMITLV_TABLE_WMI_CLEAR_LINK_STATS_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_clear_link_stats_cmd_fixed_param, wmi_clear_link_stats_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_clear_link_stats_cmd_fixed_param, wmi_clear_link_stats_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, vdev_id_bitmap, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_FIXED_STRUC, wmi_mac_addr, mld_macaddr, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_CLEAR_LINK_STATS_CMDID); Loading Loading @@ -3019,7 +3032,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_SET_CUSTOM_AGGR_SIZE_CMDID); /* Vdev create Cmd */ #define WMITLV_TABLE_WMI_VDEV_CREATE_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_vdev_create_cmd_fixed_param, wmi_vdev_create_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_vdev_txrx_streams, cfg_txrx_streams, WMITLV_SIZE_VAR) WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_vdev_txrx_streams, cfg_txrx_streams, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_vdev_create_mlo_params, mlo_params, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_CREATE_CMDID); Loading Loading @@ -3507,7 +3521,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PEER_GET_ESTIMATED_LINKSPEED_CMDID); /* ext stats Request */ #define WMITLV_TABLE_WMI_REQUEST_STATS_EXT_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_req_stats_ext_cmd_fixed_param, wmi_req_stats_ext_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, data, WMITLV_SIZE_VAR) WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, data, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, vdev_id_bitmap, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_REQUEST_STATS_EXT_CMDID); /* 2.4Ghz HT40 OBSS scan enable */ Loading Loading @@ -4572,6 +4587,13 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_GET_TPC_STATS_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_enable_duration_based_tx_mode_selection_cmd_fixed_param, wmi_pdev_enable_duration_based_tx_mode_selection_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_ENABLE_DURATION_BASED_TX_MODE_SELECTION_CMDID); /* MLO set link for active or inactive Cmd */ #define WMITLV_TABLE_WMI_MLO_LINK_SET_ACTIVE_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mlo_link_set_active_cmd_fixed_param, wmi_mlo_link_set_active_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_mlo_set_active_link_number_param, link_number_param, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, vdev_id_bitmap, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_MLO_LINK_SET_ACTIVE_CMDID); /************************** TLV definitions of WMI events *******************************/ Loading Loading @@ -6172,10 +6194,16 @@ WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_BCN_LATENCY_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_twt_session_stats_info, twt_sessions, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_TWT_SESSION_STATS_EVENTID); /* TWT Stats session event */ #define WMITLV_TABLE_WMI_MLO_LINK_SET_ACTIVE_RESP_EVENTID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mlo_link_set_active_resp_event_fixed_param, wmi_mlo_link_set_active_resp_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, force_active_vdev_bitmap, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, force_inactive_vdev_bitmap, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_MLO_LINK_SET_ACTIVE_RESP_EVENTID); #ifdef __cplusplus } #endif #endif /*_WMI_TLV_DEFS_H_*/
fw/wmi_unified.h +183 −5 Original line number Diff line number Diff line Loading @@ -267,6 +267,7 @@ typedef enum { WMI_GRP_ATM, /* 0x45 ATM (Air Time Management group) */ WMI_GRP_VENDOR, /* 0x46 vendor specific group */ WMI_GRP_LATENCY, /* 0x47 TID/AC level latency config */ WMI_GRP_MLO, /* 0x48 MLO(Multiple Link Operation) management */ } WMI_GRP_ID; #define WMI_CMD_GRP_START_ID(grp_id) (((grp_id) << 12) | 0x1) Loading Loading @@ -1359,6 +1360,10 @@ typedef enum { WMI_VDEV_TID_LATENCY_CONFIG_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_LATENCY), /** TID Latency Request command */ WMI_PEER_TID_LATENCY_CONFIG_CMDID, /** WMI commands specific to MLO **/ /** MLO link active / inactive Request command */ WMI_MLO_LINK_SET_ACTIVE_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_MLO), } WMI_CMD_ID; typedef enum { Loading Loading @@ -2063,6 +2068,10 @@ typedef enum { WMI_VENDOR_VDEV_EVENTID, WMI_VENDOR_PEER_EVENTID, /** Further vendor event IDs can be added below **/ /** WMI event specific to MLO **/ /** MLO link active / inactive response event */ WMI_MLO_LINK_SET_ACTIVE_RESP_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_MLO), } WMI_EVT_ID; /* defines for OEM message sub-types */ Loading Loading @@ -8174,6 +8183,14 @@ typedef struct { /* * This TLV is (optionally) followed by other TLVs: * wmi_inst_rssi_stats_params inst_rssi_params; * A_UINT32 vdev_id_bitmap[]; * This array is present and non-zero length in MLO case, stats should * only be provided from the vdev_id_bitmap in the bitmap when it is * present. * wmi_mac_addr mld_macaddr[]; * This array is present and non-zero length in MLO case, stats should * only be provided from the peers with the MLD MAC addresses specified * in the array. */ } wmi_request_stats_cmd_fixed_param; Loading Loading @@ -8381,6 +8398,16 @@ typedef struct { A_UINT32 request_id; /** peer MAC address */ wmi_mac_addr peer_macaddr; /* * This TLV is (optionally) followed by other TLVs: * A_UINT32 vdev_id_bitmap[]; * This array is present and non-zero length in MLO case, stats should only * be provided from the vdev_id_bitmap in the bitmap when it is present. * wmi_mac_addr mld_macaddr[]; * This array is present and non-zero length in MLO case, stats should only * be provided from the peers with the MLD MAC addresses specified * in the array. */ } wmi_request_link_stats_cmd_fixed_param; typedef struct { Loading @@ -8397,6 +8424,16 @@ typedef struct { A_UINT32 get_sta_stats_id; /** pdev_id for identifying the MAC. See macros starting with WMI_PDEV_ID_ for values. In non-DBDC case host should set it to 0. */ A_UINT32 pdev_id; /* * This TLV is (optionally) followed by other TLVs: * A_UINT32 vdev_id_bitmap[]; * This array is present and non-zero length in MLO case, stats should only * be provided from the vdev_id_bitmap in the bitmap when it is present. * wmi_mac_addr mld_macaddr[]; * This array is present and non-zero length in MLO case, stats should only * be provided from the peers with the MLD MAC addresses specified * in the array. */ } wmi_request_unified_ll_get_sta_cmd_fixed_param; #define WLM_STATS_REQ_LINK 0x00000001 Loading Loading @@ -10221,6 +10258,9 @@ typedef struct { A_UINT32 vdevid_trans; /* This TLV is followed by another TLV of array of structures * wmi_vdev_txrx_streams cfg_txrx_streams[]; * wmi_vdev_create_mlo_params mlo_params[0,1]; * optional TLV, only present for MLO vdev; * if the vdev is not MLO the array length should be 0. */ } wmi_vdev_create_cmd_fixed_param; Loading @@ -10243,6 +10283,45 @@ typedef struct { A_UINT32 start_time; /** 32 bit tsf time when in starts */ } wmi_p2p_noa_descriptor; /* * mlo_flags sub-fields: * bits 0 - mlo enable flag; * bits 1 - assoc link flag; * bits 2 - primary_umac flag; */ #define WMI_MLO_FLAGS_GET_ENABLED(mlo_flags) WMI_GET_BITS(mlo_flags, 0, 1) #define WMI_MLO_FLAGS_SET_ENABLED(mlo_flags, value) WMI_SET_BITS(mlo_flags, 0, 1, value) #define WMI_MLO_FLAGS_GET_ASSOC_LINK(mlo_flags) WMI_GET_BITS(mlo_flags, 1, 1) #define WMI_MLO_FLAGS_SET_ASSOC_LINK(mlo_flags, value) WMI_SET_BITS(mlo_flags, 1, 1, value) #define WMI_MLO_FLAGS_GET_PRIMARY_UMAC(mlo_flags) WMI_GET_BITS(mlo_flags, 2, 1) #define WMI_MLO_FLAGS_SET_PRIMARY_UMAC(mlo_flags, value) WMI_SET_BITS(mlo_flags, 2, 1, value) /* this structure used for pass mlo flags*/ typedef struct { union { struct { A_UINT32 mlo_enabled:1, /* indicate is MLO enabled */ mlo_assoc_link:1, /* indicate is the link used to initialize the association of mlo connection */ mlo_primary_umac:1, /* indicate is the link on primary UMAC, WIN only flag */ unused: 29; }; A_UINT32 mlo_flags; }; } wmi_mlo_flags; /* this TLV structure used for pass mlo parameters on vdev create*/ typedef struct { A_UINT32 tlv_header; /** TLV tag and len; */ /** MLD MAC address */ wmi_mac_addr mld_macaddr; } wmi_vdev_create_mlo_params; /* this TLV structure used for pass mlo parameters on vdev start*/ typedef struct { A_UINT32 tlv_header; /** TLV tag and len; */ wmi_mlo_flags mlo_flags; /*only mlo enable and assoc link flag need by vdev start*/ } wmi_vdev_start_mlo_params; /** values for vdev_type */ #define WMI_VDEV_TYPE_AP 0x1 #define WMI_VDEV_TYPE_STA 0x2 Loading Loading @@ -11001,6 +11080,9 @@ typedef struct { /* The TLVs follows this structure: * wmi_channel chan; <-- WMI channel * wmi_p2p_noa_descriptor noa_descriptors[]; <-- actual p2p NOA descriptor from scan entry * wmi_vdev_start_mlo_params mlo_params[0,1]; <-- vdev start MLO parameters * optional TLV, only present for MLO vdevs, * If the vdev is non-MLO the array length should be 0. */ } wmi_vdev_start_request_cmd_fixed_param; Loading Loading @@ -13451,6 +13533,12 @@ enum wmi_peer_type { WMI_PEER_TYPE_ROAMOFFLOAD_TEMP = 128, /* Temporarily created during offload roam */ }; /* this TLV structure used for providing mlo parameters on peer create */ typedef struct { A_UINT32 tlv_header; /** TLV tag and len */ wmi_mlo_flags mlo_flags; /* only mlo enable flag need by STA mode peer create */ } wmi_peer_create_mlo_params; typedef struct { A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_peer_create_cmd_fixed_param */ /** unique id identifying the VDEV, generated by the caller */ Loading @@ -13459,6 +13547,12 @@ typedef struct { wmi_mac_addr peer_macaddr; /** peer type: see enum values above */ A_UINT32 peer_type; /* The TLVs follows this structure: * wmi_peer_create_mlo_params mlo_params[]; <-- MLO flags on peer_create * Optional TLV, only present for MLO peers. * If the peer is non-MLO, the array length should be 0. * Only mlo_enable flag required by MCC to decide MAC address to be used. */ } wmi_peer_create_cmd_fixed_param; typedef struct { Loading Loading @@ -14062,6 +14156,15 @@ enum WMI_PEER_STA_TYPE { #define WMI_PEER_ASSOC_GET_BSS_MAX_IDLE_PERIOD(_dword) \ WMI_GET_BITS(_dword, WMI_PEER_ASSOC_BSS_MAX_IDLE_PERIOD_BITPOS, 16) /* This TLV structure used to pass mlo Parameters on peer assoc, only apply for mlo-peers */ typedef struct { A_UINT32 tlv_header; /** TLV tag and len; */ /** MLO flags */ wmi_mlo_flags mlo_flags; /** MLD MAC address */ wmi_mac_addr vdev_macaddr; } wmi_peer_assoc_mlo_params; typedef struct { A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_peer_assoc_complete_cmd_fixed_param */ /** peer MAC address */ Loading Loading @@ -14186,6 +14289,9 @@ typedef struct { * A_UINT8 peer_ht_rates[]; * wmi_vht_rate_set peer_vht_rates; <-- VHT capabilties of the peer * WMI_he_rate_set_peer_he_rates; <-- HE capabilities of the peer * wmi_peer_assoc_mlo_params mlo_params[0,1]; <-- MLO parameters opt. TLV * Only present for MLO peers. * For non-MLO peers the array length should be 0. */ } wmi_peer_assoc_complete_cmd_fixed_param; Loading Loading @@ -21408,6 +21514,10 @@ typedef struct { * from application/service to firmware where Host drv is pass through . * Following this structure is the TLV: * A_UINT8 data[]; <-- length in byte given by field data_len. * A_UINT32 vdev_id_bitmap[]; * This array is present and non-zero length in MLO case, stats should * only be provided from the vdev_id_bitmap in the bitmap when it is * present. */ } wmi_req_stats_ext_cmd_fixed_param; Loading Loading @@ -28114,6 +28224,7 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command) WMI_RETURN_STRING(WMI_VDEV_SET_TPC_POWER_CMDID); WMI_RETURN_STRING(WMI_VDEV_TID_LATENCY_CONFIG_CMDID); WMI_RETURN_STRING(WMI_PEER_TID_LATENCY_CONFIG_CMDID); WMI_RETURN_STRING(WMI_MLO_LINK_SET_ACTIVE_CMDID); } return "Invalid WMI cmd"; Loading Loading @@ -33433,6 +33544,73 @@ typedef struct wmi_peer_vendor_cmd */ } wmi_peer_vendor_cmd_fixed_param; typedef enum { WMI_MLO_LINK_FORCE_ACTIVE = 1, /* Force specific links active */ WMI_MLO_LINK_FORCE_INACTIVE = 2, /* Force specific links inactive */ WMI_MLO_LINK_FORCE_ACTIVE_LINK_NUM = 3, /* Force active a number of links, firmware to decide which links to inactive */ WMI_MLO_LINK_FORCE_INACTIVE_LINK_NUM = 4, /* Force inactive a number of links, firmware to decide which links to inactive */ WMI_MLO_LINK_NO_FORCE = 5, /* Cancel the force operation of specific links, allow firmware to decide */ } WMI_MLO_LINK_FORCE_MODE; typedef enum { WMI_MLO_LINK_FORCE_REASON_NEW_CONNECT = 1, /* Set force specific links because of new connection */ WMI_MLO_LINK_FORCE_REASON_NEW_DISCONNECT = 2, /* Set force specific links because of new dis-connection */ } WMI_MLO_LINK_FORCE_REASON; typedef struct wmi_mlo_link_set_active_cmd { /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_mlo_link_set_active_cmd_fixed_param; */ A_UINT32 tlv_header; /** enum WMI_MLO_LINK_FORCE_MODE */ A_UINT32 force_mode; /** reason of force link active / inactive, enum WMI_MLO_LINK_FORCE_REASON */ A_UINT32 reason; /* The TLVs follows this structure: * wmi_mlo_set_active_link_number_param link_number_param[]; * Link number parameters, optional TLV. * Present when force type is WMI_MLO_LINK_FORCE_ACTIVE_LINK_NUM or * WMI_MLO_LINK_FORCE_INACTIVE_LINK_NUM. * In other cases the length of array should be 0. * A_UINT32 vdev_id_bitmap[]; * Optional TLV, present when force type is WMI_MLO_LINK_FORCE_ACTIVE * or WMI_MLO_LINK_FORCE_INACTIVE or WMI_MLO_LINK_NO_FORCE, * to specific the vdevs to configure. * In other cases the length of the array should be 0. */ } wmi_mlo_link_set_active_cmd_fixed_param; typedef struct wmi_mlo_set_active_link_number_param { /** TLV tag and len; */ A_UINT32 tlv_header; /** number of link to be config */ A_UINT32 num_of_link; /** VDEV type, see values for vdev_type (WMI_VDEV_TYPE_AP,WMI_VDEV_TYPE_STA, * WMI_VDEV_TYPE_IBSS, WMI_VDEV_TYPE_MONITOR,WMI_VDEV_TYPE_NAN,WMI_VDEV_TYPE_NDI ...) */ A_UINT32 vdev_type; /** VDEV subtype, see values for vdev_subtype (WMI_UNIFIED_VDEV_SUBTYPE_P2P_DEVICE, * WMI_UNIFIED_VDEV_SUBTYPE_P2P_CLIENT, WMI_UNIFIED_VDEV_SUBTYPE_P2P_GO ...)*/ A_UINT32 vdev_subtype; /** home channel frequency in MHz of the vdev*/ A_UINT32 home_freq; } wmi_mlo_set_active_link_number_param; typedef struct wmi_mlo_link_set_active_resp_event { /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_mlo_link_set_active_resp_event_fixed_param; */ A_UINT32 tlv_header; /** Return status. 0 for success, non-zero otherwise */ A_UINT32 status; /* The TLVs follows this structure: * A_UINT32 force_active_vdev_bitmap[]; <-- current force active vdev. * A_UINT32 force_inactive_vdev_bitmap[]; <-- current force inactive vdevs */ } wmi_mlo_link_set_active_resp_event_fixed_param; /* ADD NEW DEFS HERE */
fw/wmi_version.h +1 −1 Original line number Diff line number Diff line Loading @@ -36,7 +36,7 @@ #define __WMI_VER_MINOR_ 0 /** WMI revision number has to be incremented when there is a * change that may or may not break compatibility. */ #define __WMI_REVISION_ 957 #define __WMI_REVISION_ 958 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work Loading