Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
fork

Configure Feed

Select the types of activity you want to include in your feed.

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