cfg80211: add cfg80211_any_usable_channels()
This helper function checks if there are any usable channels on any of the given bands with the given properties (as expressed by disallowed channel flags). Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com> Link: https://lore.kernel.org/r/iwlwifi.20210618133832.2b613addaa85.Idaf8b859089490537878a7de5c7453a873a3f638@changeid Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
b767ecdaf9
commit
be989891e4
|
@ -894,6 +894,17 @@ ieee80211_chandef_max_power(struct cfg80211_chan_def *chandef)
|
||||||
return chandef->chan->max_power;
|
return chandef->chan->max_power;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* cfg80211_any_usable_channels - check for usable channels
|
||||||
|
* @wiphy: the wiphy to check for
|
||||||
|
* @band_mask: which bands to check on
|
||||||
|
* @prohibited_flags: which channels to not consider usable,
|
||||||
|
* %IEEE80211_CHAN_DISABLED is always taken into account
|
||||||
|
*/
|
||||||
|
bool cfg80211_any_usable_channels(struct wiphy *wiphy,
|
||||||
|
unsigned long band_mask,
|
||||||
|
u32 prohibited_flags);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* enum survey_info_flags - survey information flags
|
* enum survey_info_flags - survey information flags
|
||||||
*
|
*
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
*
|
*
|
||||||
* Copyright 2009 Johannes Berg <johannes@sipsolutions.net>
|
* Copyright 2009 Johannes Berg <johannes@sipsolutions.net>
|
||||||
* Copyright 2013-2014 Intel Mobile Communications GmbH
|
* Copyright 2013-2014 Intel Mobile Communications GmbH
|
||||||
* Copyright 2018-2020 Intel Corporation
|
* Copyright 2018-2021 Intel Corporation
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/export.h>
|
#include <linux/export.h>
|
||||||
|
@ -1339,3 +1339,34 @@ cfg80211_get_chan_state(struct wireless_dev *wdev,
|
||||||
WARN_ON(1);
|
WARN_ON(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool cfg80211_any_usable_channels(struct wiphy *wiphy,
|
||||||
|
unsigned long sband_mask,
|
||||||
|
u32 prohibited_flags)
|
||||||
|
{
|
||||||
|
int idx;
|
||||||
|
|
||||||
|
prohibited_flags |= IEEE80211_CHAN_DISABLED;
|
||||||
|
|
||||||
|
for_each_set_bit(idx, &sband_mask, NUM_NL80211_BANDS) {
|
||||||
|
struct ieee80211_supported_band *sband = wiphy->bands[idx];
|
||||||
|
int chanidx;
|
||||||
|
|
||||||
|
if (!sband)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
for (chanidx = 0; chanidx < sband->n_channels; chanidx++) {
|
||||||
|
struct ieee80211_channel *chan;
|
||||||
|
|
||||||
|
chan = &sband->channels[chanidx];
|
||||||
|
|
||||||
|
if (chan->flags & prohibited_flags)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(cfg80211_any_usable_channels);
|
||||||
|
|
Loading…
Reference in New Issue