Johannes Berg wrote:
On Tue, 2012-06-26 at 14:30 +0200, Michal Kazior wrote:
+#define CFG80211_MAX_NUM_DIFFERENT_CHANNELS 10
Might make sense to put this into cfg80211.h, since e.g. hwsim could
support this many channels?
+ cfg80211_get_chan_state(rdev, wdev_iter, &ch, &chmode);
+
+ switch (chmode) {
+ case CHAN_MODE_UNDEFINED:
+ break;
+ case CHAN_MODE_SHARED:
+ for (i = 0; i < CFG80211_MAX_NUM_DIFFERENT_CHANNELS; i++)
+ if (!used_channels[i] || used_channels[i] == ch)
+ break;
+
+ BUG_ON(i == CFG80211_MAX_NUM_DIFFERENT_CHANNELS);
I'd prefer not to use BUG_ON(), maybe WARN_ON() and return some error?
It seems it could actually happen with buggy drivers that suddenly go
above their num_different_channels by switching around themselves or
something?
Hmm.. Now that I think of it we could probably hit the BUG_ON normally.
Suppose a driver supports num_different_channels ==
CFG80211_MAX_NUM_DIFFERENT_CHANNELS. If cfg80211_can_use_iftype_chan is
called with another different channel we will hit the BUG_ON, no?
I think we should either do a WARN_ON_ONCE here, or nothing actually.
And return -EBUSY of course.
--
Pozdrawiam / Best regards, Michal Kazior.
--
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