Commit eceb024e authored by Kalle Valo's avatar Kalle Valo
Browse files
ath.git patches for v6.2. Major changes:

ath10k

* store WLAN firmware version in SMEM image table
parents 823092a5 7256f287
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -44,6 +44,7 @@ config ATH10K_SNOC
	tristate "Qualcomm ath10k SNOC support"
	depends on ATH10K
	depends on ARCH_QCOM || COMPILE_TEST
	select QCOM_SMEM
	select QCOM_SCM
	select QCOM_QMI_HELPERS
	help
+10 −15
Original line number Diff line number Diff line
@@ -1379,7 +1379,7 @@ static void ath10k_process_rx(struct ath10k *ar, struct sk_buff *skb)
		   ath10k_get_tid(hdr, tid, sizeof(tid)),
		   is_multicast_ether_addr(ieee80211_get_DA(hdr)) ?
							"mcast" : "ucast",
		   (__le16_to_cpu(hdr->seq_ctrl) & IEEE80211_SCTL_SEQ) >> 4,
		   IEEE80211_SEQ_TO_SN(__le16_to_cpu(hdr->seq_ctrl)),
		   (status->encoding == RX_ENC_LEGACY) ? "legacy" : "",
		   (status->encoding == RX_ENC_HT) ? "ht" : "",
		   (status->encoding == RX_ENC_VHT) ? "vht" : "",
@@ -1844,15 +1844,14 @@ static void ath10k_htt_rx_h_csum_offload(struct ath10k_hw_params *hw,
}

static u64 ath10k_htt_rx_h_get_pn(struct ath10k *ar, struct sk_buff *skb,
				  u16 offset,
				  enum htt_rx_mpdu_encrypt_type enctype)
{
	struct ieee80211_hdr *hdr;
	u64 pn = 0;
	u8 *ehdr;

	hdr = (struct ieee80211_hdr *)(skb->data + offset);
	ehdr = skb->data + offset + ieee80211_hdrlen(hdr->frame_control);
	hdr = (struct ieee80211_hdr *)skb->data;
	ehdr = skb->data + ieee80211_hdrlen(hdr->frame_control);

	if (enctype == HTT_RX_MPDU_ENCRYPT_AES_CCM_WPA2) {
		pn = ehdr[0];
@@ -1866,19 +1865,17 @@ static u64 ath10k_htt_rx_h_get_pn(struct ath10k *ar, struct sk_buff *skb,
}

static bool ath10k_htt_rx_h_frag_multicast_check(struct ath10k *ar,
						 struct sk_buff *skb,
						 u16 offset)
						 struct sk_buff *skb)
{
	struct ieee80211_hdr *hdr;

	hdr = (struct ieee80211_hdr *)(skb->data + offset);
	hdr = (struct ieee80211_hdr *)skb->data;
	return !is_multicast_ether_addr(hdr->addr1);
}

static bool ath10k_htt_rx_h_frag_pn_check(struct ath10k *ar,
					  struct sk_buff *skb,
					  u16 peer_id,
					  u16 offset,
					  enum htt_rx_mpdu_encrypt_type enctype)
{
	struct ath10k_peer *peer;
@@ -1893,16 +1890,16 @@ static bool ath10k_htt_rx_h_frag_pn_check(struct ath10k *ar,
		return false;
	}

	hdr = (struct ieee80211_hdr *)(skb->data + offset);
	hdr = (struct ieee80211_hdr *)skb->data;
	if (ieee80211_is_data_qos(hdr->frame_control))
		tid = ieee80211_get_tid(hdr);
	else
		tid = ATH10K_TXRX_NON_QOS_TID;

	last_pn = &peer->frag_tids_last_pn[tid];
	new_pn.pn48 = ath10k_htt_rx_h_get_pn(ar, skb, offset, enctype);
	new_pn.pn48 = ath10k_htt_rx_h_get_pn(ar, skb, enctype);
	frag_number = le16_to_cpu(hdr->seq_ctrl) & IEEE80211_SCTL_FRAG;
	seq = (__le16_to_cpu(hdr->seq_ctrl) & IEEE80211_SCTL_SEQ) >> 4;
	seq = IEEE80211_SEQ_TO_SN(__le16_to_cpu(hdr->seq_ctrl));

	if (frag_number == 0) {
		last_pn->pn48 = new_pn.pn48;
@@ -2059,13 +2056,11 @@ static void ath10k_htt_rx_h_mpdu(struct ath10k *ar,
			frag_pn_check = ath10k_htt_rx_h_frag_pn_check(ar,
								      msdu,
								      peer_id,
								      0,
								      enctype);

		if (frag)
			multicast_check = ath10k_htt_rx_h_frag_multicast_check(ar,
									       msdu,
									       0);
									       msdu);

		if (!frag_pn_check || !multicast_check) {
			/* Discard the fragment with invalid PN or multicast DA
@@ -2824,7 +2819,7 @@ static bool ath10k_htt_rx_proc_rx_frag_ind_hl(struct ath10k_htt *htt,

	hdr_space = ieee80211_hdrlen(hdr->frame_control);
	sc = __le16_to_cpu(hdr->seq_ctrl);
	seq = (sc & IEEE80211_SCTL_SEQ) >> 4;
	seq = IEEE80211_SEQ_TO_SN(sc);
	frag = sc & IEEE80211_SCTL_FRAG;

	sec_index = MS(rx_desc_info, HTT_RX_DESC_HL_INFO_MCAST_BCAST) ?
+12 −8
Original line number Diff line number Diff line
@@ -3792,18 +3792,22 @@ static struct pci_driver ath10k_pci_driver = {

static int __init ath10k_pci_init(void)
{
	int ret;
	int ret1, ret2;

	ret = pci_register_driver(&ath10k_pci_driver);
	if (ret)
	ret1 = pci_register_driver(&ath10k_pci_driver);
	if (ret1)
		printk(KERN_ERR "failed to register ath10k pci driver: %d\n",
		       ret);
		       ret1);

	ret = ath10k_ahb_init();
	if (ret)
		printk(KERN_ERR "ahb init failed: %d\n", ret);
	ret2 = ath10k_ahb_init();
	if (ret2)
		printk(KERN_ERR "ahb init failed: %d\n", ret2);

	return ret;
	if (ret1 && ret2)
		return ret1;

	/* registered to at least one bus */
	return 0;
}
module_init(ath10k_pci_init);

+36 −1
Original line number Diff line number Diff line
@@ -14,6 +14,7 @@
#include <linux/net.h>
#include <linux/platform_device.h>
#include <linux/qcom_scm.h>
#include <linux/soc/qcom/smem.h>
#include <linux/string.h>
#include <net/sock.h>

@@ -22,6 +23,10 @@

#define ATH10K_QMI_CLIENT_ID		0x4b4e454c
#define ATH10K_QMI_TIMEOUT		30
#define SMEM_IMAGE_VERSION_TABLE       469
#define SMEM_IMAGE_TABLE_CNSS_INDEX     13
#define SMEM_IMAGE_VERSION_ENTRY_SIZE	128
#define SMEM_IMAGE_VERSION_NAME_SIZE	75

static int ath10k_qmi_map_msa_permission(struct ath10k_qmi *qmi,
					 struct ath10k_msa_mem_info *mem_info)
@@ -536,6 +541,33 @@ int ath10k_qmi_wlan_disable(struct ath10k *ar)
	return ath10k_qmi_mode_send_sync_msg(ar, QMI_WLFW_OFF_V01);
}

static void ath10k_qmi_add_wlan_ver_smem(struct ath10k *ar, const char *fw_build_id)
{
	u8 *table_ptr;
	size_t smem_item_size;
	const u32 smem_img_idx_wlan = SMEM_IMAGE_TABLE_CNSS_INDEX *
				      SMEM_IMAGE_VERSION_ENTRY_SIZE;

	table_ptr = qcom_smem_get(QCOM_SMEM_HOST_ANY,
				  SMEM_IMAGE_VERSION_TABLE,
				  &smem_item_size);

	if (IS_ERR(table_ptr)) {
		ath10k_err(ar, "smem image version table not found\n");
		return;
	}

	if (smem_img_idx_wlan + SMEM_IMAGE_VERSION_ENTRY_SIZE >
	    smem_item_size) {
		ath10k_err(ar, "smem block size too small: %zu\n",
			   smem_item_size);
		return;
	}

	strscpy(table_ptr + smem_img_idx_wlan, fw_build_id,
		SMEM_IMAGE_VERSION_NAME_SIZE);
}

static int ath10k_qmi_cap_send_sync_msg(struct ath10k_qmi *qmi)
{
	struct wlfw_cap_resp_msg_v01 *resp;
@@ -606,6 +638,9 @@ static int ath10k_qmi_cap_send_sync_msg(struct ath10k_qmi *qmi)
			    qmi->fw_version, qmi->fw_build_timestamp, qmi->fw_build_id);
	}

	if (resp->fw_build_id_valid)
		ath10k_qmi_add_wlan_ver_smem(ar, qmi->fw_build_id);

	kfree(resp);
	return 0;

@@ -618,7 +653,7 @@ static int ath10k_qmi_host_cap_send_sync(struct ath10k_qmi *qmi)
{
	struct wlfw_host_cap_resp_msg_v01 resp = {};
	struct wlfw_host_cap_req_msg_v01 req = {};
	struct qmi_elem_info *req_ei;
	const struct qmi_elem_info *req_ei;
	struct ath10k *ar = qmi->ar;
	struct ath10k_snoc *ar_snoc = ath10k_snoc_priv(ar);
	struct qmi_txn txn;
+63 −63
Original line number Diff line number Diff line
@@ -7,7 +7,7 @@
#include <linux/types.h>
#include "qmi_wlfw_v01.h"

static struct qmi_elem_info wlfw_ce_tgt_pipe_cfg_s_v01_ei[] = {
static const struct qmi_elem_info wlfw_ce_tgt_pipe_cfg_s_v01_ei[] = {
	{
		.data_type      = QMI_UNSIGNED_4_BYTE,
		.elem_len       = 1,
@@ -56,7 +56,7 @@ static struct qmi_elem_info wlfw_ce_tgt_pipe_cfg_s_v01_ei[] = {
	{}
};

static struct qmi_elem_info wlfw_ce_svc_pipe_cfg_s_v01_ei[] = {
static const struct qmi_elem_info wlfw_ce_svc_pipe_cfg_s_v01_ei[] = {
	{
		.data_type      = QMI_UNSIGNED_4_BYTE,
		.elem_len       = 1,
@@ -87,7 +87,7 @@ static struct qmi_elem_info wlfw_ce_svc_pipe_cfg_s_v01_ei[] = {
	{}
};

static struct qmi_elem_info wlfw_shadow_reg_cfg_s_v01_ei[] = {
static const struct qmi_elem_info wlfw_shadow_reg_cfg_s_v01_ei[] = {
	{
		.data_type      = QMI_UNSIGNED_2_BYTE,
		.elem_len       = 1,
@@ -109,7 +109,7 @@ static struct qmi_elem_info wlfw_shadow_reg_cfg_s_v01_ei[] = {
	{}
};

static struct qmi_elem_info wlfw_shadow_reg_v2_cfg_s_v01_ei[] = {
static const struct qmi_elem_info wlfw_shadow_reg_v2_cfg_s_v01_ei[] = {
	{
		.data_type      = QMI_UNSIGNED_4_BYTE,
		.elem_len       = 1,
@@ -122,7 +122,7 @@ static struct qmi_elem_info wlfw_shadow_reg_v2_cfg_s_v01_ei[] = {
	{}
};

static struct qmi_elem_info wlfw_memory_region_info_s_v01_ei[] = {
static const struct qmi_elem_info wlfw_memory_region_info_s_v01_ei[] = {
	{
		.data_type      = QMI_UNSIGNED_8_BYTE,
		.elem_len       = 1,
@@ -153,7 +153,7 @@ static struct qmi_elem_info wlfw_memory_region_info_s_v01_ei[] = {
	{}
};

static struct qmi_elem_info wlfw_mem_cfg_s_v01_ei[] = {
static const struct qmi_elem_info wlfw_mem_cfg_s_v01_ei[] = {
	{
		.data_type      = QMI_UNSIGNED_8_BYTE,
		.elem_len       = 1,
@@ -184,7 +184,7 @@ static struct qmi_elem_info wlfw_mem_cfg_s_v01_ei[] = {
	{}
};

static struct qmi_elem_info wlfw_mem_seg_s_v01_ei[] = {
static const struct qmi_elem_info wlfw_mem_seg_s_v01_ei[] = {
	{
		.data_type      = QMI_UNSIGNED_4_BYTE,
		.elem_len       = 1,
@@ -225,7 +225,7 @@ static struct qmi_elem_info wlfw_mem_seg_s_v01_ei[] = {
	{}
};

static struct qmi_elem_info wlfw_mem_seg_resp_s_v01_ei[] = {
static const struct qmi_elem_info wlfw_mem_seg_resp_s_v01_ei[] = {
	{
		.data_type      = QMI_UNSIGNED_8_BYTE,
		.elem_len       = 1,
@@ -256,7 +256,7 @@ static struct qmi_elem_info wlfw_mem_seg_resp_s_v01_ei[] = {
	{}
};

static struct qmi_elem_info wlfw_rf_chip_info_s_v01_ei[] = {
static const struct qmi_elem_info wlfw_rf_chip_info_s_v01_ei[] = {
	{
		.data_type      = QMI_UNSIGNED_4_BYTE,
		.elem_len       = 1,
@@ -278,7 +278,7 @@ static struct qmi_elem_info wlfw_rf_chip_info_s_v01_ei[] = {
	{}
};

static struct qmi_elem_info wlfw_rf_board_info_s_v01_ei[] = {
static const struct qmi_elem_info wlfw_rf_board_info_s_v01_ei[] = {
	{
		.data_type      = QMI_UNSIGNED_4_BYTE,
		.elem_len       = 1,
@@ -291,7 +291,7 @@ static struct qmi_elem_info wlfw_rf_board_info_s_v01_ei[] = {
	{}
};

static struct qmi_elem_info wlfw_soc_info_s_v01_ei[] = {
static const struct qmi_elem_info wlfw_soc_info_s_v01_ei[] = {
	{
		.data_type      = QMI_UNSIGNED_4_BYTE,
		.elem_len       = 1,
@@ -304,7 +304,7 @@ static struct qmi_elem_info wlfw_soc_info_s_v01_ei[] = {
	{}
};

static struct qmi_elem_info wlfw_fw_version_info_s_v01_ei[] = {
static const struct qmi_elem_info wlfw_fw_version_info_s_v01_ei[] = {
	{
		.data_type      = QMI_UNSIGNED_4_BYTE,
		.elem_len       = 1,
@@ -326,7 +326,7 @@ static struct qmi_elem_info wlfw_fw_version_info_s_v01_ei[] = {
	{}
};

struct qmi_elem_info wlfw_ind_register_req_msg_v01_ei[] = {
const struct qmi_elem_info wlfw_ind_register_req_msg_v01_ei[] = {
	{
		.data_type      = QMI_OPT_FLAG,
		.elem_len       = 1,
@@ -528,7 +528,7 @@ struct qmi_elem_info wlfw_ind_register_req_msg_v01_ei[] = {
	{}
};

struct qmi_elem_info wlfw_ind_register_resp_msg_v01_ei[] = {
const struct qmi_elem_info wlfw_ind_register_resp_msg_v01_ei[] = {
	{
		.data_type      = QMI_STRUCT,
		.elem_len       = 1,
@@ -560,15 +560,15 @@ struct qmi_elem_info wlfw_ind_register_resp_msg_v01_ei[] = {
	{}
};

struct qmi_elem_info wlfw_fw_ready_ind_msg_v01_ei[] = {
const struct qmi_elem_info wlfw_fw_ready_ind_msg_v01_ei[] = {
	{}
};

struct qmi_elem_info wlfw_msa_ready_ind_msg_v01_ei[] = {
const struct qmi_elem_info wlfw_msa_ready_ind_msg_v01_ei[] = {
	{}
};

struct qmi_elem_info wlfw_pin_connect_result_ind_msg_v01_ei[] = {
const struct qmi_elem_info wlfw_pin_connect_result_ind_msg_v01_ei[] = {
	{
		.data_type      = QMI_OPT_FLAG,
		.elem_len       = 1,
@@ -626,7 +626,7 @@ struct qmi_elem_info wlfw_pin_connect_result_ind_msg_v01_ei[] = {
	{}
};

struct qmi_elem_info wlfw_wlan_mode_req_msg_v01_ei[] = {
const struct qmi_elem_info wlfw_wlan_mode_req_msg_v01_ei[] = {
	{
		.data_type      = QMI_SIGNED_4_BYTE_ENUM,
		.elem_len       = 1,
@@ -657,7 +657,7 @@ struct qmi_elem_info wlfw_wlan_mode_req_msg_v01_ei[] = {
	{}
};

struct qmi_elem_info wlfw_wlan_mode_resp_msg_v01_ei[] = {
const struct qmi_elem_info wlfw_wlan_mode_resp_msg_v01_ei[] = {
	{
		.data_type      = QMI_STRUCT,
		.elem_len       = 1,
@@ -671,7 +671,7 @@ struct qmi_elem_info wlfw_wlan_mode_resp_msg_v01_ei[] = {
	{}
};

struct qmi_elem_info wlfw_wlan_cfg_req_msg_v01_ei[] = {
const struct qmi_elem_info wlfw_wlan_cfg_req_msg_v01_ei[] = {
	{
		.data_type      = QMI_OPT_FLAG,
		.elem_len       = 1,
@@ -805,7 +805,7 @@ struct qmi_elem_info wlfw_wlan_cfg_req_msg_v01_ei[] = {
	{}
};

struct qmi_elem_info wlfw_wlan_cfg_resp_msg_v01_ei[] = {
const struct qmi_elem_info wlfw_wlan_cfg_resp_msg_v01_ei[] = {
	{
		.data_type      = QMI_STRUCT,
		.elem_len       = 1,
@@ -819,11 +819,11 @@ struct qmi_elem_info wlfw_wlan_cfg_resp_msg_v01_ei[] = {
	{}
};

struct qmi_elem_info wlfw_cap_req_msg_v01_ei[] = {
const struct qmi_elem_info wlfw_cap_req_msg_v01_ei[] = {
	{}
};

struct qmi_elem_info wlfw_cap_resp_msg_v01_ei[] = {
const struct qmi_elem_info wlfw_cap_resp_msg_v01_ei[] = {
	{
		.data_type      = QMI_STRUCT,
		.elem_len       = 1,
@@ -949,7 +949,7 @@ struct qmi_elem_info wlfw_cap_resp_msg_v01_ei[] = {
	{}
};

struct qmi_elem_info wlfw_bdf_download_req_msg_v01_ei[] = {
const struct qmi_elem_info wlfw_bdf_download_req_msg_v01_ei[] = {
	{
		.data_type      = QMI_UNSIGNED_1_BYTE,
		.elem_len       = 1,
@@ -1079,7 +1079,7 @@ struct qmi_elem_info wlfw_bdf_download_req_msg_v01_ei[] = {
	{}
};

struct qmi_elem_info wlfw_bdf_download_resp_msg_v01_ei[] = {
const struct qmi_elem_info wlfw_bdf_download_resp_msg_v01_ei[] = {
	{
		.data_type      = QMI_STRUCT,
		.elem_len       = 1,
@@ -1093,7 +1093,7 @@ struct qmi_elem_info wlfw_bdf_download_resp_msg_v01_ei[] = {
	{}
};

struct qmi_elem_info wlfw_cal_report_req_msg_v01_ei[] = {
const struct qmi_elem_info wlfw_cal_report_req_msg_v01_ei[] = {
	{
		.data_type      = QMI_DATA_LEN,
		.elem_len       = 1,
@@ -1133,7 +1133,7 @@ struct qmi_elem_info wlfw_cal_report_req_msg_v01_ei[] = {
	{}
};

struct qmi_elem_info wlfw_cal_report_resp_msg_v01_ei[] = {
const struct qmi_elem_info wlfw_cal_report_resp_msg_v01_ei[] = {
	{
		.data_type      = QMI_STRUCT,
		.elem_len       = 1,
@@ -1147,7 +1147,7 @@ struct qmi_elem_info wlfw_cal_report_resp_msg_v01_ei[] = {
	{}
};

struct qmi_elem_info wlfw_initiate_cal_download_ind_msg_v01_ei[] = {
const struct qmi_elem_info wlfw_initiate_cal_download_ind_msg_v01_ei[] = {
	{
		.data_type      = QMI_SIGNED_4_BYTE_ENUM,
		.elem_len       = 1,
@@ -1160,7 +1160,7 @@ struct qmi_elem_info wlfw_initiate_cal_download_ind_msg_v01_ei[] = {
	{}
};

struct qmi_elem_info wlfw_cal_download_req_msg_v01_ei[] = {
const struct qmi_elem_info wlfw_cal_download_req_msg_v01_ei[] = {
	{
		.data_type      = QMI_UNSIGNED_1_BYTE,
		.elem_len       = 1,
@@ -1272,7 +1272,7 @@ struct qmi_elem_info wlfw_cal_download_req_msg_v01_ei[] = {
	{}
};

struct qmi_elem_info wlfw_cal_download_resp_msg_v01_ei[] = {
const struct qmi_elem_info wlfw_cal_download_resp_msg_v01_ei[] = {
	{
		.data_type      = QMI_STRUCT,
		.elem_len       = 1,
@@ -1286,7 +1286,7 @@ struct qmi_elem_info wlfw_cal_download_resp_msg_v01_ei[] = {
	{}
};

struct qmi_elem_info wlfw_initiate_cal_update_ind_msg_v01_ei[] = {
const struct qmi_elem_info wlfw_initiate_cal_update_ind_msg_v01_ei[] = {
	{
		.data_type      = QMI_SIGNED_4_BYTE_ENUM,
		.elem_len       = 1,
@@ -1308,7 +1308,7 @@ struct qmi_elem_info wlfw_initiate_cal_update_ind_msg_v01_ei[] = {
	{}
};

struct qmi_elem_info wlfw_cal_update_req_msg_v01_ei[] = {
const struct qmi_elem_info wlfw_cal_update_req_msg_v01_ei[] = {
	{
		.data_type      = QMI_SIGNED_4_BYTE_ENUM,
		.elem_len       = 1,
@@ -1330,7 +1330,7 @@ struct qmi_elem_info wlfw_cal_update_req_msg_v01_ei[] = {
	{}
};

struct qmi_elem_info wlfw_cal_update_resp_msg_v01_ei[] = {
const struct qmi_elem_info wlfw_cal_update_resp_msg_v01_ei[] = {
	{
		.data_type      = QMI_STRUCT,
		.elem_len       = 1,
@@ -1443,7 +1443,7 @@ struct qmi_elem_info wlfw_cal_update_resp_msg_v01_ei[] = {
	{}
};

struct qmi_elem_info wlfw_msa_info_req_msg_v01_ei[] = {
const struct qmi_elem_info wlfw_msa_info_req_msg_v01_ei[] = {
	{
		.data_type      = QMI_UNSIGNED_8_BYTE,
		.elem_len       = 1,
@@ -1465,7 +1465,7 @@ struct qmi_elem_info wlfw_msa_info_req_msg_v01_ei[] = {
	{}
};

struct qmi_elem_info wlfw_msa_info_resp_msg_v01_ei[] = {
const struct qmi_elem_info wlfw_msa_info_resp_msg_v01_ei[] = {
	{
		.data_type      = QMI_STRUCT,
		.elem_len       = 1,
@@ -1498,11 +1498,11 @@ struct qmi_elem_info wlfw_msa_info_resp_msg_v01_ei[] = {
	{}
};

struct qmi_elem_info wlfw_msa_ready_req_msg_v01_ei[] = {
const struct qmi_elem_info wlfw_msa_ready_req_msg_v01_ei[] = {
	{}
};

struct qmi_elem_info wlfw_msa_ready_resp_msg_v01_ei[] = {
const struct qmi_elem_info wlfw_msa_ready_resp_msg_v01_ei[] = {
	{
		.data_type      = QMI_STRUCT,
		.elem_len       = 1,
@@ -1516,7 +1516,7 @@ struct qmi_elem_info wlfw_msa_ready_resp_msg_v01_ei[] = {
	{}
};

struct qmi_elem_info wlfw_ini_req_msg_v01_ei[] = {
const struct qmi_elem_info wlfw_ini_req_msg_v01_ei[] = {
	{
		.data_type      = QMI_OPT_FLAG,
		.elem_len       = 1,
@@ -1538,7 +1538,7 @@ struct qmi_elem_info wlfw_ini_req_msg_v01_ei[] = {
	{}
};

struct qmi_elem_info wlfw_ini_resp_msg_v01_ei[] = {
const struct qmi_elem_info wlfw_ini_resp_msg_v01_ei[] = {
	{
		.data_type      = QMI_STRUCT,
		.elem_len       = 1,
@@ -1552,7 +1552,7 @@ struct qmi_elem_info wlfw_ini_resp_msg_v01_ei[] = {
	{}
};

struct qmi_elem_info wlfw_athdiag_read_req_msg_v01_ei[] = {
const struct qmi_elem_info wlfw_athdiag_read_req_msg_v01_ei[] = {
	{
		.data_type      = QMI_UNSIGNED_4_BYTE,
		.elem_len       = 1,
@@ -1583,7 +1583,7 @@ struct qmi_elem_info wlfw_athdiag_read_req_msg_v01_ei[] = {
	{}
};

struct qmi_elem_info wlfw_athdiag_read_resp_msg_v01_ei[] = {
const struct qmi_elem_info wlfw_athdiag_read_resp_msg_v01_ei[] = {
	{
		.data_type      = QMI_STRUCT,
		.elem_len       = 1,
@@ -1624,7 +1624,7 @@ struct qmi_elem_info wlfw_athdiag_read_resp_msg_v01_ei[] = {
	{}
};

struct qmi_elem_info wlfw_athdiag_write_req_msg_v01_ei[] = {
const struct qmi_elem_info wlfw_athdiag_write_req_msg_v01_ei[] = {
	{
		.data_type      = QMI_UNSIGNED_4_BYTE,
		.elem_len       = 1,
@@ -1664,7 +1664,7 @@ struct qmi_elem_info wlfw_athdiag_write_req_msg_v01_ei[] = {
	{}
};

struct qmi_elem_info wlfw_athdiag_write_resp_msg_v01_ei[] = {
const struct qmi_elem_info wlfw_athdiag_write_resp_msg_v01_ei[] = {
	{
		.data_type      = QMI_STRUCT,
		.elem_len       = 1,
@@ -1678,7 +1678,7 @@ struct qmi_elem_info wlfw_athdiag_write_resp_msg_v01_ei[] = {
	{}
};

struct qmi_elem_info wlfw_vbatt_req_msg_v01_ei[] = {
const struct qmi_elem_info wlfw_vbatt_req_msg_v01_ei[] = {
	{
		.data_type      = QMI_UNSIGNED_8_BYTE,
		.elem_len       = 1,
@@ -1691,7 +1691,7 @@ struct qmi_elem_info wlfw_vbatt_req_msg_v01_ei[] = {
	{}
};

struct qmi_elem_info wlfw_vbatt_resp_msg_v01_ei[] = {
const struct qmi_elem_info wlfw_vbatt_resp_msg_v01_ei[] = {
	{
		.data_type      = QMI_STRUCT,
		.elem_len       = 1,
@@ -1705,7 +1705,7 @@ struct qmi_elem_info wlfw_vbatt_resp_msg_v01_ei[] = {
	{}
};

struct qmi_elem_info wlfw_mac_addr_req_msg_v01_ei[] = {
const struct qmi_elem_info wlfw_mac_addr_req_msg_v01_ei[] = {
	{
		.data_type      = QMI_OPT_FLAG,
		.elem_len       = 1,
@@ -1727,7 +1727,7 @@ struct qmi_elem_info wlfw_mac_addr_req_msg_v01_ei[] = {
	{}
};

struct qmi_elem_info wlfw_mac_addr_resp_msg_v01_ei[] = {
const struct qmi_elem_info wlfw_mac_addr_resp_msg_v01_ei[] = {
	{
		.data_type      = QMI_STRUCT,
		.elem_len       = 1,
@@ -1741,7 +1741,7 @@ struct qmi_elem_info wlfw_mac_addr_resp_msg_v01_ei[] = {
	{}
};

struct qmi_elem_info wlfw_host_cap_req_msg_v01_ei[] = {
const struct qmi_elem_info wlfw_host_cap_req_msg_v01_ei[] = {
	{
		.data_type      = QMI_OPT_FLAG,
		.elem_len       = 1,
@@ -1988,7 +1988,7 @@ struct qmi_elem_info wlfw_host_cap_req_msg_v01_ei[] = {
	{}
};

struct qmi_elem_info wlfw_host_cap_8bit_req_msg_v01_ei[] = {
const struct qmi_elem_info wlfw_host_cap_8bit_req_msg_v01_ei[] = {
	{
		.data_type      = QMI_OPT_FLAG,
		.elem_len       = 1,
@@ -2010,7 +2010,7 @@ struct qmi_elem_info wlfw_host_cap_8bit_req_msg_v01_ei[] = {
	{}
};

struct qmi_elem_info wlfw_host_cap_resp_msg_v01_ei[] = {
const struct qmi_elem_info wlfw_host_cap_resp_msg_v01_ei[] = {
	{
		.data_type      = QMI_STRUCT,
		.elem_len       = 1,
@@ -2024,7 +2024,7 @@ struct qmi_elem_info wlfw_host_cap_resp_msg_v01_ei[] = {
	{}
};

struct qmi_elem_info wlfw_request_mem_ind_msg_v01_ei[] = {
const struct qmi_elem_info wlfw_request_mem_ind_msg_v01_ei[] = {
	{
		.data_type      = QMI_DATA_LEN,
		.elem_len       = 1,
@@ -2047,7 +2047,7 @@ struct qmi_elem_info wlfw_request_mem_ind_msg_v01_ei[] = {
	{}
};

struct qmi_elem_info wlfw_respond_mem_req_msg_v01_ei[] = {
const struct qmi_elem_info wlfw_respond_mem_req_msg_v01_ei[] = {
	{
		.data_type      = QMI_DATA_LEN,
		.elem_len       = 1,
@@ -2070,7 +2070,7 @@ struct qmi_elem_info wlfw_respond_mem_req_msg_v01_ei[] = {
	{}
};

struct qmi_elem_info wlfw_respond_mem_resp_msg_v01_ei[] = {
const struct qmi_elem_info wlfw_respond_mem_resp_msg_v01_ei[] = {
	{
		.data_type      = QMI_STRUCT,
		.elem_len       = 1,
@@ -2084,15 +2084,15 @@ struct qmi_elem_info wlfw_respond_mem_resp_msg_v01_ei[] = {
	{}
};

struct qmi_elem_info wlfw_mem_ready_ind_msg_v01_ei[] = {
const struct qmi_elem_info wlfw_mem_ready_ind_msg_v01_ei[] = {
	{}
};

struct qmi_elem_info wlfw_fw_init_done_ind_msg_v01_ei[] = {
const struct qmi_elem_info wlfw_fw_init_done_ind_msg_v01_ei[] = {
	{}
};

struct qmi_elem_info wlfw_rejuvenate_ind_msg_v01_ei[] = {
const struct qmi_elem_info wlfw_rejuvenate_ind_msg_v01_ei[] = {
	{
		.data_type      = QMI_OPT_FLAG,
		.elem_len       = 1,
@@ -2168,11 +2168,11 @@ struct qmi_elem_info wlfw_rejuvenate_ind_msg_v01_ei[] = {
	{}
};

struct qmi_elem_info wlfw_rejuvenate_ack_req_msg_v01_ei[] = {
const struct qmi_elem_info wlfw_rejuvenate_ack_req_msg_v01_ei[] = {
	{}
};

struct qmi_elem_info wlfw_rejuvenate_ack_resp_msg_v01_ei[] = {
const struct qmi_elem_info wlfw_rejuvenate_ack_resp_msg_v01_ei[] = {
	{
		.data_type      = QMI_STRUCT,
		.elem_len       = 1,
@@ -2186,7 +2186,7 @@ struct qmi_elem_info wlfw_rejuvenate_ack_resp_msg_v01_ei[] = {
	{}
};

struct qmi_elem_info wlfw_dynamic_feature_mask_req_msg_v01_ei[] = {
const struct qmi_elem_info wlfw_dynamic_feature_mask_req_msg_v01_ei[] = {
	{
		.data_type      = QMI_OPT_FLAG,
		.elem_len       = 1,
@@ -2208,7 +2208,7 @@ struct qmi_elem_info wlfw_dynamic_feature_mask_req_msg_v01_ei[] = {
	{}
};

struct qmi_elem_info wlfw_dynamic_feature_mask_resp_msg_v01_ei[] = {
const struct qmi_elem_info wlfw_dynamic_feature_mask_resp_msg_v01_ei[] = {
	{
		.data_type      = QMI_STRUCT,
		.elem_len       = 1,
@@ -2258,7 +2258,7 @@ struct qmi_elem_info wlfw_dynamic_feature_mask_resp_msg_v01_ei[] = {
	{}
};

struct qmi_elem_info wlfw_m3_info_req_msg_v01_ei[] = {
const struct qmi_elem_info wlfw_m3_info_req_msg_v01_ei[] = {
	{
		.data_type      = QMI_UNSIGNED_8_BYTE,
		.elem_len       = 1,
@@ -2280,7 +2280,7 @@ struct qmi_elem_info wlfw_m3_info_req_msg_v01_ei[] = {
	{}
};

struct qmi_elem_info wlfw_m3_info_resp_msg_v01_ei[] = {
const struct qmi_elem_info wlfw_m3_info_resp_msg_v01_ei[] = {
	{
		.data_type      = QMI_STRUCT,
		.elem_len       = 1,
@@ -2294,7 +2294,7 @@ struct qmi_elem_info wlfw_m3_info_resp_msg_v01_ei[] = {
	{}
};

struct qmi_elem_info wlfw_xo_cal_ind_msg_v01_ei[] = {
const struct qmi_elem_info wlfw_xo_cal_ind_msg_v01_ei[] = {
	{
		.data_type      = QMI_UNSIGNED_1_BYTE,
		.elem_len       = 1,
Loading