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