[PATCH 2/3] wcn36xx: Clean up wcn36xx_smd_send_beacon

Eugene Krasnikov k.eugene.e at gmail.com
Thu Feb 13 04:03:12 EST 2014


Aha, thanx for clarification, did not notice that. Looks better this way!

2014-02-13 8:58 GMT+00:00 Pontus Fuchs <pontus.fuchs at gmail.com>:
> Hi,
>
> I reduce BEACON_TEMPLATE_SIZE with 4 to balance the addition of the new
> length parameter.
>
> Cheers,
>
> Pontus
>
>
> On 2014-02-13 09:06, Eugene Krasnikov wrote:
>>
>> size_of(struct wcn36xx_hal_send_beacon_req_msg) is different with your
>> patch and that means PREPARE_HAL_BUF will copy more bytes to the
>> hal_buf buffer. So in the end wcn36xx_smd_send_and_wait will send to
>> the hardware all the bytes that are in the hal_buf buffer and that
>> means extra 4 bytes will be sent to HW. Or do i miss something?
>>
>> 2014-02-12 19:50 GMT+00:00 Pontus Fuchs <pontus.fuchs at gmail.com>:
>>>
>>> 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
>>
>>
>>
>



-- 
Best regards,
Eugene



More information about the wcn36xx mailing list