[PATCH 2/3] wcn36xx: Clean up wcn36xx_smd_send_beacon

Eugene Krasnikov k.eugene.e at gmail.com
Wed Feb 12 11:10:34 EST 2014


Hm... I thought if you change any of the
wcn36xx_hal_send_beacon_req_msg structures you will change the
protocol between the host and the chip. So by adding beacon_length6;
you increases the size of the message body on 4 bytes. Are you sure
there are no functional changes in this patch?

2014-02-11 15:53 GMT+00:00 Pontus Fuchs <pontus.fuchs at gmail.com>:
> No functional changes.
>
> Signed-off-by: Pontus Fuchs <pontus.fuchs at gmail.com>
> ---
>  hal.h |  7 +++++--
>  smd.c | 12 +++++-------
>  2 files changed, 10 insertions(+), 9 deletions(-)
>
> diff --git a/hal.h b/hal.h
> index c5e7473..0a4d3fb 100644
> --- a/hal.h
> +++ b/hal.h
> @@ -52,8 +52,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)
> @@ -2883,6 +2883,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;
>
> diff --git a/smd.c b/smd.c
> index 2a67816..bf7092a 100644
> --- a/smd.c
> +++ b/smd.c
> @@ -1298,19 +1298,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? */
> --
> 1.8.3.2
>
>
> _______________________________________________
> wcn36xx mailing list
> wcn36xx at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/wcn36xx



-- 
Best regards,
Eugene



More information about the wcn36xx mailing list