cfg80211: remove radar requirements check from cfg80211_can_use_iftype_chan()
We don't have to double check whether the parameters passed to cfg80211_can_use_iftype_chan() are correct. We should just make sure they *are* when we call this function. Remove the radar_detect argument check in cfg80211_can_use_iftype_chan() to simplify the code. Signed-off-by: Luciano Coelho <luciano.coelho@intel.com> [keep braces around a long comment + single statement] Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
Родитель
e5d2f95471
Коммит
7b2106aea2
|
@ -128,12 +128,11 @@ int __cfg80211_join_ibss(struct cfg80211_registered_device *rdev,
|
||||||
#endif
|
#endif
|
||||||
check_chan = params->chandef.chan;
|
check_chan = params->chandef.chan;
|
||||||
if (params->userspace_handles_dfs) {
|
if (params->userspace_handles_dfs) {
|
||||||
/* use channel NULL to check for radar even if the current
|
/* Check for radar even if the current channel is not
|
||||||
* channel is not a radar channel - it might decide to change
|
* a radar channel - it might decide to change to DFS
|
||||||
* to DFS channel later.
|
* channel later.
|
||||||
*/
|
*/
|
||||||
radar_detect_width = BIT(params->chandef.width);
|
radar_detect_width = BIT(params->chandef.width);
|
||||||
check_chan = NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
err = cfg80211_can_use_iftype_chan(rdev, wdev, wdev->iftype,
|
err = cfg80211_can_use_iftype_chan(rdev, wdev, wdev->iftype,
|
||||||
|
|
|
@ -236,6 +236,12 @@ int cfg80211_set_mesh_channel(struct cfg80211_registered_device *rdev,
|
||||||
if (!netif_running(wdev->netdev))
|
if (!netif_running(wdev->netdev))
|
||||||
return -ENETDOWN;
|
return -ENETDOWN;
|
||||||
|
|
||||||
|
/* cfg80211_can_use_chan() calls
|
||||||
|
* cfg80211_can_use_iftype_chan() with no radar
|
||||||
|
* detection, so if we're trying to use a radar
|
||||||
|
* channel here, something is wrong.
|
||||||
|
*/
|
||||||
|
WARN_ON_ONCE(chandef->chan->flags & IEEE80211_CHAN_RADAR);
|
||||||
err = cfg80211_can_use_chan(rdev, wdev, chandef->chan,
|
err = cfg80211_can_use_chan(rdev, wdev, chandef->chan,
|
||||||
CHAN_MODE_SHARED);
|
CHAN_MODE_SHARED);
|
||||||
if (err)
|
if (err)
|
||||||
|
|
|
@ -1269,7 +1269,6 @@ int cfg80211_can_use_iftype_chan(struct cfg80211_registered_device *rdev,
|
||||||
enum cfg80211_chan_mode chmode;
|
enum cfg80211_chan_mode chmode;
|
||||||
int num_different_channels = 0;
|
int num_different_channels = 0;
|
||||||
int total = 1;
|
int total = 1;
|
||||||
bool radar_required = false;
|
|
||||||
int i, j;
|
int i, j;
|
||||||
|
|
||||||
ASSERT_RTNL();
|
ASSERT_RTNL();
|
||||||
|
@ -1277,35 +1276,7 @@ int cfg80211_can_use_iftype_chan(struct cfg80211_registered_device *rdev,
|
||||||
if (WARN_ON(hweight32(radar_detect) > 1))
|
if (WARN_ON(hweight32(radar_detect) > 1))
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
switch (iftype) {
|
if (WARN_ON(iftype >= NUM_NL80211_IFTYPES))
|
||||||
case NL80211_IFTYPE_ADHOC:
|
|
||||||
case NL80211_IFTYPE_AP:
|
|
||||||
case NL80211_IFTYPE_AP_VLAN:
|
|
||||||
case NL80211_IFTYPE_MESH_POINT:
|
|
||||||
case NL80211_IFTYPE_P2P_GO:
|
|
||||||
case NL80211_IFTYPE_WDS:
|
|
||||||
/* if the interface could potentially choose a DFS channel,
|
|
||||||
* then mark DFS as required.
|
|
||||||
*/
|
|
||||||
if (!chan) {
|
|
||||||
if (chanmode != CHAN_MODE_UNDEFINED && radar_detect)
|
|
||||||
radar_required = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
radar_required = !!(chan->flags & IEEE80211_CHAN_RADAR);
|
|
||||||
break;
|
|
||||||
case NL80211_IFTYPE_P2P_CLIENT:
|
|
||||||
case NL80211_IFTYPE_STATION:
|
|
||||||
case NL80211_IFTYPE_P2P_DEVICE:
|
|
||||||
case NL80211_IFTYPE_MONITOR:
|
|
||||||
break;
|
|
||||||
case NUM_NL80211_IFTYPES:
|
|
||||||
case NL80211_IFTYPE_UNSPECIFIED:
|
|
||||||
default:
|
|
||||||
return -EINVAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (radar_required && !radar_detect)
|
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
/* Always allow software iftypes */
|
/* Always allow software iftypes */
|
||||||
|
|
Загрузка…
Ссылка в новой задаче