|
@@ -10528,7 +10528,7 @@ static int nl80211_start_p2p_device(struct sk_buff *skb, struct genl_info *info)
|
|
|
if (wdev->iftype != NL80211_IFTYPE_P2P_DEVICE)
|
|
|
return -EOPNOTSUPP;
|
|
|
|
|
|
- if (wdev->p2p_started)
|
|
|
+ if (wdev_running(wdev))
|
|
|
return 0;
|
|
|
|
|
|
if (rfkill_blocked(rdev->rfkill))
|
|
@@ -10538,7 +10538,7 @@ static int nl80211_start_p2p_device(struct sk_buff *skb, struct genl_info *info)
|
|
|
if (err)
|
|
|
return err;
|
|
|
|
|
|
- wdev->p2p_started = true;
|
|
|
+ wdev->is_running = true;
|
|
|
rdev->opencount++;
|
|
|
|
|
|
return 0;
|
|
@@ -10570,7 +10570,7 @@ static int nl80211_start_nan(struct sk_buff *skb, struct genl_info *info)
|
|
|
if (wdev->iftype != NL80211_IFTYPE_NAN)
|
|
|
return -EOPNOTSUPP;
|
|
|
|
|
|
- if (wdev->nan_started)
|
|
|
+ if (!wdev_running(wdev))
|
|
|
return -EEXIST;
|
|
|
|
|
|
if (rfkill_blocked(rdev->rfkill))
|
|
@@ -10593,7 +10593,7 @@ static int nl80211_start_nan(struct sk_buff *skb, struct genl_info *info)
|
|
|
if (err)
|
|
|
return err;
|
|
|
|
|
|
- wdev->nan_started = true;
|
|
|
+ wdev->is_running = true;
|
|
|
rdev->opencount++;
|
|
|
|
|
|
return 0;
|
|
@@ -10678,7 +10678,7 @@ static int nl80211_nan_add_func(struct sk_buff *skb,
|
|
|
if (wdev->iftype != NL80211_IFTYPE_NAN)
|
|
|
return -EOPNOTSUPP;
|
|
|
|
|
|
- if (!wdev->nan_started)
|
|
|
+ if (!wdev_running(wdev))
|
|
|
return -ENOTCONN;
|
|
|
|
|
|
if (!info->attrs[NL80211_ATTR_NAN_FUNC])
|
|
@@ -10915,7 +10915,7 @@ static int nl80211_nan_del_func(struct sk_buff *skb,
|
|
|
if (wdev->iftype != NL80211_IFTYPE_NAN)
|
|
|
return -EOPNOTSUPP;
|
|
|
|
|
|
- if (!wdev->nan_started)
|
|
|
+ if (!wdev_running(wdev))
|
|
|
return -ENOTCONN;
|
|
|
|
|
|
if (!info->attrs[NL80211_ATTR_COOKIE])
|
|
@@ -10943,7 +10943,7 @@ static int nl80211_nan_change_config(struct sk_buff *skb,
|
|
|
if (wdev->iftype != NL80211_IFTYPE_NAN)
|
|
|
return -EOPNOTSUPP;
|
|
|
|
|
|
- if (!wdev->nan_started)
|
|
|
+ if (!wdev_running(wdev))
|
|
|
return -ENOTCONN;
|
|
|
|
|
|
if (info->attrs[NL80211_ATTR_NAN_MASTER_PREF]) {
|
|
@@ -11255,11 +11255,7 @@ static int nl80211_vendor_cmd(struct sk_buff *skb, struct genl_info *info)
|
|
|
return -EINVAL;
|
|
|
|
|
|
if (vcmd->flags & WIPHY_VENDOR_CMD_NEED_RUNNING) {
|
|
|
- if (wdev->netdev &&
|
|
|
- !netif_running(wdev->netdev))
|
|
|
- return -ENETDOWN;
|
|
|
- if (!wdev->netdev && !wdev->p2p_started &&
|
|
|
- !wdev->nan_started)
|
|
|
+ if (!wdev_running(wdev))
|
|
|
return -ENETDOWN;
|
|
|
}
|
|
|
|
|
@@ -11422,10 +11418,7 @@ static int nl80211_vendor_cmd_dump(struct sk_buff *skb,
|
|
|
return -EINVAL;
|
|
|
|
|
|
if (vcmd->flags & WIPHY_VENDOR_CMD_NEED_RUNNING) {
|
|
|
- if (wdev->netdev &&
|
|
|
- !netif_running(wdev->netdev))
|
|
|
- return -ENETDOWN;
|
|
|
- if (!wdev->netdev && !wdev->p2p_started)
|
|
|
+ if (!wdev_running(wdev))
|
|
|
return -ENETDOWN;
|
|
|
}
|
|
|
}
|
|
@@ -11796,29 +11789,15 @@ static int nl80211_pre_doit(const struct genl_ops *ops, struct sk_buff *skb,
|
|
|
info->user_ptr[1] = wdev;
|
|
|
}
|
|
|
|
|
|
- if (dev) {
|
|
|
- if (ops->internal_flags & NL80211_FLAG_CHECK_NETDEV_UP &&
|
|
|
- !netif_running(dev)) {
|
|
|
- if (rtnl)
|
|
|
- rtnl_unlock();
|
|
|
- return -ENETDOWN;
|
|
|
- }
|
|
|
+ if (ops->internal_flags & NL80211_FLAG_CHECK_NETDEV_UP &&
|
|
|
+ !wdev_running(wdev)) {
|
|
|
+ if (rtnl)
|
|
|
+ rtnl_unlock();
|
|
|
+ return -ENETDOWN;
|
|
|
+ }
|
|
|
|
|
|
+ if (dev)
|
|
|
dev_hold(dev);
|
|
|
- } else if (ops->internal_flags & NL80211_FLAG_CHECK_NETDEV_UP) {
|
|
|
- if (wdev->iftype == NL80211_IFTYPE_P2P_DEVICE &&
|
|
|
- !wdev->p2p_started) {
|
|
|
- if (rtnl)
|
|
|
- rtnl_unlock();
|
|
|
- return -ENETDOWN;
|
|
|
- }
|
|
|
- if (wdev->iftype == NL80211_IFTYPE_NAN &&
|
|
|
- !wdev->nan_started) {
|
|
|
- if (rtnl)
|
|
|
- rtnl_unlock();
|
|
|
- return -ENETDOWN;
|
|
|
- }
|
|
|
- }
|
|
|
|
|
|
info->user_ptr[0] = rdev;
|
|
|
}
|