Search Linux Wireless

Re: [PATCH] wl12xx: don't join upon disassociation

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Jan 4, 2011 at 2:53 PM, Juuso Oikarinen
<juuso.oikarinen@xxxxxxxxx> wrote:
> On Sun, 2010-12-26 at 10:27 +0200, ext Eliad Peller wrote:
>> wl12xx "rejoins" upon every BSS_CHANGED_BSSID notification.
>> However, there is no need to rejoin after disassociation, so just
>> filter out the case when the new bssid is 00:00:00:00:00:00.
>>
>> Signed-off-by: Eliad Peller <eliad@xxxxxxxxxx>
>> ---
>>  drivers/net/wireless/wl12xx/main.c |   24 ++++++++++++++----------
>>  1 files changed, 14 insertions(+), 10 deletions(-)
>>
>> diff --git a/drivers/net/wireless/wl12xx/main.c b/drivers/net/wireless/wl12xx/main.c
>> index 062247e..7aa783c 100644
>> --- a/drivers/net/wireless/wl12xx/main.c
>> +++ b/drivers/net/wireless/wl12xx/main.c
>> @@ -1944,19 +1944,23 @@ static void wl1271_op_bss_info_changed(struct ieee80211_hw *hw,
>>           memcmp(wl->bssid, bss_conf->bssid, ETH_ALEN)) {
>>                       memcpy(wl->bssid, bss_conf->bssid, ETH_ALEN);
>>
>> -                     ret = wl1271_cmd_build_null_data(wl);
>> -                     if (ret < 0)
>> -                             goto out_sleep;
>> +                     if (!is_zero_ether_addr(wl->bssid)) {
>> +                             ret = wl1271_cmd_build_null_data(wl);
>> +                             if (ret < 0)
>> +                                     goto out_sleep;
>>
>> -                     ret = wl1271_build_qos_null_data(wl);
>> -                     if (ret < 0)
>> -                             goto out_sleep;
>> +                             ret = wl1271_build_qos_null_data(wl);
>> +                             if (ret < 0)
>> +                                     goto out_sleep;
>>
>> -                     /* filter out all packets not from this BSSID */
>> -                     wl1271_configure_filters(wl, 0);
>> +                             /* filter out all packets not from this BSSID */
>> +                             wl1271_configure_filters(wl, 0);
>>
>> -                     /* Need to update the BSSID (for filtering etc) */
>> -                     do_join = true;
>> +                             /*
>> +                              * Need to update the BSSID (for filtering etc)
>> +                              */
>> +                             do_join = true;
>> +                     }
>>       }
>>
>>       if (changed & BSS_CHANGED_ASSOC) {
>
> The device still stays joined after disassoc, right? I guess the device
> should be receiving/transmitting frames while not idle.
>
> That is why we did have a specific dummy-join in disassoc, and also the
> BSSID filters etc are cleared!
>
the patch doesn't unjoin, it just prevents rejoining (and some other
configurations) to an "empty" bssid, so it shouldn't affect the
current join state.
the actual unjoin will only be only executed when the device goes idle.
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux