Search Linux Wireless

Re: [PATCH 2/2] ath5k: Adjust opmode when interfaces are removed.

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

 



On Fri, Oct 8, 2010 at 2:06 PM, Ben Greear <greearb@xxxxxxxxxxxxxxx> wrote:
> On 10/08/2010 11:03 AM, Bob Copeland wrote:
>>
>> On Fri, Oct 8, 2010 at 12:43 PM,<greearb@xxxxxxxxxxxxxxx>  wrote:
>>>
>>> @@ -558,6 +577,7 @@ void ath5k_update_bssid_mask(struct ath5k_softc *sc,
>>> struct ieee80211_vif *vif)
>>>        memset(&iter_data.mask, 0xff, ETH_ALEN);
>>>        iter_data.found_active = false;
>>>        iter_data.need_set_hw_addr = true;
>>> +       iter_data.opmode = NL80211_IFTYPE_UNSPECIFIED;
>>>
>>>        if (vif)
>>>                ath_vif_iter(&iter_data, vif->addr, vif);
>>> @@ -567,6 +587,11 @@ void ath5k_update_bssid_mask(struct ath5k_softc *sc,
>>> struct ieee80211_vif *vif)
>>>                                                   &iter_data);
>>>        memcpy(sc->bssidmask, iter_data.mask, ETH_ALEN);
>>>
>>> +       if (update_opmode&&  sc->opmode != iter_data.opmode) {
>>> +               sc->opmode = iter_data.opmode;
>>> +               ath_do_set_opmode(sc);
>>> +       }
>>> +
>>
>> Should we really couple updating bssid mask and configuring
>> the opmode?  Generally, I dislike adding boolean flags to
>> functions because it's hard to figure out from the callsite
>> what is happening (you have to go back to the prototype), and
>> it usually indicates that the abstraction is a little broken.
>
> Well, we need to do the iteration over all VIFS to figure out what to set
> this
> too.  Seems doing one iteration v/s doing two is worth the
> extra flag?

I admit I haven't looked at the context, so I'm not sure how ugly it
is, but you can often do this kind of thing by inverting the loop:

update_vif_data()
{
   for all vifs:
      compute new bssid & opmode

   update_bssid(new_bssid)
   update_opmode(neW_opmode)
}

and call that instead (even in the single vif case).

-- 
Bob Copeland %% www.bobcopeland.com
--
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