cfg80211/mac80211: move more combination checks to mac80211
Get rid of the cfg80211_can_add_interface() and cfg80211_can_change_interface() functions by moving that functionality to mac80211. With this patch all interface combination checks are now out of cfg80211 (except for the channel switch case which will be addressed in a future commit). Additionally, modify the ieee80211_check_combinations() function so that an undefined chandef can be passed, in order to use it before a channel is defined. Signed-off-by: Luciano Coelho <luciano.coelho@intel.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:

committed by
Johannes Berg

parent
71965c1d04
commit
b6a550156b
@@ -439,10 +439,7 @@ static int wiphy_verify_combinations(struct wiphy *wiphy)
|
||||
for (j = 0; j < c->n_limits; j++) {
|
||||
u16 types = c->limits[j].types;
|
||||
|
||||
/*
|
||||
* interface types shouldn't overlap, this is
|
||||
* used in cfg80211_can_change_interface()
|
||||
*/
|
||||
/* interface types shouldn't overlap */
|
||||
if (WARN_ON(types & all_iftypes))
|
||||
return -EINVAL;
|
||||
all_iftypes |= types;
|
||||
@@ -840,7 +837,6 @@ static int cfg80211_netdev_notifier_call(struct notifier_block *nb,
|
||||
struct net_device *dev = netdev_notifier_info_to_dev(ptr);
|
||||
struct wireless_dev *wdev = dev->ieee80211_ptr;
|
||||
struct cfg80211_registered_device *rdev;
|
||||
int ret;
|
||||
|
||||
if (!wdev)
|
||||
return NOTIFY_DONE;
|
||||
@@ -1003,9 +999,8 @@ static int cfg80211_netdev_notifier_call(struct notifier_block *nb,
|
||||
case NETDEV_PRE_UP:
|
||||
if (!(wdev->wiphy->interface_modes & BIT(wdev->iftype)))
|
||||
return notifier_from_errno(-EOPNOTSUPP);
|
||||
ret = cfg80211_can_add_interface(rdev, wdev->iftype);
|
||||
if (ret)
|
||||
return notifier_from_errno(ret);
|
||||
if (rfkill_blocked(rdev->rfkill))
|
||||
return notifier_from_errno(-ERFKILL);
|
||||
break;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user