linux/net/wireless/ap.c
<<
>>
Prefs
   1#include <linux/ieee80211.h>
   2#include <linux/export.h>
   3#include <net/cfg80211.h>
   4#include "nl80211.h"
   5#include "core.h"
   6
   7
   8static int __cfg80211_stop_ap(struct cfg80211_registered_device *rdev,
   9                              struct net_device *dev)
  10{
  11        struct wireless_dev *wdev = dev->ieee80211_ptr;
  12        int err;
  13
  14        ASSERT_WDEV_LOCK(wdev);
  15
  16        if (!rdev->ops->stop_ap)
  17                return -EOPNOTSUPP;
  18
  19        if (dev->ieee80211_ptr->iftype != NL80211_IFTYPE_AP &&
  20            dev->ieee80211_ptr->iftype != NL80211_IFTYPE_P2P_GO)
  21                return -EOPNOTSUPP;
  22
  23        if (!wdev->beacon_interval)
  24                return -ENOENT;
  25
  26        err = rdev->ops->stop_ap(&rdev->wiphy, dev);
  27        if (!err) {
  28                wdev->beacon_interval = 0;
  29                wdev->channel = NULL;
  30        }
  31
  32        return err;
  33}
  34
  35int cfg80211_stop_ap(struct cfg80211_registered_device *rdev,
  36                     struct net_device *dev)
  37{
  38        struct wireless_dev *wdev = dev->ieee80211_ptr;
  39        int err;
  40
  41        wdev_lock(wdev);
  42        err = __cfg80211_stop_ap(rdev, dev);
  43        wdev_unlock(wdev);
  44
  45        return err;
  46}
  47
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.