[PATCH 2/3] wcn36xx: Clean up wcn36xx_smd_send_beacon
Pontus Fuchs
pontus.fuchs at gmail.com
Thu Feb 13 03:58:28 EST 2014
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
>
>
More information about the wcn36xx
mailing list