cfg80211: pass the actual iftype when calling cfg80211_chandef_dfs_required()
There is no need to pass NL80211_IFTYPE_UNSPECIFIED when calling cfg80211_chandef_dfs_required() since we always already have the interface type. So, pass the actual interface type instead. Additionally, have cfg80211_chandef_dfs_required() WARN if the passed interface type is NL80211_IFTYPE_UNSPECIFIED, so we can detect problems more easily. Tested-by: Janusz Dziedzic <janusz.dziedzic@tieto.com> Reported-by: Eliad Peller <eliad@wizery.com> Signed-off-by: Luciano Coelho <luciano.coelho@intel.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
67ae07a109
commit
00ec75fc5a
@ -340,7 +340,6 @@ int cfg80211_chandef_dfs_required(struct wiphy *wiphy,
|
|||||||
case NL80211_IFTYPE_AP:
|
case NL80211_IFTYPE_AP:
|
||||||
case NL80211_IFTYPE_P2P_GO:
|
case NL80211_IFTYPE_P2P_GO:
|
||||||
case NL80211_IFTYPE_MESH_POINT:
|
case NL80211_IFTYPE_MESH_POINT:
|
||||||
case NL80211_IFTYPE_UNSPECIFIED:
|
|
||||||
width = cfg80211_chandef_get_width(chandef);
|
width = cfg80211_chandef_get_width(chandef);
|
||||||
if (width < 0)
|
if (width < 0)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
@ -372,6 +371,7 @@ int cfg80211_chandef_dfs_required(struct wiphy *wiphy,
|
|||||||
case NL80211_IFTYPE_WDS:
|
case NL80211_IFTYPE_WDS:
|
||||||
case NL80211_IFTYPE_P2P_DEVICE:
|
case NL80211_IFTYPE_P2P_DEVICE:
|
||||||
break;
|
break;
|
||||||
|
case NL80211_IFTYPE_UNSPECIFIED:
|
||||||
case NUM_NL80211_IFTYPES:
|
case NUM_NL80211_IFTYPES:
|
||||||
WARN_ON(1);
|
WARN_ON(1);
|
||||||
}
|
}
|
||||||
@ -796,8 +796,7 @@ bool cfg80211_reg_can_beacon(struct wiphy *wiphy,
|
|||||||
!cfg80211_go_permissive_chan(rdev, chandef->chan))
|
!cfg80211_go_permissive_chan(rdev, chandef->chan))
|
||||||
prohibited_flags |= IEEE80211_CHAN_NO_IR;
|
prohibited_flags |= IEEE80211_CHAN_NO_IR;
|
||||||
|
|
||||||
if (cfg80211_chandef_dfs_required(wiphy, chandef,
|
if (cfg80211_chandef_dfs_required(wiphy, chandef, iftype) > 0 &&
|
||||||
NL80211_IFTYPE_UNSPECIFIED) > 0 &&
|
|
||||||
cfg80211_chandef_dfs_available(wiphy, chandef)) {
|
cfg80211_chandef_dfs_available(wiphy, chandef)) {
|
||||||
/* We can skip IEEE80211_CHAN_NO_IR if chandef dfs available */
|
/* We can skip IEEE80211_CHAN_NO_IR if chandef dfs available */
|
||||||
prohibited_flags = IEEE80211_CHAN_DISABLED;
|
prohibited_flags = IEEE80211_CHAN_DISABLED;
|
||||||
|
@ -5822,7 +5822,7 @@ static int nl80211_start_radar_detection(struct sk_buff *skb,
|
|||||||
return -EBUSY;
|
return -EBUSY;
|
||||||
|
|
||||||
err = cfg80211_chandef_dfs_required(wdev->wiphy, &chandef,
|
err = cfg80211_chandef_dfs_required(wdev->wiphy, &chandef,
|
||||||
NL80211_IFTYPE_UNSPECIFIED);
|
wdev->iftype);
|
||||||
if (err < 0)
|
if (err < 0)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user