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

Commit bf3c13ab authored by Kalle Valo's avatar Kalle Valo
Browse files

ath10k: move wmi_op_version to struct ath10k_fw_file



Preparation for testmode.c to use ath10k_core_fetch_board_data_api_n().

Signed-off-by: default avatarKalle Valo <kvalo@qca.qualcomm.com>
parent c4cdf753
Loading
Loading
Loading
Loading
+10 −10
Original line number Original line Diff line number Diff line
@@ -1106,10 +1106,10 @@ static int ath10k_core_fetch_firmware_api_n(struct ath10k *ar, const char *name,


			version = (__le32 *)data;
			version = (__le32 *)data;


			ar->wmi.op_version = le32_to_cpup(version);
			fw_file->wmi_op_version = le32_to_cpup(version);


			ath10k_dbg(ar, ATH10K_DBG_BOOT, "found fw ie wmi op version %d\n",
			ath10k_dbg(ar, ATH10K_DBG_BOOT, "found fw ie wmi op version %d\n",
				   ar->wmi.op_version);
				   fw_file->wmi_op_version);
			break;
			break;
		case ATH10K_FW_IE_HTT_OP_VERSION:
		case ATH10K_FW_IE_HTT_OP_VERSION:
			if (ie_len != sizeof(u32))
			if (ie_len != sizeof(u32))
@@ -1438,9 +1438,9 @@ static int ath10k_core_init_firmware_features(struct ath10k *ar)
		return -EINVAL;
		return -EINVAL;
	}
	}


	if (ar->wmi.op_version >= ATH10K_FW_WMI_OP_VERSION_MAX) {
	if (fw_file->wmi_op_version >= ATH10K_FW_WMI_OP_VERSION_MAX) {
		ath10k_err(ar, "unsupported WMI OP version (max %d): %d\n",
		ath10k_err(ar, "unsupported WMI OP version (max %d): %d\n",
			   ATH10K_FW_WMI_OP_VERSION_MAX, ar->wmi.op_version);
			   ATH10K_FW_WMI_OP_VERSION_MAX, fw_file->wmi_op_version);
		return -EINVAL;
		return -EINVAL;
	}
	}


@@ -1496,19 +1496,19 @@ static int ath10k_core_init_firmware_features(struct ath10k *ar)
	/* Backwards compatibility for firmwares without
	/* Backwards compatibility for firmwares without
	 * ATH10K_FW_IE_WMI_OP_VERSION.
	 * ATH10K_FW_IE_WMI_OP_VERSION.
	 */
	 */
	if (ar->wmi.op_version == ATH10K_FW_WMI_OP_VERSION_UNSET) {
	if (fw_file->wmi_op_version == ATH10K_FW_WMI_OP_VERSION_UNSET) {
		if (test_bit(ATH10K_FW_FEATURE_WMI_10X, fw_file->fw_features)) {
		if (test_bit(ATH10K_FW_FEATURE_WMI_10X, fw_file->fw_features)) {
			if (test_bit(ATH10K_FW_FEATURE_WMI_10_2,
			if (test_bit(ATH10K_FW_FEATURE_WMI_10_2,
				     fw_file->fw_features))
				     fw_file->fw_features))
				ar->wmi.op_version = ATH10K_FW_WMI_OP_VERSION_10_2;
				fw_file->wmi_op_version = ATH10K_FW_WMI_OP_VERSION_10_2;
			else
			else
				ar->wmi.op_version = ATH10K_FW_WMI_OP_VERSION_10_1;
				fw_file->wmi_op_version = ATH10K_FW_WMI_OP_VERSION_10_1;
		} else {
		} else {
			ar->wmi.op_version = ATH10K_FW_WMI_OP_VERSION_MAIN;
			fw_file->wmi_op_version = ATH10K_FW_WMI_OP_VERSION_MAIN;
		}
		}
	}
	}


	switch (ar->wmi.op_version) {
	switch (fw_file->wmi_op_version) {
	case ATH10K_FW_WMI_OP_VERSION_MAIN:
	case ATH10K_FW_WMI_OP_VERSION_MAIN:
		ar->max_num_peers = TARGET_NUM_PEERS;
		ar->max_num_peers = TARGET_NUM_PEERS;
		ar->max_num_stations = TARGET_NUM_STATIONS;
		ar->max_num_stations = TARGET_NUM_STATIONS;
@@ -1570,7 +1570,7 @@ static int ath10k_core_init_firmware_features(struct ath10k *ar)
	 * ATH10K_FW_IE_HTT_OP_VERSION.
	 * ATH10K_FW_IE_HTT_OP_VERSION.
	 */
	 */
	if (ar->htt.op_version == ATH10K_FW_HTT_OP_VERSION_UNSET) {
	if (ar->htt.op_version == ATH10K_FW_HTT_OP_VERSION_UNSET) {
		switch (ar->wmi.op_version) {
		switch (fw_file->wmi_op_version) {
		case ATH10K_FW_WMI_OP_VERSION_MAIN:
		case ATH10K_FW_WMI_OP_VERSION_MAIN:
			ar->htt.op_version = ATH10K_FW_HTT_OP_VERSION_MAIN;
			ar->htt.op_version = ATH10K_FW_HTT_OP_VERSION_MAIN;
			break;
			break;
+2 −3
Original line number Original line Diff line number Diff line
@@ -139,7 +139,6 @@ struct ath10k_mem_chunk {
};
};


struct ath10k_wmi {
struct ath10k_wmi {
	enum ath10k_fw_wmi_op_version op_version;
	enum ath10k_htc_ep_id eid;
	enum ath10k_htc_ep_id eid;
	struct completion service_ready;
	struct completion service_ready;
	struct completion unified_ready;
	struct completion unified_ready;
@@ -634,6 +633,8 @@ struct ath10k_fw_file {


	DECLARE_BITMAP(fw_features, ATH10K_FW_FEATURE_COUNT);
	DECLARE_BITMAP(fw_features, ATH10K_FW_FEATURE_COUNT);


	enum ath10k_fw_wmi_op_version wmi_op_version;

	const void *firmware_data;
	const void *firmware_data;
	size_t firmware_len;
	size_t firmware_len;


@@ -895,8 +896,6 @@ struct ath10k {
	struct {
	struct {
		/* protected by conf_mutex */
		/* protected by conf_mutex */
		struct ath10k_fw_components utf_mode_fw;
		struct ath10k_fw_components utf_mode_fw;
		enum ath10k_fw_wmi_op_version orig_wmi_op_version;
		enum ath10k_fw_wmi_op_version op_version;


		/* protected by data_lock */
		/* protected by data_lock */
		bool utf_monitor;
		bool utf_monitor;
+1 −1
Original line number Original line Diff line number Diff line
@@ -178,7 +178,7 @@ void ath10k_debug_print_boot_info(struct ath10k *ar)
	ath10k_info(ar, "htt-ver %d.%d wmi-op %d htt-op %d cal %s max-sta %d raw %d hwcrypto %d\n",
	ath10k_info(ar, "htt-ver %d.%d wmi-op %d htt-op %d cal %s max-sta %d raw %d hwcrypto %d\n",
		    ar->htt.target_version_major,
		    ar->htt.target_version_major,
		    ar->htt.target_version_minor,
		    ar->htt.target_version_minor,
		    ar->wmi.op_version,
		    ar->normal_mode_fw.fw_file.wmi_op_version,
		    ar->htt.op_version,
		    ar->htt.op_version,
		    ath10k_cal_mode_str(ar->cal_mode),
		    ath10k_cal_mode_str(ar->cal_mode),
		    ar->max_num_stations,
		    ar->max_num_stations,
+1 −1
Original line number Original line Diff line number Diff line
@@ -7786,7 +7786,7 @@ int ath10k_mac_register(struct ath10k *ar)
	 */
	 */
	ar->hw->offchannel_tx_hw_queue = IEEE80211_MAX_QUEUES - 1;
	ar->hw->offchannel_tx_hw_queue = IEEE80211_MAX_QUEUES - 1;


	switch (ar->wmi.op_version) {
	switch (ar->running_fw->fw_file.wmi_op_version) {
	case ATH10K_FW_WMI_OP_VERSION_MAIN:
	case ATH10K_FW_WMI_OP_VERSION_MAIN:
		ar->hw->wiphy->iface_combinations = ath10k_if_comb;
		ar->hw->wiphy->iface_combinations = ath10k_if_comb;
		ar->hw->wiphy->n_iface_combinations =
		ar->hw->wiphy->n_iface_combinations =
+6 −11
Original line number Original line Diff line number Diff line
@@ -230,9 +230,9 @@ static int ath10k_tm_fetch_utf_firmware_api_2(struct ath10k *ar,
			if (ie_len != sizeof(u32))
			if (ie_len != sizeof(u32))
				break;
				break;
			version = (__le32 *)data;
			version = (__le32 *)data;
			ar->testmode.op_version = le32_to_cpup(version);
			fw_file->wmi_op_version = le32_to_cpup(version);
			ath10k_dbg(ar, ATH10K_DBG_TESTMODE, "testmode found fw ie wmi op version %d\n",
			ath10k_dbg(ar, ATH10K_DBG_TESTMODE, "testmode found fw ie wmi op version %d\n",
				   ar->testmode.op_version);
				   fw_file->wmi_op_version);
			break;
			break;
		default:
		default:
			ath10k_warn(ar, "Unknown testmode FW IE: %u\n",
			ath10k_warn(ar, "Unknown testmode FW IE: %u\n",
@@ -283,7 +283,7 @@ static int ath10k_tm_fetch_utf_firmware_api_1(struct ath10k *ar,
	 * correct WMI interface.
	 * correct WMI interface.
	 */
	 */


	ar->testmode.op_version = ATH10K_FW_WMI_OP_VERSION_10_1;
	fw_file->wmi_op_version = ATH10K_FW_WMI_OP_VERSION_10_1;
	fw_file->firmware_data = fw_file->firmware->data;
	fw_file->firmware_data = fw_file->firmware->data;
	fw_file->firmware_len = fw_file->firmware->size;
	fw_file->firmware_len = fw_file->firmware->size;


@@ -363,17 +363,14 @@ static int ath10k_tm_cmd_utf_start(struct ath10k *ar, struct nlattr *tb[])
	ar->testmode.utf_monitor = true;
	ar->testmode.utf_monitor = true;
	spin_unlock_bh(&ar->data_lock);
	spin_unlock_bh(&ar->data_lock);


	ar->testmode.orig_wmi_op_version = ar->wmi.op_version;
	ar->wmi.op_version = ar->testmode.op_version;

	ath10k_dbg(ar, ATH10K_DBG_TESTMODE, "testmode wmi version %d\n",
	ath10k_dbg(ar, ATH10K_DBG_TESTMODE, "testmode wmi version %d\n",
		   ar->wmi.op_version);
		   ar->testmode.utf_mode_fw.fw_file.wmi_op_version);


	ret = ath10k_hif_power_up(ar);
	ret = ath10k_hif_power_up(ar);
	if (ret) {
	if (ret) {
		ath10k_err(ar, "failed to power up hif (testmode): %d\n", ret);
		ath10k_err(ar, "failed to power up hif (testmode): %d\n", ret);
		ar->state = ATH10K_STATE_OFF;
		ar->state = ATH10K_STATE_OFF;
		goto err_fw_features;
		goto err_release_utf_mode_fw;
	}
	}


	ret = ath10k_core_start(ar, ATH10K_FIRMWARE_MODE_UTF,
	ret = ath10k_core_start(ar, ATH10K_FIRMWARE_MODE_UTF,
@@ -400,9 +397,7 @@ static int ath10k_tm_cmd_utf_start(struct ath10k *ar, struct nlattr *tb[])
err_power_down:
err_power_down:
	ath10k_hif_power_down(ar);
	ath10k_hif_power_down(ar);


err_fw_features:
err_release_utf_mode_fw:
	ar->wmi.op_version = ar->testmode.orig_wmi_op_version;

	release_firmware(ar->testmode.utf_mode_fw.fw_file.firmware);
	release_firmware(ar->testmode.utf_mode_fw.fw_file.firmware);
	ar->testmode.utf_mode_fw.fw_file.firmware = NULL;
	ar->testmode.utf_mode_fw.fw_file.firmware = NULL;


Loading