Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8323d7cf authored by spuligil's avatar spuligil
Browse files

fw-api: CL 12715277 - update fw common interface files

Change-Id: Ie9d4698b736685b96a415f10117230a03ddfc9ad
WMI: define MLO config messages
CRs-Fixed: 2262693
parent 2181a34c
Loading
Loading
Loading
Loading
+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.
 *
@@ -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;

/*
@@ -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 */


@@ -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 */


@@ -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);

@@ -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);

@@ -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);

@@ -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);

@@ -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);

@@ -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);

@@ -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 */
@@ -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 *******************************/

@@ -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_*/
+183 −5
Original line number Diff line number Diff line
@@ -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)
@@ -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 {
@@ -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 */
@@ -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;
@@ -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 {
@@ -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
@@ -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;
@@ -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
@@ -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;
@@ -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 */
@@ -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 {
@@ -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 */
@@ -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;
@@ -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;
@@ -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";
@@ -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 */
+1 −1
Original line number Diff line number Diff line
@@ -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