diff --git a/core/wmi/wmi_unified.c b/core/wmi/wmi_unified.c index 3d1d7ae351ba..cb632fe7fc4a 100644 --- a/core/wmi/wmi_unified.c +++ b/core/wmi/wmi_unified.c @@ -747,7 +747,28 @@ static uint8_t *get_wmi_cmd_string(WMI_CMD_ID wmi_command) CASE_RETURN_STRING(WMI_BPF_GET_VDEV_STATS_CMDID); CASE_RETURN_STRING(WMI_BPF_SET_VDEV_INSTRUCTIONS_CMDID); CASE_RETURN_STRING(WMI_BPF_DEL_VDEV_INSTRUCTIONS_CMDID); - + CASE_RETURN_STRING(WMI_PEER_UPDATE_WDS_ENTRY_CMDID); + CASE_RETURN_STRING(WMI_PEER_ADD_PROXY_STA_ENTRY_CMDID); + CASE_RETURN_STRING(WMI_PDEV_FIPS_CMDID); + CASE_RETURN_STRING(WMI_PDEV_SMART_ANT_ENABLE_CMDID); + CASE_RETURN_STRING(WMI_PDEV_SMART_ANT_SET_RX_ANTENNA_CMDID); + CASE_RETURN_STRING(WMI_PDEV_SET_ANTENNA_SWITCH_TABLE_CMDID); + CASE_RETURN_STRING(WMI_PDEV_SET_CTL_TABLE_CMDID); + CASE_RETURN_STRING(WMI_PDEV_SET_MIMOGAIN_TABLE_CMDID); + CASE_RETURN_STRING(WMI_PDEV_GET_TPC_CMDID); + CASE_RETURN_STRING(WMI_PDEV_GET_ANI_CCK_CONFIG_CMDID); + CASE_RETURN_STRING(WMI_PDEV_GET_ANI_OFDM_CONFIG_CMDID); + CASE_RETURN_STRING(WMI_VDEV_RATEMASK_CMDID); + CASE_RETURN_STRING(WMI_VDEV_ATF_REQUEST_CMDID); + CASE_RETURN_STRING(WMI_VDEV_SET_DSCP_TID_MAP_CMDID); + CASE_RETURN_STRING(WMI_VDEV_FILTER_NEIGHBOR_RX_PACKETS_CMDID); + CASE_RETURN_STRING(WMI_PEER_SMART_ANT_SET_TX_ANTENNA_CMDID); + CASE_RETURN_STRING(WMI_PEER_SMART_ANT_SET_TRAIN_INFO_CMDID); + CASE_RETURN_STRING(WMI_PEER_SMART_ANT_SET_NODE_CONFIG_OPS_CMDID); + CASE_RETURN_STRING(WMI_PEER_ATF_REQUEST_CMDID); + CASE_RETURN_STRING(WMI_FWTEST_CMDID); + CASE_RETURN_STRING(WMI_QBOOST_CFG_CMDID); + CASE_RETURN_STRING(WMI_PDEV_GET_NFCAL_POWER_CMDID); } return "Invalid WMI cmd"; } diff --git a/target/inc/wmi_tlv_defs.h b/target/inc/wmi_tlv_defs.h index 01216eb3b3d3..24f1cd56671c 100644 --- a/target/inc/wmi_tlv_defs.h +++ b/target/inc/wmi_tlv_defs.h @@ -615,6 +615,48 @@ typedef enum { WMITLV_TAG_STRUC_wmi_peer_delete_resp_event_fixed_param, WMITLV_TAG_STRUC_wmi_roam_dense_thres_param, WMITLV_TAG_STRUC_enlo_candidate_score_param, + WMITLV_TAG_STRUC_wmi_peer_update_wds_entry_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_vdev_config_ratemask_fixed_param, + WMITLV_TAG_STRUC_wmi_pdev_fips_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_pdev_smart_ant_enable_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_pdev_smart_ant_set_rx_antenna_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_peer_smart_ant_set_tx_antenna_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_peer_smart_ant_set_train_antenna_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_peer_smart_ant_set_node_config_ops_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_pdev_set_ant_switch_tbl_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_pdev_set_ctl_table_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_pdev_set_mimogain_table_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_fwtest_set_param_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_peer_atf_request_fixed_param, + WMITLV_TAG_STRUC_wmi_vdev_atf_request_fixed_param, + WMITLV_TAG_STRUC_wmi_pdev_get_ani_cck_config_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_pdev_get_ani_ofdm_config_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_inst_rssi_stats_resp_fixed_param, + WMITLV_TAG_STRUC_wmi_med_util_report_event_fixed_param, + WMITLV_TAG_STRUC_wmi_peer_sta_ps_statechange_event_fixed_param, + WMITLV_TAG_STRUC_wmi_wds_addr_event_fixed_param, + WMITLV_TAG_STRUC_wmi_peer_ratecode_list_event_fixed_param, + WMITLV_TAG_STRUC_wmi_pdev_nfcal_power_all_channels_event_fixed_param, + WMITLV_TAG_STRUC_wmi_pdev_tpc_event_fixed_param, + WMITLV_TAG_STRUC_wmi_ani_ofdm_event_fixed_param, + WMITLV_TAG_STRUC_wmi_ani_cck_event_fixed_param, + WMITLV_TAG_STRUC_wmi_pdev_channel_hopping_event_fixed_param, + WMITLV_TAG_STRUC_wmi_pdev_fips_event_fixed_param, + WMITLV_TAG_STRUC_wmi_atf_peer_info, + WMITLV_TAG_STRUC_wmi_pdev_get_tpc_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_vdev_filter_nrp_config_cmd_fixed_param, + WMITLV_TAG_STRUC_WMI_QBOOST_CFG_CMD_fixed_param, + WMITLV_TAG_STRUC_wmi_pdev_smart_ant_gpio_handle, + WMITLV_TAG_STRUC_wmi_peer_smart_ant_set_tx_antenna_series, + WMITLV_TAG_STRUC_wmi_peer_smart_ant_set_train_antenna_param, + WMITLV_TAG_STRUC_wmi_pdev_set_ant_ctrl_chain, + WMITLV_TAG_STRUC_wmi_peer_cck_ofdm_rate_info, + WMITLV_TAG_STRUC_wmi_peer_mcs_rate_info, + WMITLV_TAG_STRUC_wmi_pdev_nfcal_power_all_channels_nfdBr, + WMITLV_TAG_STRUC_wmi_pdev_nfcal_power_all_channels_nfdBm, + WMITLV_TAG_STRUC_wmi_pdev_nfcal_power_all_channels_freqNum, + WMITLV_TAG_STRUC_wmi_mu_report_total_mu, + WMITLV_TAG_STRUC_wmi_vdev_set_dscp_tid_map_cmd_fixed_param, } WMITLV_TAG_ID; @@ -859,7 +901,28 @@ typedef enum { OP(WMI_BPF_GET_CAPABILITY_CMDID) \ OP(WMI_BPF_GET_VDEV_STATS_CMDID) \ OP(WMI_BPF_SET_VDEV_INSTRUCTIONS_CMDID) \ - OP(WMI_BPF_DEL_VDEV_INSTRUCTIONS_CMDID) + OP(WMI_BPF_DEL_VDEV_INSTRUCTIONS_CMDID) \ + OP(WMI_PEER_UPDATE_WDS_ENTRY_CMDID) \ + OP(WMI_PEER_ADD_PROXY_STA_ENTRY_CMDID) \ + OP(WMI_PDEV_FIPS_CMDID) \ + OP(WMI_PDEV_SMART_ANT_ENABLE_CMDID) \ + OP(WMI_PDEV_SMART_ANT_SET_RX_ANTENNA_CMDID) \ + OP(WMI_PDEV_SET_ANTENNA_SWITCH_TABLE_CMDID) \ + OP(WMI_PDEV_SET_CTL_TABLE_CMDID) \ + OP(WMI_PDEV_SET_MIMOGAIN_TABLE_CMDID) \ + OP(WMI_PDEV_GET_TPC_CMDID) \ + OP(WMI_PDEV_GET_ANI_CCK_CONFIG_CMDID) \ + OP(WMI_PDEV_GET_ANI_OFDM_CONFIG_CMDID) \ + OP(WMI_VDEV_RATEMASK_CMDID) \ + OP(WMI_VDEV_ATF_REQUEST_CMDID) \ + OP(WMI_VDEV_SET_DSCP_TID_MAP_CMDID) \ + OP(WMI_VDEV_FILTER_NEIGHBOR_RX_PACKETS_CMDID) \ + OP(WMI_PEER_SMART_ANT_SET_TX_ANTENNA_CMDID) \ + OP(WMI_PEER_SMART_ANT_SET_TRAIN_INFO_CMDID) \ + OP(WMI_PEER_SMART_ANT_SET_NODE_CONFIG_OPS_CMDID) \ + OP(WMI_PEER_ATF_REQUEST_CMDID) \ + OP(WMI_FWTEST_CMDID) \ + OP(WMI_QBOOST_CFG_CMDID) /* * IMPORTANT: Please add _ALL_ WMI Events Here. @@ -983,7 +1046,17 @@ typedef enum { OP(WMI_BPF_CAPABILIY_INFO_EVENTID) \ OP(WMI_BPF_VDEV_STATS_INFO_EVENTID) \ OP(WMI_VDEV_DELETE_RESP_EVENTID) \ - OP(WMI_PEER_DELETE_RESP_EVENTID) + OP(WMI_PEER_DELETE_RESP_EVENTID) \ + OP(WMI_PDEV_FIPS_EVENTID) \ + OP(WMI_PDEV_CHANNEL_HOPPING_EVENTID) \ + OP(WMI_PDEV_ANI_CCK_LEVEL_EVENTID) \ + OP(WMI_PDEV_ANI_OFDM_LEVEL_EVENTID) \ + OP(WMI_PDEV_TPC_EVENTID) \ + OP(WMI_PDEV_NFCAL_POWER_ALL_CHANNELS_EVENTID) \ + OP(WMI_PEER_RATECODE_LIST_EVENTID) \ + OP(WMI_WDS_PEER_EVENTID) \ + OP(WMI_PEER_STA_PS_STATECHG_EVENTID) \ + OP(WMI_INST_RSSI_STATS_EVENTID) /* TLV definitions of WMI commands */ @@ -2271,6 +2344,119 @@ WMITLV_CREATE_PARAM_STRUC(WMI_BPF_SET_VDEV_INSTRUCTIONS_CMDID); WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_bpf_del_vdev_instructions_cmd_fixed_param, wmi_bpf_del_vdev_instructions_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_BPF_DEL_VDEV_INSTRUCTIONS_CMDID); +/* Enable/Disable Smart Antenna */ +#define WMITLV_TABLE_WMI_PDEV_SMART_ANT_ENABLE_CMDID(id, op, buf, len) \ + WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_pdev_smart_ant_enable_cmd_fixed_param, wmi_pdev_smart_ant_enable_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ +WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_ARRAY_STRUC, wmi_pdev_smart_ant_gpio_handle, gpio_handle, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_SMART_ANT_ENABLE_CMDID); + +/* Set Smart Antenna RX antenna */ +#define WMITLV_TABLE_WMI_PDEV_SMART_ANT_SET_RX_ANTENNA_CMDID(id, op, buf, len) \ + WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_pdev_smart_ant_set_rx_antenna_cmd_fixed_param, wmi_pdev_smart_ant_set_rx_antenna_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_SMART_ANT_SET_RX_ANTENNA_CMDID); + +/* Override the antenna switch table */ +#define WMITLV_TABLE_WMI_PDEV_SET_ANTENNA_SWITCH_TABLE_CMDID(id, op, buf, len) \ + WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_pdev_set_ant_switch_tbl_cmd_fixed_param, wmi_pdev_set_ant_switch_tbl_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ +WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_ARRAY_STRUC, wmi_pdev_set_ant_ctrl_chain, ant_ctrl_chain, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_SET_ANTENNA_SWITCH_TABLE_CMDID); + +/* Override the CTL table */ +#define WMITLV_TABLE_WMI_PDEV_SET_CTL_TABLE_CMDID(id, op, buf, len) \ + WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_pdev_set_ctl_table_cmd_fixed_param, wmi_pdev_set_ctl_table_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ +WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, ctl_info, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_SET_CTL_TABLE_CMDID); + +/* Override the array gain table */ +#define WMITLV_TABLE_WMI_PDEV_SET_MIMOGAIN_TABLE_CMDID(id, op, buf, len) \ + WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_pdev_set_mimogain_table_cmd_fixed_param, wmi_pdev_set_mimogain_table_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ +WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, arraygain_tbl, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_SET_MIMOGAIN_TABLE_CMDID); + +/* FIPS cmd */ +#define WMITLV_TABLE_WMI_PDEV_FIPS_CMDID(id, op, buf, len) \ + WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_pdev_fips_cmd_fixed_param, wmi_pdev_fips_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_CREATE_PARAM_STRUC(WMI_PDEV_FIPS_CMDID); + +/* get CCK ANI level */ +#define WMITLV_TABLE_WMI_PDEV_GET_ANI_CCK_CONFIG_CMDID(id, op, buf, len) \ + WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_pdev_get_ani_cck_config_cmd_fixed_param, wmi_pdev_get_ani_cck_config_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_GET_ANI_CCK_CONFIG_CMDID); + +/* get OFDM ANI level */ +#define WMITLV_TABLE_WMI_PDEV_GET_ANI_OFDM_CONFIG_CMDID(id, op, buf, len) \ + WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_pdev_get_ani_ofdm_config_cmd_fixed_param, wmi_pdev_get_ani_ofdm_config_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_GET_ANI_OFDM_CONFIG_CMDID); + +/* TxPPDU TPC cmd */ +#define WMITLV_TABLE_WMI_PDEV_GET_TPC_CMDID(id, op, buf, len) \ + WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_pdev_get_tpc_cmd_fixed_param, wmi_pdev_get_tpc_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_GET_TPC_CMDID); + +#define WMITLV_TABLE_WMI_VDEV_RATEMASK_CMDID(id, op, buf, len) \ + WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_vdev_config_ratemask_fixed_param, wmi_vdev_config_ratemask_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_RATEMASK_CMDID); + +/* ATF VDEV REQUEST commands */ +#define WMITLV_TABLE_WMI_VDEV_ATF_REQUEST_CMDID(id, op, buf, len) \ + WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_vdev_atf_request_fixed_param, wmi_vdev_atf_request_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_ATF_REQUEST_CMDID); + +/* Command to send the DSCP-to-TID map to the target for VAP */ +#define WMITLV_TABLE_WMI_VDEV_SET_DSCP_TID_MAP_CMDID(id, op, buf, len) \ + WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_vdev_set_dscp_tid_map_cmd_fixed_param, wmi_vdev_set_dscp_tid_map_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_SET_DSCP_TID_MAP_CMDID); + +/* Configure filter for Neighbor Rx Pkt (smart mesh selective listening) */ +#define WMITLV_TABLE_WMI_VDEV_FILTER_NEIGHBOR_RX_PACKETS_CMDID(id, op, buf, len) \ + WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_vdev_filter_nrp_config_cmd_fixed_param, wmi_vdev_filter_nrp_config_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_FILTER_NEIGHBOR_RX_PACKETS_CMDID); + +/* update a wds (4 address) entry */ +#define WMITLV_TABLE_WMI_PEER_UPDATE_WDS_ENTRY_CMDID(id, op, buf, len) \ + WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_peer_update_wds_entry_cmd_fixed_param, wmi_peer_update_wds_entry_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_PEER_UPDATE_WDS_ENTRY_CMDID); + +/* add a proxy sta entry */ +#define WMITLV_TABLE_WMI_PEER_ADD_PROXY_STA_ENTRY_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_CREATE_PARAM_STRUC(WMI_PEER_ADD_PROXY_STA_ENTRY_CMDID); + +/* Set Smart Antenna TX antenna */ +#define WMITLV_TABLE_WMI_PEER_SMART_ANT_SET_TX_ANTENNA_CMDID(id, op, buf, len) \ + WMITLV_ELEM(id, op, buf, len,WMITLV_TAG_STRUC_wmi_peer_smart_ant_set_tx_antenna_cmd_fixed_param, wmi_peer_smart_ant_set_tx_antenna_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ +WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_ARRAY_STRUC, wmi_peer_smart_ant_set_tx_antenna_series, antenna_series, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_PEER_SMART_ANT_SET_TX_ANTENNA_CMDID); + +/* Set Smart Antenna TX train info */ +#define WMITLV_TABLE_WMI_PEER_SMART_ANT_SET_TRAIN_INFO_CMDID(id, op, buf, len) \ + WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_peer_smart_ant_set_train_antenna_cmd_fixed_param, wmi_peer_smart_ant_set_train_antenna_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ +WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_ARRAY_STRUC, wmi_peer_smart_ant_set_train_antenna_param, antenna_param, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_PEER_SMART_ANT_SET_TRAIN_INFO_CMDID); + +/* Set SA node config options */ +#define WMITLV_TABLE_WMI_PEER_SMART_ANT_SET_NODE_CONFIG_OPS_CMDID(id, op, buf, len) \ + WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_peer_smart_ant_set_node_config_ops_cmd_fixed_param, wmi_peer_smart_ant_set_node_config_ops_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ +WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, args, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_PEER_SMART_ANT_SET_NODE_CONFIG_OPS_CMDID); + +/* Q-Boost configuration test commands */ +#define WMITLV_TABLE_WMI_QBOOST_CFG_CMDID(id, op, buf, len) \ + WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_WMI_QBOOST_CFG_CMD_fixed_param, WMI_QBOOST_CFG_CMD_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_QBOOST_CFG_CMDID); + +/* set debug and tuning parameters */ +#define WMITLV_TABLE_WMI_FWTEST_CMDID(id, op, buf, len) \ + WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_fwtest_set_param_cmd_fixed_param, wmi_fwtest_set_param_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_FWTEST_CMDID); + +/* ATF PEER REQUEST commands. */ +#define WMITLV_TABLE_WMI_PEER_ATF_REQUEST_CMDID(id, op, buf, len) \ + WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_peer_atf_request_fixed_param, wmi_peer_atf_request_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_ARRAY_STRUC, wmi_atf_peer_info, peer_info, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_PEER_ATF_REQUEST_CMDID) + /* Set rssi monitoring config Cmd */ #define WMITLV_TABLE_WMI_RSSI_BREACH_MONITOR_CONFIG_CMDID(id, op, buf, len) \ WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_rssi_breach_monitor_config_fixed_param, wmi_rssi_breach_monitor_config_fixed_param, fixed_param, WMITLV_SIZE_FIX) @@ -3094,6 +3280,54 @@ WMITLV_CREATE_PARAM_STRUC(WMI_BPF_CAPABILIY_INFO_EVENTID); WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_bpf_vdev_stats_info_evt_fixed_param, wmi_bpf_vdev_stats_info_evt_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_BPF_VDEV_STATS_INFO_EVENTID); +/* FIPS event */ +#define WMITLV_TABLE_WMI_PDEV_FIPS_EVENTID(id, op, buf, len) \ + WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_pdev_fips_event_fixed_param, wmi_pdev_fips_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ +WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, data, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_FIPS_EVENTID); + +#define WMITLV_TABLE_WMI_PDEV_CHANNEL_HOPPING_EVENTID(id, op, buf, len) \ + WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_pdev_channel_hopping_event_fixed_param, wmi_pdev_channel_hopping_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_CHANNEL_HOPPING_EVENTID); + +#define WMITLV_TABLE_WMI_PDEV_ANI_CCK_LEVEL_EVENTID(id, op, buf, len) \ + WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_ani_cck_event_fixed_param, wmi_ani_cck_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_ANI_CCK_LEVEL_EVENTID); + +#define WMITLV_TABLE_WMI_PDEV_ANI_OFDM_LEVEL_EVENTID(id, op, buf, len) \ + WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_ani_ofdm_event_fixed_param, wmi_ani_ofdm_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_ANI_OFDM_LEVEL_EVENTID); + +#define WMITLV_TABLE_WMI_PDEV_TPC_EVENTID(id, op, buf, len) \ + WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_pdev_tpc_event_fixed_param, wmi_pdev_tpc_event_fixed_param, fixed_param, WMITLV_SIZE_FIX)\ +WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, tpc, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_TPC_EVENTID); + +#define WMITLV_TABLE_WMI_PDEV_NFCAL_POWER_ALL_CHANNELS_EVENTID(id, op, buf, len) \ + WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_pdev_nfcal_power_all_channels_event_fixed_param, wmi_pdev_nfcal_power_all_channels_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ +WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_ARRAY_STRUC, wmi_pdev_nfcal_power_all_channels_nfdBr, nfdbr, WMITLV_SIZE_VAR) \ +WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_ARRAY_STRUC, wmi_pdev_nfcal_power_all_channels_nfdBm, nfdbm, WMITLV_SIZE_VAR) \ +WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_ARRAY_STRUC, wmi_pdev_nfcal_power_all_channels_freqNum, freqnum, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_NFCAL_POWER_ALL_CHANNELS_EVENTID); + +#define WMITLV_TABLE_WMI_PEER_RATECODE_LIST_EVENTID(id, op, buf, len) \ + WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_peer_ratecode_list_event_fixed_param, wmi_peer_ratecode_list_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ +WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_ARRAY_STRUC, wmi_peer_cck_ofdm_rate_info, ratecode_legacy, WMITLV_SIZE_VAR) \ +WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_ARRAY_STRUC, wmi_peer_mcs_rate_info, ratecode_mcs, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_PEER_RATECODE_LIST_EVENTID); + +#define WMITLV_TABLE_WMI_WDS_PEER_EVENTID(id, op, buf, len) \ + WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_wds_addr_event_fixed_param, wmi_wds_addr_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_WDS_PEER_EVENTID); + +#define WMITLV_TABLE_WMI_PEER_STA_PS_STATECHG_EVENTID(id, op, buf, len) \ + WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_peer_sta_ps_statechange_event_fixed_param, wmi_peer_sta_ps_statechange_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_PEER_STA_PS_STATECHG_EVENTID); + +#define WMITLV_TABLE_WMI_INST_RSSI_STATS_EVENTID(id, op, buf, len) \ + WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_inst_rssi_stats_resp_fixed_param, wmi_inst_rssi_stats_resp_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_INST_RSSI_STATS_EVENTID); + #ifdef __cplusplus } #endif diff --git a/target/inc/wmi_unified.h b/target/inc/wmi_unified.h index ffeb7278b5f6..4a17e0f5d406 100644 --- a/target/inc/wmi_unified.h +++ b/target/inc/wmi_unified.h @@ -303,6 +303,26 @@ typedef enum { WMI_PDEV_GET_TEMPERATURE_CMDID, /* Set LED flashing behavior */ WMI_PDEV_SET_LED_FLASHING_CMDID, + /** Enable/Disable Smart Antenna */ + WMI_PDEV_SMART_ANT_ENABLE_CMDID, + /** Set Smart Antenna RX antenna*/ + WMI_PDEV_SMART_ANT_SET_RX_ANTENNA_CMDID, + /** Override the antenna switch table */ + WMI_PDEV_SET_ANTENNA_SWITCH_TABLE_CMDID, + /** Override the CTL table */ + WMI_PDEV_SET_CTL_TABLE_CMDID, + /** Override the array gain table */ + WMI_PDEV_SET_MIMOGAIN_TABLE_CMDID, + /** FIPS test mode command */ + WMI_PDEV_FIPS_CMDID, + /** get CCK ANI level */ + WMI_PDEV_GET_ANI_CCK_CONFIG_CMDID, + /** get OFDM ANI level */ + WMI_PDEV_GET_ANI_OFDM_CONFIG_CMDID, + /** NF Cal Power dBr/dBm */ + WMI_PDEV_GET_NFCAL_POWER_CMDID, + /** TxPPDU TPC */ + WMI_PDEV_GET_TPC_CMDID, /* VDEV(virtual device) specific commands */ /** vdev create */ @@ -342,6 +362,16 @@ typedef enum { */ WMI_VDEV_SET_IE_CMDID, + WMI_VDEV_RATEMASK_CMDID, + /** ATF VDEV REQUEST commands. */ + WMI_VDEV_ATF_REQUEST_CMDID, + /** Command to send the DSCP-to-TID map to the target for VAP */ + WMI_VDEV_SET_DSCP_TID_MAP_CMDID, + /* + * Configure filter for Neighbor Rx Pkt + * (smart mesh selective listening) + */ + WMI_VDEV_FILTER_NEIGHBOR_RX_PACKETS_CMDID, /* peer specific commands */ /** create a peer */ @@ -372,6 +402,19 @@ typedef enum { * The justified rate means the the user-rate is justified by PER. */ WMI_PEER_SET_RATE_REPORT_CONDITION_CMDID, + /** update a wds (4 address) entry */ + WMI_PEER_UPDATE_WDS_ENTRY_CMDID, + /** add a proxy sta entry */ + WMI_PEER_ADD_PROXY_STA_ENTRY_CMDID, + /** Set Smart Antenna TX antenna */ + WMI_PEER_SMART_ANT_SET_TX_ANTENNA_CMDID, + /** Set Smart Antenna TX train info */ + WMI_PEER_SMART_ANT_SET_TRAIN_INFO_CMDID, + /** Set SA node config options */ + WMI_PEER_SMART_ANT_SET_NODE_CONFIG_OPS_CMDID, + /** ATF PEER REQUEST commands */ + WMI_PEER_ATF_REQUEST_CMDID, + /* beacon/management specific commands */ /** transmit beacon by reference . used for transmitting beacon on low latency interface like pcie */ @@ -718,6 +761,10 @@ typedef enum { WMI_FWTEST_P2P_SET_NOA_PARAM_CMDID, /* UNIT Tests */ WMI_UNIT_TEST_CMDID, + /* set debug and tuning parameters */ + WMI_FWTEST_CMDID, + /* Q-Boost configuration test commands */ + WMI_QBOOST_CFG_CMDID, /** TDLS Configuration */ /** enable/disable TDLS */ @@ -916,6 +963,23 @@ typedef enum { */ WMI_SERVICE_READY_EXT_EVENTID, + /** FIPS test mode event */ + WMI_PDEV_FIPS_EVENTID, + + /** Channel hopping avoidance */ + WMI_PDEV_CHANNEL_HOPPING_EVENTID, + + /** CCK ANI level event */ + WMI_PDEV_ANI_CCK_LEVEL_EVENTID, + + /** OFDM ANI level event */ + WMI_PDEV_ANI_OFDM_LEVEL_EVENTID, + + /** Tx PPDU params */ + WMI_PDEV_TPC_EVENTID, + + /** NF Cal Power in DBR/DBM for all channels */ + WMI_PDEV_NFCAL_POWER_ALL_CHANNELS_EVENTID, /* VDEV specific events */ /** VDEV started event in response to VDEV_START request */ WMI_VDEV_START_RESP_EVENTID = @@ -966,6 +1030,11 @@ typedef enum { /* FW response to Host for peer delete cmdid */ WMI_PEER_DELETE_RESP_EVENTID, + /** Valid rate code list for peer */ + WMI_PEER_RATECODE_LIST_EVENTID, + WMI_WDS_PEER_EVENTID, + WMI_PEER_STA_PS_STATECHG_EVENTID, + /* beacon/mgmt specific events */ /** RX management frame. the entire frame is carried along with the event. */ WMI_MGMT_RX_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_MGMT), @@ -1050,6 +1119,9 @@ typedef enum { /** Event indicating the DIAG logs/events supported by FW */ WMI_DIAG_EVENT_LOG_SUPPORTED_EVENTID, + /* Instantaneous RSSI event */ + WMI_INST_RSSI_STATS_EVENTID, + /** NLO specific events */ /** NLO match event after the first match */ WMI_NLO_MATCH_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_NLO_OFL), @@ -2820,6 +2892,67 @@ typedef struct { A_UINT32 scan_start; } wmi_pdev_scan_cmd; +/* WMI support for setting ratemask in target */ + +typedef struct { + A_UINT32 tlv_header; + /* + * TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_vdev_config_ratemask_fixed_param + */ + A_UINT32 vdev_id; + /* + * 0 - cck/ofdm + * 1 - HT + * 2 - VHT */ + A_UINT32 type; + + A_UINT32 mask_lower32; + A_UINT32 mask_higher32; +} wmi_vdev_config_ratemask_cmd_fixed_param; + +/* nrp action - Filter Neighbor Rx Packets - add/remove filter */ +enum { + WMI_FILTER_NRP_ACTION_ADD = 0x1, + WMI_FILTER_NRP_ACTION_REMOVE = 0x2, + WMI_FILTER_NRP_ACTION_GET_LIST = 0x3, +}; /* nrp - Neighbor Rx Packets */ + +/* nrp type - Filter Neighbor Rx Packets - ap/client addr */ +enum { + WMI_FILTER_NRP_TYPE_AP_BSSID = 0x1, + WMI_FILTER_NRP_TYPE_STA_MACADDR = 0x2, +}; + +/* nrp flag - Filter Neighbor Rx Packets + * (capture flag, 2 & 3 not initially supported) + */ +enum { + WMI_FILTER_NRP_CAPTURE_ONLY_RX_PACKETS = 0x1, + WMI_FILTER_NRP_CAPTURE_ONLY_TX_PACKETS = 0x2, + WMI_FILTER_NRP_CAPTURE_BOTH_TXRX_PACKETS = 0x3, +}; + +/* Filter for Neighbor Rx Packets */ +typedef struct { + A_UINT32 tlv_header; + /* + * TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_vdev_filter_nrp_config_cmd_fixed_param + */ + A_UINT32 vdev_id; + /* AP Bssid or Client Mac-addr */ + wmi_mac_addr addr; + /* Add/Remove NRF Filter */ + A_UINT32 action; /* WMI_FILTER_NRP_ACTION enum */ + /* client/ap filter */ + A_UINT32 type; /* WMI_FILTER_NRP_TYPE enum */ + /* optional - tx/rx capture */ + A_UINT32 flag; /* WMI_FILTER_NRP_CAPTURE enum */ + /* BSSID index - index of the BSSID register */ + A_UINT32 bssid_idx; +} wmi_vdev_filter_nrp_config_cmd_fixed_param; + /*Command to set/unset chip in quiet mode*/ typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_pdev_set_quiet_cmd_fixed_param */ @@ -3463,6 +3596,17 @@ typedef struct { A_UINT32 dscp_to_tid_map[WMI_DSCP_MAP_MAX]; } wmi_pdev_set_dscp_tid_map_cmd_fixed_param; +typedef struct { + A_UINT32 tlv_header; + /* + * TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_vdev_set_dscp_tid_map_cmd_fixed_param + */ + A_UINT32 vdev_id; + /** map indicating DSCP to TID conversion */ + A_UINT32 dscp_to_tid_map[WMI_DSCP_MAP_MAX]; +} wmi_vdev_set_dscp_tid_map_cmd_fixed_param; + /** Fixed rate (rate-code) for broadcast/ multicast data frames */ /* @brief bcast_mcast_data_rate - set the rates for the bcast/ mcast frames * @details @@ -5857,6 +6001,30 @@ typedef struct { wmi_mac_addr peer_macaddr; } wmi_peer_q_empty_callback_event; +/* + * Command to update an already existing WDS entry. Different address setting + * combinations are possible. + * + * Valid wds and peer -> Associated WDS entry peer ptr & flags will be updated. + * Valid wds and null peer -> Associated WDS entry flags will be updated. + * Null wds and Valid peer-> Flags will be updated for all WDS entries + * behind the peer. + * Null wds and peer -> Flags will be updated for all WDS entries. + */ +typedef struct { + /* + * TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_peer_update_wds_entry_cmd_fixed_param + */ + A_UINT32 tlv_header; + /** peer MAC address */ + wmi_mac_addr peer_macaddr; + /** wds MAC addr */ + wmi_mac_addr wds_macaddr; + /* Flags associated with WDS entry */ + A_UINT32 flags; +} wmi_peer_update_wds_entry_cmd_fixed_param; + /** * Channel info WMI event */ @@ -12668,6 +12836,552 @@ typedef struct wmi_bpf_del_vdev_instructions_cmd_s { A_UINT32 filter_id; /* BPF_FILTER_ID_ALL means delete all */ } wmi_bpf_del_vdev_instructions_cmd_fixed_param; +#define AES_BLOCK_LEN 16 /* in bytes */ +#define FIPS_KEY_LENGTH_128 16 /* in bytes */ +#define FIPS_KEY_LENGTH_256 32 /* in bytes */ +#define FIPS_ENCRYPT_CMD 0 +#define FIPS_DECRYPT_CMD 1 +#define FIPS_ENGINE_AES_CTR 0 +#define FIPS_ENGINE_AES_MIC 1 +#define FIPS_ERROR_OPER_TIMEOUT 1 + +/* WMI_PDEV_FIPS_CMDID */ +typedef struct { + /* + * TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_pdev_fips_cmd_fixed_param + */ + A_UINT32 tlv_header; + A_UINT32 mac_id; /* MAC ID */ + A_UINT32 fips_cmd; /* FIPS_ENCRYPT or FIPS_DECRYPT */ + /* FIPS_ENGINE_AES_CTR or FIPS_ENGINE_AES_MIC */ + A_UINT32 mode; + /* FIPS_KEY_LENGTH_128 or FIPS_KEY_LENGTH_256 (units = bytes) */ + A_UINT32 key_len; + A_UINT8 key[WMI_MAX_KEY_LEN]; /* Key */ + A_UINT32 data_len; /* data length */ + /* + * Following this structure is the TLV: + * A_UINT32 data[1]; - In Data (keep this in the end) + */ +} wmi_pdev_fips_cmd_fixed_param; + +typedef struct { + /* + * TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_pdev_smart_ant_enable_cmd_fixed_param + */ + A_UINT32 tlv_header; + A_UINT32 mac_id; /* MAC ID */ + A_UINT32 enable; /* 1:enable, 0:disable */ + /* 1:GPIO parallel mode, 0:GPIO serial mode */ + A_UINT32 mode; + A_UINT32 rx_antenna; /* rx antenna */ + A_UINT32 tx_default_antenna; /* tx default antenna */ + /* + * Following this structure is the TLV: + * wmi_pdev_smart_ant_gpio_handle + */ +} wmi_pdev_smart_ant_enable_cmd_fixed_param; + +/** GPIO pins/function values to control antennas */ +typedef struct { + /* + * TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_pdev_smart_ant_gpio_handle + */ + A_UINT32 tlv_header; + /* For serial: index 0-strobe index 1-data, For Parallel: per stream */ + A_UINT32 gpio_pin; + A_UINT32 gpio_func; /* GPIO function values for Smart Antenna */ +} wmi_pdev_smart_ant_gpio_handle; + +typedef struct { + /* + * TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_pdev_smart_ant_set_rx_antenna_cmd_fixed_param + */ + A_UINT32 tlv_header; + A_UINT32 mac_id; + A_UINT32 rx_antenna; +} wmi_pdev_smart_ant_set_rx_antenna_cmd_fixed_param; + +typedef struct { + /* + * TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_peer_smart_ant_set_tx_antenna_cmd_fixed_param + */ + A_UINT32 tlv_header; + /** unique id identifying the vdev, generated by the caller */ + A_UINT32 vdev_id; + /** peer MAC address */ + wmi_mac_addr peer_macaddr; + /* + * Following this structure is the TLV: + * wmi_peer_smart_ant_set_tx_antenna_series + */ +} wmi_peer_smart_ant_set_tx_antenna_cmd_fixed_param; + +typedef struct { + /* + * TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_peer_smart_ant_set_tx_antenna_series + */ + A_UINT32 tlv_header; + /* antenna array */ + A_UINT32 antenna_series; +} wmi_peer_smart_ant_set_tx_antenna_series; + +typedef struct { + /* + * TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_peer_smart_ant_set_train_antenna_param + */ + A_UINT32 tlv_header; + /* rate array */ + A_UINT32 train_rate_series; + /* antenna array */ + A_UINT32 train_antenna_series; + /* Rate flags */ + /* TODO: For future use? */ + A_UINT32 rc_flags; +} wmi_peer_smart_ant_set_train_antenna_param; + +typedef struct { + /* + * TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_peer_smart_ant_set_train_antenna_cmd_fixed_param + */ + A_UINT32 tlv_header; + /** unique id identifying the VDEV, generated by the caller */ + A_UINT32 vdev_id; + /** peer MAC address */ + wmi_mac_addr peer_macaddr; + /* num packets; 0-stop training */ + A_UINT32 num_pkts; + /* + * Following this structure is the TLV: + * wmi_peer_smart_ant_set_train_antenna_param + */ +} wmi_peer_smart_ant_set_train_antenna_cmd_fixed_param; + +typedef struct { + /* + * TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_peer_smart_ant_set_node_config_ops_cmd_fixed_param + */ + A_UINT32 tlv_header; + /** unique id identifying the vdev, generated by the caller */ + A_UINT32 vdev_id; + /** peer MAC address */ + wmi_mac_addr peer_macaddr; + /* command id*/ + A_UINT32 cmd_id; + /* number of arguments passed */ + A_UINT32 args_count; + /* + * Following this structure is the TLV: + * A_UINT32 args[]; // argument list + */ +} wmi_peer_smart_ant_set_node_config_ops_cmd_fixed_param; + +typedef struct { + /* + * TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_pdev_set_ant_ctrl_chain + */ + A_UINT32 tlv_header; + A_UINT32 antCtrlChain; +} wmi_pdev_set_ant_ctrl_chain; + +typedef struct { + /* + * TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_pdev_set_ant_switch_tbl_cmd_fixed_param + */ + A_UINT32 tlv_header; + A_UINT32 mac_id; /* MAC ID */ + A_UINT32 antCtrlCommon1; + A_UINT32 antCtrlCommon2; + /* + * Following this structure is the TLV: + * wmi_pdev_set_ant_ctrl_chain + */ +} wmi_pdev_set_ant_switch_tbl_cmd_fixed_param; + +typedef struct { + /* TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_pdev_set_ctl_table_cmd_fixed_param + */ + A_UINT32 tlv_header; + A_UINT32 mac_id; /* MAC ID */ + /** len of CTL info */ + A_UINT32 ctl_len; + /* ctl array (len adjusted to number of words) + * Following this structure is the TLV: + * A_UINT32 ctl_info[1]; + */ +} wmi_pdev_set_ctl_table_cmd_fixed_param; + +typedef struct { + /* + * TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_pdev_set_mimogain_table_cmd_fixed_param + */ + A_UINT32 tlv_header; + A_UINT32 mac_id; /* MAC ID */ + A_UINT32 mimogain_info; /* see WMI_MIMOGAIN macros */ + /* + * Bit 7:0 len of array gain table + * Bit 8 bypass multi chain gain or not + */ + /* + * array gain table(s) (len adjusted to number of words). + * Following this structure is the TLV: + * A_UINT32 arraygain_tbl[1]; + */ +} wmi_pdev_set_mimogain_table_cmd_fixed_param; + +#define WMI_MIMOGAIN_ARRAY_GAIN_LEN_S 0 +#define WMI_MIMOGAIN_ARRAY_GAIN_LEN (0xff << WMI_MIMOGAIN_ARRAY_GAIN_LEN_S) +#define WMI_MIMOGAIN_ARRAY_GAIN_LEN_GET(x) WMI_F_MS(x, WMI_MIMOGAIN_ARRAY_GAIN_LEN) +#define WMI_MIMOGAIN_ARRAY_GAIN_LEN_SET(x, z) WMI_F_RMW(x, z, WMI_MIMOGAIN_ARRAY_GAIN_LEN) + +#define WMI_MIMOGAIN_MULTI_CHAIN_BYPASS_S 8 +#define WMI_MIMOGAIN_MULTI_CHAIN_BYPASS (0x1 << WMI_MIMOGAIN_MULTI_CHAIN_BYPASS_S) +#define WMI_MIMOGAIN_MULTI_CHAIN_BYPASS_GET(x) WMI_F_MS(x, WMI_MIMOGAIN_MULTI_CHAIN_BYPASS) +#define WMI_MIMOGAIN_MULTI_CHAIN_BYPASS_SET(x, z) WMI_F_RMW(x, z, WMI_MIMOGAIN_MULTI_CHAIN_BYPASS) + + +typedef struct { + /* + * TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_fwtest_set_param_cmd_fixed_param + */ + A_UINT32 tlv_header; + /** parameter id */ + A_UINT32 param_id; + /** parameter value */ + A_UINT32 param_value; +} wmi_fwtest_set_param_cmd_fixed_param; + +/* Expressed in 1 part in 1000 (permille) */ +#define WMI_ATF_DENOMINATION 1000 + +typedef struct { + /* + * TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_atf_peer_info + */ + A_UINT32 tlv_header; + wmi_mac_addr peer_macaddr; + A_UINT32 atf_units; /* Based on 1 part in 1000 (per mille) */ + A_UINT32 atf_groupid; /* Group Id of the peers for ATF SSID grouping */ + /* Peer congestion threshold for future use */ + A_UINT32 atf_units_reserved; +} wmi_atf_peer_info; + +typedef struct { + /* + * TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_peer_atf_request_fixed_param + */ + A_UINT32 tlv_header; + A_UINT32 num_peers; + /* + * Following this structure is the TLV: + * struct wmi_atf_peer_info peer_info[1]; + */ +} wmi_peer_atf_request_fixed_param; + +/* Equal distribution of ATF air time within an VDEV. */ +typedef struct { + /* + * TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_vdev_atf_request_fixed_param + */ + A_UINT32 tlv_header; + A_UINT32 vdev_id; + A_UINT32 peer_atf_units; /* Per peer ATF units (per mille). */ +} wmi_vdev_atf_request_fixed_param; + +typedef struct { + /* + * TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_pdev_get_ani_cck_config_cmd_fixed_param + */ + A_UINT32 tlv_header; + A_UINT32 mac_id; /* MAC ID */ + /** parameter */ + A_UINT32 param; +} wmi_pdev_get_ani_cck_config_cmd_fixed_param; + +typedef struct { + /* + * TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_pdev_get_ani_ofdm_config_cmd_fixed_param + */ + A_UINT32 tlv_header; + A_UINT32 mac_id; /* MAC ID */ + /** parameter */ + A_UINT32 param; +} wmi_pdev_get_ani_ofdm_config_cmd_fixed_param; + +typedef struct { + /* + * TLV tag and len; tag equals + * WMITLV_TAG_STRUC_WMI_QBOOST_CFG_CMD_fixed_param + */ + A_UINT32 tlv_header; + A_UINT32 vdev_id; + A_UINT32 qb_enable; + wmi_mac_addr peer_macaddr; +} WMI_QBOOST_CFG_CMD_fixed_param; + +#define WMI_INST_STATS_INVALID_RSSI 0 + +typedef struct { + /* + * TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_inst_rssi_stats_resp_fixed_param + */ + A_UINT32 tlv_header; + A_UINT32 iRSSI; /* dBm above the noise floor */ + /* peer MAC address */ + wmi_mac_addr peer_macaddr; +} wmi_inst_rssi_stats_resp_fixed_param; + +typedef struct { + /* + * TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_peer_cck_ofdm_rate_info + */ + A_UINT32 tlv_header; + A_UINT32 ratecode_legacy; /* Rate code for CCK OFDM */ +} wmi_peer_cck_ofdm_rate_info; + +typedef struct { + /* + * TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_peer_mcs_rate_info + */ + A_UINT32 tlv_header; + A_UINT32 ratecode_20; /* Rate code for 20MHz BW */ + A_UINT32 ratecode_40; /* Rate code for 40MHz BW */ + A_UINT32 ratecode_80; /* Rate code for 80MHz BW */ +} wmi_peer_mcs_rate_info; + +typedef struct { + /* + * TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_peer_ratecode_list_event_fixed_param + */ + A_UINT32 tlv_header; + wmi_mac_addr peer_macaddr; + A_UINT32 ratecount; /* Max Rate count for each mode */ + /* + * Following this structure are the TLV + * struct wmi_peer_cck_ofdm_rate_info; + * struct wmi_peer_mcs_rate_info; + */ +} wmi_peer_ratecode_list_event_fixed_param; + +typedef struct wmi_wds_addr_event { + /* + * TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_wds_addr_event_fixed_param + */ + A_UINT32 tlv_header; + A_UINT32 event_type[4]; + wmi_mac_addr peer_mac; + wmi_mac_addr dest_mac; +} wmi_wds_addr_event_fixed_param; + +typedef struct { + /* + * TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_peer_sta_ps_statechange_event_fixed_param + */ + A_UINT32 tlv_header; + wmi_mac_addr peer_macaddr; + A_UINT32 peer_ps_state; +} wmi_peer_sta_ps_statechange_event_fixed_param; + +/* WMI_PDEV_FIPS_EVENTID */ +typedef struct { + /* + * TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_pdev_fips_event_fixed_param + */ + A_UINT32 tlv_header; + A_UINT32 mac_id; /* MAC ID */ + /* Error status: 0 (no err), 1, or OPER_TIMEOUT */ + A_UINT32 error_status; + A_UINT32 data_len; /* Data length */ + /* + * Following this structure is the TLV: + * A_UINT32 data[1]; // Out Data (keep this in the end) + */ +} wmi_pdev_fips_event_fixed_param; + +typedef struct { + /* + * TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_pdev_channel_hopping_event_fixed_param + */ + A_UINT32 tlv_header; + A_UINT32 mac_id; /* MAC ID */ + /* Noise threshold iterations with high values */ + A_UINT32 noise_floor_report_iter; + /* Total noise threshold iterations */ + A_UINT32 noise_floor_total_iter; +} wmi_pdev_channel_hopping_event_fixed_param; + +enum { + WMI_PDEV_RESERVE_AST_ENTRY_OK, + WMI_PDEV_RESERVE_AST_ENTRY_HASH_COLLISION, + WMI_PDEV_RESERVE_AST_ENTRY_CROSSING_AXI_BOUNDARY, +}; + +typedef struct { + /* + * TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_pdev_get_tpc_cmd_fixed_param + */ + A_UINT32 tlv_header; + A_UINT32 mac_id; /* MAC ID */ + A_UINT32 rate_flags; + /** + * FLAG_ONE_CHAIN 0x001 - one chain mask + * FLAG_TWO_CHAIN 0x005 - two chain mask + * FLAG_THREE_CHAIN 0x007 - three chain mask + * FLAG_FOUR_CHAIN 0x00F - four chain mask + * FLAG_STBC 0x010 - STBC is set + * FLAG_40MHZ 0x020 + * FLAG_80MHZ 0x040 + * FLAG_160MHZ 0x080 + * FLAG_TXBF 0x0100 - Tx Bf enabled + * FLAG_RTSENA 0x0200 - RTS enabled + * FLAG_CTSENA 0x0400 - CTS enabled + * FLAG_LDPC 0x0800 - LDPC set + * FLAG_SERIES1 0x1000 - + * FLAG_SGI 0x2000 - Short gaurd interval + * FLAG_MU2 0x4000 - MU2 data + * FLAG_MU3 0x8000 - MU3 data + * */ + A_UINT32 nss; + /** + * NSS 0x0 - 0x3 + * */ + A_UINT32 preamble; + /** + * PREAM_OFDM - 0x0 + * PREAM_CCK - 0x1 + * PREAM_HT - 0x2 + * PREAM_VHT - 0x3 + * */ + A_UINT32 hw_rate; + /** + * *** HW_OFDM_RATE *** + * OFDM_48_MBPS - 0x0 + * OFDM_24_MBPS - 0x1 + * OFDM_12_MBPS - 0x2 + * OFDM_6_MBPS - 0x3 + * OFDM_54_MBPS - 0x4 + * OFDM_36_MBPS - 0x5 + * OFDM_18_MBPS - 0x6 + * OFDM_9_MBPS - 0x7 + * + * *** HW_CCK_RATE *** + * CCK_11_LONG_MBPS - 0x0 + * CCK_5_5_LONG_MBPS - 0x1 + * CCK_2_LONG_MBPS - 0x2 + * CCK_1_LONG_MBPS - 0x3 + * CCK_11_SHORT_MBPS - 0x4 + * CCK_5_5_SHORT_MBPS - 0x5 + * CCK_2_SHORT_MBPS - 0x6 + * + * *** HW_HT / VHT_RATE *** + * MCS 0x0 - 0x9 + * */ +} wmi_pdev_get_tpc_cmd_fixed_param; + +typedef struct { + /* + * TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_pdev_tpc_event_fixed_param + */ + A_UINT32 tlv_header; + A_UINT32 reserved0; /* for future need */ + /* + * Following this structure is the TLV: + * A_UINT32 tpc[1]; + */ +} wmi_pdev_tpc_event_fixed_param; + +typedef struct { + /* + * TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_pdev_nfcal_power_all_channels_event_fixed_param + */ + A_UINT32 tlv_header; + A_UINT32 mac_id; /* MAC ID */ + A_UINT32 nfdBr_len; + A_UINT32 nfdBm_len; + A_UINT32 freqNum_len; + /* + * Following this structure is the TLV: + * WMITLV_TAG_STRUC_wmi_pdev_nfcal_power_all_channels_nfdBr; + * WMITLV_TAG_STRUC_wmi_pdev_nfcal_power_all_channels_nfdBm; + * WMITLV_TAG_STRUC_wmi_pdev_nfcal_power_all_channels_freqNum; + */ +} wmi_pdev_nfcal_power_all_channels_event_fixed_param; + +typedef struct { + /* + * TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_pdev_nfcal_power_all_channels_nfdBr + */ + A_UINT32 tlv_header; + A_UINT32 nfdBr; +} wmi_pdev_nfcal_power_all_channels_nfdBr; + +typedef struct { + /* + * TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_pdev_nfcal_power_all_channels_nfdBm + */ + A_UINT32 tlv_header; + A_UINT32 nfdBm; +} wmi_pdev_nfcal_power_all_channels_nfdBm; + +typedef struct { + /* + * TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_pdev_nfcal_power_all_channels_freqNum + */ + A_UINT32 tlv_header; + A_UINT32 freqNum; +} wmi_pdev_nfcal_power_all_channels_freqNum; + +typedef struct { + /* + * TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_ani_cck_event_fixed_param + */ + A_UINT32 tlv_header; + A_UINT32 cck_level; +} wmi_ani_cck_event_fixed_param; + +typedef struct { + /* + * TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_ani_ofdm_event_fixed_param + */ + A_UINT32 tlv_header; + A_UINT32 ofdm_level; +} wmi_ani_ofdm_event_fixed_param; + /* ADD NEW DEFS HERE */ /***************************************************************************** diff --git a/target/inc/wmi_version.h b/target/inc/wmi_version.h index e08a9a69c8d3..d2a2f39765e3 100644 --- a/target/inc/wmi_version.h +++ b/target/inc/wmi_version.h @@ -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_ 196 +#define __WMI_REVISION_ 197 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work