Commit e35e4d28 authored by Hila Gonen's avatar Hila Gonen Committed by Johannes Berg

cfg80211: add wrappers for registered_device_ops

This will allow adding central tracing like in mac80211.
Signed-off-by: default avatarHila Gonen <hila.gonen@intel.com>
Reviewed-by: default avatarEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Reviewed-by: default avatarJohannes Berg <johannes.berg@intel.com>
Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent de7044ee
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
#include <net/cfg80211.h> #include <net/cfg80211.h>
#include "nl80211.h" #include "nl80211.h"
#include "core.h" #include "core.h"
#include "rdev-ops.h"
static int __cfg80211_stop_ap(struct cfg80211_registered_device *rdev, static int __cfg80211_stop_ap(struct cfg80211_registered_device *rdev,
...@@ -23,7 +24,7 @@ static int __cfg80211_stop_ap(struct cfg80211_registered_device *rdev, ...@@ -23,7 +24,7 @@ static int __cfg80211_stop_ap(struct cfg80211_registered_device *rdev,
if (!wdev->beacon_interval) if (!wdev->beacon_interval)
return -ENOENT; return -ENOENT;
err = rdev->ops->stop_ap(&rdev->wiphy, dev); err = rdev_stop_ap(rdev, dev);
if (!err) { if (!err) {
wdev->beacon_interval = 0; wdev->beacon_interval = 0;
wdev->channel = NULL; wdev->channel = NULL;
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
#include <linux/export.h> #include <linux/export.h>
#include <net/cfg80211.h> #include <net/cfg80211.h>
#include "core.h" #include "core.h"
#include "rdev-ops.h"
struct ieee80211_channel * struct ieee80211_channel *
rdev_freq_to_chan(struct cfg80211_registered_device *rdev, rdev_freq_to_chan(struct cfg80211_registered_device *rdev,
...@@ -92,7 +93,7 @@ int cfg80211_set_monitor_channel(struct cfg80211_registered_device *rdev, ...@@ -92,7 +93,7 @@ int cfg80211_set_monitor_channel(struct cfg80211_registered_device *rdev,
if (!chan) if (!chan)
return -EINVAL; return -EINVAL;
return rdev->ops->set_monitor_channel(&rdev->wiphy, chan, chantype); return rdev_set_monitor_channel(rdev, chan, chantype);
} }
void void
......
...@@ -26,6 +26,7 @@ ...@@ -26,6 +26,7 @@
#include "debugfs.h" #include "debugfs.h"
#include "wext-compat.h" #include "wext-compat.h"
#include "ethtool.h" #include "ethtool.h"
#include "rdev-ops.h"
/* name for sysfs, %d is appended */ /* name for sysfs, %d is appended */
#define PHY_NAME "phy" #define PHY_NAME "phy"
...@@ -216,7 +217,7 @@ static void cfg80211_rfkill_poll(struct rfkill *rfkill, void *data) ...@@ -216,7 +217,7 @@ static void cfg80211_rfkill_poll(struct rfkill *rfkill, void *data)
{ {
struct cfg80211_registered_device *rdev = data; struct cfg80211_registered_device *rdev = data;
rdev->ops->rfkill_poll(&rdev->wiphy); rdev_rfkill_poll(rdev);
} }
static int cfg80211_rfkill_set_block(void *data, bool blocked) static int cfg80211_rfkill_set_block(void *data, bool blocked)
...@@ -690,7 +691,7 @@ void wiphy_unregister(struct wiphy *wiphy) ...@@ -690,7 +691,7 @@ void wiphy_unregister(struct wiphy *wiphy)
flush_work(&rdev->event_work); flush_work(&rdev->event_work);
if (rdev->wowlan && rdev->ops->set_wakeup) if (rdev->wowlan && rdev->ops->set_wakeup)
rdev->ops->set_wakeup(&rdev->wiphy, false); rdev_set_wakeup(rdev, false);
cfg80211_rdev_free_wowlan(rdev); cfg80211_rdev_free_wowlan(rdev);
} }
EXPORT_SYMBOL(wiphy_unregister); EXPORT_SYMBOL(wiphy_unregister);
...@@ -964,9 +965,8 @@ static int cfg80211_netdev_notifier_call(struct notifier_block *nb, ...@@ -964,9 +965,8 @@ static int cfg80211_netdev_notifier_call(struct notifier_block *nb,
if ((wdev->iftype == NL80211_IFTYPE_STATION || if ((wdev->iftype == NL80211_IFTYPE_STATION ||
wdev->iftype == NL80211_IFTYPE_P2P_CLIENT) && wdev->iftype == NL80211_IFTYPE_P2P_CLIENT) &&
rdev->ops->set_power_mgmt) rdev->ops->set_power_mgmt)
if (rdev->ops->set_power_mgmt(wdev->wiphy, dev, if (rdev_set_power_mgmt(rdev, dev, wdev->ps,
wdev->ps, wdev->ps_timeout)) {
wdev->ps_timeout)) {
/* assume this means it's off */ /* assume this means it's off */
wdev->ps = false; wdev->ps = false;
} }
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
#include <net/cfg80211.h> #include <net/cfg80211.h>
#include "core.h" #include "core.h"
#include "ethtool.h" #include "ethtool.h"
#include "rdev-ops.h"
static void cfg80211_get_drvinfo(struct net_device *dev, static void cfg80211_get_drvinfo(struct net_device *dev,
struct ethtool_drvinfo *info) struct ethtool_drvinfo *info)
...@@ -47,9 +48,8 @@ static void cfg80211_get_ringparam(struct net_device *dev, ...@@ -47,9 +48,8 @@ static void cfg80211_get_ringparam(struct net_device *dev,
memset(rp, 0, sizeof(*rp)); memset(rp, 0, sizeof(*rp));
if (rdev->ops->get_ringparam) if (rdev->ops->get_ringparam)
rdev->ops->get_ringparam(wdev->wiphy, rdev_get_ringparam(rdev, &rp->tx_pending, &rp->tx_max_pending,
&rp->tx_pending, &rp->tx_max_pending, &rp->rx_pending, &rp->rx_max_pending);
&rp->rx_pending, &rp->rx_max_pending);
} }
static int cfg80211_set_ringparam(struct net_device *dev, static int cfg80211_set_ringparam(struct net_device *dev,
...@@ -62,8 +62,7 @@ static int cfg80211_set_ringparam(struct net_device *dev, ...@@ -62,8 +62,7 @@ static int cfg80211_set_ringparam(struct net_device *dev,
return -EINVAL; return -EINVAL;
if (rdev->ops->set_ringparam) if (rdev->ops->set_ringparam)
return rdev->ops->set_ringparam(wdev->wiphy, return rdev_set_ringparam(rdev, rp->tx_pending, rp->rx_pending);
rp->tx_pending, rp->rx_pending);
return -ENOTSUPP; return -ENOTSUPP;
} }
...@@ -73,7 +72,7 @@ static int cfg80211_get_sset_count(struct net_device *dev, int sset) ...@@ -73,7 +72,7 @@ static int cfg80211_get_sset_count(struct net_device *dev, int sset)
struct wireless_dev *wdev = dev->ieee80211_ptr; struct wireless_dev *wdev = dev->ieee80211_ptr;
struct cfg80211_registered_device *rdev = wiphy_to_dev(wdev->wiphy); struct cfg80211_registered_device *rdev = wiphy_to_dev(wdev->wiphy);
if (rdev->ops->get_et_sset_count) if (rdev->ops->get_et_sset_count)
return rdev->ops->get_et_sset_count(wdev->wiphy, dev, sset); return rdev_get_et_sset_count(rdev, dev, sset);
return -EOPNOTSUPP; return -EOPNOTSUPP;
} }
...@@ -83,7 +82,7 @@ static void cfg80211_get_stats(struct net_device *dev, ...@@ -83,7 +82,7 @@ static void cfg80211_get_stats(struct net_device *dev,
struct wireless_dev *wdev = dev->ieee80211_ptr; struct wireless_dev *wdev = dev->ieee80211_ptr;
struct cfg80211_registered_device *rdev = wiphy_to_dev(wdev->wiphy); struct cfg80211_registered_device *rdev = wiphy_to_dev(wdev->wiphy);
if (rdev->ops->get_et_stats) if (rdev->ops->get_et_stats)
rdev->ops->get_et_stats(wdev->wiphy, dev, stats, data); rdev_get_et_stats(rdev, dev, stats, data);
} }
static void cfg80211_get_strings(struct net_device *dev, u32 sset, u8 *data) static void cfg80211_get_strings(struct net_device *dev, u32 sset, u8 *data)
...@@ -91,7 +90,7 @@ static void cfg80211_get_strings(struct net_device *dev, u32 sset, u8 *data) ...@@ -91,7 +90,7 @@ static void cfg80211_get_strings(struct net_device *dev, u32 sset, u8 *data)
struct wireless_dev *wdev = dev->ieee80211_ptr; struct wireless_dev *wdev = dev->ieee80211_ptr;
struct cfg80211_registered_device *rdev = wiphy_to_dev(wdev->wiphy); struct cfg80211_registered_device *rdev = wiphy_to_dev(wdev->wiphy);
if (rdev->ops->get_et_strings) if (rdev->ops->get_et_strings)
rdev->ops->get_et_strings(wdev->wiphy, dev, sset, data); rdev_get_et_strings(rdev, dev, sset, data);
} }
const struct ethtool_ops cfg80211_ethtool_ops = { const struct ethtool_ops cfg80211_ethtool_ops = {
......
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
#include <net/cfg80211.h> #include <net/cfg80211.h>
#include "wext-compat.h" #include "wext-compat.h"
#include "nl80211.h" #include "nl80211.h"
#include "rdev-ops.h"
void __cfg80211_ibss_joined(struct net_device *dev, const u8 *bssid) void __cfg80211_ibss_joined(struct net_device *dev, const u8 *bssid)
...@@ -128,7 +129,7 @@ int __cfg80211_join_ibss(struct cfg80211_registered_device *rdev, ...@@ -128,7 +129,7 @@ int __cfg80211_join_ibss(struct cfg80211_registered_device *rdev,
return err; return err;
} }
err = rdev->ops->join_ibss(&rdev->wiphy, dev, params); err = rdev_join_ibss(rdev, dev, params);
if (err) { if (err) {
wdev->connect_keys = NULL; wdev->connect_keys = NULL;
wdev->sme_state = CFG80211_SME_IDLE; wdev->sme_state = CFG80211_SME_IDLE;
...@@ -175,7 +176,7 @@ static void __cfg80211_clear_ibss(struct net_device *dev, bool nowext) ...@@ -175,7 +176,7 @@ static void __cfg80211_clear_ibss(struct net_device *dev, bool nowext)
*/ */
if (rdev->ops->del_key) if (rdev->ops->del_key)
for (i = 0; i < 6; i++) for (i = 0; i < 6; i++)
rdev->ops->del_key(wdev->wiphy, dev, i, false, NULL); rdev_del_key(rdev, dev, i, false, NULL);
if (wdev->current_bss) { if (wdev->current_bss) {
cfg80211_unhold_bss(wdev->current_bss); cfg80211_unhold_bss(wdev->current_bss);
...@@ -211,7 +212,7 @@ int __cfg80211_leave_ibss(struct cfg80211_registered_device *rdev, ...@@ -211,7 +212,7 @@ int __cfg80211_leave_ibss(struct cfg80211_registered_device *rdev,
if (!wdev->ssid_len) if (!wdev->ssid_len)
return -ENOLINK; return -ENOLINK;
err = rdev->ops->leave_ibss(&rdev->wiphy, dev); err = rdev_leave_ibss(rdev, dev);
if (err) if (err)
return err; return err;
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
#include <net/cfg80211.h> #include <net/cfg80211.h>
#include "nl80211.h" #include "nl80211.h"
#include "core.h" #include "core.h"
#include "rdev-ops.h"
/* Default values, timeouts in ms */ /* Default values, timeouts in ms */
#define MESH_TTL 31 #define MESH_TTL 31
...@@ -160,7 +161,7 @@ int __cfg80211_join_mesh(struct cfg80211_registered_device *rdev, ...@@ -160,7 +161,7 @@ int __cfg80211_join_mesh(struct cfg80211_registered_device *rdev,
if (err) if (err)
return err; return err;
err = rdev->ops->join_mesh(&rdev->wiphy, dev, conf, setup); err = rdev_join_mesh(rdev, dev, conf, setup);
if (!err) { if (!err) {
memcpy(wdev->ssid, setup->mesh_id, setup->mesh_id_len); memcpy(wdev->ssid, setup->mesh_id, setup->mesh_id_len);
wdev->mesh_id_len = setup->mesh_id_len; wdev->mesh_id_len = setup->mesh_id_len;
...@@ -220,9 +221,8 @@ int cfg80211_set_mesh_freq(struct cfg80211_registered_device *rdev, ...@@ -220,9 +221,8 @@ int cfg80211_set_mesh_freq(struct cfg80211_registered_device *rdev,
if (err) if (err)
return err; return err;
err = rdev->ops->libertas_set_mesh_channel(&rdev->wiphy, err = rdev_libertas_set_mesh_channel(rdev, wdev->netdev,
wdev->netdev, channel);
channel);
if (!err) if (!err)
wdev->channel = channel; wdev->channel = channel;
...@@ -267,7 +267,7 @@ static int __cfg80211_leave_mesh(struct cfg80211_registered_device *rdev, ...@@ -267,7 +267,7 @@ static int __cfg80211_leave_mesh(struct cfg80211_registered_device *rdev,
if (!wdev->mesh_id_len) if (!wdev->mesh_id_len)
return -ENOTCONN; return -ENOTCONN;
err = rdev->ops->leave_mesh(&rdev->wiphy, dev); err = rdev_leave_mesh(rdev, dev);
if (!err) { if (!err) {
wdev->mesh_id_len = 0; wdev->mesh_id_len = 0;
wdev->channel = NULL; wdev->channel = NULL;
......
...@@ -15,6 +15,8 @@ ...@@ -15,6 +15,8 @@
#include <net/iw_handler.h> #include <net/iw_handler.h>
#include "core.h" #include "core.h"
#include "nl80211.h" #include "nl80211.h"
#include "rdev-ops.h"
void cfg80211_send_rx_auth(struct net_device *dev, const u8 *buf, size_t len) void cfg80211_send_rx_auth(struct net_device *dev, const u8 *buf, size_t len)
{ {
...@@ -310,7 +312,7 @@ int __cfg80211_mlme_auth(struct cfg80211_registered_device *rdev, ...@@ -310,7 +312,7 @@ int __cfg80211_mlme_auth(struct cfg80211_registered_device *rdev,
if (err) if (err)
goto out; goto out;
err = rdev->ops->auth(&rdev->wiphy, dev, &req); err = rdev_auth(rdev, dev, &req);
out: out:
cfg80211_put_bss(req.bss); cfg80211_put_bss(req.bss);
...@@ -415,7 +417,7 @@ int __cfg80211_mlme_assoc(struct cfg80211_registered_device *rdev, ...@@ -415,7 +417,7 @@ int __cfg80211_mlme_assoc(struct cfg80211_registered_device *rdev,
if (err) if (err)
goto out; goto out;
err = rdev->ops->assoc(&rdev->wiphy, dev, &req); err = rdev_assoc(rdev, dev, &req);
out: out:
if (err) { if (err) {
...@@ -477,7 +479,7 @@ int __cfg80211_mlme_deauth(struct cfg80211_registered_device *rdev, ...@@ -477,7 +479,7 @@ int __cfg80211_mlme_deauth(struct cfg80211_registered_device *rdev,
return 0; return 0;
} }
return rdev->ops->deauth(&rdev->wiphy, dev, &req); return rdev_deauth(rdev, dev, &req);
} }
int cfg80211_mlme_deauth(struct cfg80211_registered_device *rdev, int cfg80211_mlme_deauth(struct cfg80211_registered_device *rdev,
...@@ -522,7 +524,7 @@ static int __cfg80211_mlme_disassoc(struct cfg80211_registered_device *rdev, ...@@ -522,7 +524,7 @@ static int __cfg80211_mlme_disassoc(struct cfg80211_registered_device *rdev,
else else
return -ENOTCONN; return -ENOTCONN;
return rdev->ops->disassoc(&rdev->wiphy, dev, &req); return rdev_disassoc(rdev, dev, &req);
} }
int cfg80211_mlme_disassoc(struct cfg80211_registered_device *rdev, int cfg80211_mlme_disassoc(struct cfg80211_registered_device *rdev,
...@@ -563,7 +565,7 @@ void cfg80211_mlme_down(struct cfg80211_registered_device *rdev, ...@@ -563,7 +565,7 @@ void cfg80211_mlme_down(struct cfg80211_registered_device *rdev,
memcpy(bssid, wdev->current_bss->pub.bssid, ETH_ALEN); memcpy(bssid, wdev->current_bss->pub.bssid, ETH_ALEN);
req.bssid = bssid; req.bssid = bssid;
rdev->ops->deauth(&rdev->wiphy, dev, &req); rdev_deauth(rdev, dev, &req);
if (wdev->current_bss) { if (wdev->current_bss) {
cfg80211_unhold_bss(wdev->current_bss); cfg80211_unhold_bss(wdev->current_bss);
...@@ -693,7 +695,7 @@ int cfg80211_mlme_register_mgmt(struct wireless_dev *wdev, u32 snd_portid, ...@@ -693,7 +695,7 @@ int cfg80211_mlme_register_mgmt(struct wireless_dev *wdev, u32 snd_portid,
list_add(&nreg->list, &wdev->mgmt_registrations); list_add(&nreg->list, &wdev->mgmt_registrations);
if (rdev->ops->mgmt_frame_register) if (rdev->ops->mgmt_frame_register)
rdev->ops->mgmt_frame_register(wiphy, wdev, frame_type, true); rdev_mgmt_frame_register(rdev, wdev, frame_type, true);
out: out:
spin_unlock_bh(&wdev->mgmt_registrations_lock); spin_unlock_bh(&wdev->mgmt_registrations_lock);
...@@ -716,8 +718,8 @@ void cfg80211_mlme_unregister_socket(struct wireless_dev *wdev, u32 nlportid) ...@@ -716,8 +718,8 @@ void cfg80211_mlme_unregister_socket(struct wireless_dev *wdev, u32 nlportid)
if (rdev->ops->mgmt_frame_register) { if (rdev->ops->mgmt_frame_register) {
u16 frame_type = le16_to_cpu(reg->frame_type); u16 frame_type = le16_to_cpu(reg->frame_type);
rdev->ops->mgmt_frame_register(wiphy, wdev, rdev_mgmt_frame_register(rdev, wdev,
frame_type, false); frame_type, false);
} }
list_del(&reg->list); list_del(&reg->list);
...@@ -843,10 +845,10 @@ int cfg80211_mlme_mgmt_tx(struct cfg80211_registered_device *rdev, ...@@ -843,10 +845,10 @@ int cfg80211_mlme_mgmt_tx(struct cfg80211_registered_device *rdev,
return -EINVAL; return -EINVAL;
/* Transmit the Action frame as requested by user space */ /* Transmit the Action frame as requested by user space */
return rdev->ops->mgmt_tx(&rdev->wiphy, wdev, chan, offchan, return rdev_mgmt_tx(rdev, wdev, chan, offchan,
channel_type, channel_type_valid, channel_type, channel_type_valid,
wait, buf, len, no_cck, dont_wait_for_ack, wait, buf, len, no_cck, dont_wait_for_ack,
cookie); cookie);
} }
bool cfg80211_rx_mgmt(struct wireless_dev *wdev, int freq, int sig_mbm, bool cfg80211_rx_mgmt(struct wireless_dev *wdev, int freq, int sig_mbm,
......
This diff is collapsed.
This diff is collapsed.
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
#include "core.h" #include "core.h"
#include "nl80211.h" #include "nl80211.h"
#include "wext-compat.h" #include "wext-compat.h"
#include "rdev-ops.h"
#define IEEE80211_SCAN_RESULT_EXPIRE (30 * HZ) #define IEEE80211_SCAN_RESULT_EXPIRE (30 * HZ)
...@@ -211,7 +212,7 @@ int __cfg80211_stop_sched_scan(struct cfg80211_registered_device *rdev, ...@@ -211,7 +212,7 @@ int __cfg80211_stop_sched_scan(struct cfg80211_registered_device *rdev,
dev = rdev->sched_scan_req->dev; dev = rdev->sched_scan_req->dev;
if (!driver_initiated) { if (!driver_initiated) {
int err = rdev->ops->sched_scan_stop(&rdev->wiphy, dev); int err = rdev_sched_scan_stop(rdev, dev);
if (err) if (err)
return err; return err;
} }
...@@ -1052,7 +1053,7 @@ int cfg80211_wext_siwscan(struct net_device *dev, ...@@ -1052,7 +1053,7 @@ int cfg80211_wext_siwscan(struct net_device *dev,
creq->rates[i] = (1 << wiphy->bands[i]->n_bitrates) - 1; creq->rates[i] = (1 << wiphy->bands[i]->n_bitrates) - 1;
rdev->scan_req = creq; rdev->scan_req = creq;
err = rdev->ops->scan(wiphy, creq); err = rdev_scan(rdev, creq);
if (err) { if (err) {
rdev->scan_req = NULL; rdev->scan_req = NULL;
/* creq will be freed below */ /* creq will be freed below */
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
#include <net/rtnetlink.h> #include <net/rtnetlink.h>
#include "nl80211.h" #include "nl80211.h"
#include "reg.h" #include "reg.h"
#include "rdev-ops.h"
struct cfg80211_conn { struct cfg80211_conn {
struct cfg80211_connect_params params; struct cfg80211_connect_params params;
...@@ -142,7 +143,7 @@ static int cfg80211_conn_scan(struct wireless_dev *wdev) ...@@ -142,7 +143,7 @@ static int cfg80211_conn_scan(struct wireless_dev *wdev)
rdev->scan_req = request; rdev->scan_req = request;
err = rdev->ops->scan(wdev->wiphy, request); err = rdev_scan(rdev, request);
if (!err) { if (!err) {
wdev->conn->state = CFG80211_CONN_SCANNING; wdev->conn->state = CFG80211_CONN_SCANNING;
nl80211_send_scan_start(rdev, wdev); nl80211_send_scan_start(rdev, wdev);
...@@ -717,7 +718,7 @@ void __cfg80211_disconnected(struct net_device *dev, const u8 *ie, ...@@ -717,7 +718,7 @@ void __cfg80211_disconnected(struct net_device *dev, const u8 *ie,
*/ */
if (rdev->ops->del_key) if (rdev->ops->del_key)
for (i = 0; i < 6; i++) for (i = 0; i < 6; i++)
rdev->ops->del_key(wdev->wiphy, dev, i, false, NULL); rdev_del_key(rdev, dev, i, false, NULL);
#ifdef CONFIG_CFG80211_WEXT #ifdef CONFIG_CFG80211_WEXT
memset(&wrqu, 0, sizeof(wrqu)); memset(&wrqu, 0, sizeof(wrqu));
...@@ -893,7 +894,7 @@ int __cfg80211_connect(struct cfg80211_registered_device *rdev, ...@@ -893,7 +894,7 @@ int __cfg80211_connect(struct cfg80211_registered_device *rdev,
} else { } else {
wdev->sme_state = CFG80211_SME_CONNECTING; wdev->sme_state = CFG80211_SME_CONNECTING;
wdev->connect_keys = connkeys; wdev->connect_keys = connkeys;
err = rdev->ops->connect(&rdev->wiphy, dev, connect); err = rdev_connect(rdev, dev, connect);
if (err) { if (err) {
wdev->connect_keys = NULL; wdev->connect_keys = NULL;
wdev->sme_state = CFG80211_SME_IDLE; wdev->sme_state = CFG80211_SME_IDLE;
...@@ -965,7 +966,7 @@ int __cfg80211_disconnect(struct cfg80211_registered_device *rdev, ...@@ -965,7 +966,7 @@ int __cfg80211_disconnect(struct cfg80211_registered_device *rdev,
if (err) if (err)
return err; return err;
} else { } else {
err = rdev->ops->disconnect(&rdev->wiphy, dev, reason); err = rdev_disconnect(rdev, dev, reason);
if (err) if (err)
return err; return err;
} }
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
#include <net/cfg80211.h> #include <net/cfg80211.h>
#include "sysfs.h" #include "sysfs.h"
#include "core.h" #include "core.h"
#include "rdev-ops.h"
static inline struct cfg80211_registered_device *dev_to_rdev( static inline struct cfg80211_registered_device *dev_to_rdev(
struct device *dev) struct device *dev)
...@@ -94,7 +95,7 @@ static int wiphy_suspend(struct device *dev, pm_message_t state) ...@@ -94,7 +95,7 @@ static int wiphy_suspend(struct device *dev, pm_message_t state)
if (rdev->ops->suspend) { if (rdev->ops->suspend) {
rtnl_lock(); rtnl_lock();
if (rdev->wiphy.registered) if (rdev->wiphy.registered)
ret = rdev->ops->suspend(&rdev->wiphy, rdev->wowlan); ret = rdev_suspend(rdev);
rtnl_unlock(); rtnl_unlock();
} }
...@@ -114,7 +115,7 @@ static int wiphy_resume(struct device *dev) ...@@ -114,7 +115,7 @@ static int wiphy_resume(struct device *dev)
if (rdev->ops->resume) { if (rdev->ops->resume) {
rtnl_lock(); rtnl_lock();
if (rdev->wiphy.registered) if (rdev->wiphy.registered)
ret = rdev->ops->resume(&rdev->wiphy); ret = rdev_resume(rdev);
rtnl_unlock(); rtnl_unlock();
} }
......
...@@ -11,6 +11,8 @@ ...@@ -11,6 +11,8 @@
#include <net/ip.h> #include <net/ip.h>
#include <net/dsfield.h> #include <net/dsfield.h>
#include "core.h" #include "core.h"
#include "rdev-ops.h"
struct ieee80211_rate * struct ieee80211_rate *
ieee80211_get_response_rate(struct ieee80211_supported_band *sband, ieee80211_get_response_rate(struct ieee80211_supported_band *sband,
...@@ -703,19 +705,18 @@ void cfg80211_upload_connect_keys(struct wireless_dev *wdev) ...@@ -703,19 +705,18 @@ void cfg80211_upload_connect_keys(struct wireless_dev *wdev)
for (i = 0; i < 6; i++) { for (i = 0; i < 6; i++) {
if (!wdev->connect_keys->params[i].cipher) if (!wdev->connect_keys->params[i].cipher)
continue; continue;
if (rdev->ops->add_key(wdev->wiphy, dev, i, false, NULL, if (rdev_add_key(rdev, dev, i, false, NULL,
&wdev->connect_keys->params[i])) { &wdev->connect_keys->params[i])) {
netdev_err(dev, "failed to set key %d\n", i); netdev_err(dev, "failed to set key %d\n", i);
continue; continue;
} }
if (wdev->connect_keys->def == i) if (wdev->connect_keys->def == i)
if (rdev->ops->set_default_key(wdev->wiphy, dev, if (rdev_set_default_key(rdev, dev, i, true, true)) {
i, true, true)) {
netdev_err(dev, "failed to set defkey %d\n", i); netdev_err(dev, "failed to set defkey %d\n", i);
continue; continue;
} }
if (wdev->connect_keys->defmgmt == i) if (wdev->connect_keys->defmgmt == i)
if (rdev->ops->set_default_mgmt_key(wdev->wiphy, dev, i)) if (rdev_set_default_mgmt_key(rdev, dev, i))
netdev_err(dev, "failed to set mgtdef %d\n", i); netdev_err(dev, "failed to set mgtdef %d\n", i);
} }
...@@ -848,8 +849,7 @@ int cfg80211_change_iface(struct cfg80211_registered_device *rdev, ...@@ -848,8 +849,7 @@ int cfg80211_change_iface(struct cfg80211_registered_device *rdev,
cfg80211_process_rdev_events(rdev); cfg80211_process_rdev_events(rdev);
} }
err = rdev->ops->change_virtual_intf(&rdev->wiphy, dev, err = rdev_change_virtual_intf(rdev, dev, ntype, flags, params);
ntype, flags, params);
WARN_ON(!err && dev->ieee80211_ptr->iftype != ntype); WARN_ON(!err && dev->ieee80211_ptr->iftype != ntype);
......
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
#include <net/cfg80211-wext.h> #include <net/cfg80211-wext.h>
#include "wext-compat.h" #include "wext-compat.h"
#include "core.h" #include "core.h"
#include "rdev-ops.h"
int cfg80211_wext_giwname(struct net_device *dev, int cfg80211_wext_giwname(struct net_device *dev,
struct iw_request_info *info, struct iw_request_info *info,
...@@ -301,8 +302,7 @@ int cfg80211_wext_siwrts(struct net_device *dev, ...@@ -301,8 +302,7 @@ int cfg80211_wext_siwrts(struct net_device *dev,
else else
wdev->wiphy->rts_threshold = rts->value; wdev->wiphy->rts_threshold = rts->value;
err = rdev->ops->set_wiphy_params(wdev->wiphy, err = rdev_set_wiphy_params(rdev, WIPHY_PARAM_RTS_THRESHOLD);
WIPHY_PARAM_RTS_THRESHOLD);
if (err) if (err)
wdev->wiphy->rts_threshold = orts; wdev->wiphy->rts_threshold = orts;
...@@ -342,8 +342,7 @@ int cfg80211_wext_siwfrag(struct net_device *dev, ...@@ -342,8 +342,7 @@ int cfg80211_wext_siwfrag(struct net_device *dev,
wdev->wiphy->frag_threshold = frag->value & ~0x1; wdev->wiphy->frag_threshold = frag->value & ~0x1;
} }
err = rdev->ops->set_wiphy_params(wdev->wiphy, err = rdev_set_wiphy_params(rdev, WIPHY_PARAM_FRAG_THRESHOLD);
WIPHY_PARAM_FRAG_THRESHOLD);
if (err) if (err)
wdev->wiphy->frag_threshold = ofrag; wdev->wiphy->frag_threshold = ofrag;
...@@ -396,7 +395,7 @@ static int cfg80211_wext_siwretry(struct net_device *dev, ...@@ -396,7 +395,7 @@ static int cfg80211_wext_siwretry(struct net_device *dev,
if (!changed) if (!changed)
return 0; return 0;
err = rdev->ops->set_wiphy_params(wdev->wiphy, changed); err = rdev_set_wiphy_params(rdev, changed);
if (err) { if (err) {
wdev->wiphy->retry_short = oshort; wdev->wiphy->retry_short = oshort;
wdev->wiphy->retry_long = olong; wdev->wiphy->retry_long = olong;
...@@ -490,8 +489,8 @@ static int __cfg80211_set_encryption(struct cfg80211_registered_device *rdev, ...@@ -490,8 +489,8 @@ static int __cfg80211_set_encryption(struct cfg80211_registered_device *rdev,
!(rdev->wiphy.flags & WIPHY_FLAG_IBSS_RSN)) !(rdev->wiphy.flags & WIPHY_FLAG_IBSS_RSN))
err = -ENOENT; err = -ENOENT;
else else
err = rdev->ops->del_key(&rdev->wiphy, dev, idx, err = rdev_del_key(rdev, dev, idx, pairwise,
pairwise, addr); addr);
} }
wdev->wext.connect.privacy = false; wdev->wext.connect.privacy = false;
/* /*
...@@ -525,8 +524,7 @@ static int __cfg80211_set_encryption(struct cfg80211_registered_device *rdev, ...@@ -525,8 +524,7 @@ static int __cfg80211_set_encryption(struct cfg80211_registered_device *rdev,
err = 0; err = 0;
if (wdev->current_bss) if (wdev->current_bss)
err = rdev->ops->add_key(&rdev->wiphy, dev, idx, err = rdev_add_key(rdev, dev, idx, pairwise, addr, params);
pairwise, addr, params);
if (err) if (err)
return err; return err;
...@@ -552,8 +550,7 @@ static int __cfg80211_set_encryption(struct cfg80211_registered_device *rdev, ...@@ -552,8 +550,7 @@ static int __cfg80211_set_encryption(struct cfg80211_registered_device *rdev,
__cfg80211_leave_ibss(rdev, wdev->netdev, true); __cfg80211_leave_ibss(rdev, wdev->netdev, true);
rejoin = true; rejoin = true;
} }
err = rdev->ops->set_default_key(&rdev->wiphy, dev, err = rdev_set_default_key(rdev, dev, idx, true, true);
idx, true, true);
} }
if (!err) { if (!err) {
wdev->wext.default_key = idx; wdev->wext.default_key = idx;
...@@ -566,8 +563,7 @@ static int __cfg80211_set_encryption(struct cfg80211_registered_device *rdev, ...@@ -566,8 +563,7 @@ static int __cfg80211_set_encryption(struct cfg80211_registered_device *rdev,
if (params->cipher == WLAN_CIPHER_SUITE_AES_CMAC && if (params->cipher == WLAN_CIPHER_SUITE_AES_CMAC &&
(tx_key || (!addr && wdev->wext.default_mgmt_key == -1))) { (tx_key || (!addr && wdev->wext.default_mgmt_key == -1))) {
if (wdev->current_bss) if (wdev->current_bss)
err = rdev->ops->set_default_mgmt_key(&rdev->wiphy, err = rdev_set_default_mgmt_key(rdev, dev, idx);
dev, idx);
if (!err) if (!err)
wdev->wext.default_mgmt_key = idx; wdev->wext.default_mgmt_key = idx;
return err; return err;
...@@ -631,8 +627,8 @@ static int cfg80211_wext_siwencode(struct net_device *dev, ...@@ -631,8 +627,8 @@ static int cfg80211_wext_siwencode(struct net_device *dev,
err = 0; err = 0;
wdev_lock(wdev); wdev_lock(wdev);
if (wdev->current_bss) if (wdev->current_bss)
err = rdev->ops->set_default_key(&rdev->wiphy, dev, err = rdev_set_default_key(rdev, dev, idx, true,
idx, true, true); true);
if (!err) if (!err)
wdev->wext.default_key = idx; wdev->wext.default_key = idx;
wdev_unlock(wdev); wdev_unlock(wdev);
...@@ -839,7 +835,7 @@ static int cfg80211_wext_giwfreq(struct net_device *dev, ...@@ -839,7 +835,7 @@ static int cfg80211_wext_giwfreq(struct net_device *dev,
if (!rdev->ops->get_channel) if (!rdev->ops->get_channel)
return -EINVAL; return -EINVAL;
chan = rdev->ops->get_channel(wdev->wiphy, wdev, &channel_type); chan = rdev_get_channel(rdev, wdev, &channel_type);
if (!chan) if (!chan)
return -EINVAL; return -EINVAL;
freq->m = chan->center_freq; freq->m = chan->center_freq;
...@@ -899,7 +895,7 @@ static int cfg80211_wext_siwtxpower(struct net_device *dev, ...@@ -899,7 +895,7 @@ static int cfg80211_wext_siwtxpower(struct net_device *dev,
return 0; return 0;
} }
return rdev->ops->set_tx_power(wdev->wiphy, type, DBM_TO_MBM(dbm)); return rdev_set_tx_power(rdev, type, DBM_TO_MBM(dbm));
} }
static int cfg80211_wext_giwtxpower(struct net_device *dev, static int cfg80211_wext_giwtxpower(struct net_device *dev,
...@@ -918,7 +914,7 @@ static int cfg80211_wext_giwtxpower(struct net_device *dev, ...@@ -918,7 +914,7 @@ static int cfg80211_wext_giwtxpower(struct net_device *dev,
if (!rdev->ops->get_tx_power) if (!rdev->ops->get_tx_power)
return -EOPNOTSUPP; return -EOPNOTSUPP;
err = rdev->ops->get_tx_power(wdev->wiphy, &val); err = rdev_get_tx_power(rdev, &val);
if (err) if (err)
return err; return err;
...@@ -1158,7 +1154,7 @@ static int cfg80211_wext_siwpower(struct net_device *dev, ...@@ -1158,7 +1154,7 @@ static int cfg80211_wext_siwpower(struct net_device *dev,
timeout = wrq->value / 1000; timeout = wrq->value / 1000;
} }
err = rdev->ops->set_power_mgmt(wdev->wiphy, dev, ps, timeout); err = rdev_set_power_mgmt(rdev, dev, ps, timeout);
if (err) if (err)
return err; return err;
...@@ -1200,7 +1196,7 @@ static int cfg80211_wds_wext_siwap(struct net_device *dev, ...@@ -1200,7 +1196,7 @@ static int cfg80211_wds_wext_siwap(struct net_device *dev,
if (!rdev->ops->set_wds_peer) if (!rdev->ops->set_wds_peer)
return -EOPNOTSUPP; return -EOPNOTSUPP;
err = rdev->ops->set_wds_peer(wdev->wiphy, dev, (u8 *) &addr->sa_data); err = rdev_set_wds_peer(rdev, dev, (u8 *)&addr->sa_data);
if (err) if (err)
return err; return err;
...@@ -1272,7 +1268,7 @@ static int cfg80211_wext_siwrate(struct net_device *dev, ...@@ -1272,7 +1268,7 @@ static int cfg80211_wext_siwrate(struct net_device *dev,
if (!match) if (!match)
return -EINVAL; return -EINVAL;
return rdev->ops->set_bitrate_mask(wdev->wiphy, dev, NULL, &mask); return rdev_set_bitrate_mask(rdev, dev, NULL, &mask);
} }
static int cfg80211_wext_giwrate(struct net_device *dev, static int cfg80211_wext_giwrate(struct net_device *dev,
...@@ -1302,7 +1298,7 @@ static int cfg80211_wext_giwrate(struct net_device *dev, ...@@ -1302,7 +1298,7 @@ static int cfg80211_wext_giwrate(struct net_device *dev,
if (err) if (err)
return err; return err;
err = rdev->ops->get_station(&rdev->wiphy, dev, addr, &sinfo); err = rdev_get_station(rdev, dev, addr, &sinfo);
if (err) if (err)
return err; return err;
...@@ -1339,7 +1335,7 @@ static struct iw_statistics *cfg80211_wireless_stats(struct net_device *dev) ...@@ -1339,7 +1335,7 @@ static struct iw_statistics *cfg80211_wireless_stats(struct net_device *dev)
memcpy(bssid, wdev->current_bss->pub.bssid, ETH_ALEN); memcpy(bssid, wdev->current_bss->pub.bssid, ETH_ALEN);
wdev_unlock(wdev); wdev_unlock(wdev);
if (rdev->ops->get_station(&rdev->wiphy, dev, bssid, &sinfo)) if (rdev_get_station(rdev, dev, bssid, &sinfo))
return NULL; return NULL;
memset(&wstats, 0, sizeof(wstats)); memset(&wstats, 0, sizeof(wstats));
...@@ -1474,19 +1470,19 @@ static int cfg80211_wext_siwpmksa(struct net_device *dev, ...@@ -1474,19 +1470,19 @@ static int cfg80211_wext_siwpmksa(struct net_device *dev,
if (!rdev->ops->set_pmksa) if (!rdev->ops->set_pmksa)
return -EOPNOTSUPP; return -EOPNOTSUPP;
return rdev->ops->set_pmksa(&rdev->wiphy, dev, &cfg_pmksa); return rdev_set_pmksa(rdev, dev, &cfg_pmksa);
case IW_PMKSA_REMOVE: case IW_PMKSA_REMOVE:
if (!rdev->ops->del_pmksa) if (!rdev->ops->del_pmksa)
return -EOPNOTSUPP; return -EOPNOTSUPP;
return rdev->ops->del_pmksa(&rdev->wiphy, dev, &cfg_pmksa); return rdev_del_pmksa(rdev, dev, &cfg_pmksa);
case IW_PMKSA_FLUSH: case IW_PMKSA_FLUSH:
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);
default: default:
return -EOPNOTSUPP; return -EOPNOTSUPP;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment