From 68ee80a815382c2f8352de7dc2c5b65db3f6a1f0 Mon Sep 17 00:00:00 2001 From: Johannes Berg Date: Tue, 7 Jul 2009 03:56:13 +0200 Subject: [PATCH] --- yaml --- r: 158957 b: refs/heads/master c: 0b20633d966eb08506f8796544aef7a9ab5f3544 h: refs/heads/master i: 158955: 2e2c3e159fc6ce3ffb7b38b7963fe55aca33ca2a v: v3 --- [refs] | 2 +- trunk/net/wireless/core.c | 11 +++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 5063aba014e1..a3df193c18a5 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 79c97e97aed7f760d2826c7daf2d42d8eefe9838 +refs/heads/master: 0b20633d966eb08506f8796544aef7a9ab5f3544 diff --git a/trunk/net/wireless/core.c b/trunk/net/wireless/core.c index b5e2f6dfa333..1a78b3c70cf2 100644 --- a/trunk/net/wireless/core.c +++ b/trunk/net/wireless/core.c @@ -331,8 +331,13 @@ struct wiphy *wiphy_new(const struct cfg80211_ops *ops, int sizeof_priv) struct cfg80211_registered_device *rdev; int alloc_size; - WARN_ON(!ops->add_key && ops->del_key); - WARN_ON(ops->add_key && !ops->del_key); + WARN_ON(ops->add_key && (!ops->del_key || !ops->set_default_key)); + WARN_ON(ops->auth && (!ops->assoc || !ops->deauth || !ops->disassoc)); + WARN_ON(ops->connect && !ops->disconnect); + WARN_ON(ops->join_ibss && !ops->leave_ibss); + WARN_ON(ops->add_virtual_intf && !ops->del_virtual_intf); + WARN_ON(ops->add_station && !ops->del_station); + WARN_ON(ops->add_mpath && !ops->del_mpath); alloc_size = sizeof(*rdev) + sizeof_priv; @@ -687,6 +692,8 @@ static int cfg80211_netdev_notifier_call(struct notifier_block * nb, mutex_destroy(&wdev->mtx); break; case NETDEV_PRE_UP: + if (!(wdev->wiphy->interface_modes & BIT(wdev->iftype))) + return notifier_from_errno(-EOPNOTSUPP); if (rfkill_blocked(rdev->rfkill)) return notifier_from_errno(-ERFKILL); break;