|
@@ -22,6 +22,7 @@
|
|
#include "core.h"
|
|
#include "core.h"
|
|
#include "nl80211.h"
|
|
#include "nl80211.h"
|
|
#include "reg.h"
|
|
#include "reg.h"
|
|
|
|
+#include "rdev-ops.h"
|
|
|
|
|
|
static int nl80211_crypto_settings(struct cfg80211_registered_device *rdev,
|
|
static int nl80211_crypto_settings(struct cfg80211_registered_device *rdev,
|
|
struct genl_info *info,
|
|
struct genl_info *info,
|
|
@@ -951,7 +952,7 @@ static int nl80211_send_wiphy(struct sk_buff *msg, u32 portid, u32 seq, int flag
|
|
dev->wiphy.available_antennas_rx) && dev->ops->get_antenna) {
|
|
dev->wiphy.available_antennas_rx) && dev->ops->get_antenna) {
|
|
u32 tx_ant = 0, rx_ant = 0;
|
|
u32 tx_ant = 0, rx_ant = 0;
|
|
int res;
|
|
int res;
|
|
- res = dev->ops->get_antenna(&dev->wiphy, &tx_ant, &rx_ant);
|
|
|
|
|
|
+ res = rdev_get_antenna(dev, &tx_ant, &rx_ant);
|
|
if (!res) {
|
|
if (!res) {
|
|
if (nla_put_u32(msg, NL80211_ATTR_WIPHY_ANTENNA_TX,
|
|
if (nla_put_u32(msg, NL80211_ATTR_WIPHY_ANTENNA_TX,
|
|
tx_ant) ||
|
|
tx_ant) ||
|
|
@@ -1465,7 +1466,7 @@ static int nl80211_set_wds_peer(struct sk_buff *skb, struct genl_info *info)
|
|
return -EOPNOTSUPP;
|
|
return -EOPNOTSUPP;
|
|
|
|
|
|
bssid = nla_data(info->attrs[NL80211_ATTR_MAC]);
|
|
bssid = nla_data(info->attrs[NL80211_ATTR_MAC]);
|
|
- return rdev->ops->set_wds_peer(wdev->wiphy, dev, bssid);
|
|
|
|
|
|
+ return rdev_set_wds_peer(rdev, dev, bssid);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -1570,9 +1571,8 @@ static int nl80211_set_wiphy(struct sk_buff *skb, struct genl_info *info)
|
|
if (result)
|
|
if (result)
|
|
goto bad_res;
|
|
goto bad_res;
|
|
|
|
|
|
- result = rdev->ops->set_txq_params(&rdev->wiphy,
|
|
|
|
- netdev,
|
|
|
|
- &txq_params);
|
|
|
|
|
|
+ result = rdev_set_txq_params(rdev, netdev,
|
|
|
|
+ &txq_params);
|
|
if (result)
|
|
if (result)
|
|
goto bad_res;
|
|
goto bad_res;
|
|
}
|
|
}
|
|
@@ -1607,7 +1607,7 @@ static int nl80211_set_wiphy(struct sk_buff *skb, struct genl_info *info)
|
|
mbm = nla_get_u32(info->attrs[idx]);
|
|
mbm = nla_get_u32(info->attrs[idx]);
|
|
}
|
|
}
|
|
|
|
|
|
- result = rdev->ops->set_tx_power(&rdev->wiphy, type, mbm);
|
|
|
|
|
|
+ result = rdev_set_tx_power(rdev, type, mbm);
|
|
if (result)
|
|
if (result)
|
|
goto bad_res;
|
|
goto bad_res;
|
|
}
|
|
}
|
|
@@ -1636,7 +1636,7 @@ static int nl80211_set_wiphy(struct sk_buff *skb, struct genl_info *info)
|
|
tx_ant = tx_ant & rdev->wiphy.available_antennas_tx;
|
|
tx_ant = tx_ant & rdev->wiphy.available_antennas_tx;
|
|
rx_ant = rx_ant & rdev->wiphy.available_antennas_rx;
|
|
rx_ant = rx_ant & rdev->wiphy.available_antennas_rx;
|
|
|
|
|
|
- result = rdev->ops->set_antenna(&rdev->wiphy, tx_ant, rx_ant);
|
|
|
|
|
|
+ result = rdev_set_antenna(rdev, tx_ant, rx_ant);
|
|
if (result)
|
|
if (result)
|
|
goto bad_res;
|
|
goto bad_res;
|
|
}
|
|
}
|
|
@@ -1721,7 +1721,7 @@ static int nl80211_set_wiphy(struct sk_buff *skb, struct genl_info *info)
|
|
if (changed & WIPHY_PARAM_COVERAGE_CLASS)
|
|
if (changed & WIPHY_PARAM_COVERAGE_CLASS)
|
|
rdev->wiphy.coverage_class = coverage_class;
|
|
rdev->wiphy.coverage_class = coverage_class;
|
|
|
|
|
|
- result = rdev->ops->set_wiphy_params(&rdev->wiphy, changed);
|
|
|
|
|
|
+ result = rdev_set_wiphy_params(rdev, changed);
|
|
if (result) {
|
|
if (result) {
|
|
rdev->wiphy.retry_short = old_retry_short;
|
|
rdev->wiphy.retry_short = old_retry_short;
|
|
rdev->wiphy.retry_long = old_retry_long;
|
|
rdev->wiphy.retry_long = old_retry_long;
|
|
@@ -1773,8 +1773,7 @@ static int nl80211_send_iface(struct sk_buff *msg, u32 portid, u32 seq, int flag
|
|
struct ieee80211_channel *chan;
|
|
struct ieee80211_channel *chan;
|
|
enum nl80211_channel_type channel_type;
|
|
enum nl80211_channel_type channel_type;
|
|
|
|
|
|
- chan = rdev->ops->get_channel(&rdev->wiphy, wdev,
|
|
|
|
- &channel_type);
|
|
|
|
|
|
+ chan = rdev_get_channel(rdev, wdev, &channel_type);
|
|
if (chan &&
|
|
if (chan &&
|
|
(nla_put_u32(msg, NL80211_ATTR_WIPHY_FREQ,
|
|
(nla_put_u32(msg, NL80211_ATTR_WIPHY_FREQ,
|
|
chan->center_freq) ||
|
|
chan->center_freq) ||
|
|
@@ -2022,9 +2021,9 @@ static int nl80211_new_interface(struct sk_buff *skb, struct genl_info *info)
|
|
err = parse_monitor_flags(type == NL80211_IFTYPE_MONITOR ?
|
|
err = parse_monitor_flags(type == NL80211_IFTYPE_MONITOR ?
|
|
info->attrs[NL80211_ATTR_MNTR_FLAGS] : NULL,
|
|
info->attrs[NL80211_ATTR_MNTR_FLAGS] : NULL,
|
|
&flags);
|
|
&flags);
|
|
- wdev = rdev->ops->add_virtual_intf(&rdev->wiphy,
|
|
|
|
- nla_data(info->attrs[NL80211_ATTR_IFNAME]),
|
|
|
|
- type, err ? NULL : &flags, ¶ms);
|
|
|
|
|
|
+ wdev = rdev_add_virtual_intf(rdev,
|
|
|
|
+ nla_data(info->attrs[NL80211_ATTR_IFNAME]),
|
|
|
|
+ type, err ? NULL : &flags, ¶ms);
|
|
if (IS_ERR(wdev)) {
|
|
if (IS_ERR(wdev)) {
|
|
nlmsg_free(msg);
|
|
nlmsg_free(msg);
|
|
return PTR_ERR(wdev);
|
|
return PTR_ERR(wdev);
|
|
@@ -2091,7 +2090,7 @@ static int nl80211_del_interface(struct sk_buff *skb, struct genl_info *info)
|
|
if (!wdev->netdev)
|
|
if (!wdev->netdev)
|
|
info->user_ptr[1] = NULL;
|
|
info->user_ptr[1] = NULL;
|
|
|
|
|
|
- return rdev->ops->del_virtual_intf(&rdev->wiphy, wdev);
|
|
|
|
|
|
+ return rdev_del_virtual_intf(rdev, wdev);
|
|
}
|
|
}
|
|
|
|
|
|
static int nl80211_set_noack_map(struct sk_buff *skb, struct genl_info *info)
|
|
static int nl80211_set_noack_map(struct sk_buff *skb, struct genl_info *info)
|
|
@@ -2108,7 +2107,7 @@ static int nl80211_set_noack_map(struct sk_buff *skb, struct genl_info *info)
|
|
|
|
|
|
noack_map = nla_get_u16(info->attrs[NL80211_ATTR_NOACK_MAP]);
|
|
noack_map = nla_get_u16(info->attrs[NL80211_ATTR_NOACK_MAP]);
|
|
|
|
|
|
- return rdev->ops->set_noack_map(&rdev->wiphy, dev, noack_map);
|
|
|
|
|
|
+ return rdev_set_noack_map(rdev, dev, noack_map);
|
|
}
|
|
}
|
|
|
|
|
|
struct get_key_cookie {
|
|
struct get_key_cookie {
|
|
@@ -2218,8 +2217,8 @@ static int nl80211_get_key(struct sk_buff *skb, struct genl_info *info)
|
|
!(rdev->wiphy.flags & WIPHY_FLAG_IBSS_RSN))
|
|
!(rdev->wiphy.flags & WIPHY_FLAG_IBSS_RSN))
|
|
return -ENOENT;
|
|
return -ENOENT;
|
|
|
|
|
|
- err = rdev->ops->get_key(&rdev->wiphy, dev, key_idx, pairwise,
|
|
|
|
- mac_addr, &cookie, get_key_callback);
|
|
|
|
|
|
+ err = rdev_get_key(rdev, dev, key_idx, pairwise, mac_addr, &cookie,
|
|
|
|
+ get_key_callback);
|
|
|
|
|
|
if (err)
|
|
if (err)
|
|
goto free_msg;
|
|
goto free_msg;
|
|
@@ -2267,7 +2266,7 @@ static int nl80211_set_key(struct sk_buff *skb, struct genl_info *info)
|
|
if (err)
|
|
if (err)
|
|
goto out;
|
|
goto out;
|
|
|
|
|
|
- err = rdev->ops->set_default_key(&rdev->wiphy, dev, key.idx,
|
|
|
|
|
|
+ err = rdev_set_default_key(rdev, dev, key.idx,
|
|
key.def_uni, key.def_multi);
|
|
key.def_uni, key.def_multi);
|
|
|
|
|
|
if (err)
|
|
if (err)
|
|
@@ -2291,8 +2290,7 @@ static int nl80211_set_key(struct sk_buff *skb, struct genl_info *info)
|
|
if (err)
|
|
if (err)
|
|
goto out;
|
|
goto out;
|
|
|
|
|
|
- err = rdev->ops->set_default_mgmt_key(&rdev->wiphy,
|
|
|
|
- dev, key.idx);
|
|
|
|
|
|
+ err = rdev_set_default_mgmt_key(rdev, dev, key.idx);
|
|
if (err)
|
|
if (err)
|
|
goto out;
|
|
goto out;
|
|
|
|
|
|
@@ -2348,9 +2346,9 @@ static int nl80211_new_key(struct sk_buff *skb, struct genl_info *info)
|
|
wdev_lock(dev->ieee80211_ptr);
|
|
wdev_lock(dev->ieee80211_ptr);
|
|
err = nl80211_key_allowed(dev->ieee80211_ptr);
|
|
err = nl80211_key_allowed(dev->ieee80211_ptr);
|
|
if (!err)
|
|
if (!err)
|
|
- err = rdev->ops->add_key(&rdev->wiphy, dev, key.idx,
|
|
|
|
- key.type == NL80211_KEYTYPE_PAIRWISE,
|
|
|
|
- mac_addr, &key.p);
|
|
|
|
|
|
+ err = rdev_add_key(rdev, dev, key.idx,
|
|
|
|
+ key.type == NL80211_KEYTYPE_PAIRWISE,
|
|
|
|
+ mac_addr, &key.p);
|
|
wdev_unlock(dev->ieee80211_ptr);
|
|
wdev_unlock(dev->ieee80211_ptr);
|
|
|
|
|
|
return err;
|
|
return err;
|
|
@@ -2394,9 +2392,9 @@ static int nl80211_del_key(struct sk_buff *skb, struct genl_info *info)
|
|
err = -ENOENT;
|
|
err = -ENOENT;
|
|
|
|
|
|
if (!err)
|
|
if (!err)
|
|
- err = rdev->ops->del_key(&rdev->wiphy, dev, key.idx,
|
|
|
|
- key.type == NL80211_KEYTYPE_PAIRWISE,
|
|
|
|
- mac_addr);
|
|
|
|
|
|
+ err = rdev_del_key(rdev, dev, key.idx,
|
|
|
|
+ key.type == NL80211_KEYTYPE_PAIRWISE,
|
|
|
|
+ mac_addr);
|
|
|
|
|
|
#ifdef CONFIG_CFG80211_WEXT
|
|
#ifdef CONFIG_CFG80211_WEXT
|
|
if (!err) {
|
|
if (!err) {
|
|
@@ -2640,7 +2638,7 @@ static int nl80211_start_ap(struct sk_buff *skb, struct genl_info *info)
|
|
if (err)
|
|
if (err)
|
|
return err;
|
|
return err;
|
|
|
|
|
|
- err = rdev->ops->start_ap(&rdev->wiphy, dev, ¶ms);
|
|
|
|
|
|
+ err = rdev_start_ap(rdev, dev, ¶ms);
|
|
if (!err) {
|
|
if (!err) {
|
|
wdev->preset_chan = params.channel;
|
|
wdev->preset_chan = params.channel;
|
|
wdev->preset_chantype = params.channel_type;
|
|
wdev->preset_chantype = params.channel_type;
|
|
@@ -2672,7 +2670,7 @@ static int nl80211_set_beacon(struct sk_buff *skb, struct genl_info *info)
|
|
if (err)
|
|
if (err)
|
|
return err;
|
|
return err;
|
|
|
|
|
|
- return rdev->ops->change_beacon(&rdev->wiphy, dev, ¶ms);
|
|
|
|
|
|
+ return rdev_change_beacon(rdev, dev, ¶ms);
|
|
}
|
|
}
|
|
|
|
|
|
static int nl80211_stop_ap(struct sk_buff *skb, struct genl_info *info)
|
|
static int nl80211_stop_ap(struct sk_buff *skb, struct genl_info *info)
|
|
@@ -2956,8 +2954,8 @@ static int nl80211_dump_station(struct sk_buff *skb,
|
|
|
|
|
|
while (1) {
|
|
while (1) {
|
|
memset(&sinfo, 0, sizeof(sinfo));
|
|
memset(&sinfo, 0, sizeof(sinfo));
|
|
- err = dev->ops->dump_station(&dev->wiphy, netdev, sta_idx,
|
|
|
|
- mac_addr, &sinfo);
|
|
|
|
|
|
+ err = rdev_dump_station(dev, netdev, sta_idx,
|
|
|
|
+ mac_addr, &sinfo);
|
|
if (err == -ENOENT)
|
|
if (err == -ENOENT)
|
|
break;
|
|
break;
|
|
if (err)
|
|
if (err)
|
|
@@ -3002,7 +3000,7 @@ static int nl80211_get_station(struct sk_buff *skb, struct genl_info *info)
|
|
if (!rdev->ops->get_station)
|
|
if (!rdev->ops->get_station)
|
|
return -EOPNOTSUPP;
|
|
return -EOPNOTSUPP;
|
|
|
|
|
|
- err = rdev->ops->get_station(&rdev->wiphy, dev, mac_addr, &sinfo);
|
|
|
|
|
|
+ err = rdev_get_station(rdev, dev, mac_addr, &sinfo);
|
|
if (err)
|
|
if (err)
|
|
return err;
|
|
return err;
|
|
|
|
|
|
@@ -3179,7 +3177,7 @@ static int nl80211_set_station(struct sk_buff *skb, struct genl_info *info)
|
|
|
|
|
|
/* be aware of params.vlan when changing code here */
|
|
/* be aware of params.vlan when changing code here */
|
|
|
|
|
|
- err = rdev->ops->change_station(&rdev->wiphy, dev, mac_addr, ¶ms);
|
|
|
|
|
|
+ err = rdev_change_station(rdev, dev, mac_addr, ¶ms);
|
|
|
|
|
|
if (params.vlan)
|
|
if (params.vlan)
|
|
dev_put(params.vlan);
|
|
dev_put(params.vlan);
|
|
@@ -3312,7 +3310,7 @@ static int nl80211_new_station(struct sk_buff *skb, struct genl_info *info)
|
|
|
|
|
|
/* be aware of params.vlan when changing code here */
|
|
/* be aware of params.vlan when changing code here */
|
|
|
|
|
|
- err = rdev->ops->add_station(&rdev->wiphy, dev, mac_addr, ¶ms);
|
|
|
|
|
|
+ err = rdev_add_station(rdev, dev, mac_addr, ¶ms);
|
|
|
|
|
|
if (params.vlan)
|
|
if (params.vlan)
|
|
dev_put(params.vlan);
|
|
dev_put(params.vlan);
|
|
@@ -3337,7 +3335,7 @@ static int nl80211_del_station(struct sk_buff *skb, struct genl_info *info)
|
|
if (!rdev->ops->del_station)
|
|
if (!rdev->ops->del_station)
|
|
return -EOPNOTSUPP;
|
|
return -EOPNOTSUPP;
|
|
|
|
|
|
- return rdev->ops->del_station(&rdev->wiphy, dev, mac_addr);
|
|
|
|
|
|
+ return rdev_del_station(rdev, dev, mac_addr);
|
|
}
|
|
}
|
|
|
|
|
|
static int nl80211_send_mpath(struct sk_buff *msg, u32 portid, u32 seq,
|
|
static int nl80211_send_mpath(struct sk_buff *msg, u32 portid, u32 seq,
|
|
@@ -3419,8 +3417,8 @@ static int nl80211_dump_mpath(struct sk_buff *skb,
|
|
}
|
|
}
|
|
|
|
|
|
while (1) {
|
|
while (1) {
|
|
- err = dev->ops->dump_mpath(&dev->wiphy, netdev, path_idx,
|
|
|
|
- dst, next_hop, &pinfo);
|
|
|
|
|
|
+ err = rdev_dump_mpath(dev, netdev, path_idx, dst, next_hop,
|
|
|
|
+ &pinfo);
|
|
if (err == -ENOENT)
|
|
if (err == -ENOENT)
|
|
break;
|
|
break;
|
|
if (err)
|
|
if (err)
|
|
@@ -3467,7 +3465,7 @@ static int nl80211_get_mpath(struct sk_buff *skb, struct genl_info *info)
|
|
if (dev->ieee80211_ptr->iftype != NL80211_IFTYPE_MESH_POINT)
|
|
if (dev->ieee80211_ptr->iftype != NL80211_IFTYPE_MESH_POINT)
|
|
return -EOPNOTSUPP;
|
|
return -EOPNOTSUPP;
|
|
|
|
|
|
- err = rdev->ops->get_mpath(&rdev->wiphy, dev, dst, next_hop, &pinfo);
|
|
|
|
|
|
+ err = rdev_get_mpath(rdev, dev, dst, next_hop, &pinfo);
|
|
if (err)
|
|
if (err)
|
|
return err;
|
|
return err;
|
|
|
|
|
|
@@ -3506,7 +3504,7 @@ static int nl80211_set_mpath(struct sk_buff *skb, struct genl_info *info)
|
|
if (dev->ieee80211_ptr->iftype != NL80211_IFTYPE_MESH_POINT)
|
|
if (dev->ieee80211_ptr->iftype != NL80211_IFTYPE_MESH_POINT)
|
|
return -EOPNOTSUPP;
|
|
return -EOPNOTSUPP;
|
|
|
|
|
|
- return rdev->ops->change_mpath(&rdev->wiphy, dev, dst, next_hop);
|
|
|
|
|
|
+ return rdev_change_mpath(rdev, dev, dst, next_hop);
|
|
}
|
|
}
|
|
|
|
|
|
static int nl80211_new_mpath(struct sk_buff *skb, struct genl_info *info)
|
|
static int nl80211_new_mpath(struct sk_buff *skb, struct genl_info *info)
|
|
@@ -3531,7 +3529,7 @@ static int nl80211_new_mpath(struct sk_buff *skb, struct genl_info *info)
|
|
if (dev->ieee80211_ptr->iftype != NL80211_IFTYPE_MESH_POINT)
|
|
if (dev->ieee80211_ptr->iftype != NL80211_IFTYPE_MESH_POINT)
|
|
return -EOPNOTSUPP;
|
|
return -EOPNOTSUPP;
|
|
|
|
|
|
- return rdev->ops->add_mpath(&rdev->wiphy, dev, dst, next_hop);
|
|
|
|
|
|
+ return rdev_add_mpath(rdev, dev, dst, next_hop);
|
|
}
|
|
}
|
|
|
|
|
|
static int nl80211_del_mpath(struct sk_buff *skb, struct genl_info *info)
|
|
static int nl80211_del_mpath(struct sk_buff *skb, struct genl_info *info)
|
|
@@ -3546,7 +3544,7 @@ static int nl80211_del_mpath(struct sk_buff *skb, struct genl_info *info)
|
|
if (!rdev->ops->del_mpath)
|
|
if (!rdev->ops->del_mpath)
|
|
return -EOPNOTSUPP;
|
|
return -EOPNOTSUPP;
|
|
|
|
|
|
- return rdev->ops->del_mpath(&rdev->wiphy, dev, dst);
|
|
|
|
|
|
+ return rdev_del_mpath(rdev, dev, dst);
|
|
}
|
|
}
|
|
|
|
|
|
static int nl80211_set_bss(struct sk_buff *skb, struct genl_info *info)
|
|
static int nl80211_set_bss(struct sk_buff *skb, struct genl_info *info)
|
|
@@ -3591,7 +3589,7 @@ static int nl80211_set_bss(struct sk_buff *skb, struct genl_info *info)
|
|
dev->ieee80211_ptr->iftype != NL80211_IFTYPE_P2P_GO)
|
|
dev->ieee80211_ptr->iftype != NL80211_IFTYPE_P2P_GO)
|
|
return -EOPNOTSUPP;
|
|
return -EOPNOTSUPP;
|
|
|
|
|
|
- return rdev->ops->change_bss(&rdev->wiphy, dev, ¶ms);
|
|
|
|
|
|
+ return rdev_change_bss(rdev, dev, ¶ms);
|
|
}
|
|
}
|
|
|
|
|
|
static const struct nla_policy reg_rule_policy[NL80211_REG_RULE_ATTR_MAX + 1] = {
|
|
static const struct nla_policy reg_rule_policy[NL80211_REG_RULE_ATTR_MAX + 1] = {
|
|
@@ -3705,8 +3703,7 @@ static int nl80211_get_mesh_config(struct sk_buff *skb,
|
|
if (!wdev->mesh_id_len)
|
|
if (!wdev->mesh_id_len)
|
|
memcpy(&cur_params, &default_mesh_config, sizeof(cur_params));
|
|
memcpy(&cur_params, &default_mesh_config, sizeof(cur_params));
|
|
else
|
|
else
|
|
- err = rdev->ops->get_mesh_config(&rdev->wiphy, dev,
|
|
|
|
- &cur_params);
|
|
|
|
|
|
+ err = rdev_get_mesh_config(rdev, dev, &cur_params);
|
|
wdev_unlock(wdev);
|
|
wdev_unlock(wdev);
|
|
|
|
|
|
if (err)
|
|
if (err)
|
|
@@ -4008,8 +4005,7 @@ static int nl80211_update_mesh_config(struct sk_buff *skb,
|
|
err = -ENOLINK;
|
|
err = -ENOLINK;
|
|
|
|
|
|
if (!err)
|
|
if (!err)
|
|
- err = rdev->ops->update_mesh_config(&rdev->wiphy, dev,
|
|
|
|
- mask, &cfg);
|
|
|
|
|
|
+ err = rdev_update_mesh_config(rdev, dev, mask, &cfg);
|
|
|
|
|
|
wdev_unlock(wdev);
|
|
wdev_unlock(wdev);
|
|
|
|
|
|
@@ -4394,7 +4390,7 @@ static int nl80211_trigger_scan(struct sk_buff *skb, struct genl_info *info)
|
|
request->scan_start = jiffies;
|
|
request->scan_start = jiffies;
|
|
|
|
|
|
rdev->scan_req = request;
|
|
rdev->scan_req = request;
|
|
- err = rdev->ops->scan(&rdev->wiphy, request);
|
|
|
|
|
|
+ err = rdev_scan(rdev, request);
|
|
|
|
|
|
if (!err) {
|
|
if (!err) {
|
|
nl80211_send_scan_start(rdev, wdev);
|
|
nl80211_send_scan_start(rdev, wdev);
|
|
@@ -4635,7 +4631,7 @@ static int nl80211_start_sched_scan(struct sk_buff *skb,
|
|
request->interval = interval;
|
|
request->interval = interval;
|
|
request->scan_start = jiffies;
|
|
request->scan_start = jiffies;
|
|
|
|
|
|
- err = rdev->ops->sched_scan_start(&rdev->wiphy, dev, request);
|
|
|
|
|
|
+ err = rdev_sched_scan_start(rdev, dev, request);
|
|
if (!err) {
|
|
if (!err) {
|
|
rdev->sched_scan_req = request;
|
|
rdev->sched_scan_req = request;
|
|
nl80211_send_sched_scan(rdev, dev,
|
|
nl80211_send_sched_scan(rdev, dev,
|
|
@@ -4878,8 +4874,7 @@ static int nl80211_dump_survey(struct sk_buff *skb,
|
|
while (1) {
|
|
while (1) {
|
|
struct ieee80211_channel *chan;
|
|
struct ieee80211_channel *chan;
|
|
|
|
|
|
- res = dev->ops->dump_survey(&dev->wiphy, netdev, survey_idx,
|
|
|
|
- &survey);
|
|
|
|
|
|
+ res = rdev_dump_survey(dev, netdev, survey_idx, &survey);
|
|
if (res == -ENOENT)
|
|
if (res == -ENOENT)
|
|
break;
|
|
break;
|
|
if (res)
|
|
if (res)
|
|
@@ -5465,7 +5460,7 @@ static int nl80211_testmode_do(struct sk_buff *skb, struct genl_info *info)
|
|
err = -EOPNOTSUPP;
|
|
err = -EOPNOTSUPP;
|
|
if (rdev->ops->testmode_cmd) {
|
|
if (rdev->ops->testmode_cmd) {
|
|
rdev->testmode_info = info;
|
|
rdev->testmode_info = info;
|
|
- err = rdev->ops->testmode_cmd(&rdev->wiphy,
|
|
|
|
|
|
+ err = rdev_testmode_cmd(rdev,
|
|
nla_data(info->attrs[NL80211_ATTR_TESTDATA]),
|
|
nla_data(info->attrs[NL80211_ATTR_TESTDATA]),
|
|
nla_len(info->attrs[NL80211_ATTR_TESTDATA]));
|
|
nla_len(info->attrs[NL80211_ATTR_TESTDATA]));
|
|
rdev->testmode_info = NULL;
|
|
rdev->testmode_info = NULL;
|
|
@@ -5547,8 +5542,7 @@ static int nl80211_testmode_dump(struct sk_buff *skb,
|
|
genlmsg_cancel(skb, hdr);
|
|
genlmsg_cancel(skb, hdr);
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
- err = rdev->ops->testmode_dump(&rdev->wiphy, skb, cb,
|
|
|
|
- data, data_len);
|
|
|
|
|
|
+ err = rdev_testmode_dump(rdev, skb, cb, data, data_len);
|
|
nla_nest_end(skb, tmdata);
|
|
nla_nest_end(skb, tmdata);
|
|
|
|
|
|
if (err == -ENOBUFS || err == -ENOENT) {
|
|
if (err == -ENOBUFS || err == -ENOENT) {
|
|
@@ -5853,7 +5847,7 @@ static int nl80211_flush_pmksa(struct sk_buff *skb, struct genl_info *info)
|
|
if (!rdev->ops->flush_pmksa)
|
|
if (!rdev->ops->flush_pmksa)
|
|
return -EOPNOTSUPP;
|
|
return -EOPNOTSUPP;
|
|
|
|
|
|
- return rdev->ops->flush_pmksa(&rdev->wiphy, dev);
|
|
|
|
|
|
+ return rdev_flush_pmksa(rdev, dev);
|
|
}
|
|
}
|
|
|
|
|
|
static int nl80211_tdls_mgmt(struct sk_buff *skb, struct genl_info *info)
|
|
static int nl80211_tdls_mgmt(struct sk_buff *skb, struct genl_info *info)
|
|
@@ -5880,10 +5874,10 @@ static int nl80211_tdls_mgmt(struct sk_buff *skb, struct genl_info *info)
|
|
status_code = nla_get_u16(info->attrs[NL80211_ATTR_STATUS_CODE]);
|
|
status_code = nla_get_u16(info->attrs[NL80211_ATTR_STATUS_CODE]);
|
|
dialog_token = nla_get_u8(info->attrs[NL80211_ATTR_TDLS_DIALOG_TOKEN]);
|
|
dialog_token = nla_get_u8(info->attrs[NL80211_ATTR_TDLS_DIALOG_TOKEN]);
|
|
|
|
|
|
- return rdev->ops->tdls_mgmt(&rdev->wiphy, dev, peer, action_code,
|
|
|
|
- dialog_token, status_code,
|
|
|
|
- nla_data(info->attrs[NL80211_ATTR_IE]),
|
|
|
|
- nla_len(info->attrs[NL80211_ATTR_IE]));
|
|
|
|
|
|
+ return rdev_tdls_mgmt(rdev, dev, peer, action_code,
|
|
|
|
+ dialog_token, status_code,
|
|
|
|
+ nla_data(info->attrs[NL80211_ATTR_IE]),
|
|
|
|
+ nla_len(info->attrs[NL80211_ATTR_IE]));
|
|
}
|
|
}
|
|
|
|
|
|
static int nl80211_tdls_oper(struct sk_buff *skb, struct genl_info *info)
|
|
static int nl80211_tdls_oper(struct sk_buff *skb, struct genl_info *info)
|
|
@@ -5904,7 +5898,7 @@ static int nl80211_tdls_oper(struct sk_buff *skb, struct genl_info *info)
|
|
operation = nla_get_u8(info->attrs[NL80211_ATTR_TDLS_OPERATION]);
|
|
operation = nla_get_u8(info->attrs[NL80211_ATTR_TDLS_OPERATION]);
|
|
peer = nla_data(info->attrs[NL80211_ATTR_MAC]);
|
|
peer = nla_data(info->attrs[NL80211_ATTR_MAC]);
|
|
|
|
|
|
- return rdev->ops->tdls_oper(&rdev->wiphy, dev, peer, operation);
|
|
|
|
|
|
+ return rdev_tdls_oper(rdev, dev, peer, operation);
|
|
}
|
|
}
|
|
|
|
|
|
static int nl80211_remain_on_channel(struct sk_buff *skb,
|
|
static int nl80211_remain_on_channel(struct sk_buff *skb,
|
|
@@ -5959,8 +5953,8 @@ static int nl80211_remain_on_channel(struct sk_buff *skb,
|
|
goto free_msg;
|
|
goto free_msg;
|
|
}
|
|
}
|
|
|
|
|
|
- err = rdev->ops->remain_on_channel(&rdev->wiphy, wdev, chan,
|
|
|
|
- channel_type, duration, &cookie);
|
|
|
|
|
|
+ err = rdev_remain_on_channel(rdev, wdev, chan, channel_type, duration,
|
|
|
|
+ &cookie);
|
|
|
|
|
|
if (err)
|
|
if (err)
|
|
goto free_msg;
|
|
goto free_msg;
|
|
@@ -5994,7 +5988,7 @@ static int nl80211_cancel_remain_on_channel(struct sk_buff *skb,
|
|
|
|
|
|
cookie = nla_get_u64(info->attrs[NL80211_ATTR_COOKIE]);
|
|
cookie = nla_get_u64(info->attrs[NL80211_ATTR_COOKIE]);
|
|
|
|
|
|
- return rdev->ops->cancel_remain_on_channel(&rdev->wiphy, wdev, cookie);
|
|
|
|
|
|
+ return rdev_cancel_remain_on_channel(rdev, wdev, cookie);
|
|
}
|
|
}
|
|
|
|
|
|
static u32 rateset_to_mask(struct ieee80211_supported_band *sband,
|
|
static u32 rateset_to_mask(struct ieee80211_supported_band *sband,
|
|
@@ -6137,7 +6131,7 @@ static int nl80211_set_tx_bitrate_mask(struct sk_buff *skb,
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- return rdev->ops->set_bitrate_mask(&rdev->wiphy, dev, NULL, &mask);
|
|
|
|
|
|
+ return rdev_set_bitrate_mask(rdev, dev, NULL, &mask);
|
|
}
|
|
}
|
|
|
|
|
|
static int nl80211_register_mgmt(struct sk_buff *skb, struct genl_info *info)
|
|
static int nl80211_register_mgmt(struct sk_buff *skb, struct genl_info *info)
|
|
@@ -6312,7 +6306,7 @@ static int nl80211_tx_mgmt_cancel_wait(struct sk_buff *skb, struct genl_info *in
|
|
|
|
|
|
cookie = nla_get_u64(info->attrs[NL80211_ATTR_COOKIE]);
|
|
cookie = nla_get_u64(info->attrs[NL80211_ATTR_COOKIE]);
|
|
|
|
|
|
- return rdev->ops->mgmt_tx_cancel_wait(&rdev->wiphy, wdev, cookie);
|
|
|
|
|
|
+ return rdev_mgmt_tx_cancel_wait(rdev, wdev, cookie);
|
|
}
|
|
}
|
|
|
|
|
|
static int nl80211_set_power_save(struct sk_buff *skb, struct genl_info *info)
|
|
static int nl80211_set_power_save(struct sk_buff *skb, struct genl_info *info)
|
|
@@ -6342,8 +6336,7 @@ static int nl80211_set_power_save(struct sk_buff *skb, struct genl_info *info)
|
|
if (state == wdev->ps)
|
|
if (state == wdev->ps)
|
|
return 0;
|
|
return 0;
|
|
|
|
|
|
- err = rdev->ops->set_power_mgmt(wdev->wiphy, dev, state,
|
|
|
|
- wdev->ps_timeout);
|
|
|
|
|
|
+ err = rdev_set_power_mgmt(rdev, dev, state, wdev->ps_timeout);
|
|
if (!err)
|
|
if (!err)
|
|
wdev->ps = state;
|
|
wdev->ps = state;
|
|
return err;
|
|
return err;
|
|
@@ -6423,8 +6416,7 @@ static int nl80211_set_cqm_txe(struct genl_info *info,
|
|
wdev->iftype != NL80211_IFTYPE_P2P_CLIENT)
|
|
wdev->iftype != NL80211_IFTYPE_P2P_CLIENT)
|
|
return -EOPNOTSUPP;
|
|
return -EOPNOTSUPP;
|
|
|
|
|
|
- return rdev->ops->set_cqm_txe_config(wdev->wiphy, dev,
|
|
|
|
- rate, pkts, intvl);
|
|
|
|
|
|
+ return rdev_set_cqm_txe_config(rdev, dev, rate, pkts, intvl);
|
|
}
|
|
}
|
|
|
|
|
|
static int nl80211_set_cqm_rssi(struct genl_info *info,
|
|
static int nl80211_set_cqm_rssi(struct genl_info *info,
|
|
@@ -6446,8 +6438,7 @@ static int nl80211_set_cqm_rssi(struct genl_info *info,
|
|
wdev->iftype != NL80211_IFTYPE_P2P_CLIENT)
|
|
wdev->iftype != NL80211_IFTYPE_P2P_CLIENT)
|
|
return -EOPNOTSUPP;
|
|
return -EOPNOTSUPP;
|
|
|
|
|
|
- return rdev->ops->set_cqm_rssi_config(wdev->wiphy, dev,
|
|
|
|
- threshold, hysteresis);
|
|
|
|
|
|
+ return rdev_set_cqm_rssi_config(rdev, dev, threshold, hysteresis);
|
|
}
|
|
}
|
|
|
|
|
|
static int nl80211_set_cqm(struct sk_buff *skb, struct genl_info *info)
|
|
static int nl80211_set_cqm(struct sk_buff *skb, struct genl_info *info)
|
|
@@ -6772,7 +6763,7 @@ static int nl80211_set_wowlan(struct sk_buff *skb, struct genl_info *info)
|
|
|
|
|
|
set_wakeup:
|
|
set_wakeup:
|
|
if (rdev->ops->set_wakeup && prev_enabled != !!rdev->wowlan)
|
|
if (rdev->ops->set_wakeup && prev_enabled != !!rdev->wowlan)
|
|
- rdev->ops->set_wakeup(&rdev->wiphy, rdev->wowlan);
|
|
|
|
|
|
+ rdev_set_wakeup(rdev, rdev->wowlan);
|
|
|
|
|
|
return 0;
|
|
return 0;
|
|
error:
|
|
error:
|
|
@@ -6828,7 +6819,7 @@ static int nl80211_set_rekey_data(struct sk_buff *skb, struct genl_info *info)
|
|
goto out;
|
|
goto out;
|
|
}
|
|
}
|
|
|
|
|
|
- err = rdev->ops->set_rekey_data(&rdev->wiphy, dev, &rekey_data);
|
|
|
|
|
|
+ err = rdev_set_rekey_data(rdev, dev, &rekey_data);
|
|
out:
|
|
out:
|
|
wdev_unlock(wdev);
|
|
wdev_unlock(wdev);
|
|
return err;
|
|
return err;
|
|
@@ -6887,7 +6878,7 @@ static int nl80211_probe_client(struct sk_buff *skb,
|
|
|
|
|
|
addr = nla_data(info->attrs[NL80211_ATTR_MAC]);
|
|
addr = nla_data(info->attrs[NL80211_ATTR_MAC]);
|
|
|
|
|
|
- err = rdev->ops->probe_client(&rdev->wiphy, dev, addr, &cookie);
|
|
|
|
|
|
+ err = rdev_probe_client(rdev, dev, addr, &cookie);
|
|
if (err)
|
|
if (err)
|
|
goto free_msg;
|
|
goto free_msg;
|
|
|
|
|