[PATCH 2/3] Move SCAN commands to use hal.h

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


Signed-off-by: Eugene Krasnikov <k.eugene.e at gmail.com>
---
 hal.h  | 22 +++++++++---------
 main.c |  2 +-
 smd.c  | 80 +++++++++++++++++++++++++++++++-----------------------------------
 smd.h  | 72 +----------------------------------------------------------
 4 files changed, 50 insertions(+), 126 deletions(-)

diff --git a/hal.h b/hal.h
index ac529a2..419f141 100644
--- a/hal.h
+++ b/hal.h
@@ -915,16 +915,16 @@ struct wcn36xx_hal_init_scan_rsp_msg {
 	/* success or failure */
 	u32 status;
 
-};
+} __packed;
 
 struct wcn36xx_hal_start_scan_req_msg {
 	struct wcn36xx_hal_msg_header header;
 
 	/* Indicates the channel to scan */
 	u8 scan_channel;
-};
+} __packed;
 
-struct wcn36xx_hal_start_rsm_msg {
+struct wcn36xx_hal_start_rsp_msg {
 	struct wcn36xx_hal_msg_header header;
 
 	/* success or failure */
@@ -933,7 +933,7 @@ struct wcn36xx_hal_start_rsm_msg {
 	u32 start_tsf[2];
 	u8 tx_mgmt_power;
 
-};
+} __packed;
 
 struct wcn36xx_hal_end_scan_req_msg {
 	struct wcn36xx_hal_msg_header header;
@@ -942,14 +942,14 @@ struct wcn36xx_hal_end_scan_req_msg {
 	 * retained for symmetry with "start Scan" message. It can also
 	 * help in error check if needed. */
 	u8 scan_channel;
-};
+} __packed;
 
 struct wcn36xx_hal_end_scan_rsp_msg {
 	struct wcn36xx_hal_msg_header header;
 
 	/* success or failure */
 	u32 status;
-};
+} __packed;
 
 struct wcn36xx_hal_finish_scan_req_msg {
 	struct wcn36xx_hal_msg_header header;
@@ -989,7 +989,7 @@ struct wcn36xx_hal_finish_scan_req_msg {
 	/* Entry to hold number of active BSS idx's */
 	struct wcn36xx_hal_scan_entry scan_entry;
 
-};
+} __packed;
 
 struct wcn36xx_hal_finish_scan_rsp_msg {
 	struct wcn36xx_hal_msg_header header;
@@ -4026,7 +4026,7 @@ struct set_rssi_filter_resp {
 
 /* Update scan params - sent from host to PNO to be used during PNO
  * scanningx */
-struct update_scan_params_req {
+struct wcn36xx_hal_update_scan_params_req {
 
 	struct wcn36xx_hal_msg_header header;
 
@@ -4054,7 +4054,7 @@ struct update_scan_params_req {
 
 	/* Cb State */
 	enum phy_chan_bond_state state;
-};
+} __packed;
 
 /* Update scan params - sent from host to PNO to be used during PNO
  * scanningx */
@@ -4090,13 +4090,13 @@ struct update_scan_params_req_ex {
 
 /* Update scan params - sent from host to PNO to be used during PNO
  * scanningx */
-struct update_scan_params_resp {
+struct wcn36xx_hal_update_scan_params_resp {
 
 	struct wcn36xx_hal_msg_header header;
 
 	/* status of the request */
 	u32 status;
-};
+} __packed;
 
 struct wcn36xx_hal_set_tx_per_tracking_req_msg {
 	struct wcn36xx_hal_msg_header header;
diff --git a/main.c b/main.c
index 342e5b9..30636af 100644
--- a/main.c
+++ b/main.c
@@ -177,7 +177,7 @@ static int wcn36xx_hw_scan(struct ieee80211_hw *hw,
 		msleep(60);
 
 		wcn36xx_smd_end_scan(wcn, ch);
-		wcn36xx_smd_deinit_scan(wcn);
+		wcn36xx_smd_finish_scan(wcn);
 	}
 
 	ieee80211_scan_completed(wcn->hw, false);
diff --git a/smd.c b/smd.c
index c2fb21d..ec84b70 100644
--- a/smd.c
+++ b/smd.c
@@ -182,85 +182,79 @@ static int wcn36xx_smd_start_rsp(void *buf, size_t len)
 
 int wcn36xx_smd_init_scan(struct wcn36xx *wcn)
 {
-	struct wcn36xx_fw_msg_init_scan_req msg_body;
-	struct wcn36xx_fw_msg_header msg_header;
+	struct wcn36xx_hal_init_scan_req_msg msg_body;
 
-	INIT_MSG(msg_header, &msg_body, WCN36XX_FW_MSG_TYPE_INIT_SCAN_REQ)
+	INIT_HAL_MSG(msg_body, WCN36XX_HAL_INIT_SCAN_REQ)
 
-	msg_body.scan_mode = SMD_MSG_SCAN_MODE;
+	msg_body.mode = HAL_SYS_MODE_SCAN;
 
-	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);
 }
 
 int wcn36xx_smd_start_scan(struct wcn36xx *wcn, u8 ch)
 {
-	struct wcn36xx_fw_msg_start_scan_req msg_body;
-	struct wcn36xx_fw_msg_header msg_header;
+	struct wcn36xx_hal_start_scan_req_msg msg_body;
 
-	INIT_MSG(msg_header, &msg_body, WCN36XX_FW_MSG_TYPE_START_SCAN_REQ)
+	INIT_HAL_MSG(msg_body, WCN36XX_HAL_START_SCAN_REQ)
 
-	msg_body.ch = ch;
+	msg_body.scan_channel = ch;
 
-	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);
 }
 int wcn36xx_smd_end_scan(struct wcn36xx *wcn, u8 ch)
 {
-	struct wcn36xx_fw_msg_end_scan_req msg_body;
-	struct wcn36xx_fw_msg_header msg_header;
+	struct wcn36xx_hal_end_scan_req_msg msg_body;
 
-	INIT_MSG(msg_header, &msg_body, WCN36XX_FW_MSG_TYPE_END_SCAN_REQ)
+	INIT_HAL_MSG(msg_body, WCN36XX_HAL_END_SCAN_REQ)
 
-	msg_body.ch = ch;
+	msg_body.scan_channel = ch;
 
-	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);
 }
-int wcn36xx_smd_deinit_scan(struct wcn36xx *wcn)
+int wcn36xx_smd_finish_scan(struct wcn36xx *wcn)
 {
-	struct wcn36xx_fw_msg_deinit_scan_req msg_body;
-	struct wcn36xx_fw_msg_header msg_header;
+	struct wcn36xx_hal_finish_scan_req_msg msg_body;
 
-	INIT_MSG(msg_header, &msg_body, WCN36XX_FW_MSG_TYPE_DEINIT_SCAN_REQ)
+	INIT_HAL_MSG(msg_body, WCN36XX_HAL_FINISH_SCAN_REQ)
 
-	msg_body.scan_mode = SMD_MSG_SCAN_MODE;
+	msg_body.mode = HAL_SYS_MODE_SCAN;
 
-	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);
 }
 int wcn36xx_smd_update_scan_params(struct wcn36xx *wcn){
-	struct wcn36xx_fw_msg_update_scan_params_req msg_body;
-	struct wcn36xx_fw_msg_header msg_header;
+	struct wcn36xx_hal_update_scan_params_req msg_body;
 
-	INIT_MSG(msg_header, &msg_body, WCN36XX_FW_MSG_TYPE_UPDATE_SCAN_PARAM_REQ)
+	INIT_HAL_MSG(msg_body, WCN36XX_HAL_UPDATE_SCAN_PARAM_REQ)
 
 	// TODO read this from config
-	msg_body.enable_11d	= 0;
-	msg_body.resolved_11d = 0;
-	msg_body.ch_count = 26;
+	msg_body.dot11d_enabled	= 0;
+	msg_body.dot11d_resolved = 0;
+	msg_body.channel_count = 26;
 	msg_body.active_min_ch_time = 60;
 	msg_body.active_max_ch_time = 120;
 	msg_body.passive_min_ch_time = 60;
 	msg_body.passive_max_ch_time = 110;
-	msg_body.phy_ch_state = 0;
+	msg_body.state = 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_update_scan_params_rsp(void *buf, size_t len)
 {
-	struct  wcn36xx_fw_msg_status_rsp * rsp;
+	struct  wcn36xx_hal_update_scan_params_resp * rsp;
 
-	rsp = (struct wcn36xx_fw_msg_status_rsp *)
-		(buf + sizeof(struct wcn36xx_fw_msg_header));
+	rsp = (struct wcn36xx_hal_update_scan_params_resp *)buf;
 
-	wcn36xx_info("Scan params stattus=%d",rsp->status);
+	wcn36xx_info("Scan params stattus=0x%x",rsp->status);
 	return 0;
 }
 
@@ -530,10 +524,10 @@ static void wcn36xx_smd_rsp_process (void *buf, size_t len)
 		wcn36xx_smd_start_rsp(buf, len);
 		break;
 	case WCN36XX_FW_MSG_TYPE_ADD_STA_RSP:
-	case WCN36XX_FW_MSG_TYPE_INIT_SCAN_RSP:
-	case WCN36XX_FW_MSG_TYPE_START_SCAN_RSP:
-	case WCN36XX_FW_MSG_TYPE_END_SCAN_RSP:
-	case WCN36XX_FW_MSG_TYPE_DEINIT_SCAN_RSP:
+	case WCN36XX_HAL_INIT_SCAN_RSP:
+	case WCN36XX_HAL_START_SCAN_RSP:
+	case WCN36XX_HAL_END_SCAN_RSP:
+	case WCN36XX_HAL_FINISH_SCAN_RSP:
 	case WCN36XX_FW_MSG_TYPE_LOAD_NV_RSP:
 	case WCN36XX_FW_MSG_TYPE_ENTER_IMPS_RSP:
 	case WCN36XX_FW_MSG_TYPE_EXIT_IMPS_RSP:
@@ -547,7 +541,7 @@ static void wcn36xx_smd_rsp_process (void *buf, size_t len)
 	case WCN36XX_FW_MSG_TYPE_JOIN_RSP:
 		wcn36xx_smd_join_rsp(buf, len);
 		break;
-	case WCN36XX_FW_MSG_TYPE_UPDATE_SCAN_PARAM_RSP:
+	case WCN36XX_HAL_UPDATE_SCAN_PARAM_RSP:
 		wcn36xx_smd_update_scan_params_rsp(buf, len);
 		break;
 	default:
diff --git a/smd.h b/smd.h
index 08f8c3b..6fce852 100644
--- a/smd.h
+++ b/smd.h
@@ -28,19 +28,7 @@
 #define WCN36XX_SMSM_WLAN_TX_ENABLE	 		0x00000400
 #define WCN36XX_SMSM_WLAN_TX_RINGS_EMPTY		0x00000200
 
-#define SMD_MSG_SCAN_MODE 				2
-
 enum wcn36xx_fw_msg_type {
-	/* Scan */
-	WCN36XX_FW_MSG_TYPE_INIT_SCAN_REQ		= 4,
-	WCN36XX_FW_MSG_TYPE_INIT_SCAN_RSP		= 5,
-	WCN36XX_FW_MSG_TYPE_START_SCAN_REQ		= 6,
-	WCN36XX_FW_MSG_TYPE_START_SCAN_RSP		= 7,
-	WCN36XX_FW_MSG_TYPE_END_SCAN_REQ		= 8,
-	WCN36XX_FW_MSG_TYPE_END_SCAN_RSP		= 9,
-	WCN36XX_FW_MSG_TYPE_DEINIT_SCAN_REQ		= 10,
-	WCN36XX_FW_MSG_TYPE_DEINIT_SCAN_RSP		= 11,
-
 	WCN36XX_FW_MSG_TYPE_CONFIG_BSS_REQ              = 16,
 	WCN36XX_FW_MSG_TYPE_CONFIG_BSS_RSP              = 17,
 
@@ -50,9 +38,6 @@ enum wcn36xx_fw_msg_type {
 	WCN36XX_FW_MSG_TYPE_SET_LINK_ST_REQ		= 44,
 	WCN36XX_FW_MSG_TYPE_SET_LINK_ST_RSP		= 45,
 
-	WCN36XX_FW_MSG_TYPE_UPDATE_SCAN_PARAM_REQ	= 151,
-	WCN36XX_FW_MSG_TYPE_UPDATE_SCAN_PARAM_RSP	= 152,
-
 	/* CFG */
 	WCN36XX_FW_MSG_TYPE_UPDATE_CFG_REQ		= 48,
 	WCN36XX_FW_MSG_TYPE_UPDATE_CFG_RSP		= 49,
@@ -138,7 +123,6 @@ struct wcn36xx_fw_msg_status_rsp {
 #define wcn36xx_fw_msg_exit_imps_rsp 		wcn36xx_fw_msg_status_rsp
 #define wcn36xx_fw_msg_init_scan_rsp 		wcn36xx_fw_msg_status_rsp
 #define wcn36xx_fw_msg_end_scan_rsp 		wcn36xx_fw_msg_status_rsp
-#define wcn36xx_fw_msg_scan_params_rsp 		wcn36xx_fw_msg_status_rsp
 #define wcn36xx_fw_msg_ex_caps_rsp 		wcn36xx_fw_msg_ex_caps_req
 
 /* WCN36XX_FW_MSG_TYPE_LOAD_NV_REQ */
@@ -154,60 +138,6 @@ struct wcn36xx_fw_msg_update_cfg_req {
 	 // config buffer must start in TLV format just here
 } __packed;
 
-/* WCN36XX_FW_MSG_TYPE_INIT_SCAN_REQ */
-struct wcn36xx_fw_msg_init_scan_req {
-	u32 				scan_mode;
-	u8 				bssid[ETH_ALEN];
-	u8				notify_bss;
-	u8				frame_type;
-	u8				frame_len;
-	struct ieee80211_hdr_3addr 	hdr;
-	u8				bssidx[2];
-	u8				active_bss;
-} __packed;
-
-/* WCN36XX_FW_MSG_TYPE_START_SCAN_REQ */
-struct wcn36xx_fw_msg_start_scan_req {
-	u8	ch;
-} __packed;
-struct wcn36xx_fw_msg_start_scan_rsp {
-	u32 	status;
-	u32	start_TSF[2];
-	u8	mgmt_power;
-} __packed;
-
-/* WCN36XX_FW_MSG_TYPE_END_SCAN_REQ */
-struct wcn36xx_fw_msg_end_scan_req {
-	u8	ch;
-} __packed;
-
-/* WCN36XX_FW_MSG_TYPE_DEINIT_SCAN_REQ */
-struct wcn36xx_fw_msg_deinit_scan_req {
-	u32 				scan_mode;
-	u8				cur_ch;
-	u32				bon_state;
-	u8 				bssid[ETH_ALEN];
-	u8				notify_bss;
-	u8				frame_type;
-	u8				frame_len;
-	struct ieee80211_hdr_3addr 	hdr;
-	u8				bssidx[2];
-	u8				active_bss;
-} __packed;
-
-/* WCN36XX_FW_MSG_TYPE_UPDATE_SCAN_PARAM_REQ */
-struct wcn36xx_fw_msg_update_scan_params_req {
-	u8	enable_11d;
-	u8	resolved_11d;
-	u8	ch_count;
-	u8	ch[26];
-	u16	active_min_ch_time;
-	u16	active_max_ch_time;
-	u16	passive_min_ch_time;
-	u16	passive_max_ch_time;
-	u32	phy_ch_state;
-} __packed;
-
 /* WCN36XX_FW_MSG_TYPE_EX_CAPABILITIES_REQ */
 struct wcn36xx_fw_msg_ex_capabilities_req {
 	u32	caps[4];
@@ -392,7 +322,7 @@ int wcn36xx_smd_start(struct wcn36xx *wcn);
 int wcn36xx_smd_init_scan(struct wcn36xx *wcn);
 int wcn36xx_smd_start_scan(struct wcn36xx *wcn, u8 ch);
 int wcn36xx_smd_end_scan(struct wcn36xx *wcn, u8 ch);
-int wcn36xx_smd_deinit_scan(struct wcn36xx *wcn);
+int wcn36xx_smd_finish_scan(struct wcn36xx *wcn);
 int wcn36xx_smd_update_scan_params(struct wcn36xx *wcn);
 int wcn36xx_smd_add_sta(struct wcn36xx *wcn, struct mac_address addr, u32 status);
 int wcn36xx_smd_enter_imps(struct wcn36xx *wcn);
-- 
1.7.11.3




More information about the wcn36xx mailing list