[PATCH 1/3] Move START command to use hal.h

Eugene Krasnikov k.eugene.e at gmail.com
Tue Apr 30 12:26:32 EDT 2013


Signed-off-by: Eugene Krasnikov <k.eugene.e at gmail.com>
---
 hal.h | 15 +++++++--------
 smd.c | 27 ++++++++++++---------------
 smd.h | 28 ----------------------------
 3 files changed, 19 insertions(+), 51 deletions(-)

diff --git a/hal.h b/hal.h
index e566a6f..ac529a2 100644
--- a/hal.h
+++ b/hal.h
@@ -661,7 +661,7 @@ struct wcn36xx_hal_msg_header {
 	enum wcn36xx_hal_host_msg_type msgType:16;
 	enum wcn36xx_hal_host_msg_version msgVersion:16;
 	u32 len;
-};
+} __packed;
 
 /* Config format required by HAL for each CFG item*/
 struct wcn36xx_hal_cfg {
@@ -691,7 +691,7 @@ struct wcn36xx_hal_mac_start_parameters {
 	u32 len;
 
 	/* Following this there is a TLV formatted buffer of length 
-	 * "uConfigBufferLen" bytes containing all config values. 
+	 * "len" bytes containing all config values.
 	 * The TLV is expected to be formatted like this:
 	 * 0           15            31           31+CFG_LEN-1        length-1
 	 * |   CFG_ID   |   CFG_LEN   |   CFG_BODY    |  CFG_ID  |......|
@@ -699,11 +699,10 @@ struct wcn36xx_hal_mac_start_parameters {
 } __packed;
 
 struct wcn36xx_hal_mac_start_req_msg {
-	/* Note: The length specified in tHalMacStartReqMsg messages should be
-	 * header.msgLen = sizeof(tHalMacStartReqMsg) + uConfigBufferLen */
+	/* config buffer must start in TLV format just here */
 	struct wcn36xx_hal_msg_header header;
 	struct wcn36xx_hal_mac_start_parameters params;
-};
+} __packed;
 
 struct wcn36xx_hal_mac_start_rsp_params {
 	/* success or failure */
@@ -724,12 +723,12 @@ struct wcn36xx_hal_mac_start_rsp_params {
 	/* hardware/chipset/misc version information */
 	u8 wlan_version[WCN36XX_HAL_VERSION_LENGTH];
 
-};
+} __packed;
 
 struct wcn36xx_hal_mac_start_rsp_msg {
 	struct wcn36xx_hal_msg_header header;
-	struct wcn36xx_hal_mac_start_rsp_params startRspParams;
-};
+	struct wcn36xx_hal_mac_start_rsp_params start_rsp_params;
+} __packed;
 
 struct wcn36xx_hal_mac_stop_req_params {
 	/* The reason for which the device is being stopped */
diff --git a/smd.c b/smd.c
index 4c7a9fb..c2fb21d 100644
--- a/smd.c
+++ b/smd.c
@@ -153,33 +153,30 @@ int wcn36xx_smd_load_nv(struct wcn36xx *wcn)
 
 int wcn36xx_smd_start(struct wcn36xx *wcn)
 {
-	struct wcn36xx_fw_msg_header msg_header;
-	struct wcn36xx_fw_msg_start_req msg_body;
+	struct wcn36xx_hal_mac_start_req_msg msg_body;
 
-	INIT_MSG(msg_header, &msg_body, WCN36XX_FW_MSG_TYPE_START_REQ)
+	INIT_HAL_MSG(msg_body, WCN36XX_HAL_START_REQ)
 
-	msg_body.driver_type = WCN36XX_FW_MSG_DRIVER_TYPE_PROD;
-	msg_body.conf_len = 0;
+	msg_body.params.type = DRIVER_TYPE_PRODUCTION;
+	msg_body.params.len = 0;
 
-	PREPARE_BUF(wcn->smd_buf, msg_header, &msg_body)
+	PREPARE_HAL_BUF(wcn->smd_buf, msg_body)
 
-	return wcn36xx_smd_send_and_wait(wcn, msg_header.msg_len);
+	return wcn36xx_smd_send_and_wait(wcn, msg_body.header.len);
 }
 static int wcn36xx_smd_start_rsp(void *buf, size_t len)
 {
-	struct wcn36xx_fw_msg_start_rsp * rsp;
+	struct wcn36xx_hal_mac_start_rsp_msg * rsp;
 
-	if (len < sizeof(struct wcn36xx_fw_msg_header) +
-		sizeof(struct wcn36xx_fw_msg_status_rsp))
+	if (len < sizeof(*rsp))
 		return -EIO;
 
-	rsp = (struct wcn36xx_fw_msg_start_rsp *)
-		(buf + sizeof(struct wcn36xx_fw_msg_header));
+	rsp = (struct wcn36xx_hal_mac_start_rsp_msg *)buf;
 
-	if (WCN36XX_FW_MSG_RESULT_SUCCESS != rsp->status)
+	if (WCN36XX_FW_MSG_RESULT_SUCCESS != rsp->start_rsp_params.status)
 		return -EIO;
 	wcn36xx_info("WLAN ver=%s, CRM ver=%s",
-		rsp->wlan_ver, rsp->crm_ver);
+		rsp->start_rsp_params.wlan_version, rsp->start_rsp_params.crm_version);
 	return 0;
 }
 
@@ -529,7 +526,7 @@ static void wcn36xx_smd_rsp_process (void *buf, size_t len)
 
 	wcn36xx_dbg_dump("SMD <<< ", buf, len);
 	switch (msg_header->msg_type) {
-	case WCN36XX_FW_MSG_TYPE_START_RSP:
+	case WCN36XX_HAL_START_RSP:
 		wcn36xx_smd_start_rsp(buf, len);
 		break;
 	case WCN36XX_FW_MSG_TYPE_ADD_STA_RSP:
diff --git a/smd.h b/smd.h
index 95f8516..08f8c3b 100644
--- a/smd.h
+++ b/smd.h
@@ -31,9 +31,6 @@
 #define SMD_MSG_SCAN_MODE 				2
 
 enum wcn36xx_fw_msg_type {
-	WCN36XX_FW_MSG_TYPE_START_REQ			= 0,
-	WCN36XX_FW_MSG_TYPE_START_RSP			= 1,
-
 	/* Scan */
 	WCN36XX_FW_MSG_TYPE_INIT_SCAN_REQ		= 4,
 	WCN36XX_FW_MSG_TYPE_INIT_SCAN_RSP		= 5,
@@ -95,10 +92,6 @@ enum wcn36xx_fw_msg_ver {
 	WCN36XX_FW_MSG_VER0				= 0
 };
 
-enum wcn36xx_fw_msg_driver_type {
-	WCN36XX_FW_MSG_DRIVER_TYPE_PROD 		= 0
-};
-
 enum wcn36xx_fw_msg_bss_type {
 	WCN36XX_FW_MSG_BSS_TYPE_STA                     = 0,
 	WCN36XX_FW_MSG_BSS_TYPE_AP                      = 1
@@ -155,27 +148,6 @@ struct wcn36xx_fw_msg_nv_load_header {
 	u32 	msg_len;
 } __packed;
 
-/* WCN36XX_FW_MSG_TYPE_START_REQ */
-struct wcn36xx_fw_msg_start_req {
-	enum wcn36xx_fw_msg_driver_type 	driver_type;
-	u32 	conf_len;
-	 // config buffer must start in TLV format just here
-} __packed;
-struct wcn36xx_fw_msg_api_ver {
-	u8	rev;
-	u8	ver;
-	u8	minor;
-	u8	major;
-} __packed;
-struct wcn36xx_fw_msg_start_rsp {
-	u16 				status;
-	u8 				max_sta;
-	u8 				max_bss;
-	struct wcn36xx_fw_msg_api_ver 	api_ver;
-	u8				crm_ver[64];
-	u8				wlan_ver[64];
-} __packed;
-
 /* WCN36XX_FW_MSG_TYPE_UPDATE_CFG_REQ */
 struct wcn36xx_fw_msg_update_cfg_req {
 	u32 	conf_len;
-- 
1.7.11.3




More information about the wcn36xx mailing list