Search Linux Wireless

Re: [PATCH 3/3] mac80211: compute chanctx refcount dynamically

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

 



On 11 March 2014 14:16, Johannes Berg <johannes@xxxxxxxxxxxxxxxx> wrote:
> On Tue, 2014-03-11 at 08:46 +0100, Michal Kazior wrote:
>
>> Self-NACK.
>
> Heh.
>
>> I totally missed how ieee80211_remove_interfaces() works. It removes
>> all interfaces from the list in one go before each is actually
>> stopped. This means refcount computes 0. IOW If you unload a driver
>> with multiple interfaces running you get a nice general protection
>> fault (multiple ieee80211_free_chanctx calls).
>
> Ok, that seems like a problem :)
>
>> I'm planning on adding `struct list_head` to sdata and chanctx to be
>> able to iterate over assigned (and reserved, in the future) chanctx.
>> What do you think? Do you have other ideas?
>
> I guess that seems reasonable - not sure why you'd want the reserved
> one? Some of the maintenance there might be tricky?

For multi-vif we need to be able to track list of interfaces that have
a reservation. This is needed for example for chandef calculation
(e.g. to see if you can start a new vif on given chanctx that is part
of a reservation already, etc).

It's also necessary so you can synchronize CSA across interfaces with
the chanctx reservation that happen "in place" when you're out of
max_num_different_channels. In that case you must unassign all
interfaces, free chanctx, create new chanctx, and then assign the
reservation interfaces.

Actually I think there's also one thing that might benefit from
chanctx-vif list tracking: ieee80211_recalc_chanctx_chantype(). It
seems to complain with WARN_ON splat when I reload driver when more
than 1 vif is running because it doesn't find a non-NULL `compat`
chandef (rightfully so as local->interfaces is empty at that point due
to ieee80211_remove_interfaces).


Michał
--
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 Wireless Personal Area Network]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux