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

Commit cba45acf authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "ath10k: converge TLV and HL1.0 params and API"

parents 8e60b717 9133dafd
Loading
Loading
Loading
Loading
+1 −13
Original line number Diff line number Diff line
@@ -1302,7 +1302,7 @@ static int ath10k_core_fetch_firmware_files(struct ath10k *ar)

	if (!ar->is_bmi && QCA_REV_WCN3990(ar)) {
		fw_file = &ar->normal_mode_fw.fw_file;
		fw_file->wmi_op_version = ATH10K_FW_WMI_OP_VERSION_HL_1_0;
		fw_file->wmi_op_version = ATH10K_FW_WMI_OP_VERSION_TLV;
		fw_file->htt_op_version = ATH10K_FW_HTT_OP_VERSION_TLV;
		return 0;
	}
@@ -1588,16 +1588,6 @@ static void ath10k_core_restart(struct work_struct *work)
	mutex_unlock(&ar->conf_mutex);
}

/* WAR: WCN3990 fw loading is done by PIL, assign WMI/HTT version */
static inline void init_fw_param(struct ath10k *ar,
				 struct ath10k_fw_file *fw_file)
{
	if (QCA_REV_WCN3990(ar)) {
		fw_file->wmi_op_version = ATH10K_FW_WMI_OP_VERSION_HL_1_0;
		fw_file->htt_op_version = ATH10K_FW_HTT_OP_VERSION_TLV;
	}
}

static int ath10k_core_init_firmware_features(struct ath10k *ar)
{
	struct ath10k_fw_file *fw_file = &ar->normal_mode_fw.fw_file;
@@ -1704,7 +1694,6 @@ static int ath10k_core_init_firmware_features(struct ath10k *ar)
		ar->max_spatial_stream = WMI_MAX_SPATIAL_STREAM;
		break;
	case ATH10K_FW_WMI_OP_VERSION_TLV:
	case ATH10K_FW_WMI_OP_VERSION_HL_1_0:
		ar->max_num_peers = TARGET_TLV_NUM_PEERS;
		ar->max_num_stations = TARGET_TLV_NUM_STATIONS;
		ar->max_num_vdevs = TARGET_TLV_NUM_VDEVS;
@@ -1751,7 +1740,6 @@ static int ath10k_core_init_firmware_features(struct ath10k *ar)
			fw_file->htt_op_version = ATH10K_FW_HTT_OP_VERSION_10_1;
			break;
		case ATH10K_FW_WMI_OP_VERSION_TLV:
		case ATH10K_FW_WMI_OP_VERSION_HL_1_0:
			fw_file->htt_op_version = ATH10K_FW_HTT_OP_VERSION_TLV;
			break;
		case ATH10K_FW_WMI_OP_VERSION_10_4:
+0 −1
Original line number Diff line number Diff line
@@ -188,7 +188,6 @@ enum ath10k_fw_wmi_op_version {
	ATH10K_FW_WMI_OP_VERSION_TLV = 4,
	ATH10K_FW_WMI_OP_VERSION_10_2_4 = 5,
	ATH10K_FW_WMI_OP_VERSION_10_4 = 6,
	ATH10K_FW_WMI_OP_VERSION_HL_1_0 = 7,

	/* keep last */
	ATH10K_FW_WMI_OP_VERSION_MAX,
+0 −1
Original line number Diff line number Diff line
@@ -7959,7 +7959,6 @@ int ath10k_mac_register(struct ath10k *ar)
		ar->hw->wiphy->interface_modes |= BIT(NL80211_IFTYPE_ADHOC);
		break;
	case ATH10K_FW_WMI_OP_VERSION_TLV:
	case ATH10K_FW_WMI_OP_VERSION_HL_1_0:
		if (test_bit(WMI_SERVICE_ADAPTIVE_OCS, ar->wmi.svc_map)) {
			ar->hw->wiphy->iface_combinations =
				ath10k_tlv_qcs_if_comb;
+2 −76
Original line number Diff line number Diff line
@@ -3637,7 +3637,7 @@ static const struct wmi_ops wmi_tlv_ops = {
	.gen_pdev_set_wmm = ath10k_wmi_tlv_op_gen_pdev_set_wmm,
	.gen_request_stats = ath10k_wmi_tlv_op_gen_request_stats,
	.gen_force_fw_hang = ath10k_wmi_tlv_op_gen_force_fw_hang,
	/* .gen_mgmt_tx = not implemented; HTT is used */
	.gen_mgmt_tx =  ath10k_wmi_tlv_op_gen_mgmt_tx,
	.gen_dbglog_cfg = ath10k_wmi_tlv_op_gen_dbglog_cfg,
	.gen_pktlog_enable = ath10k_wmi_tlv_op_gen_pktlog_enable,
	.gen_pktlog_disable = ath10k_wmi_tlv_op_gen_pktlog_disable,
@@ -3663,6 +3663,7 @@ static const struct wmi_ops wmi_tlv_ops = {
	.fw_stats_fill = ath10k_wmi_main_op_fw_stats_fill,
	.get_vdev_subtype = ath10k_wmi_op_get_vdev_subtype,
	.gen_echo = ath10k_wmi_tlv_op_gen_echo,
	.gen_set_pdev_mac_addr = ath10k_wmi_tlv_op_gen_set_base_mac_addr,
};

static const struct wmi_peer_flags_map wmi_tlv_peer_flags_map = {
@@ -3683,81 +3684,6 @@ static const struct wmi_peer_flags_map wmi_tlv_peer_flags_map = {
	.pmf = WMI_TLV_PEER_PMF,
};

static const struct wmi_ops wmi_hl_1_0_ops = {
	.rx = ath10k_wmi_tlv_op_rx,
	.map_svc = wmi_hl_1_0_svc_map,
	.pull_scan = ath10k_wmi_tlv_op_pull_scan_ev,
	.pull_mgmt_rx = ath10k_wmi_tlv_op_pull_mgmt_rx_ev,
	.pull_ch_info = ath10k_wmi_tlv_op_pull_ch_info_ev,
	.pull_vdev_start = ath10k_wmi_tlv_op_pull_vdev_start_ev,
	.pull_peer_kick = ath10k_wmi_tlv_op_pull_peer_kick_ev,
	.pull_swba = ath10k_wmi_tlv_op_pull_swba_ev,
	.pull_phyerr_hdr = ath10k_wmi_tlv_op_pull_phyerr_ev_hdr,
	.pull_phyerr = ath10k_wmi_op_pull_phyerr_ev,
	.pull_svc_rdy = ath10k_wmi_tlv_op_pull_svc_rdy_ev,
	.pull_rdy = ath10k_wmi_tlv_op_pull_rdy_ev,
	.pull_fw_stats = ath10k_wmi_tlv_op_pull_fw_stats,
	.pull_roam_ev = ath10k_wmi_tlv_op_pull_roam_ev,
	.pull_wow_event = ath10k_wmi_tlv_op_pull_wow_ev,
	.get_txbf_conf_scheme = ath10k_wmi_tlv_txbf_conf_scheme,
	.gen_pdev_suspend = ath10k_wmi_tlv_op_gen_pdev_suspend,
	.gen_pdev_resume = ath10k_wmi_tlv_op_gen_pdev_resume,
	.gen_pdev_set_rd = ath10k_wmi_tlv_op_gen_pdev_set_rd,
	.gen_pdev_set_param = ath10k_wmi_tlv_op_gen_pdev_set_param,
	.gen_init = ath10k_wmi_tlv_op_gen_init,
	.gen_start_scan = ath10k_wmi_tlv_op_gen_start_scan,
	.gen_stop_scan = ath10k_wmi_tlv_op_gen_stop_scan,
	.gen_vdev_create = ath10k_wmi_tlv_op_gen_vdev_create,
	.gen_vdev_delete = ath10k_wmi_tlv_op_gen_vdev_delete,
	.gen_vdev_start = ath10k_wmi_tlv_op_gen_vdev_start,
	.gen_vdev_stop = ath10k_wmi_tlv_op_gen_vdev_stop,
	.gen_vdev_up = ath10k_wmi_tlv_op_gen_vdev_up,
	.gen_vdev_down = ath10k_wmi_tlv_op_gen_vdev_down,
	.gen_vdev_set_param = ath10k_wmi_tlv_op_gen_vdev_set_param,
	.gen_vdev_install_key = ath10k_wmi_tlv_op_gen_vdev_install_key,
	.gen_vdev_wmm_conf = ath10k_wmi_tlv_op_gen_vdev_wmm_conf,
	.gen_peer_create = ath10k_wmi_tlv_op_gen_peer_create,
	.gen_peer_delete = ath10k_wmi_tlv_op_gen_peer_delete,
	.gen_peer_flush = ath10k_wmi_tlv_op_gen_peer_flush,
	.gen_peer_set_param = ath10k_wmi_tlv_op_gen_peer_set_param,
	.gen_peer_assoc = ath10k_wmi_tlv_op_gen_peer_assoc,
	.gen_set_psmode = ath10k_wmi_tlv_op_gen_set_psmode,
	.gen_set_sta_ps = ath10k_wmi_tlv_op_gen_set_sta_ps,
	.gen_set_ap_ps = ath10k_wmi_tlv_op_gen_set_ap_ps,
	.gen_scan_chan_list = ath10k_wmi_tlv_op_gen_scan_chan_list,
	.gen_beacon_dma = ath10k_wmi_tlv_op_gen_beacon_dma,
	.gen_pdev_set_wmm = ath10k_wmi_tlv_op_gen_pdev_set_wmm,
	.gen_request_stats = ath10k_wmi_tlv_op_gen_request_stats,
	.gen_force_fw_hang = ath10k_wmi_tlv_op_gen_force_fw_hang,
	.gen_mgmt_tx =  ath10k_wmi_tlv_op_gen_mgmt_tx,
	.gen_dbglog_cfg = ath10k_wmi_tlv_op_gen_dbglog_cfg,
	.gen_pktlog_enable = ath10k_wmi_tlv_op_gen_pktlog_enable,
	.gen_bcn_tmpl = ath10k_wmi_tlv_op_gen_bcn_tmpl,
	.gen_prb_tmpl = ath10k_wmi_tlv_op_gen_prb_tmpl,
	.gen_p2p_go_bcn_ie = ath10k_wmi_tlv_op_gen_p2p_go_bcn_ie,
	.gen_vdev_sta_uapsd = ath10k_wmi_tlv_op_gen_vdev_sta_uapsd,
	.gen_sta_keepalive = ath10k_wmi_tlv_op_gen_sta_keepalive,
	.gen_wow_enable = ath10k_wmi_tlv_op_gen_wow_enable,
	.gen_wow_add_wakeup_event = ath10k_wmi_tlv_op_gen_wow_add_wakeup_event,
	.gen_wow_host_wakeup_ind = ath10k_wmi_tlv_gen_wow_host_wakeup_ind,
	.gen_wow_add_pattern = ath10k_wmi_tlv_op_gen_wow_add_pattern,
	.gen_wow_del_pattern = ath10k_wmi_tlv_op_gen_wow_del_pattern,
	.gen_update_fw_tdls_state = ath10k_wmi_tlv_op_gen_update_fw_tdls_state,
	.gen_tdls_peer_update = ath10k_wmi_tlv_op_gen_tdls_peer_update,
	.gen_adaptive_qcs = ath10k_wmi_tlv_op_gen_adaptive_qcs,
	.fw_stats_fill = ath10k_wmi_main_op_fw_stats_fill,
	.gen_set_pdev_mac_addr = ath10k_wmi_tlv_op_gen_set_base_mac_addr,
};

void ath10k_wmi_hl_1_0_attach(struct ath10k *ar)
{
	ar->wmi.cmd = &wmi_tlv_cmd_map;
	ar->wmi.vdev_param = &wmi_tlv_vdev_param_map;
	ar->wmi.pdev_param = &wmi_tlv_pdev_param_map;
	ar->wmi.ops = &wmi_hl_1_0_ops;
	ar->wmi.peer_flags = &wmi_tlv_peer_flags_map;
}

/* TLV init */
/************/

+47 −179
Original line number Diff line number Diff line
@@ -969,125 +969,50 @@ enum wmi_tlv_service {
	WMI_TLV_SERVICE_STA_RX_IPA_OFFLOAD_SUPPORT,
	WMI_TLV_SERVICE_MDNS_OFFLOAD,
	WMI_TLV_SERVICE_SAP_AUTH_OFFLOAD,
};

enum wmi_hl_10_service {
	WMI_HL_10_SERVICE_BEACON_OFFLOAD = 0,
	WMI_HL_10_SERVICE_SCAN_OFFLOAD,
	WMI_HL_10_SERVICE_ROAM_SCAN_OFFLOAD,
	WMI_HL_10_SERVICE_BCN_MISS_OFFLOAD,
	WMI_HL_10_SERVICE_STA_PWRSAVE,
	WMI_HL_10_SERVICE_STA_ADVANCED_PWRSAVE,
	WMI_HL_10_SERVICE_AP_UAPSD,
	WMI_HL_10_SERVICE_AP_DFS,
	WMI_HL_10_SERVICE_11AC,
	WMI_HL_10_SERVICE_BLOCKACK,
	WMI_HL_10_SERVICE_PHYERR,
	WMI_HL_10_SERVICE_BCN_FILTER,
	WMI_HL_10_SERVICE_RTT,
	WMI_HL_10_SERVICE_WOW,
	WMI_HL_10_SERVICE_RATECTRL_CACHE,
	WMI_HL_10_SERVICE_IRAM_TIDS,
	WMI_HL_10_SERVICE_ARPNS_OFFLOAD,
	WMI_HL_10_SERVICE_NLO,
	WMI_HL_10_SERVICE_GTK_OFFLOAD,
	WMI_HL_10_SERVICE_SCAN_SCH,
	WMI_HL_10_SERVICE_CSA_OFFLOAD,
	WMI_HL_10_SERVICE_CHATTER,
	WMI_HL_10_SERVICE_COEX_FREQAVOID,
	WMI_HL_10_SERVICE_PACKET_POWER_SAVE,
	WMI_HL_10_SERVICE_FORCE_FW_HANG,
	WMI_HL_10_SERVICE_GPIO,
	WMI_HL_10_SERVICE_STA_DTIM_PS_MODULATED_DTIM,
	WMI_HL_10_SERVICE_STA_UAPSD_BASIC_AUTO_TRIG,
	WMI_HL_10_SERVICE_STA_UAPSD_VAR_AUTO_TRIG,
	WMI_HL_10_SERVICE_STA_KEEP_ALIVE,
	WMI_HL_10_SERVICE_TX_ENCAP,
	WMI_HL_10_SERVICE_AP_PS_DETECT_OUT_OF_SYNC,
	WMI_HL_10_SERVICE_EARLY_RX,
	WMI_HL_10_SERVICE_STA_SMPS,
	WMI_HL_10_SERVICE_FWTEST,
	WMI_HL_10_SERVICE_STA_WMMAC,
	WMI_HL_10_SERVICE_TDLS,
	WMI_HL_10_SERVICE_BURST,
	WMI_HL_10_SERVICE_MCC_BCN_INTERVAL_CHANGE,
	WMI_HL_10_SERVICE_ADAPTIVE_OCS,
	WMI_HL_10_SERVICE_BA_SSN_SUPPORT,
	WMI_HL_10_SERVICE_FILTER_IPSEC_NATKEEPALIVE,
	WMI_HL_10_SERVICE_WLAN_HB,
	WMI_HL_10_SERVICE_LTE_ANT_SHARE_SUPPORT,
	WMI_HL_10_SERVICE_BATCH_SCAN,
	WMI_HL_10_SERVICE_QPOWER,
	WMI_HL_10_SERVICE_PLMREQ,
	WMI_HL_10_SERVICE_THERMAL_MGMT,
	WMI_HL_10_SERVICE_RMC,
	WMI_HL_10_SERVICE_MHF_OFFLOAD,
	WMI_HL_10_SERVICE_COEX_SAR,
	WMI_HL_10_SERVICE_BCN_TXRATE_OVERRIDE,
	WMI_HL_10_SERVICE_NAN,
	WMI_HL_10_SERVICE_L1SS_STAT,
	WMI_HL_10_SERVICE_ESTIMATE_LINKSPEED,
	WMI_HL_10_SERVICE_OBSS_SCAN,
	WMI_HL_10_SERVICE_TDLS_OFFCHAN,
	WMI_HL_10_SERVICE_TDLS_UAPSD_BUFFER_STA,
	WMI_HL_10_SERVICE_TDLS_UAPSD_SLEEP_STA,
	WMI_HL_10_SERVICE_IBSS_PWRSAVE,
	WMI_HL_10_SERVICE_LPASS,
	WMI_HL_10_SERVICE_EXTSCAN,
	WMI_HL_10_SERVICE_D0WOW,
	WMI_HL_10_SERVICE_HSOFFLOAD,
	WMI_HL_10_SERVICE_ROAM_HO_OFFLOAD,
	WMI_HL_10_SERVICE_RX_FULL_REORDER,
	WMI_HL_10_SERVICE_DHCP_OFFLOAD,
	WMI_HL_10_SERVICE_STA_RX_IPA_OFFLOAD_SUPPORT,
	WMI_HL_10_SERVICE_MDNS_OFFLOAD,
	WMI_HL_10_SERVICE_SAP_AUTH_OFFLOAD,
	WMI_HL_10_SERVICE_DUAL_BAND_SIMULTANEOUS_SUPPORT,
	WMI_HL_10_SERVICE_OCB,
	WMI_HL_10_SERVICE_AP_ARPNS_OFFLOAD,
	WMI_HL_10_SERVICE_PER_BAND_CHAINMASK_SUPPORT,
	WMI_HL_10_SERVICE_PACKET_FILTER_OFFLOAD,
	WMI_HL_10_SERVICE_MGMT_TX_HTT,
	WMI_HL_10_SERVICE_MGMT_TX_WMI,
	WMI_HL_10_SERVICE_EXT_MSG,
	WMI_HL_10_SERVICE_MAWC,
	WMI_HL_10_SERVICE_PEER_ASSOC_CONF,
	WMI_HL_10_SERVICE_EGAP,
	WMI_HL_10_SERVICE_STA_PMF_OFFLOAD,
	WMI_HL_10_SERVICE_UNIFIED_WOW_CAPABILITY,
	WMI_HL_10_SERVICE_ENHANCED_PROXY_STA,
	WMI_HL_10_SERVICE_ATF,
	WMI_HL_10_SERVICE_COEX_GPIO,
	WMI_HL_10_SERVICE_AUX_SPECTRAL_INTF,
	WMI_HL_10_SERVICE_AUX_CHAN_LOAD_INTF,
	WMI_HL_10_SERVICE_BSS_CHANNEL_INFO_64,
	WMI_HL_10_SERVICE_ENTERPRISE_MESH,
	WMI_HL_10_SERVICE_RESTRT_CHNL_SUPPORT,
	WMI_HL_10_SERVICE_BPF_OFFLOAD,
	WMI_HL_10_SERVICE_SYNC_DELETE_CMDS,
	WMI_HL_10_SERVICE_SMART_ANTENNA_SW_SUPPORT,
	WMI_HL_10_SERVICE_SMART_ANTENNA_HW_SUPPORT,
	WMI_HL_10_SERVICE_RATECTRL_LIMIT_MAX_MIN_RATES,
	WMI_HL_10_SERVICE_NAN_DATA,
	WMI_HL_10_SERVICE_NAN_RTT,
	WMI_HL_10_SERVICE_11AX,
	WMI_HL_10_SERVICE_DEPRECATED_REPLACE,
	WMI_HL_10_SERVICE_TDLS_CONN_TRACKER_IN_HOST_MODE,
	WMI_HL_10_SERVICE_ENHANCED_MCAST_FILTER,
	WMI_HL_10_SERVICE_PERIODIC_CHAN_STAT_SUPPORT,
	WMI_HL_10_SERVICE_MESH_11S,
	WMI_HL_10_SERVICE_HALF_RATE_QUARTER_RATE_SUPPORT,
	WMI_HL_10_SERVICE_VDEV_RX_FILTER,
	WMI_HL_10_SERVICE_P2P_LISTEN_OFFLOAD_SUPPORT,
	WMI_HL_10_SERVICE_MARK_FIRST_WAKEUP_PACKET,
	WMI_HL_10_SERVICE_MULTIPLE_MCAST_FILTER_SET,
	WMI_HL_10_SERVICE_HOST_MANAGED_RX_REORDER,
	WMI_HL_10_SERVICE_FLASH_RDWR_SUPPORT,
	WMI_HL_10_SERVICE_WLAN_STATS_REPORT,
	WMI_HL_10_SERVICE_TX_MSDU_ID_NEW_PARTITION_SUPPORT,
	WMI_HL_10_SERVICE_DFS_PHYERR_OFFLOAD,
	WMI_HL_10_MAX_SERVICE = 128,
	WMI_HL_10_MAX_EXT_SERVICE
	WMI_TLV_SERVICE_DUAL_BAND_SIMULTANEOUS_SUPPORT,
	WMI_TLV_SERVICE_OCB,
	WMI_TLV_SERVICE_AP_ARPNS_OFFLOAD,
	WMI_TLV_SERVICE_PER_BAND_CHAINMASK_SUPPORT,
	WMI_TLV_SERVICE_PACKET_FILTER_OFFLOAD,
	WMI_TLV_SERVICE_MGMT_TX_HTT,
	WMI_TLV_SERVICE_MGMT_TX_WMI,
	WMI_TLV_SERVICE_EXT_MSG,
	WMI_TLV_SERVICE_MAWC,
	WMI_TLV_SERVICE_PEER_ASSOC_CONF,
	WMI_TLV_SERVICE_EGAP,
	WMI_TLV_SERVICE_STA_PMF_OFFLOAD,
	WMI_TLV_SERVICE_UNIFIED_WOW_CAPABILITY,
	WMI_TLV_SERVICE_ENHANCED_PROXY_STA,
	WMI_TLV_SERVICE_ATF,
	WMI_TLV_SERVICE_COEX_GPIO,
	WMI_TLV_SERVICE_AUX_SPECTRAL_INTF,
	WMI_TLV_SERVICE_AUX_CHAN_LOAD_INTF,
	WMI_TLV_SERVICE_BSS_CHANNEL_INFO_64,
	WMI_TLV_SERVICE_ENTERPRISE_MESH,
	WMI_TLV_SERVICE_RESTRT_CHNL_SUPPORT,
	WMI_TLV_SERVICE_BPF_OFFLOAD,
	WMI_TLV_SERVICE_SYNC_DELETE_CMDS,
	WMI_TLV_SERVICE_SMART_ANTENNA_SW_SUPPORT,
	WMI_TLV_SERVICE_SMART_ANTENNA_HW_SUPPORT,
	WMI_TLV_SERVICE_RATECTRL_LIMIT_MAX_MIN_RATES,
	WMI_TLV_SERVICE_NAN_DATA,
	WMI_TLV_SERVICE_NAN_RTT,
	WMI_TLV_SERVICE_11AX,
	WMI_TLV_SERVICE_DEPRECATED_REPLACE,
	WMI_TLV_SERVICE_TDLS_CONN_TRACKER_IN_HOST_MODE,
	WMI_TLV_SERVICE_ENHANCED_MCAST_FILTER,
	WMI_TLV_SERVICE_PERIODIC_CHAN_STAT_SUPPORT,
	WMI_TLV_SERVICE_MESH_11S,
	WMI_TLV_SERVICE_HALF_RATE_QUARTER_RATE_SUPPORT,
	WMI_TLV_SERVICE_VDEV_RX_FILTER,
	WMI_TLV_SERVICE_P2P_LISTEN_OFFLOAD_SUPPORT,
	WMI_TLV_SERVICE_MARK_FIRST_WAKEUP_PACKET,
	WMI_TLV_SERVICE_MULTIPLE_MCAST_FILTER_SET,
	WMI_TLV_SERVICE_HOST_MANAGED_RX_REORDER,
	WMI_TLV_SERVICE_FLASH_RDWR_SUPPORT,
	WMI_TLV_SERVICE_WLAN_STATS_REPORT,
	WMI_TLV_SERVICE_TX_MSDU_ID_NEW_PARTITION_SUPPORT,
	WMI_TLV_SERVICE_DFS_PHYERR_OFFLOAD,
};

#define WMI_SERVICE_IS_ENABLED(wmi_svc_bmap, svc_id, len) \
@@ -1101,65 +1026,6 @@ enum wmi_hl_10_service {
			__set_bit(y, out); \
	} while (0)

static inline void
wmi_hl_1_0_svc_map(const __le32 *in, unsigned long *out, size_t len)
{
	SVCMAP(WMI_HL_10_SERVICE_BEACON_OFFLOAD,
	       WMI_SERVICE_BEACON_OFFLOAD, len);
	SVCMAP(WMI_HL_10_SERVICE_SCAN_OFFLOAD,
	       WMI_SERVICE_SCAN_OFFLOAD, len);
	SVCMAP(WMI_HL_10_SERVICE_ROAM_SCAN_OFFLOAD,
	       WMI_SERVICE_ROAM_SCAN_OFFLOAD, len);
	SVCMAP(WMI_HL_10_SERVICE_BCN_MISS_OFFLOAD,
	       WMI_SERVICE_BCN_MISS_OFFLOAD, len);
	SVCMAP(WMI_HL_10_SERVICE_STA_PWRSAVE,
	       WMI_SERVICE_STA_PWRSAVE, len);
	SVCMAP(WMI_HL_10_SERVICE_STA_ADVANCED_PWRSAVE,
	       WMI_SERVICE_STA_ADVANCED_PWRSAVE, len);
	SVCMAP(WMI_HL_10_SERVICE_AP_UAPSD,
	       WMI_SERVICE_AP_UAPSD, len);
	SVCMAP(WMI_HL_10_SERVICE_AP_DFS,
	       WMI_SERVICE_AP_DFS, len);
	SVCMAP(WMI_HL_10_SERVICE_11AC,
	       WMI_SERVICE_11AC, len);
	SVCMAP(WMI_HL_10_SERVICE_BLOCKACK,
	       WMI_SERVICE_BLOCKACK, len);
	SVCMAP(WMI_HL_10_SERVICE_PHYERR,
	       WMI_SERVICE_PHYERR, len);
	SVCMAP(WMI_HL_10_SERVICE_BCN_FILTER,
	       WMI_SERVICE_BCN_FILTER, len);
	SVCMAP(WMI_HL_10_SERVICE_RTT,
	       WMI_SERVICE_RTT, len);
	SVCMAP(WMI_HL_10_SERVICE_WOW,
	       WMI_SERVICE_WOW, len);
	SVCMAP(WMI_HL_10_SERVICE_RATECTRL_CACHE,
	       WMI_SERVICE_RATECTRL_CACHE, len);
	SVCMAP(WMI_HL_10_SERVICE_IRAM_TIDS,
	       WMI_SERVICE_IRAM_TIDS, len);
	SVCMAP(WMI_HL_10_SERVICE_ARPNS_OFFLOAD,
	       WMI_SERVICE_ARPNS_OFFLOAD, len);
	SVCMAP(WMI_HL_10_SERVICE_NLO,
	       WMI_SERVICE_NLO, len);
	SVCMAP(WMI_HL_10_SERVICE_GTK_OFFLOAD,
	       WMI_SERVICE_GTK_OFFLOAD, len);
	SVCMAP(WMI_HL_10_SERVICE_SCAN_SCH,
	       WMI_SERVICE_SCAN_SCH, len);
	SVCMAP(WMI_HL_10_SERVICE_CSA_OFFLOAD,
	       WMI_SERVICE_CSA_OFFLOAD, len);
	SVCMAP(WMI_HL_10_SERVICE_CHATTER,
	       WMI_SERVICE_CHATTER, len);
	SVCMAP(WMI_HL_10_SERVICE_COEX_FREQAVOID,
	       WMI_SERVICE_COEX_FREQAVOID, len);
	SVCMAP(WMI_HL_10_SERVICE_PACKET_POWER_SAVE,
	       WMI_SERVICE_PACKET_POWER_SAVE, len);
	SVCMAP(WMI_HL_10_SERVICE_FORCE_FW_HANG,
	       WMI_SERVICE_FORCE_FW_HANG, len);
	SVCMAP(WMI_HL_10_SERVICE_RX_FULL_REORDER,
	       WMI_SERVICE_RX_FULL_REORDER, len);
	SVCMAP(WMI_HL_10_SERVICE_MGMT_TX_WMI,
	       WMI_SERVICE_MGMT_TX_WMI, len);
}

static inline void
wmi_tlv_svc_map(const __le32 *in, unsigned long *out, size_t len)
{
@@ -1303,6 +1169,8 @@ wmi_tlv_svc_map(const __le32 *in, unsigned long *out, size_t len)
	       WMI_SERVICE_MDNS_OFFLOAD, len);
	SVCMAP(WMI_TLV_SERVICE_SAP_AUTH_OFFLOAD,
	       WMI_SERVICE_SAP_AUTH_OFFLOAD, len);
	SVCMAP(WMI_TLV_SERVICE_MGMT_TX_WMI,
	       WMI_SERVICE_MGMT_TX_WMI, len);
}

#undef SVCMAP
@@ -1832,7 +1700,7 @@ struct wmi_tlv_tx_pause_ev {
} __packed;

void ath10k_wmi_tlv_attach(struct ath10k *ar);
void ath10k_wmi_hl_1_0_attach(struct ath10k *ar);

struct wmi_tlv_mgmt_tx_hdr {
	__le32 vdev_id;
	__le32 desc_id;
Loading