]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
wcn36xx: Clean up wcn36xx_smd_send_beacon
authorPontus Fuchs <pontus.fuchs@gmail.com>
Mon, 10 Feb 2014 20:32:11 +0000 (21:32 +0100)
committerBjorn Andersson <bjorn.andersson@linaro.org>
Tue, 26 Jan 2016 02:02:39 +0000 (18:02 -0800)
Needed for coming improvements. No functional changes.

Signed-off-by: Pontus Fuchs <pontus.fuchs@gmail.com>
drivers/net/wireless/ath/wcn36xx/hal.h
drivers/net/wireless/ath/wcn36xx/smd.c

index a1f1127d7808d739e4f6571fa0f071491ca289bc..c13032a5d16e46b47f6c0702c12c1340217ad394 100644 (file)
@@ -51,8 +51,8 @@
 #define WALN_HAL_STA_INVALID_IDX 0xFF
 #define WCN36XX_HAL_BSS_INVALID_IDX 0xFF
 
-/* Default Beacon template size */
-#define BEACON_TEMPLATE_SIZE 0x180
+/* Default Beacon template size. */
+#define BEACON_TEMPLATE_SIZE 0x17C
 
 /* Param Change Bitmap sent to HAL */
 #define PARAM_BCN_INTERVAL_CHANGED                      (1 << 0)
@@ -2882,6 +2882,9 @@ struct update_beacon_rsp_msg {
 struct wcn36xx_hal_send_beacon_req_msg {
        struct wcn36xx_hal_msg_header header;
 
+       /* length of the template + 6. Only qcom knows why */
+       u32 beacon_length6;
+
        /* length of the template. */
        u32 beacon_length;
 
index c9263e1c75d4184a54c308c8001120ddfa76d59c..52c9a0eaa27c9b3660c931a586eb87e4c630e146 100644 (file)
@@ -1364,19 +1364,17 @@ int wcn36xx_smd_send_beacon(struct wcn36xx *wcn, struct ieee80211_vif *vif,
        mutex_lock(&wcn->hal_mutex);
        INIT_HAL_MSG(msg_body, WCN36XX_HAL_SEND_BEACON_REQ);
 
-       /* TODO need to find out why this is needed? */
-       msg_body.beacon_length = skb_beacon->len + 6;
+       msg_body.beacon_length = skb_beacon->len;
+       /* TODO need to find out why + 6 is needed */
+       msg_body.beacon_length6 = msg_body.beacon_length + 6;
 
-       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 {
+       if (msg_body.beacon_length > BEACON_TEMPLATE_SIZE) {
                wcn36xx_err("Beacon is to big: beacon size=%d\n",
                              msg_body.beacon_length);
                ret = -ENOMEM;
                goto out;
        }
+       memcpy(msg_body.beacon, skb_beacon->data, skb_beacon->len);
        memcpy(msg_body.bssid, vif->addr, ETH_ALEN);
 
        /* TODO need to find out why this is needed? */