diff options
author | Pontus Fuchs <pontus.fuchs@gmail.com> | 2016-04-19 01:00:39 -0400 |
---|---|---|
committer | Kalle Valo <kvalo@qca.qualcomm.com> | 2016-04-25 13:37:03 -0400 |
commit | 25d217d6e0723481bf90db1d8be02ab475d16002 (patch) | |
tree | eebe69b11487272608c36da9ced24d9f2b3fe0bd /drivers/net/wireless/ath/wcn36xx | |
parent | 0f9edcdd88a993914fa1d1dc369b35dc503979db (diff) |
wcn36xx: Clean up wcn36xx_smd_send_beacon
Needed for coming improvements. No functional changes.
Signed-off-by: Pontus Fuchs <pontus.fuchs@gmail.com>
[bjorn: restored BEACON_TEMPLATE_SIZE define to 0x180]
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
Diffstat (limited to 'drivers/net/wireless/ath/wcn36xx')
-rw-r--r-- | drivers/net/wireless/ath/wcn36xx/hal.h | 5 | ||||
-rw-r--r-- | drivers/net/wireless/ath/wcn36xx/smd.c | 12 |
2 files changed, 9 insertions, 8 deletions
diff --git a/drivers/net/wireless/ath/wcn36xx/hal.h b/drivers/net/wireless/ath/wcn36xx/hal.h index b947de0fb2e5..d713204f755d 100644 --- a/drivers/net/wireless/ath/wcn36xx/hal.h +++ b/drivers/net/wireless/ath/wcn36xx/hal.h | |||
@@ -2884,11 +2884,14 @@ struct update_beacon_rsp_msg { | |||
2884 | struct wcn36xx_hal_send_beacon_req_msg { | 2884 | struct wcn36xx_hal_send_beacon_req_msg { |
2885 | struct wcn36xx_hal_msg_header header; | 2885 | struct wcn36xx_hal_msg_header header; |
2886 | 2886 | ||
2887 | /* length of the template + 6. Only qcom knows why */ | ||
2888 | u32 beacon_length6; | ||
2889 | |||
2887 | /* length of the template. */ | 2890 | /* length of the template. */ |
2888 | u32 beacon_length; | 2891 | u32 beacon_length; |
2889 | 2892 | ||
2890 | /* Beacon data. */ | 2893 | /* Beacon data. */ |
2891 | u8 beacon[BEACON_TEMPLATE_SIZE]; | 2894 | u8 beacon[BEACON_TEMPLATE_SIZE - sizeof(u32)]; |
2892 | 2895 | ||
2893 | u8 bssid[ETH_ALEN]; | 2896 | u8 bssid[ETH_ALEN]; |
2894 | 2897 | ||
diff --git a/drivers/net/wireless/ath/wcn36xx/smd.c b/drivers/net/wireless/ath/wcn36xx/smd.c index 74f56a81ad9a..ff3ed2461a69 100644 --- a/drivers/net/wireless/ath/wcn36xx/smd.c +++ b/drivers/net/wireless/ath/wcn36xx/smd.c | |||
@@ -1380,19 +1380,17 @@ int wcn36xx_smd_send_beacon(struct wcn36xx *wcn, struct ieee80211_vif *vif, | |||
1380 | mutex_lock(&wcn->hal_mutex); | 1380 | mutex_lock(&wcn->hal_mutex); |
1381 | INIT_HAL_MSG(msg_body, WCN36XX_HAL_SEND_BEACON_REQ); | 1381 | INIT_HAL_MSG(msg_body, WCN36XX_HAL_SEND_BEACON_REQ); |
1382 | 1382 | ||
1383 | /* TODO need to find out why this is needed? */ | 1383 | msg_body.beacon_length = skb_beacon->len; |
1384 | msg_body.beacon_length = skb_beacon->len + 6; | 1384 | /* TODO need to find out why + 6 is needed */ |
1385 | msg_body.beacon_length6 = msg_body.beacon_length + 6; | ||
1385 | 1386 | ||
1386 | if (BEACON_TEMPLATE_SIZE > msg_body.beacon_length) { | 1387 | if (msg_body.beacon_length > BEACON_TEMPLATE_SIZE) { |
1387 | memcpy(&msg_body.beacon, &skb_beacon->len, sizeof(u32)); | ||
1388 | memcpy(&(msg_body.beacon[4]), skb_beacon->data, | ||
1389 | skb_beacon->len); | ||
1390 | } else { | ||
1391 | wcn36xx_err("Beacon is to big: beacon size=%d\n", | 1388 | wcn36xx_err("Beacon is to big: beacon size=%d\n", |
1392 | msg_body.beacon_length); | 1389 | msg_body.beacon_length); |
1393 | ret = -ENOMEM; | 1390 | ret = -ENOMEM; |
1394 | goto out; | 1391 | goto out; |
1395 | } | 1392 | } |
1393 | memcpy(msg_body.beacon, skb_beacon->data, skb_beacon->len); | ||
1396 | memcpy(msg_body.bssid, vif->addr, ETH_ALEN); | 1394 | memcpy(msg_body.bssid, vif->addr, ETH_ALEN); |
1397 | 1395 | ||
1398 | /* TODO need to find out why this is needed? */ | 1396 | /* TODO need to find out why this is needed? */ |