[PATCH 4/7] Move SEND_BEACON command to use hal.h
Eugene Krasnikov
k.eugene.e at gmail.com
Thu May 2 13:00:21 EDT 2013
Signed-off-by: Eugene Krasnikov <k.eugene.e at gmail.com>
---
hal.h | 6 +++---
smd.c | 24 +++++++++++-------------
smd.h | 14 --------------
3 files changed, 14 insertions(+), 30 deletions(-)
diff --git a/hal.h b/hal.h
index d1658e9..5dd5af8 100644
--- a/hal.h
+++ b/hal.h
@@ -2825,7 +2825,7 @@ struct update_beacon_rsp_msg {
u32 status;
};
-struct send_beacon_req_msg {
+struct wcn36xx_hal_send_beacon_req_msg {
struct wcn36xx_hal_msg_header header;
/* length of the template. */
@@ -2841,12 +2841,12 @@ struct send_beacon_req_msg {
/* P2P IE offset from the begining of the template */
u16 p2p_ie_offset;
-};
+} __packed;
struct send_beacon_rsp_msg {
struct wcn36xx_hal_msg_header header;
u32 status;
-};
+} __packed;
struct enable_radar_req_msg {
struct wcn36xx_hal_msg_header header;
diff --git a/smd.c b/smd.c
index bf7ffda..9b6a001 100644
--- a/smd.c
+++ b/smd.c
@@ -424,30 +424,28 @@ int wcn36xx_smd_config_bss(struct wcn36xx *wcn, bool sta_mode, u8 *bssid, u8 upd
return wcn36xx_smd_send_and_wait(wcn, msg_body.header.len);
}
int wcn36xx_smd_send_beacon(struct wcn36xx *wcn, struct sk_buff *skb_beacon, u16 tim_off, u16 p2p_off){
- struct wcn36xx_fw_msg_send_bcn_req msg_body;
- struct wcn36xx_fw_msg_header msg_header;
-
- INIT_MSG(msg_header, &msg_body, WCN36XX_FW_MSG_TYPE_SEND_BEACON_REQ)
+ struct wcn36xx_hal_send_beacon_req_msg msg_body;
+ INIT_HAL_MSG(msg_body, WCN36XX_HAL_SEND_BEACON_REQ)
// TODO need to find out why this is needed?
- msg_body.beacon_len = skb_beacon->len+6;
- msg_body.beacon_len2 = skb_beacon->len;
+ msg_body.beacon_length = skb_beacon->len + 6;
// TODO make this as a const
- if (0x17C > msg_body.beacon_len) {
- memcpy(&msg_body.beacon, skb_beacon->data, skb_beacon->len);
+ if (BEACON_TEMPLATE_SIZE > msg_body.beacon_length) {
+ memcpy(&msg_body.beacon, &skb_beacon->len, sizeof(u32));
+ memcpy(&(msg_body.beacon[4]), skb_beacon->data, skb_beacon->len);
} else {
- wcn36xx_error("Beacon is to big: beacon size=%d", msg_body.beacon_len);
+ wcn36xx_error("Beacon is to big: beacon size=%d", msg_body.beacon_length);
return -ENOMEM;
}
- memcpy(&msg_body.mac, &wcn->addresses[0], ETH_ALEN);
+ memcpy(&msg_body.bssid, &wcn->addresses[0], ETH_ALEN);
// TODO need to find out why this is needed?
msg_body.tim_ie_offset = tim_off+4;
msg_body.p2p_ie_offset = p2p_off;
- 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 void wcn36xx_smd_notify(void *data, unsigned event)
@@ -491,7 +489,7 @@ static void wcn36xx_smd_rsp_process (void *buf, size_t len)
case WCN36XX_FW_MSG_TYPE_EXIT_IMPS_RSP:
case WCN36XX_HAL_CONFIG_BSS_RSP:
case WCN36XX_HAL_CONFIG_STA_RSP:
- case WCN36XX_FW_MSG_TYPE_SEND_BEACON_RSP:
+ case WCN36XX_HAL_SEND_BEACON_REQ:
if(wcn36xx_smd_rsp_status_check(buf, len)) {
wcn36xx_error("response failed");
diff --git a/smd.h b/smd.h
index 6ff1d4e..328ce04 100644
--- a/smd.h
+++ b/smd.h
@@ -33,9 +33,6 @@ enum wcn36xx_fw_msg_type {
WCN36XX_FW_MSG_TYPE_UPDATE_CFG_REQ = 48,
WCN36XX_FW_MSG_TYPE_UPDATE_CFG_RSP = 49,
- WCN36XX_FW_MSG_TYPE_SEND_BEACON_REQ = 63,
- WCN36XX_FW_MSG_TYPE_SEND_BEACON_RSP = 64,
-
WCN36XX_FW_MSG_TYPE_ENTER_IMPS_REQ = 76,
WCN36XX_FW_MSG_TYPE_ENTER_IMPS_RSP = 95,
@@ -98,17 +95,6 @@ struct wcn36xx_fw_msg_add_bcn_filter_req {
u32 phy_ch_state;
} __packed;
-/* WCN36XX_FW_MSG_TYPE_SEND_BEACON_REQ */
-struct wcn36xx_fw_msg_send_bcn_req {
- u32 beacon_len;
- //TODO What is the purpose of having two len?
- u32 beacon_len2;
- u8 beacon[0x17C];
- u8 mac[ETH_ALEN];
- u32 tim_ie_offset;
- u16 p2p_ie_offset;
-} __packed;
-
struct wcn36xx_fw_msg_header {
enum wcn36xx_fw_msg_type msg_type:16;
enum wcn36xx_fw_msg_ver msg_ver:16;
--
1.7.11.3
More information about the wcn36xx
mailing list