[PATCHv3] cfg80211: fix channel configuration in IBSS join

Johannes Berg johannes at sipsolutions.net
Fri Jan 31 08:45:55 EST 2014


On Wed, 2014-01-29 at 17:53 +0100, Antonio Quartulli wrote:
> From: Antonio Quartulli <antonio at open-mesh.com>
> 
> When receiving an IBSS_JOINED event select the BSS object
> based on the {bssid, channel} couple rather than the bssid
> only.
> With the current approach if another cell having the same
> BSSID (but using a different channel) exists then cfg80211
> picks up the wrong BSS object.
> The result is a mismatching channel configuration between
> cfg80211 and the driver, that can lead to any sort of
> problem.
> 
> The issue can be triggered by having an IBSS sitting on
> given channel and then asking the driver to create a new
> cell using the same BSSID but with a different frequency.
> By passing the channel to cfg80211_get_bss() we can solve
> this ambiguity and retrieve/create the correct BSS object.
> All the users of cfg80211_ibss_joined() have been changed
> accordingly.
> 
> Moreover WARN when cfg80211_ibss_joined() gets a NULL
> channel as argument and remove a bogus call of the same
> function in ath6kl (it does not make sense to call
> cfg80211_ibss_joined() with a zero BSSID on ibss-leave).

Applied, with a small code cleanup in ath6kl.

johannes




More information about the libertas-dev mailing list