Branch data Line data Source code
1 : : /* SPDX-License-Identifier: GPL-2.0 */
2 : : #ifndef __CFG80211_RDEV_OPS
3 : : #define __CFG80211_RDEV_OPS
4 : :
5 : : #include <linux/rtnetlink.h>
6 : : #include <net/cfg80211.h>
7 : : #include "core.h"
8 : : #include "trace.h"
9 : :
10 : 0 : static inline int rdev_suspend(struct cfg80211_registered_device *rdev,
11 : : struct cfg80211_wowlan *wowlan)
12 : : {
13 : 0 : int ret;
14 : 0 : trace_rdev_suspend(&rdev->wiphy, wowlan);
15 : 0 : ret = rdev->ops->suspend(&rdev->wiphy, wowlan);
16 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
17 : 0 : return ret;
18 : : }
19 : :
20 : 0 : static inline int rdev_resume(struct cfg80211_registered_device *rdev)
21 : : {
22 : 0 : int ret;
23 : 0 : trace_rdev_resume(&rdev->wiphy);
24 : 0 : ret = rdev->ops->resume(&rdev->wiphy);
25 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
26 : 0 : return ret;
27 : : }
28 : :
29 : 0 : static inline void rdev_set_wakeup(struct cfg80211_registered_device *rdev,
30 : : bool enabled)
31 : : {
32 : 0 : trace_rdev_set_wakeup(&rdev->wiphy, enabled);
33 : 0 : rdev->ops->set_wakeup(&rdev->wiphy, enabled);
34 : 0 : trace_rdev_return_void(&rdev->wiphy);
35 : 0 : }
36 : :
37 : : static inline struct wireless_dev
38 : 0 : *rdev_add_virtual_intf(struct cfg80211_registered_device *rdev, char *name,
39 : : unsigned char name_assign_type,
40 : : enum nl80211_iftype type,
41 : : struct vif_params *params)
42 : : {
43 : 0 : struct wireless_dev *ret;
44 : 0 : trace_rdev_add_virtual_intf(&rdev->wiphy, name, type);
45 : 0 : ret = rdev->ops->add_virtual_intf(&rdev->wiphy, name, name_assign_type,
46 : : type, params);
47 : 0 : trace_rdev_return_wdev(&rdev->wiphy, ret);
48 : 0 : return ret;
49 : : }
50 : :
51 : : static inline int
52 : 0 : rdev_del_virtual_intf(struct cfg80211_registered_device *rdev,
53 : : struct wireless_dev *wdev)
54 : : {
55 : 0 : int ret;
56 : 0 : trace_rdev_del_virtual_intf(&rdev->wiphy, wdev);
57 : 0 : ret = rdev->ops->del_virtual_intf(&rdev->wiphy, wdev);
58 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
59 : 0 : return ret;
60 : : }
61 : :
62 : : static inline int
63 : 0 : rdev_change_virtual_intf(struct cfg80211_registered_device *rdev,
64 : : struct net_device *dev, enum nl80211_iftype type,
65 : : struct vif_params *params)
66 : : {
67 : 0 : int ret;
68 : 0 : trace_rdev_change_virtual_intf(&rdev->wiphy, dev, type);
69 : 0 : ret = rdev->ops->change_virtual_intf(&rdev->wiphy, dev, type, params);
70 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
71 : 0 : return ret;
72 : : }
73 : :
74 : 0 : static inline int rdev_add_key(struct cfg80211_registered_device *rdev,
75 : : struct net_device *netdev, u8 key_index,
76 : : bool pairwise, const u8 *mac_addr,
77 : : struct key_params *params)
78 : : {
79 : 0 : int ret;
80 : 0 : trace_rdev_add_key(&rdev->wiphy, netdev, key_index, pairwise,
81 : 0 : mac_addr, params->mode);
82 : 0 : ret = rdev->ops->add_key(&rdev->wiphy, netdev, key_index, pairwise,
83 : : mac_addr, params);
84 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
85 : 0 : return ret;
86 : : }
87 : :
88 : : static inline int
89 : 0 : rdev_get_key(struct cfg80211_registered_device *rdev, struct net_device *netdev,
90 : : u8 key_index, bool pairwise, const u8 *mac_addr, void *cookie,
91 : : void (*callback)(void *cookie, struct key_params*))
92 : : {
93 : 0 : int ret;
94 : 0 : trace_rdev_get_key(&rdev->wiphy, netdev, key_index, pairwise, mac_addr);
95 : 0 : ret = rdev->ops->get_key(&rdev->wiphy, netdev, key_index, pairwise,
96 : : mac_addr, cookie, callback);
97 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
98 : 0 : return ret;
99 : : }
100 : :
101 : 0 : static inline int rdev_del_key(struct cfg80211_registered_device *rdev,
102 : : struct net_device *netdev, u8 key_index,
103 : : bool pairwise, const u8 *mac_addr)
104 : : {
105 : 0 : int ret;
106 : 0 : trace_rdev_del_key(&rdev->wiphy, netdev, key_index, pairwise, mac_addr);
107 : 0 : ret = rdev->ops->del_key(&rdev->wiphy, netdev, key_index, pairwise,
108 : : mac_addr);
109 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
110 : 0 : return ret;
111 : : }
112 : :
113 : : static inline int
114 : 0 : rdev_set_default_key(struct cfg80211_registered_device *rdev,
115 : : struct net_device *netdev, u8 key_index, bool unicast,
116 : : bool multicast)
117 : : {
118 : 0 : int ret;
119 : 0 : trace_rdev_set_default_key(&rdev->wiphy, netdev, key_index,
120 : : unicast, multicast);
121 : 0 : ret = rdev->ops->set_default_key(&rdev->wiphy, netdev, key_index,
122 : : unicast, multicast);
123 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
124 : 0 : return ret;
125 : : }
126 : :
127 : : static inline int
128 : 0 : rdev_set_default_mgmt_key(struct cfg80211_registered_device *rdev,
129 : : struct net_device *netdev, u8 key_index)
130 : : {
131 : 0 : int ret;
132 : 0 : trace_rdev_set_default_mgmt_key(&rdev->wiphy, netdev, key_index);
133 : 0 : ret = rdev->ops->set_default_mgmt_key(&rdev->wiphy, netdev,
134 : : key_index);
135 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
136 : 0 : return ret;
137 : : }
138 : :
139 : 0 : static inline int rdev_start_ap(struct cfg80211_registered_device *rdev,
140 : : struct net_device *dev,
141 : : struct cfg80211_ap_settings *settings)
142 : : {
143 : 0 : int ret;
144 : 0 : trace_rdev_start_ap(&rdev->wiphy, dev, settings);
145 : 0 : ret = rdev->ops->start_ap(&rdev->wiphy, dev, settings);
146 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
147 : 0 : return ret;
148 : : }
149 : :
150 : 0 : static inline int rdev_change_beacon(struct cfg80211_registered_device *rdev,
151 : : struct net_device *dev,
152 : : struct cfg80211_beacon_data *info)
153 : : {
154 : 0 : int ret;
155 : 0 : trace_rdev_change_beacon(&rdev->wiphy, dev, info);
156 : 0 : ret = rdev->ops->change_beacon(&rdev->wiphy, dev, info);
157 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
158 : 0 : return ret;
159 : : }
160 : :
161 : 0 : static inline int rdev_stop_ap(struct cfg80211_registered_device *rdev,
162 : : struct net_device *dev)
163 : : {
164 : 0 : int ret;
165 : 0 : trace_rdev_stop_ap(&rdev->wiphy, dev);
166 : 0 : ret = rdev->ops->stop_ap(&rdev->wiphy, dev);
167 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
168 : 0 : return ret;
169 : : }
170 : :
171 : 0 : static inline int rdev_add_station(struct cfg80211_registered_device *rdev,
172 : : struct net_device *dev, u8 *mac,
173 : : struct station_parameters *params)
174 : : {
175 : 0 : int ret;
176 : 0 : trace_rdev_add_station(&rdev->wiphy, dev, mac, params);
177 : 0 : ret = rdev->ops->add_station(&rdev->wiphy, dev, mac, params);
178 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
179 : 0 : return ret;
180 : : }
181 : :
182 : 0 : static inline int rdev_del_station(struct cfg80211_registered_device *rdev,
183 : : struct net_device *dev,
184 : : struct station_del_parameters *params)
185 : : {
186 : 0 : int ret;
187 : 0 : trace_rdev_del_station(&rdev->wiphy, dev, params);
188 : 0 : ret = rdev->ops->del_station(&rdev->wiphy, dev, params);
189 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
190 : 0 : return ret;
191 : : }
192 : :
193 : 0 : static inline int rdev_change_station(struct cfg80211_registered_device *rdev,
194 : : struct net_device *dev, u8 *mac,
195 : : struct station_parameters *params)
196 : : {
197 : 0 : int ret;
198 : 0 : trace_rdev_change_station(&rdev->wiphy, dev, mac, params);
199 : 0 : ret = rdev->ops->change_station(&rdev->wiphy, dev, mac, params);
200 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
201 : 0 : return ret;
202 : : }
203 : :
204 : 0 : static inline int rdev_get_station(struct cfg80211_registered_device *rdev,
205 : : struct net_device *dev, const u8 *mac,
206 : : struct station_info *sinfo)
207 : : {
208 : 0 : int ret;
209 : 0 : trace_rdev_get_station(&rdev->wiphy, dev, mac);
210 : 0 : ret = rdev->ops->get_station(&rdev->wiphy, dev, mac, sinfo);
211 : 0 : trace_rdev_return_int_station_info(&rdev->wiphy, ret, sinfo);
212 : 0 : return ret;
213 : : }
214 : :
215 : 0 : static inline int rdev_dump_station(struct cfg80211_registered_device *rdev,
216 : : struct net_device *dev, int idx, u8 *mac,
217 : : struct station_info *sinfo)
218 : : {
219 : 0 : int ret;
220 : 0 : trace_rdev_dump_station(&rdev->wiphy, dev, idx, mac);
221 : 0 : ret = rdev->ops->dump_station(&rdev->wiphy, dev, idx, mac, sinfo);
222 : 0 : trace_rdev_return_int_station_info(&rdev->wiphy, ret, sinfo);
223 : 0 : return ret;
224 : : }
225 : :
226 : 0 : static inline int rdev_add_mpath(struct cfg80211_registered_device *rdev,
227 : : struct net_device *dev, u8 *dst, u8 *next_hop)
228 : : {
229 : 0 : int ret;
230 : 0 : trace_rdev_add_mpath(&rdev->wiphy, dev, dst, next_hop);
231 : 0 : ret = rdev->ops->add_mpath(&rdev->wiphy, dev, dst, next_hop);
232 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
233 : 0 : return ret;
234 : : }
235 : :
236 : 0 : static inline int rdev_del_mpath(struct cfg80211_registered_device *rdev,
237 : : struct net_device *dev, u8 *dst)
238 : : {
239 : 0 : int ret;
240 : 0 : trace_rdev_del_mpath(&rdev->wiphy, dev, dst);
241 : 0 : ret = rdev->ops->del_mpath(&rdev->wiphy, dev, dst);
242 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
243 : 0 : return ret;
244 : : }
245 : :
246 : 0 : static inline int rdev_change_mpath(struct cfg80211_registered_device *rdev,
247 : : struct net_device *dev, u8 *dst,
248 : : u8 *next_hop)
249 : : {
250 : 0 : int ret;
251 : 0 : trace_rdev_change_mpath(&rdev->wiphy, dev, dst, next_hop);
252 : 0 : ret = rdev->ops->change_mpath(&rdev->wiphy, dev, dst, next_hop);
253 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
254 : 0 : return ret;
255 : : }
256 : :
257 : 0 : static inline int rdev_get_mpath(struct cfg80211_registered_device *rdev,
258 : : struct net_device *dev, u8 *dst, u8 *next_hop,
259 : : struct mpath_info *pinfo)
260 : : {
261 : 0 : int ret;
262 : 0 : trace_rdev_get_mpath(&rdev->wiphy, dev, dst, next_hop);
263 : 0 : ret = rdev->ops->get_mpath(&rdev->wiphy, dev, dst, next_hop, pinfo);
264 : 0 : trace_rdev_return_int_mpath_info(&rdev->wiphy, ret, pinfo);
265 : 0 : return ret;
266 : :
267 : : }
268 : :
269 : 0 : static inline int rdev_get_mpp(struct cfg80211_registered_device *rdev,
270 : : struct net_device *dev, u8 *dst, u8 *mpp,
271 : : struct mpath_info *pinfo)
272 : : {
273 : 0 : int ret;
274 : :
275 : 0 : trace_rdev_get_mpp(&rdev->wiphy, dev, dst, mpp);
276 : 0 : ret = rdev->ops->get_mpp(&rdev->wiphy, dev, dst, mpp, pinfo);
277 : 0 : trace_rdev_return_int_mpath_info(&rdev->wiphy, ret, pinfo);
278 : 0 : return ret;
279 : : }
280 : :
281 : 0 : static inline int rdev_dump_mpath(struct cfg80211_registered_device *rdev,
282 : : struct net_device *dev, int idx, u8 *dst,
283 : : u8 *next_hop, struct mpath_info *pinfo)
284 : :
285 : : {
286 : 0 : int ret;
287 : 0 : trace_rdev_dump_mpath(&rdev->wiphy, dev, idx, dst, next_hop);
288 : 0 : ret = rdev->ops->dump_mpath(&rdev->wiphy, dev, idx, dst, next_hop,
289 : : pinfo);
290 : 0 : trace_rdev_return_int_mpath_info(&rdev->wiphy, ret, pinfo);
291 : 0 : return ret;
292 : : }
293 : :
294 : 0 : static inline int rdev_dump_mpp(struct cfg80211_registered_device *rdev,
295 : : struct net_device *dev, int idx, u8 *dst,
296 : : u8 *mpp, struct mpath_info *pinfo)
297 : :
298 : : {
299 : 0 : int ret;
300 : :
301 : 0 : trace_rdev_dump_mpp(&rdev->wiphy, dev, idx, dst, mpp);
302 : 0 : ret = rdev->ops->dump_mpp(&rdev->wiphy, dev, idx, dst, mpp, pinfo);
303 : 0 : trace_rdev_return_int_mpath_info(&rdev->wiphy, ret, pinfo);
304 : 0 : return ret;
305 : : }
306 : :
307 : : static inline int
308 : 0 : rdev_get_mesh_config(struct cfg80211_registered_device *rdev,
309 : : struct net_device *dev, struct mesh_config *conf)
310 : : {
311 : 0 : int ret;
312 : 0 : trace_rdev_get_mesh_config(&rdev->wiphy, dev);
313 : 0 : ret = rdev->ops->get_mesh_config(&rdev->wiphy, dev, conf);
314 : 0 : trace_rdev_return_int_mesh_config(&rdev->wiphy, ret, conf);
315 : 0 : return ret;
316 : : }
317 : :
318 : : static inline int
319 : 0 : rdev_update_mesh_config(struct cfg80211_registered_device *rdev,
320 : : struct net_device *dev, u32 mask,
321 : : const struct mesh_config *nconf)
322 : : {
323 : 0 : int ret;
324 : 0 : trace_rdev_update_mesh_config(&rdev->wiphy, dev, mask, nconf);
325 : 0 : ret = rdev->ops->update_mesh_config(&rdev->wiphy, dev, mask, nconf);
326 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
327 : 0 : return ret;
328 : : }
329 : :
330 : 0 : static inline int rdev_join_mesh(struct cfg80211_registered_device *rdev,
331 : : struct net_device *dev,
332 : : const struct mesh_config *conf,
333 : : const struct mesh_setup *setup)
334 : : {
335 : 0 : int ret;
336 : 0 : trace_rdev_join_mesh(&rdev->wiphy, dev, conf, setup);
337 : 0 : ret = rdev->ops->join_mesh(&rdev->wiphy, dev, conf, setup);
338 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
339 : 0 : return ret;
340 : : }
341 : :
342 : :
343 : 0 : static inline int rdev_leave_mesh(struct cfg80211_registered_device *rdev,
344 : : struct net_device *dev)
345 : : {
346 : 0 : int ret;
347 : 0 : trace_rdev_leave_mesh(&rdev->wiphy, dev);
348 : 0 : ret = rdev->ops->leave_mesh(&rdev->wiphy, dev);
349 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
350 : 0 : return ret;
351 : : }
352 : :
353 : 0 : static inline int rdev_join_ocb(struct cfg80211_registered_device *rdev,
354 : : struct net_device *dev,
355 : : struct ocb_setup *setup)
356 : : {
357 : 0 : int ret;
358 : 0 : trace_rdev_join_ocb(&rdev->wiphy, dev, setup);
359 : 0 : ret = rdev->ops->join_ocb(&rdev->wiphy, dev, setup);
360 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
361 : 0 : return ret;
362 : : }
363 : :
364 : 0 : static inline int rdev_leave_ocb(struct cfg80211_registered_device *rdev,
365 : : struct net_device *dev)
366 : : {
367 : 0 : int ret;
368 : 0 : trace_rdev_leave_ocb(&rdev->wiphy, dev);
369 : 0 : ret = rdev->ops->leave_ocb(&rdev->wiphy, dev);
370 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
371 : 0 : return ret;
372 : : }
373 : :
374 : 0 : static inline int rdev_change_bss(struct cfg80211_registered_device *rdev,
375 : : struct net_device *dev,
376 : : struct bss_parameters *params)
377 : :
378 : : {
379 : 0 : int ret;
380 : 0 : trace_rdev_change_bss(&rdev->wiphy, dev, params);
381 : 0 : ret = rdev->ops->change_bss(&rdev->wiphy, dev, params);
382 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
383 : 0 : return ret;
384 : : }
385 : :
386 : 0 : static inline int rdev_set_txq_params(struct cfg80211_registered_device *rdev,
387 : : struct net_device *dev,
388 : : struct ieee80211_txq_params *params)
389 : :
390 : : {
391 : 0 : int ret;
392 : 0 : trace_rdev_set_txq_params(&rdev->wiphy, dev, params);
393 : 0 : ret = rdev->ops->set_txq_params(&rdev->wiphy, dev, params);
394 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
395 : 0 : return ret;
396 : : }
397 : :
398 : : static inline int
399 : 0 : rdev_libertas_set_mesh_channel(struct cfg80211_registered_device *rdev,
400 : : struct net_device *dev,
401 : : struct ieee80211_channel *chan)
402 : : {
403 : 0 : int ret;
404 : 0 : trace_rdev_libertas_set_mesh_channel(&rdev->wiphy, dev, chan);
405 : 0 : ret = rdev->ops->libertas_set_mesh_channel(&rdev->wiphy, dev, chan);
406 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
407 : 0 : return ret;
408 : : }
409 : :
410 : : static inline int
411 : 0 : rdev_set_monitor_channel(struct cfg80211_registered_device *rdev,
412 : : struct cfg80211_chan_def *chandef)
413 : : {
414 : 0 : int ret;
415 : 0 : trace_rdev_set_monitor_channel(&rdev->wiphy, chandef);
416 : 0 : ret = rdev->ops->set_monitor_channel(&rdev->wiphy, chandef);
417 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
418 : 0 : return ret;
419 : : }
420 : :
421 : 0 : static inline int rdev_scan(struct cfg80211_registered_device *rdev,
422 : : struct cfg80211_scan_request *request)
423 : : {
424 : 0 : int ret;
425 : 0 : trace_rdev_scan(&rdev->wiphy, request);
426 : 0 : ret = rdev->ops->scan(&rdev->wiphy, request);
427 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
428 : 0 : return ret;
429 : : }
430 : :
431 : 0 : static inline void rdev_abort_scan(struct cfg80211_registered_device *rdev,
432 : : struct wireless_dev *wdev)
433 : : {
434 : 0 : trace_rdev_abort_scan(&rdev->wiphy, wdev);
435 : 0 : rdev->ops->abort_scan(&rdev->wiphy, wdev);
436 : 0 : trace_rdev_return_void(&rdev->wiphy);
437 : 0 : }
438 : :
439 : 0 : static inline int rdev_auth(struct cfg80211_registered_device *rdev,
440 : : struct net_device *dev,
441 : : struct cfg80211_auth_request *req)
442 : : {
443 : 0 : int ret;
444 : 0 : trace_rdev_auth(&rdev->wiphy, dev, req);
445 : 0 : ret = rdev->ops->auth(&rdev->wiphy, dev, req);
446 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
447 : 0 : return ret;
448 : : }
449 : :
450 : 0 : static inline int rdev_assoc(struct cfg80211_registered_device *rdev,
451 : : struct net_device *dev,
452 : : struct cfg80211_assoc_request *req)
453 : : {
454 : 0 : int ret;
455 : 0 : trace_rdev_assoc(&rdev->wiphy, dev, req);
456 : 0 : ret = rdev->ops->assoc(&rdev->wiphy, dev, req);
457 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
458 : 0 : return ret;
459 : : }
460 : :
461 : 0 : static inline int rdev_deauth(struct cfg80211_registered_device *rdev,
462 : : struct net_device *dev,
463 : : struct cfg80211_deauth_request *req)
464 : : {
465 : 0 : int ret;
466 : 0 : trace_rdev_deauth(&rdev->wiphy, dev, req);
467 : 0 : ret = rdev->ops->deauth(&rdev->wiphy, dev, req);
468 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
469 : 0 : return ret;
470 : : }
471 : :
472 : 0 : static inline int rdev_disassoc(struct cfg80211_registered_device *rdev,
473 : : struct net_device *dev,
474 : : struct cfg80211_disassoc_request *req)
475 : : {
476 : 0 : int ret;
477 : 0 : trace_rdev_disassoc(&rdev->wiphy, dev, req);
478 : 0 : ret = rdev->ops->disassoc(&rdev->wiphy, dev, req);
479 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
480 : 0 : return ret;
481 : : }
482 : :
483 : 0 : static inline int rdev_connect(struct cfg80211_registered_device *rdev,
484 : : struct net_device *dev,
485 : : struct cfg80211_connect_params *sme)
486 : : {
487 : 0 : int ret;
488 : 0 : trace_rdev_connect(&rdev->wiphy, dev, sme);
489 : 0 : ret = rdev->ops->connect(&rdev->wiphy, dev, sme);
490 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
491 : 0 : return ret;
492 : : }
493 : :
494 : : static inline int
495 : 0 : rdev_update_connect_params(struct cfg80211_registered_device *rdev,
496 : : struct net_device *dev,
497 : : struct cfg80211_connect_params *sme, u32 changed)
498 : : {
499 : 0 : int ret;
500 : 0 : trace_rdev_update_connect_params(&rdev->wiphy, dev, sme, changed);
501 : 0 : ret = rdev->ops->update_connect_params(&rdev->wiphy, dev, sme, changed);
502 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
503 : 0 : return ret;
504 : : }
505 : :
506 : 0 : static inline int rdev_disconnect(struct cfg80211_registered_device *rdev,
507 : : struct net_device *dev, u16 reason_code)
508 : : {
509 : 0 : int ret;
510 : 0 : trace_rdev_disconnect(&rdev->wiphy, dev, reason_code);
511 : 0 : ret = rdev->ops->disconnect(&rdev->wiphy, dev, reason_code);
512 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
513 : 0 : return ret;
514 : : }
515 : :
516 : 0 : static inline int rdev_join_ibss(struct cfg80211_registered_device *rdev,
517 : : struct net_device *dev,
518 : : struct cfg80211_ibss_params *params)
519 : : {
520 : 0 : int ret;
521 : 0 : trace_rdev_join_ibss(&rdev->wiphy, dev, params);
522 : 0 : ret = rdev->ops->join_ibss(&rdev->wiphy, dev, params);
523 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
524 : 0 : return ret;
525 : : }
526 : :
527 : 0 : static inline int rdev_leave_ibss(struct cfg80211_registered_device *rdev,
528 : : struct net_device *dev)
529 : : {
530 : 0 : int ret;
531 : 0 : trace_rdev_leave_ibss(&rdev->wiphy, dev);
532 : 0 : ret = rdev->ops->leave_ibss(&rdev->wiphy, dev);
533 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
534 : 0 : return ret;
535 : : }
536 : :
537 : : static inline int
538 : 0 : rdev_set_wiphy_params(struct cfg80211_registered_device *rdev, u32 changed)
539 : : {
540 : 0 : int ret;
541 : :
542 [ # # ]: 0 : if (!rdev->ops->set_wiphy_params)
543 : : return -EOPNOTSUPP;
544 : :
545 : 0 : trace_rdev_set_wiphy_params(&rdev->wiphy, changed);
546 : 0 : ret = rdev->ops->set_wiphy_params(&rdev->wiphy, changed);
547 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
548 : 0 : return ret;
549 : : }
550 : :
551 : 0 : static inline int rdev_set_tx_power(struct cfg80211_registered_device *rdev,
552 : : struct wireless_dev *wdev,
553 : : enum nl80211_tx_power_setting type, int mbm)
554 : : {
555 : 0 : int ret;
556 : 0 : trace_rdev_set_tx_power(&rdev->wiphy, wdev, type, mbm);
557 : 0 : ret = rdev->ops->set_tx_power(&rdev->wiphy, wdev, type, mbm);
558 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
559 : 0 : return ret;
560 : : }
561 : :
562 : 0 : static inline int rdev_get_tx_power(struct cfg80211_registered_device *rdev,
563 : : struct wireless_dev *wdev, int *dbm)
564 : : {
565 : 0 : int ret;
566 : 0 : trace_rdev_get_tx_power(&rdev->wiphy, wdev);
567 : 0 : ret = rdev->ops->get_tx_power(&rdev->wiphy, wdev, dbm);
568 : 0 : trace_rdev_return_int_int(&rdev->wiphy, ret, *dbm);
569 : 0 : return ret;
570 : : }
571 : :
572 : 0 : static inline int rdev_set_wds_peer(struct cfg80211_registered_device *rdev,
573 : : struct net_device *dev, const u8 *addr)
574 : : {
575 : 0 : int ret;
576 : 0 : trace_rdev_set_wds_peer(&rdev->wiphy, dev, addr);
577 : 0 : ret = rdev->ops->set_wds_peer(&rdev->wiphy, dev, addr);
578 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
579 : 0 : return ret;
580 : : }
581 : :
582 : : static inline int
583 : 0 : rdev_set_multicast_to_unicast(struct cfg80211_registered_device *rdev,
584 : : struct net_device *dev,
585 : : const bool enabled)
586 : : {
587 : 0 : int ret;
588 : 0 : trace_rdev_set_multicast_to_unicast(&rdev->wiphy, dev, enabled);
589 : 0 : ret = rdev->ops->set_multicast_to_unicast(&rdev->wiphy, dev, enabled);
590 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
591 : 0 : return ret;
592 : : }
593 : :
594 : : static inline int
595 : 0 : rdev_get_txq_stats(struct cfg80211_registered_device *rdev,
596 : : struct wireless_dev *wdev,
597 : : struct cfg80211_txq_stats *txqstats)
598 : : {
599 : 0 : int ret;
600 : 0 : trace_rdev_get_txq_stats(&rdev->wiphy, wdev);
601 : 0 : ret = rdev->ops->get_txq_stats(&rdev->wiphy, wdev, txqstats);
602 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
603 : 0 : return ret;
604 : : }
605 : :
606 : 0 : static inline void rdev_rfkill_poll(struct cfg80211_registered_device *rdev)
607 : : {
608 : 0 : trace_rdev_rfkill_poll(&rdev->wiphy);
609 : 0 : rdev->ops->rfkill_poll(&rdev->wiphy);
610 : 0 : trace_rdev_return_void(&rdev->wiphy);
611 : 0 : }
612 : :
613 : :
614 : : #ifdef CONFIG_NL80211_TESTMODE
615 : : static inline int rdev_testmode_cmd(struct cfg80211_registered_device *rdev,
616 : : struct wireless_dev *wdev,
617 : : void *data, int len)
618 : : {
619 : : int ret;
620 : : trace_rdev_testmode_cmd(&rdev->wiphy, wdev);
621 : : ret = rdev->ops->testmode_cmd(&rdev->wiphy, wdev, data, len);
622 : : trace_rdev_return_int(&rdev->wiphy, ret);
623 : : return ret;
624 : : }
625 : :
626 : : static inline int rdev_testmode_dump(struct cfg80211_registered_device *rdev,
627 : : struct sk_buff *skb,
628 : : struct netlink_callback *cb, void *data,
629 : : int len)
630 : : {
631 : : int ret;
632 : : trace_rdev_testmode_dump(&rdev->wiphy);
633 : : ret = rdev->ops->testmode_dump(&rdev->wiphy, skb, cb, data, len);
634 : : trace_rdev_return_int(&rdev->wiphy, ret);
635 : : return ret;
636 : : }
637 : : #endif
638 : :
639 : : static inline int
640 : 0 : rdev_set_bitrate_mask(struct cfg80211_registered_device *rdev,
641 : : struct net_device *dev, const u8 *peer,
642 : : const struct cfg80211_bitrate_mask *mask)
643 : : {
644 : 0 : int ret;
645 : 0 : trace_rdev_set_bitrate_mask(&rdev->wiphy, dev, peer, mask);
646 : 0 : ret = rdev->ops->set_bitrate_mask(&rdev->wiphy, dev, peer, mask);
647 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
648 : 0 : return ret;
649 : : }
650 : :
651 : 0 : static inline int rdev_dump_survey(struct cfg80211_registered_device *rdev,
652 : : struct net_device *netdev, int idx,
653 : : struct survey_info *info)
654 : : {
655 : 0 : int ret;
656 : 0 : trace_rdev_dump_survey(&rdev->wiphy, netdev, idx);
657 : 0 : ret = rdev->ops->dump_survey(&rdev->wiphy, netdev, idx, info);
658 [ # # ]: 0 : if (ret < 0)
659 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
660 : : else
661 : 0 : trace_rdev_return_int_survey_info(&rdev->wiphy, ret, info);
662 : 0 : return ret;
663 : : }
664 : :
665 : 0 : static inline int rdev_set_pmksa(struct cfg80211_registered_device *rdev,
666 : : struct net_device *netdev,
667 : : struct cfg80211_pmksa *pmksa)
668 : : {
669 : 0 : int ret;
670 : 0 : trace_rdev_set_pmksa(&rdev->wiphy, netdev, pmksa);
671 : 0 : ret = rdev->ops->set_pmksa(&rdev->wiphy, netdev, pmksa);
672 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
673 : 0 : return ret;
674 : : }
675 : :
676 : 0 : static inline int rdev_del_pmksa(struct cfg80211_registered_device *rdev,
677 : : struct net_device *netdev,
678 : : struct cfg80211_pmksa *pmksa)
679 : : {
680 : 0 : int ret;
681 : 0 : trace_rdev_del_pmksa(&rdev->wiphy, netdev, pmksa);
682 : 0 : ret = rdev->ops->del_pmksa(&rdev->wiphy, netdev, pmksa);
683 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
684 : 0 : return ret;
685 : : }
686 : :
687 : 0 : static inline int rdev_flush_pmksa(struct cfg80211_registered_device *rdev,
688 : : struct net_device *netdev)
689 : : {
690 : 0 : int ret;
691 : 0 : trace_rdev_flush_pmksa(&rdev->wiphy, netdev);
692 : 0 : ret = rdev->ops->flush_pmksa(&rdev->wiphy, netdev);
693 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
694 : 0 : return ret;
695 : : }
696 : :
697 : : static inline int
698 : 0 : rdev_remain_on_channel(struct cfg80211_registered_device *rdev,
699 : : struct wireless_dev *wdev,
700 : : struct ieee80211_channel *chan,
701 : : unsigned int duration, u64 *cookie)
702 : : {
703 : 0 : int ret;
704 : 0 : trace_rdev_remain_on_channel(&rdev->wiphy, wdev, chan, duration);
705 : 0 : ret = rdev->ops->remain_on_channel(&rdev->wiphy, wdev, chan,
706 : : duration, cookie);
707 : 0 : trace_rdev_return_int_cookie(&rdev->wiphy, ret, *cookie);
708 : 0 : return ret;
709 : : }
710 : :
711 : : static inline int
712 : 0 : rdev_cancel_remain_on_channel(struct cfg80211_registered_device *rdev,
713 : : struct wireless_dev *wdev, u64 cookie)
714 : : {
715 : 0 : int ret;
716 : 0 : trace_rdev_cancel_remain_on_channel(&rdev->wiphy, wdev, cookie);
717 : 0 : ret = rdev->ops->cancel_remain_on_channel(&rdev->wiphy, wdev, cookie);
718 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
719 : 0 : return ret;
720 : : }
721 : :
722 : 0 : static inline int rdev_mgmt_tx(struct cfg80211_registered_device *rdev,
723 : : struct wireless_dev *wdev,
724 : : struct cfg80211_mgmt_tx_params *params,
725 : : u64 *cookie)
726 : : {
727 : 0 : int ret;
728 : 0 : trace_rdev_mgmt_tx(&rdev->wiphy, wdev, params);
729 : 0 : ret = rdev->ops->mgmt_tx(&rdev->wiphy, wdev, params, cookie);
730 : 0 : trace_rdev_return_int_cookie(&rdev->wiphy, ret, *cookie);
731 : 0 : return ret;
732 : : }
733 : :
734 : 0 : static inline int rdev_tx_control_port(struct cfg80211_registered_device *rdev,
735 : : struct net_device *dev,
736 : : const void *buf, size_t len,
737 : : const u8 *dest, __be16 proto,
738 : : const bool noencrypt)
739 : : {
740 : 0 : int ret;
741 : 0 : trace_rdev_tx_control_port(&rdev->wiphy, dev, buf, len,
742 : : dest, proto, noencrypt);
743 : 0 : ret = rdev->ops->tx_control_port(&rdev->wiphy, dev, buf, len,
744 : : dest, proto, noencrypt);
745 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
746 : 0 : return ret;
747 : : }
748 : :
749 : : static inline int
750 : 0 : rdev_mgmt_tx_cancel_wait(struct cfg80211_registered_device *rdev,
751 : : struct wireless_dev *wdev, u64 cookie)
752 : : {
753 : 0 : int ret;
754 : 0 : trace_rdev_mgmt_tx_cancel_wait(&rdev->wiphy, wdev, cookie);
755 : 0 : ret = rdev->ops->mgmt_tx_cancel_wait(&rdev->wiphy, wdev, cookie);
756 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
757 : 0 : return ret;
758 : : }
759 : :
760 : 0 : static inline int rdev_set_power_mgmt(struct cfg80211_registered_device *rdev,
761 : : struct net_device *dev, bool enabled,
762 : : int timeout)
763 : : {
764 : 0 : int ret;
765 : 0 : trace_rdev_set_power_mgmt(&rdev->wiphy, dev, enabled, timeout);
766 : 0 : ret = rdev->ops->set_power_mgmt(&rdev->wiphy, dev, enabled, timeout);
767 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
768 : 0 : return ret;
769 : : }
770 : :
771 : : static inline int
772 : 0 : rdev_set_cqm_rssi_config(struct cfg80211_registered_device *rdev,
773 : : struct net_device *dev, s32 rssi_thold, u32 rssi_hyst)
774 : : {
775 : 0 : int ret;
776 : 0 : trace_rdev_set_cqm_rssi_config(&rdev->wiphy, dev, rssi_thold,
777 : : rssi_hyst);
778 : 0 : ret = rdev->ops->set_cqm_rssi_config(&rdev->wiphy, dev, rssi_thold,
779 : : rssi_hyst);
780 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
781 : 0 : return ret;
782 : : }
783 : :
784 : : static inline int
785 : 0 : rdev_set_cqm_rssi_range_config(struct cfg80211_registered_device *rdev,
786 : : struct net_device *dev, s32 low, s32 high)
787 : : {
788 : 0 : int ret;
789 : 0 : trace_rdev_set_cqm_rssi_range_config(&rdev->wiphy, dev, low, high);
790 : 0 : ret = rdev->ops->set_cqm_rssi_range_config(&rdev->wiphy, dev,
791 : : low, high);
792 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
793 : 0 : return ret;
794 : : }
795 : :
796 : : static inline int
797 : 0 : rdev_set_cqm_txe_config(struct cfg80211_registered_device *rdev,
798 : : struct net_device *dev, u32 rate, u32 pkts, u32 intvl)
799 : : {
800 : 0 : int ret;
801 : 0 : trace_rdev_set_cqm_txe_config(&rdev->wiphy, dev, rate, pkts, intvl);
802 : 0 : ret = rdev->ops->set_cqm_txe_config(&rdev->wiphy, dev, rate, pkts,
803 : : intvl);
804 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
805 : 0 : return ret;
806 : : }
807 : :
808 : : static inline void
809 : 0 : rdev_mgmt_frame_register(struct cfg80211_registered_device *rdev,
810 : : struct wireless_dev *wdev, u16 frame_type, bool reg)
811 : : {
812 : 0 : might_sleep();
813 : :
814 : 0 : trace_rdev_mgmt_frame_register(&rdev->wiphy, wdev , frame_type, reg);
815 : 0 : rdev->ops->mgmt_frame_register(&rdev->wiphy, wdev , frame_type, reg);
816 : 0 : trace_rdev_return_void(&rdev->wiphy);
817 : 0 : }
818 : :
819 : 0 : static inline int rdev_set_antenna(struct cfg80211_registered_device *rdev,
820 : : u32 tx_ant, u32 rx_ant)
821 : : {
822 : 0 : int ret;
823 : 0 : trace_rdev_set_antenna(&rdev->wiphy, tx_ant, rx_ant);
824 : 0 : ret = rdev->ops->set_antenna(&rdev->wiphy, tx_ant, rx_ant);
825 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
826 : 0 : return ret;
827 : : }
828 : :
829 : 0 : static inline int rdev_get_antenna(struct cfg80211_registered_device *rdev,
830 : : u32 *tx_ant, u32 *rx_ant)
831 : : {
832 : 0 : int ret;
833 : 0 : trace_rdev_get_antenna(&rdev->wiphy);
834 : 0 : ret = rdev->ops->get_antenna(&rdev->wiphy, tx_ant, rx_ant);
835 [ # # ]: 0 : if (ret)
836 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
837 : : else
838 : 0 : trace_rdev_return_int_tx_rx(&rdev->wiphy, ret, *tx_ant,
839 : : *rx_ant);
840 : 0 : return ret;
841 : : }
842 : :
843 : : static inline int
844 : 0 : rdev_sched_scan_start(struct cfg80211_registered_device *rdev,
845 : : struct net_device *dev,
846 : : struct cfg80211_sched_scan_request *request)
847 : : {
848 : 0 : int ret;
849 : 0 : trace_rdev_sched_scan_start(&rdev->wiphy, dev, request->reqid);
850 : 0 : ret = rdev->ops->sched_scan_start(&rdev->wiphy, dev, request);
851 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
852 : 0 : return ret;
853 : : }
854 : :
855 : 0 : static inline int rdev_sched_scan_stop(struct cfg80211_registered_device *rdev,
856 : : struct net_device *dev, u64 reqid)
857 : : {
858 : 0 : int ret;
859 : 0 : trace_rdev_sched_scan_stop(&rdev->wiphy, dev, reqid);
860 : 0 : ret = rdev->ops->sched_scan_stop(&rdev->wiphy, dev, reqid);
861 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
862 : 0 : return ret;
863 : : }
864 : :
865 : 0 : static inline int rdev_set_rekey_data(struct cfg80211_registered_device *rdev,
866 : : struct net_device *dev,
867 : : struct cfg80211_gtk_rekey_data *data)
868 : : {
869 : 0 : int ret;
870 : 0 : trace_rdev_set_rekey_data(&rdev->wiphy, dev);
871 : 0 : ret = rdev->ops->set_rekey_data(&rdev->wiphy, dev, data);
872 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
873 : 0 : return ret;
874 : : }
875 : :
876 : 0 : static inline int rdev_tdls_mgmt(struct cfg80211_registered_device *rdev,
877 : : struct net_device *dev, u8 *peer,
878 : : u8 action_code, u8 dialog_token,
879 : : u16 status_code, u32 peer_capability,
880 : : bool initiator, const u8 *buf, size_t len)
881 : : {
882 : 0 : int ret;
883 : 0 : trace_rdev_tdls_mgmt(&rdev->wiphy, dev, peer, action_code,
884 : : dialog_token, status_code, peer_capability,
885 : : initiator, buf, len);
886 : 0 : ret = rdev->ops->tdls_mgmt(&rdev->wiphy, dev, peer, action_code,
887 : : dialog_token, status_code, peer_capability,
888 : : initiator, buf, len);
889 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
890 : 0 : return ret;
891 : : }
892 : :
893 : 0 : static inline int rdev_tdls_oper(struct cfg80211_registered_device *rdev,
894 : : struct net_device *dev, u8 *peer,
895 : : enum nl80211_tdls_operation oper)
896 : : {
897 : 0 : int ret;
898 : 0 : trace_rdev_tdls_oper(&rdev->wiphy, dev, peer, oper);
899 : 0 : ret = rdev->ops->tdls_oper(&rdev->wiphy, dev, peer, oper);
900 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
901 : 0 : return ret;
902 : : }
903 : :
904 : 0 : static inline int rdev_probe_client(struct cfg80211_registered_device *rdev,
905 : : struct net_device *dev, const u8 *peer,
906 : : u64 *cookie)
907 : : {
908 : 0 : int ret;
909 : 0 : trace_rdev_probe_client(&rdev->wiphy, dev, peer);
910 : 0 : ret = rdev->ops->probe_client(&rdev->wiphy, dev, peer, cookie);
911 : 0 : trace_rdev_return_int_cookie(&rdev->wiphy, ret, *cookie);
912 : 0 : return ret;
913 : : }
914 : :
915 : 0 : static inline int rdev_set_noack_map(struct cfg80211_registered_device *rdev,
916 : : struct net_device *dev, u16 noack_map)
917 : : {
918 : 0 : int ret;
919 : 0 : trace_rdev_set_noack_map(&rdev->wiphy, dev, noack_map);
920 : 0 : ret = rdev->ops->set_noack_map(&rdev->wiphy, dev, noack_map);
921 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
922 : 0 : return ret;
923 : : }
924 : :
925 : : static inline int
926 : 0 : rdev_get_channel(struct cfg80211_registered_device *rdev,
927 : : struct wireless_dev *wdev,
928 : : struct cfg80211_chan_def *chandef)
929 : : {
930 : 0 : int ret;
931 : :
932 : 0 : trace_rdev_get_channel(&rdev->wiphy, wdev);
933 : 0 : ret = rdev->ops->get_channel(&rdev->wiphy, wdev, chandef);
934 : 0 : trace_rdev_return_chandef(&rdev->wiphy, ret, chandef);
935 : :
936 : 0 : return ret;
937 : : }
938 : :
939 : 0 : static inline int rdev_start_p2p_device(struct cfg80211_registered_device *rdev,
940 : : struct wireless_dev *wdev)
941 : : {
942 : 0 : int ret;
943 : :
944 : 0 : trace_rdev_start_p2p_device(&rdev->wiphy, wdev);
945 : 0 : ret = rdev->ops->start_p2p_device(&rdev->wiphy, wdev);
946 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
947 : 0 : return ret;
948 : : }
949 : :
950 : 0 : static inline void rdev_stop_p2p_device(struct cfg80211_registered_device *rdev,
951 : : struct wireless_dev *wdev)
952 : : {
953 : 0 : trace_rdev_stop_p2p_device(&rdev->wiphy, wdev);
954 : 0 : rdev->ops->stop_p2p_device(&rdev->wiphy, wdev);
955 : 0 : trace_rdev_return_void(&rdev->wiphy);
956 : 0 : }
957 : :
958 : 0 : static inline int rdev_start_nan(struct cfg80211_registered_device *rdev,
959 : : struct wireless_dev *wdev,
960 : : struct cfg80211_nan_conf *conf)
961 : : {
962 : 0 : int ret;
963 : :
964 : 0 : trace_rdev_start_nan(&rdev->wiphy, wdev, conf);
965 : 0 : ret = rdev->ops->start_nan(&rdev->wiphy, wdev, conf);
966 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
967 : 0 : return ret;
968 : : }
969 : :
970 : 0 : static inline void rdev_stop_nan(struct cfg80211_registered_device *rdev,
971 : : struct wireless_dev *wdev)
972 : : {
973 : 0 : trace_rdev_stop_nan(&rdev->wiphy, wdev);
974 : 0 : rdev->ops->stop_nan(&rdev->wiphy, wdev);
975 : 0 : trace_rdev_return_void(&rdev->wiphy);
976 : 0 : }
977 : :
978 : : static inline int
979 : 0 : rdev_add_nan_func(struct cfg80211_registered_device *rdev,
980 : : struct wireless_dev *wdev,
981 : : struct cfg80211_nan_func *nan_func)
982 : : {
983 : 0 : int ret;
984 : :
985 : 0 : trace_rdev_add_nan_func(&rdev->wiphy, wdev, nan_func);
986 : 0 : ret = rdev->ops->add_nan_func(&rdev->wiphy, wdev, nan_func);
987 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
988 : 0 : return ret;
989 : : }
990 : :
991 : 0 : static inline void rdev_del_nan_func(struct cfg80211_registered_device *rdev,
992 : : struct wireless_dev *wdev, u64 cookie)
993 : : {
994 : 0 : trace_rdev_del_nan_func(&rdev->wiphy, wdev, cookie);
995 : 0 : rdev->ops->del_nan_func(&rdev->wiphy, wdev, cookie);
996 : 0 : trace_rdev_return_void(&rdev->wiphy);
997 : 0 : }
998 : :
999 : : static inline int
1000 : 0 : rdev_nan_change_conf(struct cfg80211_registered_device *rdev,
1001 : : struct wireless_dev *wdev,
1002 : : struct cfg80211_nan_conf *conf, u32 changes)
1003 : : {
1004 : 0 : int ret;
1005 : :
1006 : 0 : trace_rdev_nan_change_conf(&rdev->wiphy, wdev, conf, changes);
1007 [ # # ]: 0 : if (rdev->ops->nan_change_conf)
1008 : 0 : ret = rdev->ops->nan_change_conf(&rdev->wiphy, wdev, conf,
1009 : : changes);
1010 : : else
1011 : : ret = -ENOTSUPP;
1012 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
1013 : 0 : return ret;
1014 : : }
1015 : :
1016 : 0 : static inline int rdev_set_mac_acl(struct cfg80211_registered_device *rdev,
1017 : : struct net_device *dev,
1018 : : struct cfg80211_acl_data *params)
1019 : : {
1020 : 0 : int ret;
1021 : :
1022 : 0 : trace_rdev_set_mac_acl(&rdev->wiphy, dev, params);
1023 : 0 : ret = rdev->ops->set_mac_acl(&rdev->wiphy, dev, params);
1024 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
1025 : 0 : return ret;
1026 : : }
1027 : :
1028 : 0 : static inline int rdev_update_ft_ies(struct cfg80211_registered_device *rdev,
1029 : : struct net_device *dev,
1030 : : struct cfg80211_update_ft_ies_params *ftie)
1031 : : {
1032 : 0 : int ret;
1033 : :
1034 : 0 : trace_rdev_update_ft_ies(&rdev->wiphy, dev, ftie);
1035 : 0 : ret = rdev->ops->update_ft_ies(&rdev->wiphy, dev, ftie);
1036 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
1037 : 0 : return ret;
1038 : : }
1039 : :
1040 : 0 : static inline int rdev_crit_proto_start(struct cfg80211_registered_device *rdev,
1041 : : struct wireless_dev *wdev,
1042 : : enum nl80211_crit_proto_id protocol,
1043 : : u16 duration)
1044 : : {
1045 : 0 : int ret;
1046 : :
1047 : 0 : trace_rdev_crit_proto_start(&rdev->wiphy, wdev, protocol, duration);
1048 : 0 : ret = rdev->ops->crit_proto_start(&rdev->wiphy, wdev,
1049 : : protocol, duration);
1050 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
1051 : 0 : return ret;
1052 : : }
1053 : :
1054 : 0 : static inline void rdev_crit_proto_stop(struct cfg80211_registered_device *rdev,
1055 : : struct wireless_dev *wdev)
1056 : : {
1057 : 0 : trace_rdev_crit_proto_stop(&rdev->wiphy, wdev);
1058 : 0 : rdev->ops->crit_proto_stop(&rdev->wiphy, wdev);
1059 : 0 : trace_rdev_return_void(&rdev->wiphy);
1060 : 0 : }
1061 : :
1062 : 0 : static inline int rdev_channel_switch(struct cfg80211_registered_device *rdev,
1063 : : struct net_device *dev,
1064 : : struct cfg80211_csa_settings *params)
1065 : : {
1066 : 0 : int ret;
1067 : :
1068 : 0 : trace_rdev_channel_switch(&rdev->wiphy, dev, params);
1069 : 0 : ret = rdev->ops->channel_switch(&rdev->wiphy, dev, params);
1070 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
1071 : 0 : return ret;
1072 : : }
1073 : :
1074 : 0 : static inline int rdev_set_qos_map(struct cfg80211_registered_device *rdev,
1075 : : struct net_device *dev,
1076 : : struct cfg80211_qos_map *qos_map)
1077 : : {
1078 : 0 : int ret = -EOPNOTSUPP;
1079 : :
1080 [ # # ]: 0 : if (rdev->ops->set_qos_map) {
1081 : 0 : trace_rdev_set_qos_map(&rdev->wiphy, dev, qos_map);
1082 : 0 : ret = rdev->ops->set_qos_map(&rdev->wiphy, dev, qos_map);
1083 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
1084 : : }
1085 : :
1086 : 0 : return ret;
1087 : : }
1088 : :
1089 : : static inline int
1090 : 0 : rdev_set_ap_chanwidth(struct cfg80211_registered_device *rdev,
1091 : : struct net_device *dev, struct cfg80211_chan_def *chandef)
1092 : : {
1093 : 0 : int ret;
1094 : :
1095 : 0 : trace_rdev_set_ap_chanwidth(&rdev->wiphy, dev, chandef);
1096 : 0 : ret = rdev->ops->set_ap_chanwidth(&rdev->wiphy, dev, chandef);
1097 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
1098 : :
1099 : 0 : return ret;
1100 : : }
1101 : :
1102 : : static inline int
1103 : 0 : rdev_add_tx_ts(struct cfg80211_registered_device *rdev,
1104 : : struct net_device *dev, u8 tsid, const u8 *peer,
1105 : : u8 user_prio, u16 admitted_time)
1106 : : {
1107 : 0 : int ret = -EOPNOTSUPP;
1108 : :
1109 : 0 : trace_rdev_add_tx_ts(&rdev->wiphy, dev, tsid, peer,
1110 : : user_prio, admitted_time);
1111 [ # # ]: 0 : if (rdev->ops->add_tx_ts)
1112 : 0 : ret = rdev->ops->add_tx_ts(&rdev->wiphy, dev, tsid, peer,
1113 : : user_prio, admitted_time);
1114 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
1115 : :
1116 : 0 : return ret;
1117 : : }
1118 : :
1119 : : static inline int
1120 : 0 : rdev_del_tx_ts(struct cfg80211_registered_device *rdev,
1121 : : struct net_device *dev, u8 tsid, const u8 *peer)
1122 : : {
1123 : 0 : int ret = -EOPNOTSUPP;
1124 : :
1125 : 0 : trace_rdev_del_tx_ts(&rdev->wiphy, dev, tsid, peer);
1126 [ # # ]: 0 : if (rdev->ops->del_tx_ts)
1127 : 0 : ret = rdev->ops->del_tx_ts(&rdev->wiphy, dev, tsid, peer);
1128 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
1129 : :
1130 : 0 : return ret;
1131 : : }
1132 : :
1133 : : static inline int
1134 : 0 : rdev_tdls_channel_switch(struct cfg80211_registered_device *rdev,
1135 : : struct net_device *dev, const u8 *addr,
1136 : : u8 oper_class, struct cfg80211_chan_def *chandef)
1137 : : {
1138 : 0 : int ret;
1139 : :
1140 : 0 : trace_rdev_tdls_channel_switch(&rdev->wiphy, dev, addr, oper_class,
1141 : : chandef);
1142 : 0 : ret = rdev->ops->tdls_channel_switch(&rdev->wiphy, dev, addr,
1143 : : oper_class, chandef);
1144 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
1145 : 0 : return ret;
1146 : : }
1147 : :
1148 : : static inline void
1149 : 0 : rdev_tdls_cancel_channel_switch(struct cfg80211_registered_device *rdev,
1150 : : struct net_device *dev, const u8 *addr)
1151 : : {
1152 : 0 : trace_rdev_tdls_cancel_channel_switch(&rdev->wiphy, dev, addr);
1153 : 0 : rdev->ops->tdls_cancel_channel_switch(&rdev->wiphy, dev, addr);
1154 : 0 : trace_rdev_return_void(&rdev->wiphy);
1155 : 0 : }
1156 : :
1157 : : static inline int
1158 : 0 : rdev_start_radar_detection(struct cfg80211_registered_device *rdev,
1159 : : struct net_device *dev,
1160 : : struct cfg80211_chan_def *chandef,
1161 : : u32 cac_time_ms)
1162 : : {
1163 : 0 : int ret = -ENOTSUPP;
1164 : :
1165 : 0 : trace_rdev_start_radar_detection(&rdev->wiphy, dev, chandef,
1166 : : cac_time_ms);
1167 [ # # ]: 0 : if (rdev->ops->start_radar_detection)
1168 : 0 : ret = rdev->ops->start_radar_detection(&rdev->wiphy, dev,
1169 : : chandef, cac_time_ms);
1170 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
1171 : 0 : return ret;
1172 : : }
1173 : :
1174 : : static inline void
1175 : 0 : rdev_end_cac(struct cfg80211_registered_device *rdev,
1176 : : struct net_device *dev)
1177 : : {
1178 : 0 : trace_rdev_end_cac(&rdev->wiphy, dev);
1179 [ # # ]: 0 : if (rdev->ops->end_cac)
1180 : 0 : rdev->ops->end_cac(&rdev->wiphy, dev);
1181 : 0 : trace_rdev_return_void(&rdev->wiphy);
1182 : 0 : }
1183 : :
1184 : : static inline int
1185 : 0 : rdev_set_mcast_rate(struct cfg80211_registered_device *rdev,
1186 : : struct net_device *dev,
1187 : : int mcast_rate[NUM_NL80211_BANDS])
1188 : : {
1189 : 0 : int ret = -ENOTSUPP;
1190 : :
1191 : 0 : trace_rdev_set_mcast_rate(&rdev->wiphy, dev, mcast_rate);
1192 [ # # ]: 0 : if (rdev->ops->set_mcast_rate)
1193 : 0 : ret = rdev->ops->set_mcast_rate(&rdev->wiphy, dev, mcast_rate);
1194 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
1195 : 0 : return ret;
1196 : : }
1197 : :
1198 : : static inline int
1199 : 0 : rdev_set_coalesce(struct cfg80211_registered_device *rdev,
1200 : : struct cfg80211_coalesce *coalesce)
1201 : : {
1202 : 0 : int ret = -ENOTSUPP;
1203 : :
1204 : 0 : trace_rdev_set_coalesce(&rdev->wiphy, coalesce);
1205 [ # # ]: 0 : if (rdev->ops->set_coalesce)
1206 : 0 : ret = rdev->ops->set_coalesce(&rdev->wiphy, coalesce);
1207 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
1208 : 0 : return ret;
1209 : : }
1210 : :
1211 : 0 : static inline int rdev_set_pmk(struct cfg80211_registered_device *rdev,
1212 : : struct net_device *dev,
1213 : : struct cfg80211_pmk_conf *pmk_conf)
1214 : : {
1215 : 0 : int ret = -EOPNOTSUPP;
1216 : :
1217 : 0 : trace_rdev_set_pmk(&rdev->wiphy, dev, pmk_conf);
1218 [ # # ]: 0 : if (rdev->ops->set_pmk)
1219 : 0 : ret = rdev->ops->set_pmk(&rdev->wiphy, dev, pmk_conf);
1220 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
1221 : 0 : return ret;
1222 : : }
1223 : :
1224 : 0 : static inline int rdev_del_pmk(struct cfg80211_registered_device *rdev,
1225 : : struct net_device *dev, const u8 *aa)
1226 : : {
1227 : 0 : int ret = -EOPNOTSUPP;
1228 : :
1229 : 0 : trace_rdev_del_pmk(&rdev->wiphy, dev, aa);
1230 [ # # ]: 0 : if (rdev->ops->del_pmk)
1231 : 0 : ret = rdev->ops->del_pmk(&rdev->wiphy, dev, aa);
1232 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
1233 : 0 : return ret;
1234 : : }
1235 : :
1236 : : static inline int
1237 : 0 : rdev_external_auth(struct cfg80211_registered_device *rdev,
1238 : : struct net_device *dev,
1239 : : struct cfg80211_external_auth_params *params)
1240 : : {
1241 : 0 : int ret = -EOPNOTSUPP;
1242 : :
1243 : 0 : trace_rdev_external_auth(&rdev->wiphy, dev, params);
1244 [ # # ]: 0 : if (rdev->ops->external_auth)
1245 : 0 : ret = rdev->ops->external_auth(&rdev->wiphy, dev, params);
1246 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
1247 : 0 : return ret;
1248 : : }
1249 : :
1250 : : static inline int
1251 : 0 : rdev_get_ftm_responder_stats(struct cfg80211_registered_device *rdev,
1252 : : struct net_device *dev,
1253 : : struct cfg80211_ftm_responder_stats *ftm_stats)
1254 : : {
1255 : 0 : int ret = -EOPNOTSUPP;
1256 : :
1257 : 0 : trace_rdev_get_ftm_responder_stats(&rdev->wiphy, dev, ftm_stats);
1258 [ # # ]: 0 : if (rdev->ops->get_ftm_responder_stats)
1259 : 0 : ret = rdev->ops->get_ftm_responder_stats(&rdev->wiphy, dev,
1260 : : ftm_stats);
1261 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
1262 : 0 : return ret;
1263 : : }
1264 : :
1265 : : static inline int
1266 : 0 : rdev_start_pmsr(struct cfg80211_registered_device *rdev,
1267 : : struct wireless_dev *wdev,
1268 : : struct cfg80211_pmsr_request *request)
1269 : : {
1270 : 0 : int ret = -EOPNOTSUPP;
1271 : :
1272 : 0 : trace_rdev_start_pmsr(&rdev->wiphy, wdev, request->cookie);
1273 [ # # ]: 0 : if (rdev->ops->start_pmsr)
1274 : 0 : ret = rdev->ops->start_pmsr(&rdev->wiphy, wdev, request);
1275 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
1276 : 0 : return ret;
1277 : : }
1278 : :
1279 : : static inline void
1280 : 0 : rdev_abort_pmsr(struct cfg80211_registered_device *rdev,
1281 : : struct wireless_dev *wdev,
1282 : : struct cfg80211_pmsr_request *request)
1283 : : {
1284 : 0 : trace_rdev_abort_pmsr(&rdev->wiphy, wdev, request->cookie);
1285 [ # # ]: 0 : if (rdev->ops->abort_pmsr)
1286 : 0 : rdev->ops->abort_pmsr(&rdev->wiphy, wdev, request);
1287 : 0 : trace_rdev_return_void(&rdev->wiphy);
1288 : 0 : }
1289 : :
1290 : 0 : static inline int rdev_update_owe_info(struct cfg80211_registered_device *rdev,
1291 : : struct net_device *dev,
1292 : : struct cfg80211_update_owe_info *oweinfo)
1293 : : {
1294 : 0 : int ret = -EOPNOTSUPP;
1295 : :
1296 : 0 : trace_rdev_update_owe_info(&rdev->wiphy, dev, oweinfo);
1297 [ # # ]: 0 : if (rdev->ops->update_owe_info)
1298 : 0 : ret = rdev->ops->update_owe_info(&rdev->wiphy, dev, oweinfo);
1299 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
1300 : 0 : return ret;
1301 : : }
1302 : :
1303 : : static inline int
1304 : 0 : rdev_probe_mesh_link(struct cfg80211_registered_device *rdev,
1305 : : struct net_device *dev, const u8 *dest,
1306 : : const void *buf, size_t len)
1307 : : {
1308 : 0 : int ret;
1309 : :
1310 : 0 : trace_rdev_probe_mesh_link(&rdev->wiphy, dev, dest, buf, len);
1311 : 0 : ret = rdev->ops->probe_mesh_link(&rdev->wiphy, dev, buf, len);
1312 : 0 : trace_rdev_return_int(&rdev->wiphy, ret);
1313 : 0 : return ret;
1314 : : }
1315 : :
1316 : : #endif /* __CFG80211_RDEV_OPS */
|