diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index f9c8d9cd9c71..c301cc11be3f 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2016 The Linux Foundation. All rights reserved. + * Copyright (c) 2010-2017 The Linux Foundation. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -793,6 +793,8 @@ typedef enum { WMITLV_TAG_STRUC_wmi_vdev_add_mac_addr_to_rx_filter_status_event_fixed_param, WMITLV_TAG_STRUC_wmi_bpf_set_vdev_active_mode_cmd_fixed_param, WMITLV_TAG_STRUC_wmi_hw_data_filter_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_connected_nlo_bss_band_rssi_pref, + WMITLV_TAG_STRUC_wmi_peer_oper_mode_change_event_fixed_param, } WMITLV_TAG_ID; /* @@ -1287,6 +1289,7 @@ typedef enum { OP(WMI_11D_NEW_COUNTRY_EVENTID) \ OP(WMI_RADIO_CHAN_STATS_EVENTID) \ OP(WMI_VDEV_ADD_MAC_ADDR_TO_RX_FILTER_STATUS_EVENTID) \ + OP(WMI_PEER_OPER_MODE_CHANGE_EVENTID) \ /* add new EVT_LIST elements above this line */ @@ -1464,7 +1467,7 @@ WMITLV_CREATE_PARAM_STRUC(WMI_ROAM_SET_MBO_PARAM_CMDID); /* Roam PER configure cmd */ #define WMITLV_TABLE_WMI_ROAM_PER_CONFIG_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_roam_per_config_fixed_param, wmi_roam_per_config_fixed_param, fixed_param, WMITLV_SIZE_FIX) - + WMITLV_CREATE_PARAM_STRUC(WMI_ROAM_PER_CONFIG_CMDID); #define WMITLV_TABLE_WMI_VDEV_PLMREQ_START_CMDID(id,op,buf,len) \ @@ -1871,7 +1874,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_REQUEST_LINK_STATS_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, nlo_channel_prediction_cfg, channel_prediction_param, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_enlo_candidate_score_param, enlo_candidate_score_params, candidate_score_params, WMITLV_SIZE_FIX)\ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_vendor_oui, vendor_oui, WMITLV_SIZE_VAR) \ - WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_connected_nlo_rssi_params, connected_nlo_rssi_params, cnlo_rssi_params, WMITLV_SIZE_FIX) + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_connected_nlo_rssi_params, connected_nlo_rssi_params, cnlo_rssi_params, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, connected_nlo_bss_band_rssi_pref, cnlo_bss_band_rssi_pref, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_NETWORK_LIST_OFFLOAD_CONFIG_CMDID); /* Passpoint list offload config Cmd */ @@ -3718,6 +3722,10 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PEER_ANTDIV_INFO_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_peer_tx_fail_cnt_thr_event_fixed_param, wmi_peer_tx_fail_cnt_thr_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_PEER_TX_FAIL_CNT_THR_EVENTID); +#define WMITLV_TABLE_WMI_PEER_OPER_MODE_CHANGE_EVENTID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_peer_oper_mode_change_event_fixed_param, wmi_peer_oper_mode_change_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_PEER_OPER_MODE_CHANGE_EVENTID); + /* DFS radar Event */ #define WMITLV_TABLE_WMI_DFS_RADAR_EVENTID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_dfs_radar_event_fixed_param, wmi_dfs_radar_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 625f06cceebb..c35bcf4c7921 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -462,7 +462,8 @@ typedef enum { WMI_PEER_SET_RX_BLOCKSIZE_CMDID, /** request peer antdiv info from FW. FW shall respond with PEER_ANTDIV_INFO_EVENTID */ WMI_PEER_ANTDIV_INFO_REQ_CMDID, - + /** Peer operating mode change indication sent to host to update stats */ + WMI_PEER_OPER_MODE_CHANGE_EVENTID, /* beacon/management specific commands */ @@ -8082,6 +8083,10 @@ typedef struct { * and to look for a matching AP profile from a list of * configured profiles. */ +/* flags for roam_scan_mode_cmd + * indicate the status (success/fail) of wmi_roam_scan_mode cmd through WMI_ROAM_EVENTID */ +#define WMI_ROAM_SCAN_MODE_FLAG_REPORT_STATUS 0x1 + /** * WMI_ROAM_SCAN_MODE: Set Roam Scan mode * the roam scan mode is one of the periodic, rssi change, both, none. @@ -8096,6 +8101,7 @@ typedef struct { A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_scan_mode_fixed_param */ A_UINT32 roam_scan_mode; A_UINT32 vdev_id; + A_UINT32 flags; /* see WMI_ROAM_SCAN_MODE_FLAG defs */ } wmi_roam_scan_mode_fixed_param; #define WMI_ROAM_SCAN_MODE_NONE 0x0 @@ -8533,6 +8539,7 @@ typedef struct { * WMI_ROAM_REASON_HO_FAILED no matter WMI_ROAM_INVOKE_CMDID is called or not. */ #define WMI_ROAM_REASON_INVOKE_ROAM_FAIL 0x6 +#define WMI_ROAM_REASON_RSO_STATUS 0x7 /* reserved up through 0xF */ /* subnet status: bits 4-5 */ @@ -8558,9 +8565,12 @@ typedef enum WMI_ROAM_SUBNET_CHANGE_STATUS_SHIFT) /* roaming notification */ -#define WMI_ROAM_NOTIF_INVALID 0x0 /** invalid notification. Do not interpret notif field */ -#define WMI_ROAM_NOTIF_ROAM_START 0x1 /** indicate that roaming is started. sent only in non WOW state */ -#define WMI_ROAM_NOTIF_ROAM_ABORT 0x2 /** indicate that roaming is aborted. sent only in non WOW state */ +#define WMI_ROAM_NOTIF_INVALID 0x0 /** invalid notification. Do not interpret notif field */ +#define WMI_ROAM_NOTIF_ROAM_START 0x1 /** indicate that roaming is started. sent only in non WOW state */ +#define WMI_ROAM_NOTIF_ROAM_ABORT 0x2 /** indicate that roaming is aborted. sent only in non WOW state */ +#define WMI_ROAM_NOTIF_ROAM_REASSOC 0x3 /** indicate that reassociation is done. sent only in non WOW state */ +#define WMI_ROAM_NOTIF_SCAN_MODE_SUCCESS 0x4 /** indicate that roaming scan mode is successful */ +#define WMI_ROAM_NOTIF_SCAN_MODE_FAIL 0x5 /** indicate that roaming scan mode is failed due to internal roaming state */ /**whenever RIC request information change, host driver should pass all ric related information to firmware (now only support tsepc) * Once, 11r roaming happens, firmware can generate RIC request in reassoc request based on these informations @@ -10030,6 +10040,14 @@ typedef struct enlo_candidate_score_params_t { A_UINT32 band5GHz_bonus; /* 5GHz RSSI score bonus (applied to all 5GHz networks) */ } enlo_candidate_score_params; +typedef struct connected_nlo_bss_band_rssi_pref_t { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_connected_nlo_bss_band_rssi_pref */ + /** band which needs to get preference over other band - see wmi_set_vdev_ie_band enum */ + A_UINT32 band; + /* Amount of RSSI preference (in dB) that can be given to band (mentioned above) over other band */ + A_INT32 rssi_pref; +} connected_nlo_bss_band_rssi_pref; + typedef struct connected_nlo_rssi_params_t { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_connected_nlo_rssi_params */ /* Relative rssi threshold (in dB) by which new BSS should have better rssi than @@ -10064,13 +10082,16 @@ typedef struct wmi_nlo_config { A_UINT32 ie_bitmap[WMI_IE_BITMAP_SIZE]; /** Number of vendor OUIs. In the TLV vendor_oui[] **/ A_UINT32 num_vendor_oui; + /** Number of connected NLO band preferences **/ + A_UINT32 num_cnlo_band_pref; /* The TLVs will follow. * nlo_configured_parameters nlo_list[]; - * A_UINT32 channel_list[]; + * A_UINT32 channel_list[num_of_channels]; * nlo_channel_prediction_cfg ch_prediction_cfg; * enlo_candidate_score_params candidate_score_params; - * wmi_vendor_oui vendor_oui[]; + * wmi_vendor_oui vendor_oui[num_vendor_oui]; * connected_nlo_rssi_params cnlo_rssi_params; + * connected_nlo_bss_band_rssi_pref cnlo_bss_band_rssi_pref[num_cnlo_band_pref]; */ } wmi_nlo_config_cmd_fixed_param; @@ -10646,7 +10667,10 @@ typedef struct { A_UINT32 cwmin; A_UINT32 cwmax; A_UINT32 aifs; - A_UINT32 txoplimit; + union { + A_UINT32 txoplimit; + A_UINT32 mu_edca_timer; + }; A_UINT32 acm; A_UINT32 no_ack; } wmi_wmm_vparams; @@ -11776,6 +11800,35 @@ typedef struct { A_INT32 chain_rssi[8]; } wmi_peer_antdiv_info; +typedef enum { + WMI_PEER_IND_SMPS = 0x0, /* spatial multiplexing power save */ + WMI_PEER_IND_OMN, /* operating mode notification */ + WMI_PEER_IND_OMI, /* operating mode indication */ +} WMI_PEER_OPER_MODE_IND; + +typedef struct { + /** TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_peer_oper_mode_change */ + A_UINT32 tlv_header; + /** mac addr of the peer */ + wmi_mac_addr peer_mac_address; + /** Peer type indication WMI_PEER_OPER_MODE_IND. */ + A_UINT32 ind_type; + /** new_rxnss valid for all peer_operating mode ind. */ + A_UINT32 new_rxnss; + /** new_bw valid for peer_operating mode ind. OMN/OMI + * value of this bw is as per 11ax/ac standard: + * 0 = 20MHz,1 = 40MHz, 2= 80MHz, 3 = 160MHz + */ + A_UINT32 new_bw; + /** new_txnss valid for peer_operating mode ind. OMI */ + A_UINT32 new_txnss; + /** new_disablemu: disable mu mode + * valid for peer_operating mode ind. OMI + */ + A_UINT32 new_disablemu; +} wmi_peer_oper_mode_change_event_fixed_param; + /** FW response when tx failure count has reached threshold * for a peer */ typedef struct { diff --git a/fw/wmi_version.h b/fw/wmi_version.h index e33f9ad4d16d..b4ef1dafa556 100644 --- a/fw/wmi_version.h +++ b/fw/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_ 338 +#define __WMI_REVISION_ 341 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work