ソースを参照

qcacmn: Add fw build version in (ext) service event data

FW reports build number in service ready and ext_service ready event.
Save these to display FW build version during brinup.

Change-Id: Ia86a392f826c5bb836be9353e3938ab1f811ab62
CRs-Fixed: 2125667
Kiran Venkatappa 7 年 前
コミット
6cbb319e7a

+ 8 - 0
umac/cmn_services/obj_mgr/inc/wlan_objmgr_psoc_service_ready_api.h

@@ -79,6 +79,8 @@ struct wlan_psoc_hal_reg_capability {
  * @txrx_chainmask: TXRX chain mask
  * @default_dbs_hw_mode_index: DBS hw mode index
  * @num_msdu_desc: number of msdu desc
+ * @fw_version: FW build version
+ * @fw_version_1: Second dword of FW version (Valid for non-tlv FW)
  */
 struct wlan_psoc_target_capability_info {
 	uint32_t phy_capability;
@@ -98,6 +100,8 @@ struct wlan_psoc_target_capability_info {
 	uint32_t txrx_chainmask;
 	uint32_t default_dbs_hw_mode_index;
 	uint32_t num_msdu_desc;
+	uint32_t fw_version;
+	uint32_t fw_version_1;
 };
 
 /**
@@ -299,6 +303,9 @@ struct wlan_psoc_host_chainmask_table {
  * @mpdu_density: units are microseconds
  * @max_bssid_rx_filters: Maximum no of BSSID based RX filters host can program
  *                        Value 0 means FW hasn't given any limit to host.
+ * @fw_build_vers_ext: Extended FW build version info.
+ *                        bits 27:0 rsvd
+ *                        bits 31:28 CRM sub ID
  * @num_hw_modes: Number of HW modes in event
  * @num_phy: Number of Phy mode.
  * @num_chainmask_tables: Number of chain mask tables.
@@ -311,6 +318,7 @@ struct wlan_psoc_host_service_ext_param {
 	uint32_t he_cap_info;
 	uint32_t mpdu_density;
 	uint32_t max_bssid_rx_filters;
+	uint32_t fw_build_vers_ext;
 	uint32_t num_hw_modes;
 	uint32_t num_phy;
 	uint32_t num_chainmask_tables;

+ 2 - 0
wmi/src/wmi_unified_non_tlv.c

@@ -5589,6 +5589,8 @@ static QDF_STATUS extract_service_ready_non_tlv(wmi_unified_t wmi_handle,
 	cap->sys_cap_info = ev->sys_cap_info;
 	cap->min_pkt_size_enable = ev->min_pkt_size_enable;
 	cap->max_bcn_ie_size = ev->max_bcn_ie_size;
+	cap->fw_version = ev->sw_version;
+	cap->fw_version_1 = ev->sw_version_1;
 	/* Following caps not recieved in older fw/hw
 	 * Initialize it as zero(default). */
 	cap->max_num_scan_channels = 0;

+ 4 - 0
wmi/src/wmi_unified_tlv.c

@@ -16231,6 +16231,9 @@ static QDF_STATUS extract_service_ready_tlv(wmi_unified_t wmi_handle,
 	cap->txrx_chainmask = ev->txrx_chainmask;
 	cap->default_dbs_hw_mode_index = ev->default_dbs_hw_mode_index;
 	cap->num_msdu_desc = ev->num_msdu_desc;
+	cap->fw_version = ev->fw_build_vers;
+	/* fw_version_1 is not available in TLV. */
+	cap->fw_version_1 = 0;
 
 	return QDF_STATUS_SUCCESS;
 }
@@ -17864,6 +17867,7 @@ static QDF_STATUS extract_service_ready_ext_tlv(wmi_unified_t wmi_handle,
 	param->he_cap_info = ev->he_cap_info;
 	param->mpdu_density = ev->mpdu_density;
 	param->max_bssid_rx_filters = ev->max_bssid_rx_filters;
+	param->fw_build_vers_ext = ev->fw_build_vers_ext;
 	qdf_mem_copy(&param->ppet, &ev->ppet, sizeof(param->ppet));
 
 	hw_caps = param_buf->soc_hw_mode_caps;