diff options
Diffstat (limited to 'net/wireless/core.c')
-rw-r--r-- | net/wireless/core.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/net/wireless/core.c b/net/wireless/core.c index 630bcf0a2f04..79772fcc37bc 100644 --- a/net/wireless/core.c +++ b/net/wireless/core.c | |||
@@ -332,6 +332,7 @@ struct wiphy *wiphy_new(const struct cfg80211_ops *ops, int sizeof_priv) | |||
332 | WARN_ON(ops->add_virtual_intf && !ops->del_virtual_intf); | 332 | WARN_ON(ops->add_virtual_intf && !ops->del_virtual_intf); |
333 | WARN_ON(ops->add_station && !ops->del_station); | 333 | WARN_ON(ops->add_station && !ops->del_station); |
334 | WARN_ON(ops->add_mpath && !ops->del_mpath); | 334 | WARN_ON(ops->add_mpath && !ops->del_mpath); |
335 | WARN_ON(ops->join_mesh && !ops->leave_mesh); | ||
335 | 336 | ||
336 | alloc_size = sizeof(*rdev) + sizeof_priv; | 337 | alloc_size = sizeof(*rdev) + sizeof_priv; |
337 | 338 | ||
@@ -752,6 +753,9 @@ static int cfg80211_netdev_notifier_call(struct notifier_block * nb, | |||
752 | cfg80211_mlme_down(rdev, dev); | 753 | cfg80211_mlme_down(rdev, dev); |
753 | wdev_unlock(wdev); | 754 | wdev_unlock(wdev); |
754 | break; | 755 | break; |
756 | case NL80211_IFTYPE_MESH_POINT: | ||
757 | cfg80211_leave_mesh(rdev, dev); | ||
758 | break; | ||
755 | default: | 759 | default: |
756 | break; | 760 | break; |
757 | } | 761 | } |
@@ -775,20 +779,27 @@ static int cfg80211_netdev_notifier_call(struct notifier_block * nb, | |||
775 | } | 779 | } |
776 | cfg80211_lock_rdev(rdev); | 780 | cfg80211_lock_rdev(rdev); |
777 | mutex_lock(&rdev->devlist_mtx); | 781 | mutex_lock(&rdev->devlist_mtx); |
778 | #ifdef CONFIG_CFG80211_WEXT | ||
779 | wdev_lock(wdev); | 782 | wdev_lock(wdev); |
780 | switch (wdev->iftype) { | 783 | switch (wdev->iftype) { |
784 | #ifdef CONFIG_CFG80211_WEXT | ||
781 | case NL80211_IFTYPE_ADHOC: | 785 | case NL80211_IFTYPE_ADHOC: |
782 | cfg80211_ibss_wext_join(rdev, wdev); | 786 | cfg80211_ibss_wext_join(rdev, wdev); |
783 | break; | 787 | break; |
784 | case NL80211_IFTYPE_STATION: | 788 | case NL80211_IFTYPE_STATION: |
785 | cfg80211_mgd_wext_connect(rdev, wdev); | 789 | cfg80211_mgd_wext_connect(rdev, wdev); |
786 | break; | 790 | break; |
791 | #endif | ||
792 | case NL80211_IFTYPE_MESH_POINT: | ||
793 | /* backward compat code ... */ | ||
794 | if (wdev->mesh_id_up_len) | ||
795 | __cfg80211_join_mesh(rdev, dev, wdev->ssid, | ||
796 | wdev->mesh_id_up_len, | ||
797 | &default_mesh_config); | ||
798 | break; | ||
787 | default: | 799 | default: |
788 | break; | 800 | break; |
789 | } | 801 | } |
790 | wdev_unlock(wdev); | 802 | wdev_unlock(wdev); |
791 | #endif | ||
792 | rdev->opencount++; | 803 | rdev->opencount++; |
793 | mutex_unlock(&rdev->devlist_mtx); | 804 | mutex_unlock(&rdev->devlist_mtx); |
794 | cfg80211_unlock_rdev(rdev); | 805 | cfg80211_unlock_rdev(rdev); |