Commit 041c881a authored by Karthikeyan Kathirvel's avatar Karthikeyan Kathirvel Committed by Johannes Berg

mac80211: choose first enabled channel for monitor

Even if the first channel from sband channel list is invalid
or disabled mac80211 ends up choosing it as the default channel
for monitor interfaces, making them not usable.

Fix this by assigning the first available valid or enabled
channel instead.
Signed-off-by: default avatarKarthikeyan Kathirvel <kathirve@codeaurora.org>
Link: https://lore.kernel.org/r/1615440547-7661-1-git-send-email-kathirve@codeaurora.org
[reword commit message, comment, code cleanups]
Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent 77cbf790
...@@ -973,8 +973,19 @@ int ieee80211_register_hw(struct ieee80211_hw *hw) ...@@ -973,8 +973,19 @@ int ieee80211_register_hw(struct ieee80211_hw *hw)
continue; continue;
if (!dflt_chandef.chan) { if (!dflt_chandef.chan) {
/*
* Assign the first enabled channel to dflt_chandef
* from the list of channels
*/
for (i = 0; i < sband->n_channels; i++)
if (!(sband->channels[i].flags &
IEEE80211_CHAN_DISABLED))
break;
/* if none found then use the first anyway */
if (i == sband->n_channels)
i = 0;
cfg80211_chandef_create(&dflt_chandef, cfg80211_chandef_create(&dflt_chandef,
&sband->channels[0], &sband->channels[i],
NL80211_CHAN_NO_HT); NL80211_CHAN_NO_HT);
/* init channel we're on */ /* init channel we're on */
if (!local->use_chanctx && !local->_oper_chandef.chan) { if (!local->use_chanctx && !local->_oper_chandef.chan) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment