[PATCH 2/3] wcn36xx: Clean up wcn36xx_smd_send_beacon

Pontus Fuchs pontus.fuchs at gmail.com
Wed Feb 12 14:50:49 EST 2014


On 2014-02-12 17:10, Eugene Krasnikov wrote:
> 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?

Yes I am pretty sure. See below why.

> 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;
This field is new as you noticed....

>> +
>>          /* 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);
But I remove this strange stuff to keep the balance. The first memcpy 
corresponds to the assignment of msg_body.beacon_length

Cheers,

Pontus



More information about the wcn36xx mailing list