nl80211: use new genl helpers for WDS
[pandora-kernel.git] / net / wireless / nl80211.c
index 524f554..4fed166 100644 (file)
@@ -876,48 +876,25 @@ static int nl80211_set_channel(struct sk_buff *skb, struct genl_info *info)
 
 static int nl80211_set_wds_peer(struct sk_buff *skb, struct genl_info *info)
 {
-       struct cfg80211_registered_device *rdev;
-       struct wireless_dev *wdev;
-       struct net_device *dev;
+       struct cfg80211_registered_device *rdev = info->user_ptr[0];
+       struct net_device *dev = info->user_ptr[1];
+       struct wireless_dev *wdev = dev->ieee80211_ptr;
        u8 *bssid;
-       int err;
 
        if (!info->attrs[NL80211_ATTR_MAC])
                return -EINVAL;
 
-       rtnl_lock();
-
-       err = get_rdev_dev_by_info_ifindex(info, &rdev, &dev);
-       if (err)
-               goto unlock_rtnl;
-
-       wdev = dev->ieee80211_ptr;
-
-       if (netif_running(dev)) {
-               err = -EBUSY;
-               goto out;
-       }
+       if (netif_running(dev))
+               return -EBUSY;
 
-       if (!rdev->ops->set_wds_peer) {
-               err = -EOPNOTSUPP;
-               goto out;
-       }
+       if (!rdev->ops->set_wds_peer)
+               return -EOPNOTSUPP;
 
-       if (wdev->iftype != NL80211_IFTYPE_WDS) {
-               err = -EOPNOTSUPP;
-               goto out;
-       }
+       if (wdev->iftype != NL80211_IFTYPE_WDS)
+               return -EOPNOTSUPP;
 
        bssid = nla_data(info->attrs[NL80211_ATTR_MAC]);
-       err = rdev->ops->set_wds_peer(wdev->wiphy, dev, bssid);
-
-out:
-       cfg80211_unlock_rdev(rdev);
-       dev_put(dev);
-unlock_rtnl:
-       rtnl_unlock();
-
-       return err;
+       return rdev->ops->set_wds_peer(wdev->wiphy, dev, bssid);
 }
 
 
@@ -4860,6 +4837,8 @@ static struct genl_ops nl80211_ops[] = {
                .doit = nl80211_set_wds_peer,
                .policy = nl80211_policy,
                .flags = GENL_ADMIN_PERM,
+               .internal_flags = NL80211_FLAG_NEED_NETDEV |
+                                 NL80211_FLAG_NEED_RTNL,
        },
 };