Blame view
net/wireless/core.h
16.5 KB
b24413180 License cleanup: ... |
1 |
/* SPDX-License-Identifier: GPL-2.0 */ |
704232c27 [WIRELESS] cfg802... |
2 3 4 |
/* * Wireless configuration interface internals. * |
5f2aa25e0 cfg80211: rcu-ify... |
5 |
* Copyright 2006-2010 Johannes Berg <johannes@sipsolutions.net> |
704232c27 [WIRELESS] cfg802... |
6 7 8 |
*/ #ifndef __NET_WIRELESS_CORE_H #define __NET_WIRELESS_CORE_H |
704232c27 [WIRELESS] cfg802... |
9 10 |
#include <linux/list.h> #include <linux/netdevice.h> |
2a5193119 cfg80211/nl80211:... |
11 |
#include <linux/rbtree.h> |
1ac61302d mac80211/cfg80211... |
12 |
#include <linux/debugfs.h> |
1f87f7d3a cfg80211: add rfk... |
13 14 |
#include <linux/rfkill.h> #include <linux/workqueue.h> |
c5a7e5824 cfg80211: fix loc... |
15 |
#include <linux/rtnetlink.h> |
704232c27 [WIRELESS] cfg802... |
16 |
#include <net/genetlink.h> |
704232c27 [WIRELESS] cfg802... |
17 |
#include <net/cfg80211.h> |
3f2355cb9 cfg80211/mac80211... |
18 |
#include "reg.h" |
704232c27 [WIRELESS] cfg802... |
19 |
|
f41737669 cfg80211: remove ... |
20 21 |
#define WIPHY_IDX_INVALID -1 |
704232c27 [WIRELESS] cfg802... |
22 |
struct cfg80211_registered_device { |
3dcf670ba cfg80211: mark op... |
23 |
const struct cfg80211_ops *ops; |
704232c27 [WIRELESS] cfg802... |
24 |
struct list_head list; |
704232c27 [WIRELESS] cfg802... |
25 |
|
1f87f7d3a cfg80211: add rfk... |
26 27 28 29 |
/* rfkill support */ struct rfkill_ops rfkill_ops; struct rfkill *rfkill; struct work_struct rfkill_sync; |
3f2355cb9 cfg80211/mac80211... |
30 31 32 33 34 35 36 |
/* ISO / IEC 3166 alpha2 for which this device is receiving * country IEs on, this can help disregard country IEs from APs * on the same alpha2 quickly. The alpha2 may differ from * cfg80211_regdomain's alpha2 when an intersection has occurred. * If the AP is reconfigured this can also be used to tell us if * the country on the country IE changed. */ char country_ie_alpha2[2]; |
b0d7aa595 cfg80211: allow w... |
37 38 39 40 41 42 |
/* * the driver requests the regulatory core to set this regulatory * domain as the wiphy's. Only used for %REGULATORY_WIPHY_SELF_MANAGED * devices using the regulatory_set_wiphy_regd() API */ const struct ieee80211_regdomain *requested_regd; |
3f2355cb9 cfg80211/mac80211... |
43 44 45 |
/* If a Country IE has been received this tells us the environment * which its telling us its in. This defaults to ENVIRON_ANY */ enum environment_cap env; |
704232c27 [WIRELESS] cfg802... |
46 |
/* wiphy index, internal only */ |
b5850a7a4 cfg80211: rename ... |
47 |
int wiphy_idx; |
704232c27 [WIRELESS] cfg802... |
48 |
|
53873f134 cfg80211: make wd... |
49 |
/* protected by RTNL */ |
89a54e48b nl80211: prepare ... |
50 |
int devlist_generation, wdev_id; |
8b9b2f069 cfg80211: remove ... |
51 |
int opencount; |
ad002395f cfg80211: fix dan... |
52 |
wait_queue_head_t dev_wait; |
704232c27 [WIRELESS] cfg802... |
53 |
|
37c73b5f3 cfg80211: allow r... |
54 55 |
struct list_head beacon_registrations; spinlock_t beacon_registrations_lock; |
5e760230e cfg80211: allow r... |
56 |
|
33d8783c5 cfg80211: allow m... |
57 58 59 |
struct list_head mlme_unreg; spinlock_t mlme_unreg_lock; struct work_struct mlme_unreg_wk; |
c5a7e5824 cfg80211: fix loc... |
60 |
/* protected by RTNL only */ |
dbbae26af cfg80211: track m... |
61 62 |
int num_running_ifaces; int num_running_monitor_ifaces; |
2a5193119 cfg80211/nl80211:... |
63 64 65 66 67 |
/* BSSes/scanning */ spinlock_t bss_lock; struct list_head bss_list; struct rb_root bss_tree; u32 bss_generation; |
9853a55ef cfg80211: limit s... |
68 |
u32 bss_entries; |
2a5193119 cfg80211/nl80211:... |
69 |
struct cfg80211_scan_request *scan_req; /* protected by RTNL */ |
f9d15d162 cfg80211: send sc... |
70 |
struct sk_buff *scan_msg; |
ca986ad9b nl80211: allow mu... |
71 |
struct list_head sched_scan_req_list; |
cb3a8eec0 cfg80211: age sca... |
72 |
unsigned long suspend_at; |
667503ddc cfg80211: fix loc... |
73 |
struct work_struct scan_done_wk; |
2a5193119 cfg80211/nl80211:... |
74 |
|
ad7e718c9 nl80211: vendor c... |
75 |
struct genl_info *cur_cmd_info; |
aff89a9b9 cfg80211: introdu... |
76 |
|
6829c878e cfg80211: emulate... |
77 |
struct work_struct conn_work; |
667503ddc cfg80211: fix loc... |
78 |
struct work_struct event_work; |
6829c878e cfg80211: emulate... |
79 |
|
04f39047a nl80211/cfg80211:... |
80 |
struct delayed_work dfs_update_channels_wk; |
5de179848 cfg80211: introdu... |
81 82 |
/* netlink port which started critical protocol (0 means not started) */ u32 crit_proto_nlportid; |
be29b99a9 cfg80211/nl80211:... |
83 |
struct cfg80211_coalesce *coalesce; |
78f22b6a3 cfg80211: allow u... |
84 |
struct work_struct destroy_work; |
93a1e86ce nl80211: Stop sch... |
85 |
struct work_struct sched_scan_stop_wk; |
b34939b98 cfg80211: add req... |
86 |
struct work_struct sched_scan_res_wk; |
93a1e86ce nl80211: Stop sch... |
87 |
|
897667273 cfg80211: Share C... |
88 89 90 91 92 |
struct cfg80211_chan_def radar_chandef; struct work_struct propagate_radar_detect_wk; struct cfg80211_chan_def cac_done_chandef; struct work_struct propagate_cac_done_wk; |
704232c27 [WIRELESS] cfg802... |
93 94 |
/* must be last because of the way we do wiphy_priv(), * and it should at least be aligned to NETDEV_ALIGN */ |
1c06ef983 wireless: use __a... |
95 |
struct wiphy wiphy __aligned(NETDEV_ALIGN); |
704232c27 [WIRELESS] cfg802... |
96 97 98 |
}; static inline |
f26cbf401 cfg80211: change ... |
99 |
struct cfg80211_registered_device *wiphy_to_rdev(struct wiphy *wiphy) |
704232c27 [WIRELESS] cfg802... |
100 101 102 103 |
{ BUG_ON(!wiphy); return container_of(wiphy, struct cfg80211_registered_device, wiphy); } |
ff1b6e69a nl80211/cfg80211:... |
104 105 106 |
static inline void cfg80211_rdev_free_wowlan(struct cfg80211_registered_device *rdev) { |
6abb9cb99 cfg80211: make Wo... |
107 |
#ifdef CONFIG_PM |
ff1b6e69a nl80211/cfg80211:... |
108 |
int i; |
6abb9cb99 cfg80211: make Wo... |
109 |
if (!rdev->wiphy.wowlan_config) |
ff1b6e69a nl80211/cfg80211:... |
110 |
return; |
6abb9cb99 cfg80211: make Wo... |
111 112 113 114 115 116 117 |
for (i = 0; i < rdev->wiphy.wowlan_config->n_patterns; i++) kfree(rdev->wiphy.wowlan_config->patterns[i].mask); kfree(rdev->wiphy.wowlan_config->patterns); if (rdev->wiphy.wowlan_config->tcp && rdev->wiphy.wowlan_config->tcp->sock) sock_release(rdev->wiphy.wowlan_config->tcp->sock); kfree(rdev->wiphy.wowlan_config->tcp); |
8cd4d4563 cfg80211: add wow... |
118 |
kfree(rdev->wiphy.wowlan_config->nd_config); |
6abb9cb99 cfg80211: make Wo... |
119 120 |
kfree(rdev->wiphy.wowlan_config); #endif |
ff1b6e69a nl80211/cfg80211:... |
121 |
} |
e60d7443e wireless : use a ... |
122 123 |
extern struct workqueue_struct *cfg80211_wq; |
79c97e97a cfg80211: clean u... |
124 |
extern struct list_head cfg80211_rdev_list; |
f5ea9120b nl80211: add gene... |
125 |
extern int cfg80211_rdev_list_generation; |
704232c27 [WIRELESS] cfg802... |
126 |
|
2a5193119 cfg80211/nl80211:... |
127 128 |
struct cfg80211_internal_bss { struct list_head list; |
776b35801 cfg80211: track h... |
129 |
struct list_head hidden_list; |
2a5193119 cfg80211/nl80211:... |
130 |
struct rb_node rbn; |
6e19bc4b7 nl80211: allow BS... |
131 |
u64 ts_boottime; |
2a5193119 cfg80211/nl80211:... |
132 |
unsigned long ts; |
776b35801 cfg80211: track h... |
133 |
unsigned long refcount; |
19957bb39 cfg80211: keep tr... |
134 |
atomic_t hold; |
a08c1c1ac cfg80211: add fea... |
135 |
|
1d76250bd nl80211: support ... |
136 137 138 139 140 141 142 143 144 145 146 |
/* time at the start of the reception of the first octet of the * timestamp field of the last beacon/probe received for this BSS. * The time is the TSF of the BSS specified by %parent_bssid. */ u64 parent_tsf; /* the BSS according to which %parent_tsf is set. This is set to * the BSS that the interface that requested the scan was connected to * when the beacon/probe was received. */ u8 parent_bssid[ETH_ALEN] __aligned(2); |
2a5193119 cfg80211/nl80211:... |
147 148 149 |
/* must be last because of priv member */ struct cfg80211_bss pub; }; |
19957bb39 cfg80211: keep tr... |
150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 |
static inline struct cfg80211_internal_bss *bss_from_pub(struct cfg80211_bss *pub) { return container_of(pub, struct cfg80211_internal_bss, pub); } static inline void cfg80211_hold_bss(struct cfg80211_internal_bss *bss) { atomic_inc(&bss->hold); } static inline void cfg80211_unhold_bss(struct cfg80211_internal_bss *bss) { int r = atomic_dec_return(&bss->hold); WARN_ON(r < 0); } |
79c97e97a cfg80211: clean u... |
165 |
struct cfg80211_registered_device *cfg80211_rdev_by_wiphy_idx(int wiphy_idx); |
806a9e396 cfg80211: make re... |
166 |
int get_wiphy_idx(struct wiphy *wiphy); |
806a9e396 cfg80211: make re... |
167 |
struct wiphy *wiphy_idx_to_wiphy(int wiphy_idx); |
463d01832 cfg80211: make aw... |
168 169 |
int cfg80211_switch_netns(struct cfg80211_registered_device *rdev, struct net *net); |
556829657 [NL80211]: add ne... |
170 |
|
667503ddc cfg80211: fix loc... |
171 172 173 174 175 176 177 178 179 180 181 182 183 |
static inline void wdev_lock(struct wireless_dev *wdev) __acquires(wdev) { mutex_lock(&wdev->mtx); __acquire(wdev->mtx); } static inline void wdev_unlock(struct wireless_dev *wdev) __releases(wdev) { __release(wdev->mtx); mutex_unlock(&wdev->mtx); } |
46a5ebaf0 cfg80211/mac80211... |
184 |
#define ASSERT_WDEV_LOCK(wdev) lockdep_assert_held(&(wdev)->mtx) |
667503ddc cfg80211: fix loc... |
185 |
|
dbbae26af cfg80211: track m... |
186 187 |
static inline bool cfg80211_has_monitors_only(struct cfg80211_registered_device *rdev) { |
c5a7e5824 cfg80211: fix loc... |
188 |
ASSERT_RTNL(); |
dbbae26af cfg80211: track m... |
189 190 191 192 |
return rdev->num_running_ifaces == rdev->num_running_monitor_ifaces && rdev->num_running_ifaces > 0; } |
667503ddc cfg80211: fix loc... |
193 194 195 196 197 |
enum cfg80211_event_type { EVENT_CONNECT_RESULT, EVENT_ROAMED, EVENT_DISCONNECTED, EVENT_IBSS_JOINED, |
f04c22033 cfg80211: export ... |
198 |
EVENT_STOPPED, |
667503ddc cfg80211: fix loc... |
199 200 201 202 203 204 205 |
}; struct cfg80211_event { struct list_head list; enum cfg80211_event_type type; union { |
5349a0f7b cfg80211: Use a s... |
206 |
struct cfg80211_connect_resp_params cr; |
29ce6ecbb cfg80211: unify c... |
207 |
struct cfg80211_roam_info rm; |
667503ddc cfg80211: fix loc... |
208 209 210 211 |
struct { const u8 *ie; size_t ie_len; u16 reason; |
80279fb7b cfg80211: properl... |
212 |
bool locally_generated; |
667503ddc cfg80211: fix loc... |
213 214 215 |
} dc; struct { u8 bssid[ETH_ALEN]; |
fe94f3a4f cfg80211: fix cha... |
216 |
struct ieee80211_channel *channel; |
667503ddc cfg80211: fix loc... |
217 218 219 |
} ij; }; }; |
fffd0934b cfg80211: rework ... |
220 |
struct cfg80211_cached_keys { |
b8676221f cfg80211: Add sup... |
221 222 |
struct key_params params[CFG80211_MAX_WEP_KEYS]; u8 data[CFG80211_MAX_WEP_KEYS][WLAN_KEY_LEN_WEP104]; |
89b706fb2 cfg80211: reduce ... |
223 |
int def; |
fffd0934b cfg80211: rework ... |
224 |
}; |
26ab9a0c5 cfg80211: introdu... |
225 226 227 228 229 |
enum cfg80211_chan_mode { CHAN_MODE_UNDEFINED, CHAN_MODE_SHARED, CHAN_MODE_EXCLUSIVE, }; |
37c73b5f3 cfg80211: allow r... |
230 231 232 233 |
struct cfg80211_beacon_registration { struct list_head list; u32 nlportid; }; |
667503ddc cfg80211: fix loc... |
234 |
|
4a4b81695 cfg80211: Accept ... |
235 236 237 238 239 240 |
struct cfg80211_cqm_config { u32 rssi_hyst; s32 last_rssi_event_value; int n_rssi_thresholds; s32 rssi_thresholds[0]; }; |
78f22b6a3 cfg80211: allow u... |
241 |
void cfg80211_destroy_ifaces(struct cfg80211_registered_device *rdev); |
704232c27 [WIRELESS] cfg802... |
242 |
/* free object */ |
c1b1203d6 net: misc: Remove... |
243 |
void cfg80211_dev_free(struct cfg80211_registered_device *rdev); |
704232c27 [WIRELESS] cfg802... |
244 |
|
c1b1203d6 net: misc: Remove... |
245 246 |
int cfg80211_dev_rename(struct cfg80211_registered_device *rdev, char *newname); |
556829657 [NL80211]: add ne... |
247 |
|
8318d78a4 cfg80211 API for ... |
248 |
void ieee80211_set_bitrate_flags(struct wiphy *wiphy); |
8318d78a4 cfg80211 API for ... |
249 |
|
1b8ec87aa cfg80211: change ... |
250 251 |
void cfg80211_bss_expire(struct cfg80211_registered_device *rdev); void cfg80211_bss_age(struct cfg80211_registered_device *rdev, |
cb3a8eec0 cfg80211: age sca... |
252 |
unsigned long age_secs); |
2a5193119 cfg80211/nl80211:... |
253 |
|
04a773ade cfg80211/nl80211:... |
254 255 256 |
/* IBSS */ int cfg80211_join_ibss(struct cfg80211_registered_device *rdev, struct net_device *dev, |
fffd0934b cfg80211: rework ... |
257 258 |
struct cfg80211_ibss_params *params, struct cfg80211_cached_keys *connkeys); |
9d308429a cfg80211: clear W... |
259 |
void cfg80211_clear_ibss(struct net_device *dev, bool nowext); |
98d3a7ca9 cfg80211: re-join... |
260 261 |
int __cfg80211_leave_ibss(struct cfg80211_registered_device *rdev, struct net_device *dev, bool nowext); |
04a773ade cfg80211/nl80211:... |
262 |
int cfg80211_leave_ibss(struct cfg80211_registered_device *rdev, |
9d308429a cfg80211: clear W... |
263 |
struct net_device *dev, bool nowext); |
fe94f3a4f cfg80211: fix cha... |
264 265 |
void __cfg80211_ibss_joined(struct net_device *dev, const u8 *bssid, struct ieee80211_channel *channel); |
fffd0934b cfg80211: rework ... |
266 267 |
int cfg80211_ibss_wext_join(struct cfg80211_registered_device *rdev, struct wireless_dev *wdev); |
04a773ade cfg80211/nl80211:... |
268 |
|
29cbe68c5 cfg80211/mac80211... |
269 270 |
/* mesh */ extern const struct mesh_config default_mesh_config; |
c80d545da mac80211: Let use... |
271 |
extern const struct mesh_setup default_mesh_setup; |
29cbe68c5 cfg80211/mac80211... |
272 273 |
int __cfg80211_join_mesh(struct cfg80211_registered_device *rdev, struct net_device *dev, |
cc1d2806b cfg80211: provide... |
274 |
struct mesh_setup *setup, |
29cbe68c5 cfg80211/mac80211... |
275 276 277 |
const struct mesh_config *conf); int cfg80211_join_mesh(struct cfg80211_registered_device *rdev, struct net_device *dev, |
cc1d2806b cfg80211: provide... |
278 |
struct mesh_setup *setup, |
29cbe68c5 cfg80211/mac80211... |
279 |
const struct mesh_config *conf); |
f04c22033 cfg80211: export ... |
280 281 |
int __cfg80211_leave_mesh(struct cfg80211_registered_device *rdev, struct net_device *dev); |
29cbe68c5 cfg80211/mac80211... |
282 283 |
int cfg80211_leave_mesh(struct cfg80211_registered_device *rdev, struct net_device *dev); |
683b6d3b3 cfg80211: pass a ... |
284 285 286 |
int cfg80211_set_mesh_channel(struct cfg80211_registered_device *rdev, struct wireless_dev *wdev, struct cfg80211_chan_def *chandef); |
29cbe68c5 cfg80211/mac80211... |
287 |
|
6e0bd6c35 cfg80211: 802.11p... |
288 289 290 291 292 293 294 295 296 297 298 |
/* OCB */ int __cfg80211_join_ocb(struct cfg80211_registered_device *rdev, struct net_device *dev, struct ocb_setup *setup); int cfg80211_join_ocb(struct cfg80211_registered_device *rdev, struct net_device *dev, struct ocb_setup *setup); int __cfg80211_leave_ocb(struct cfg80211_registered_device *rdev, struct net_device *dev); int cfg80211_leave_ocb(struct cfg80211_registered_device *rdev, struct net_device *dev); |
60771780c cfg80211: introdu... |
299 |
/* AP */ |
f04c22033 cfg80211: export ... |
300 301 |
int __cfg80211_stop_ap(struct cfg80211_registered_device *rdev, struct net_device *dev, bool notify); |
60771780c cfg80211: introdu... |
302 |
int cfg80211_stop_ap(struct cfg80211_registered_device *rdev, |
7c8d5e03a cfg80211: send st... |
303 |
struct net_device *dev, bool notify); |
60771780c cfg80211: introdu... |
304 |
|
19957bb39 cfg80211: keep tr... |
305 306 |
/* MLME */ int cfg80211_mlme_auth(struct cfg80211_registered_device *rdev, |
91bf9b26f cfg80211: remove ... |
307 308 309 310 |
struct net_device *dev, struct ieee80211_channel *chan, enum nl80211_auth_type auth_type, const u8 *bssid, |
19957bb39 cfg80211: keep tr... |
311 |
const u8 *ssid, int ssid_len, |
fffd0934b cfg80211: rework ... |
312 |
const u8 *ie, int ie_len, |
e39e5b5e7 cfg80211: Allow u... |
313 |
const u8 *key, int key_len, int key_idx, |
11b6b5a4c cfg80211: Rename ... |
314 |
const u8 *auth_data, int auth_data_len); |
19957bb39 cfg80211: keep tr... |
315 |
int cfg80211_mlme_assoc(struct cfg80211_registered_device *rdev, |
f62fab735 cfg80211: refacto... |
316 317 318 |
struct net_device *dev, struct ieee80211_channel *chan, const u8 *bssid, |
3e5d7649a cfg80211: let SME... |
319 |
const u8 *ssid, int ssid_len, |
f62fab735 cfg80211: refacto... |
320 |
struct cfg80211_assoc_request *req); |
19957bb39 cfg80211: keep tr... |
321 322 |
int cfg80211_mlme_deauth(struct cfg80211_registered_device *rdev, struct net_device *dev, const u8 *bssid, |
d5cdfacb3 cfg80211: Add loc... |
323 324 |
const u8 *ie, int ie_len, u16 reason, bool local_state_change); |
19957bb39 cfg80211: keep tr... |
325 326 |
int cfg80211_mlme_disassoc(struct cfg80211_registered_device *rdev, struct net_device *dev, const u8 *bssid, |
d5cdfacb3 cfg80211: Add loc... |
327 328 |
const u8 *ie, int ie_len, u16 reason, bool local_state_change); |
19957bb39 cfg80211: keep tr... |
329 330 |
void cfg80211_mlme_down(struct cfg80211_registered_device *rdev, struct net_device *dev); |
2e161f78e cfg80211/mac80211... |
331 332 333 |
int cfg80211_mlme_register_mgmt(struct wireless_dev *wdev, u32 snd_pid, u16 frame_type, const u8 *match_data, int match_len); |
33d8783c5 cfg80211: allow m... |
334 |
void cfg80211_mlme_unreg_wk(struct work_struct *wk); |
2e161f78e cfg80211/mac80211... |
335 336 337 |
void cfg80211_mlme_unregister_socket(struct wireless_dev *wdev, u32 nlpid); void cfg80211_mlme_purge_registrations(struct wireless_dev *wdev); int cfg80211_mlme_mgmt_tx(struct cfg80211_registered_device *rdev, |
71bbc9943 cfg80211: use wde... |
338 |
struct wireless_dev *wdev, |
b176e6294 cfg80211: aggrega... |
339 340 |
struct cfg80211_mgmt_tx_params *params, u64 *cookie); |
7e7c8926b wireless: Support... |
341 342 |
void cfg80211_oper_and_ht_capa(struct ieee80211_ht_cap *ht_capa, const struct ieee80211_ht_cap *ht_capa_mask); |
ee2aca343 cfg80211: add abi... |
343 344 |
void cfg80211_oper_and_vht_capa(struct ieee80211_vht_cap *vht_capa, const struct ieee80211_vht_cap *vht_capa_mask); |
19957bb39 cfg80211: keep tr... |
345 |
|
ceca7b712 cfg80211: separat... |
346 |
/* SME events */ |
b23aa676a cfg80211: connect... |
347 348 |
int cfg80211_connect(struct cfg80211_registered_device *rdev, struct net_device *dev, |
fffd0934b cfg80211: rework ... |
349 |
struct cfg80211_connect_params *connect, |
83739b03d cfg80211: remove ... |
350 351 |
struct cfg80211_cached_keys *connkeys, const u8 *prev_bssid); |
5349a0f7b cfg80211: Use a s... |
352 353 354 |
void __cfg80211_connect_result(struct net_device *dev, struct cfg80211_connect_resp_params *params, bool wextev); |
ceca7b712 cfg80211: separat... |
355 356 |
void __cfg80211_disconnected(struct net_device *dev, const u8 *ie, size_t ie_len, u16 reason, bool from_ap); |
b23aa676a cfg80211: connect... |
357 |
int cfg80211_disconnect(struct cfg80211_registered_device *rdev, |
f21293549 cfg80211: managed... |
358 359 |
struct net_device *dev, u16 reason, bool wextev); |
ed9d01026 cfg80211: Use con... |
360 |
void __cfg80211_roamed(struct wireless_dev *wdev, |
29ce6ecbb cfg80211: unify c... |
361 |
struct cfg80211_roam_info *info); |
fffd0934b cfg80211: rework ... |
362 363 |
int cfg80211_mgd_wext_connect(struct cfg80211_registered_device *rdev, struct wireless_dev *wdev); |
bd2522b16 cfg80211: NL80211... |
364 |
void cfg80211_autodisconnect_wk(struct work_struct *work); |
b23aa676a cfg80211: connect... |
365 |
|
ceca7b712 cfg80211: separat... |
366 |
/* SME implementation */ |
6829c878e cfg80211: emulate... |
367 |
void cfg80211_conn_work(struct work_struct *work); |
ceca7b712 cfg80211: separat... |
368 369 370 371 372 373 374 |
void cfg80211_sme_scan_done(struct net_device *dev); bool cfg80211_sme_rx_assoc_resp(struct wireless_dev *wdev, u16 status); void cfg80211_sme_rx_auth(struct wireless_dev *wdev, const u8 *buf, size_t len); void cfg80211_sme_disassoc(struct wireless_dev *wdev); void cfg80211_sme_deauth(struct wireless_dev *wdev); void cfg80211_sme_auth_timeout(struct wireless_dev *wdev); void cfg80211_sme_assoc_timeout(struct wireless_dev *wdev); |
e6f462df9 cfg80211/mac80211... |
375 |
void cfg80211_sme_abandon_assoc(struct wireless_dev *wdev); |
6829c878e cfg80211: emulate... |
376 |
|
08645126d cfg80211: impleme... |
377 |
/* internal helpers */ |
38ba3c57a cfg80211: Validat... |
378 |
bool cfg80211_supported_cipher_suite(struct wiphy *wiphy, u32 cipher); |
fffd0934b cfg80211: rework ... |
379 380 |
int cfg80211_validate_key_settings(struct cfg80211_registered_device *rdev, struct key_params *params, int key_idx, |
e31b82136 cfg80211/mac80211... |
381 |
bool pairwise, const u8 *mac_addr); |
667503ddc cfg80211: fix loc... |
382 |
void __cfg80211_scan_done(struct work_struct *wk); |
f9d15d162 cfg80211: send sc... |
383 384 |
void ___cfg80211_scan_done(struct cfg80211_registered_device *rdev, bool send_message); |
ca986ad9b nl80211: allow mu... |
385 386 387 388 |
void cfg80211_add_sched_scan_req(struct cfg80211_registered_device *rdev, struct cfg80211_sched_scan_request *req); int cfg80211_sched_scan_req_possible(struct cfg80211_registered_device *rdev, bool want_multi); |
b34939b98 cfg80211: add req... |
389 |
void cfg80211_sched_scan_results_wk(struct work_struct *work); |
ca986ad9b nl80211: allow mu... |
390 391 392 |
int cfg80211_stop_sched_scan_req(struct cfg80211_registered_device *rdev, struct cfg80211_sched_scan_request *req, bool driver_initiated); |
807f8a8c3 cfg80211/nl80211:... |
393 |
int __cfg80211_stop_sched_scan(struct cfg80211_registered_device *rdev, |
ca986ad9b nl80211: allow mu... |
394 |
u64 reqid, bool driver_initiated); |
fffd0934b cfg80211: rework ... |
395 |
void cfg80211_upload_connect_keys(struct wireless_dev *wdev); |
3d54d2551 cfg80211: clean u... |
396 397 |
int cfg80211_change_iface(struct cfg80211_registered_device *rdev, struct net_device *dev, enum nl80211_iftype ntype, |
818a986e4 cfg80211: move ad... |
398 |
struct vif_params *params); |
3d54d2551 cfg80211: clean u... |
399 |
void cfg80211_process_rdev_events(struct cfg80211_registered_device *rdev); |
1f6fc43e6 cfg80211: process... |
400 |
void cfg80211_process_wdev_events(struct wireless_dev *wdev); |
08645126d cfg80211: impleme... |
401 |
|
4787cfa08 cfg80211: move fu... |
402 403 |
bool cfg80211_does_bw_fit_range(const struct ieee80211_freq_range *freq_range, u32 center_freq_khz, u32 bw_khz); |
fe7c3a1f2 cfg80211: DFS che... |
404 405 406 407 408 409 410 411 412 413 414 415 |
/** * cfg80211_chandef_dfs_usable - checks if chandef is DFS usable * @wiphy: the wiphy to validate against * @chandef: the channel definition to check * * Checks if chandef is usable and we can/need start CAC on such channel. * * Return: Return true if all channels available and at least * one channel require CAC (NL80211_DFS_USABLE) */ bool cfg80211_chandef_dfs_usable(struct wiphy *wiphy, const struct cfg80211_chan_def *chandef); |
04f39047a nl80211/cfg80211:... |
416 417 418 419 420 |
void cfg80211_set_dfs_state(struct wiphy *wiphy, const struct cfg80211_chan_def *chandef, enum nl80211_dfs_state dfs_state); void cfg80211_dfs_channels_update_work(struct work_struct *work); |
31559f35c cfg80211: DFS get... |
421 422 423 |
unsigned int cfg80211_chandef_dfs_cac_time(struct wiphy *wiphy, const struct cfg80211_chan_def *chandef); |
04f39047a nl80211/cfg80211:... |
424 |
|
b35a51c7d cfg80211: Make pr... |
425 426 427 428 429 430 431 432 433 |
void cfg80211_sched_dfs_chan_update(struct cfg80211_registered_device *rdev); bool cfg80211_any_wiphy_oper_chan(struct wiphy *wiphy, struct ieee80211_channel *chan); bool cfg80211_beaconing_iface_active(struct wireless_dev *wdev); bool cfg80211_is_sub_chan(struct cfg80211_chan_def *chandef, struct ieee80211_channel *chan); |
04f39047a nl80211/cfg80211:... |
434 435 436 437 438 439 |
static inline unsigned int elapsed_jiffies_msecs(unsigned long start) { unsigned long end = jiffies; if (end >= start) return jiffies_to_msecs(end - start); |
0ce12026d cfg80211: fix ela... |
440 |
return jiffies_to_msecs(end + (ULONG_MAX - start) + 1); |
04f39047a nl80211/cfg80211:... |
441 |
} |
26ab9a0c5 cfg80211: introdu... |
442 |
void |
8e95ea49c cfg80211: fix loc... |
443 |
cfg80211_get_chan_state(struct wireless_dev *wdev, |
26ab9a0c5 cfg80211: introdu... |
444 |
struct ieee80211_channel **chan, |
9e0e29615 cfg80211: conside... |
445 446 |
enum cfg80211_chan_mode *chanmode, u8 *radar_detect); |
26ab9a0c5 cfg80211: introdu... |
447 |
|
e8c9bd5b8 cfg80211: clarify... |
448 |
int cfg80211_set_monitor_channel(struct cfg80211_registered_device *rdev, |
683b6d3b3 cfg80211: pass a ... |
449 |
struct cfg80211_chan_def *chandef); |
59bbb6f75 cfg80211: validat... |
450 |
|
34850ab25 cfg80211: allow u... |
451 452 453 |
int ieee80211_get_ratemask(struct ieee80211_supported_band *sband, const u8 *rates, unsigned int n_rates, u32 *mask); |
56d1893d9 cfg80211: restric... |
454 |
int cfg80211_validate_beacon_int(struct cfg80211_registered_device *rdev, |
0c317a02c cfg80211: support... |
455 |
enum nl80211_iftype iftype, u32 beacon_int); |
56d1893d9 cfg80211: restric... |
456 |
|
dbbae26af cfg80211: track m... |
457 458 |
void cfg80211_update_iface_num(struct cfg80211_registered_device *rdev, enum nl80211_iftype iftype, int num); |
f04c22033 cfg80211: export ... |
459 460 |
void __cfg80211_leave(struct cfg80211_registered_device *rdev, struct wireless_dev *wdev); |
812569699 cfg80211/mac80211... |
461 462 |
void cfg80211_leave(struct cfg80211_registered_device *rdev, struct wireless_dev *wdev); |
f9f475292 cfg80211: always ... |
463 464 |
void cfg80211_stop_p2p_device(struct cfg80211_registered_device *rdev, struct wireless_dev *wdev); |
cb3b7d876 cfg80211: add sta... |
465 466 |
void cfg80211_stop_nan(struct cfg80211_registered_device *rdev, struct wireless_dev *wdev); |
f7969969f cfg80211: make sp... |
467 468 469 470 471 472 473 474 475 476 |
#ifdef CONFIG_CFG80211_DEVELOPER_WARNINGS #define CFG80211_DEV_WARN_ON(cond) WARN_ON(cond) #else /* * Trick to enable using it as a condition, * and also not give a warning when it's * not used that way. */ #define CFG80211_DEV_WARN_ON(cond) ({bool __r = (cond); __r; }) #endif |
4a4b81695 cfg80211: Accept ... |
477 |
void cfg80211_cqm_config_free(struct wireless_dev *wdev); |
704232c27 [WIRELESS] cfg802... |
478 |
#endif /* __NET_WIRELESS_CORE_H */ |