[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