root/net/wireless/rdev-ops.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. rdev_suspend
  2. rdev_resume
  3. rdev_set_wakeup
  4. rdev_add_virtual_intf
  5. rdev_del_virtual_intf
  6. rdev_change_virtual_intf
  7. rdev_add_key
  8. rdev_get_key
  9. rdev_del_key
  10. rdev_set_default_key
  11. rdev_set_default_mgmt_key
  12. rdev_start_ap
  13. rdev_change_beacon
  14. rdev_stop_ap
  15. rdev_add_station
  16. rdev_del_station
  17. rdev_change_station
  18. rdev_get_station
  19. rdev_dump_station
  20. rdev_add_mpath
  21. rdev_del_mpath
  22. rdev_change_mpath
  23. rdev_get_mpath
  24. rdev_get_mpp
  25. rdev_dump_mpath
  26. rdev_dump_mpp
  27. rdev_get_mesh_config
  28. rdev_update_mesh_config
  29. rdev_join_mesh
  30. rdev_leave_mesh
  31. rdev_join_ocb
  32. rdev_leave_ocb
  33. rdev_change_bss
  34. rdev_set_txq_params
  35. rdev_libertas_set_mesh_channel
  36. rdev_set_monitor_channel
  37. rdev_scan
  38. rdev_abort_scan
  39. rdev_auth
  40. rdev_assoc
  41. rdev_deauth
  42. rdev_disassoc
  43. rdev_connect
  44. rdev_update_connect_params
  45. rdev_disconnect
  46. rdev_join_ibss
  47. rdev_leave_ibss
  48. rdev_set_wiphy_params
  49. rdev_set_tx_power
  50. rdev_get_tx_power
  51. rdev_set_wds_peer
  52. rdev_set_multicast_to_unicast
  53. rdev_get_txq_stats
  54. rdev_rfkill_poll
  55. rdev_testmode_cmd
  56. rdev_testmode_dump
  57. rdev_set_bitrate_mask
  58. rdev_dump_survey
  59. rdev_set_pmksa
  60. rdev_del_pmksa
  61. rdev_flush_pmksa
  62. rdev_remain_on_channel
  63. rdev_cancel_remain_on_channel
  64. rdev_mgmt_tx
  65. rdev_tx_control_port
  66. rdev_mgmt_tx_cancel_wait
  67. rdev_set_power_mgmt
  68. rdev_set_cqm_rssi_config
  69. rdev_set_cqm_rssi_range_config
  70. rdev_set_cqm_txe_config
  71. rdev_mgmt_frame_register
  72. rdev_set_antenna
  73. rdev_get_antenna
  74. rdev_sched_scan_start
  75. rdev_sched_scan_stop
  76. rdev_set_rekey_data
  77. rdev_tdls_mgmt
  78. rdev_tdls_oper
  79. rdev_probe_client
  80. rdev_set_noack_map
  81. rdev_get_channel
  82. rdev_start_p2p_device
  83. rdev_stop_p2p_device
  84. rdev_start_nan
  85. rdev_stop_nan
  86. rdev_add_nan_func
  87. rdev_del_nan_func
  88. rdev_nan_change_conf
  89. rdev_set_mac_acl
  90. rdev_update_ft_ies
  91. rdev_crit_proto_start
  92. rdev_crit_proto_stop
  93. rdev_channel_switch
  94. rdev_set_qos_map
  95. rdev_set_ap_chanwidth
  96. rdev_add_tx_ts
  97. rdev_del_tx_ts
  98. rdev_tdls_channel_switch
  99. rdev_tdls_cancel_channel_switch
  100. rdev_start_radar_detection
  101. rdev_end_cac
  102. rdev_set_mcast_rate
  103. rdev_set_coalesce
  104. rdev_set_pmk
  105. rdev_del_pmk
  106. rdev_external_auth
  107. rdev_get_ftm_responder_stats
  108. rdev_start_pmsr
  109. rdev_abort_pmsr
  110. rdev_update_owe_info
  111. rdev_probe_mesh_link

   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 
 542         if (!rdev->ops->set_wiphy_params)
 543                 return -EOPNOTSUPP;
 544 
 545         trace_rdev_set_wiphy_params(&rdev->wiphy, changed);
 546         ret = rdev->ops->set_wiphy_params(&rdev->wiphy, changed);
 547         trace_rdev_return_int(&rdev->wiphy, ret);
 548         return ret;
 549 }
 550 
 551 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         int ret;
 556         trace_rdev_set_tx_power(&rdev->wiphy, wdev, type, mbm);
 557         ret = rdev->ops->set_tx_power(&rdev->wiphy, wdev, type, mbm);
 558         trace_rdev_return_int(&rdev->wiphy, ret);
 559         return ret;
 560 }
 561 
 562 static inline int rdev_get_tx_power(struct cfg80211_registered_device *rdev,
 563                                     struct wireless_dev *wdev, int *dbm)
 564 {
 565         int ret;
 566         trace_rdev_get_tx_power(&rdev->wiphy, wdev);
 567         ret = rdev->ops->get_tx_power(&rdev->wiphy, wdev, dbm);
 568         trace_rdev_return_int_int(&rdev->wiphy, ret, *dbm);
 569         return ret;
 570 }
 571 
 572 static inline int rdev_set_wds_peer(struct cfg80211_registered_device *rdev,
 573                                     struct net_device *dev, const u8 *addr)
 574 {
 575         int ret;
 576         trace_rdev_set_wds_peer(&rdev->wiphy, dev, addr);
 577         ret = rdev->ops->set_wds_peer(&rdev->wiphy, dev, addr);
 578         trace_rdev_return_int(&rdev->wiphy, ret);
 579         return ret;
 580 }
 581 
 582 static inline int
 583 rdev_set_multicast_to_unicast(struct cfg80211_registered_device *rdev,
 584                               struct net_device *dev,
 585                               const bool enabled)
 586 {
 587         int ret;
 588         trace_rdev_set_multicast_to_unicast(&rdev->wiphy, dev, enabled);
 589         ret = rdev->ops->set_multicast_to_unicast(&rdev->wiphy, dev, enabled);
 590         trace_rdev_return_int(&rdev->wiphy, ret);
 591         return ret;
 592 }
 593 
 594 static inline int
 595 rdev_get_txq_stats(struct cfg80211_registered_device *rdev,
 596                    struct wireless_dev *wdev,
 597                    struct cfg80211_txq_stats *txqstats)
 598 {
 599         int ret;
 600         trace_rdev_get_txq_stats(&rdev->wiphy, wdev);
 601         ret = rdev->ops->get_txq_stats(&rdev->wiphy, wdev, txqstats);
 602         trace_rdev_return_int(&rdev->wiphy, ret);
 603         return ret;
 604 }
 605 
 606 static inline void rdev_rfkill_poll(struct cfg80211_registered_device *rdev)
 607 {
 608         trace_rdev_rfkill_poll(&rdev->wiphy);
 609         rdev->ops->rfkill_poll(&rdev->wiphy);
 610         trace_rdev_return_void(&rdev->wiphy);
 611 }
 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 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         int ret;
 645         trace_rdev_set_bitrate_mask(&rdev->wiphy, dev, peer, mask);
 646         ret = rdev->ops->set_bitrate_mask(&rdev->wiphy, dev, peer, mask);
 647         trace_rdev_return_int(&rdev->wiphy, ret);
 648         return ret;
 649 }
 650 
 651 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         int ret;
 656         trace_rdev_dump_survey(&rdev->wiphy, netdev, idx);
 657         ret = rdev->ops->dump_survey(&rdev->wiphy, netdev, idx, info);
 658         if (ret < 0)
 659                 trace_rdev_return_int(&rdev->wiphy, ret);
 660         else
 661                 trace_rdev_return_int_survey_info(&rdev->wiphy, ret, info);
 662         return ret;
 663 }
 664 
 665 static inline int rdev_set_pmksa(struct cfg80211_registered_device *rdev,
 666                                  struct net_device *netdev,
 667                                  struct cfg80211_pmksa *pmksa)
 668 {
 669         int ret;
 670         trace_rdev_set_pmksa(&rdev->wiphy, netdev, pmksa);
 671         ret = rdev->ops->set_pmksa(&rdev->wiphy, netdev, pmksa);
 672         trace_rdev_return_int(&rdev->wiphy, ret);
 673         return ret;
 674 }
 675 
 676 static inline int rdev_del_pmksa(struct cfg80211_registered_device *rdev,
 677                                  struct net_device *netdev,
 678                                  struct cfg80211_pmksa *pmksa)
 679 {
 680         int ret;
 681         trace_rdev_del_pmksa(&rdev->wiphy, netdev, pmksa);
 682         ret = rdev->ops->del_pmksa(&rdev->wiphy, netdev, pmksa);
 683         trace_rdev_return_int(&rdev->wiphy, ret);
 684         return ret;
 685 }
 686 
 687 static inline int rdev_flush_pmksa(struct cfg80211_registered_device *rdev,
 688                                    struct net_device *netdev)
 689 {
 690         int ret;
 691         trace_rdev_flush_pmksa(&rdev->wiphy, netdev);
 692         ret = rdev->ops->flush_pmksa(&rdev->wiphy, netdev);
 693         trace_rdev_return_int(&rdev->wiphy, ret);
 694         return ret;
 695 }
 696 
 697 static inline int
 698 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         int ret;
 704         trace_rdev_remain_on_channel(&rdev->wiphy, wdev, chan, duration);
 705         ret = rdev->ops->remain_on_channel(&rdev->wiphy, wdev, chan,
 706                                            duration, cookie);
 707         trace_rdev_return_int_cookie(&rdev->wiphy, ret, *cookie);
 708         return ret;
 709 }
 710 
 711 static inline int
 712 rdev_cancel_remain_on_channel(struct cfg80211_registered_device *rdev,
 713                               struct wireless_dev *wdev, u64 cookie)
 714 {
 715         int ret;
 716         trace_rdev_cancel_remain_on_channel(&rdev->wiphy, wdev, cookie);
 717         ret = rdev->ops->cancel_remain_on_channel(&rdev->wiphy, wdev, cookie);
 718         trace_rdev_return_int(&rdev->wiphy, ret);
 719         return ret;
 720 }
 721 
 722 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         int ret;
 728         trace_rdev_mgmt_tx(&rdev->wiphy, wdev, params);
 729         ret = rdev->ops->mgmt_tx(&rdev->wiphy, wdev, params, cookie);
 730         trace_rdev_return_int_cookie(&rdev->wiphy, ret, *cookie);
 731         return ret;
 732 }
 733 
 734 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         int ret;
 741         trace_rdev_tx_control_port(&rdev->wiphy, dev, buf, len,
 742                                    dest, proto, noencrypt);
 743         ret = rdev->ops->tx_control_port(&rdev->wiphy, dev, buf, len,
 744                                          dest, proto, noencrypt);
 745         trace_rdev_return_int(&rdev->wiphy, ret);
 746         return ret;
 747 }
 748 
 749 static inline int
 750 rdev_mgmt_tx_cancel_wait(struct cfg80211_registered_device *rdev,
 751                          struct wireless_dev *wdev, u64 cookie)
 752 {
 753         int ret;
 754         trace_rdev_mgmt_tx_cancel_wait(&rdev->wiphy, wdev, cookie);
 755         ret = rdev->ops->mgmt_tx_cancel_wait(&rdev->wiphy, wdev, cookie);
 756         trace_rdev_return_int(&rdev->wiphy, ret);
 757         return ret;
 758 }
 759 
 760 static inline int rdev_set_power_mgmt(struct cfg80211_registered_device *rdev,
 761                                       struct net_device *dev, bool enabled,
 762                                       int timeout)
 763 {
 764         int ret;
 765         trace_rdev_set_power_mgmt(&rdev->wiphy, dev, enabled, timeout);
 766         ret = rdev->ops->set_power_mgmt(&rdev->wiphy, dev, enabled, timeout);
 767         trace_rdev_return_int(&rdev->wiphy, ret);
 768         return ret;
 769 }
 770 
 771 static inline int
 772 rdev_set_cqm_rssi_config(struct cfg80211_registered_device *rdev,
 773                          struct net_device *dev, s32 rssi_thold, u32 rssi_hyst)
 774 {
 775         int ret;
 776         trace_rdev_set_cqm_rssi_config(&rdev->wiphy, dev, rssi_thold,
 777                                        rssi_hyst);
 778         ret = rdev->ops->set_cqm_rssi_config(&rdev->wiphy, dev, rssi_thold,
 779                                        rssi_hyst);
 780         trace_rdev_return_int(&rdev->wiphy, ret);
 781         return ret;
 782 }
 783 
 784 static inline int
 785 rdev_set_cqm_rssi_range_config(struct cfg80211_registered_device *rdev,
 786                                struct net_device *dev, s32 low, s32 high)
 787 {
 788         int ret;
 789         trace_rdev_set_cqm_rssi_range_config(&rdev->wiphy, dev, low, high);
 790         ret = rdev->ops->set_cqm_rssi_range_config(&rdev->wiphy, dev,
 791                                                    low, high);
 792         trace_rdev_return_int(&rdev->wiphy, ret);
 793         return ret;
 794 }
 795 
 796 static inline int
 797 rdev_set_cqm_txe_config(struct cfg80211_registered_device *rdev,
 798                         struct net_device *dev, u32 rate, u32 pkts, u32 intvl)
 799 {
 800         int ret;
 801         trace_rdev_set_cqm_txe_config(&rdev->wiphy, dev, rate, pkts, intvl);
 802         ret = rdev->ops->set_cqm_txe_config(&rdev->wiphy, dev, rate, pkts,
 803                                              intvl);
 804         trace_rdev_return_int(&rdev->wiphy, ret);
 805         return ret;
 806 }
 807 
 808 static inline void
 809 rdev_mgmt_frame_register(struct cfg80211_registered_device *rdev,
 810                          struct wireless_dev *wdev, u16 frame_type, bool reg)
 811 {
 812         might_sleep();
 813 
 814         trace_rdev_mgmt_frame_register(&rdev->wiphy, wdev , frame_type, reg);
 815         rdev->ops->mgmt_frame_register(&rdev->wiphy, wdev , frame_type, reg);
 816         trace_rdev_return_void(&rdev->wiphy);
 817 }
 818 
 819 static inline int rdev_set_antenna(struct cfg80211_registered_device *rdev,
 820                                    u32 tx_ant, u32 rx_ant)
 821 {
 822         int ret;
 823         trace_rdev_set_antenna(&rdev->wiphy, tx_ant, rx_ant);
 824         ret = rdev->ops->set_antenna(&rdev->wiphy, tx_ant, rx_ant);
 825         trace_rdev_return_int(&rdev->wiphy, ret);
 826         return ret;
 827 }
 828 
 829 static inline int rdev_get_antenna(struct cfg80211_registered_device *rdev,
 830                                    u32 *tx_ant, u32 *rx_ant)
 831 {
 832         int ret;
 833         trace_rdev_get_antenna(&rdev->wiphy);
 834         ret = rdev->ops->get_antenna(&rdev->wiphy, tx_ant, rx_ant);
 835         if (ret)
 836                 trace_rdev_return_int(&rdev->wiphy, ret);
 837         else
 838                 trace_rdev_return_int_tx_rx(&rdev->wiphy, ret, *tx_ant,
 839                                             *rx_ant);
 840         return ret;
 841 }
 842 
 843 static inline int
 844 rdev_sched_scan_start(struct cfg80211_registered_device *rdev,
 845                       struct net_device *dev,
 846                       struct cfg80211_sched_scan_request *request)
 847 {
 848         int ret;
 849         trace_rdev_sched_scan_start(&rdev->wiphy, dev, request->reqid);
 850         ret = rdev->ops->sched_scan_start(&rdev->wiphy, dev, request);
 851         trace_rdev_return_int(&rdev->wiphy, ret);
 852         return ret;
 853 }
 854 
 855 static inline int rdev_sched_scan_stop(struct cfg80211_registered_device *rdev,
 856                                        struct net_device *dev, u64 reqid)
 857 {
 858         int ret;
 859         trace_rdev_sched_scan_stop(&rdev->wiphy, dev, reqid);
 860         ret = rdev->ops->sched_scan_stop(&rdev->wiphy, dev, reqid);
 861         trace_rdev_return_int(&rdev->wiphy, ret);
 862         return ret;
 863 }
 864 
 865 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         int ret;
 870         trace_rdev_set_rekey_data(&rdev->wiphy, dev);
 871         ret = rdev->ops->set_rekey_data(&rdev->wiphy, dev, data);
 872         trace_rdev_return_int(&rdev->wiphy, ret);
 873         return ret;
 874 }
 875 
 876 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         int ret;
 883         trace_rdev_tdls_mgmt(&rdev->wiphy, dev, peer, action_code,
 884                              dialog_token, status_code, peer_capability,
 885                              initiator, buf, len);
 886         ret = rdev->ops->tdls_mgmt(&rdev->wiphy, dev, peer, action_code,
 887                                    dialog_token, status_code, peer_capability,
 888                                    initiator, buf, len);
 889         trace_rdev_return_int(&rdev->wiphy, ret);
 890         return ret;
 891 }
 892 
 893 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         int ret;
 898         trace_rdev_tdls_oper(&rdev->wiphy, dev, peer, oper);
 899         ret = rdev->ops->tdls_oper(&rdev->wiphy, dev, peer, oper);
 900         trace_rdev_return_int(&rdev->wiphy, ret);
 901         return ret;
 902 }
 903 
 904 static inline int rdev_probe_client(struct cfg80211_registered_device *rdev,
 905                                     struct net_device *dev, const u8 *peer,
 906                                     u64 *cookie)
 907 {
 908         int ret;
 909         trace_rdev_probe_client(&rdev->wiphy, dev, peer);
 910         ret = rdev->ops->probe_client(&rdev->wiphy, dev, peer, cookie);
 911         trace_rdev_return_int_cookie(&rdev->wiphy, ret, *cookie);
 912         return ret;
 913 }
 914 
 915 static inline int rdev_set_noack_map(struct cfg80211_registered_device *rdev,
 916                                      struct net_device *dev, u16 noack_map)
 917 {
 918         int ret;
 919         trace_rdev_set_noack_map(&rdev->wiphy, dev, noack_map);
 920         ret = rdev->ops->set_noack_map(&rdev->wiphy, dev, noack_map);
 921         trace_rdev_return_int(&rdev->wiphy, ret);
 922         return ret;
 923 }
 924 
 925 static inline int
 926 rdev_get_channel(struct cfg80211_registered_device *rdev,
 927                  struct wireless_dev *wdev,
 928                  struct cfg80211_chan_def *chandef)
 929 {
 930         int ret;
 931 
 932         trace_rdev_get_channel(&rdev->wiphy, wdev);
 933         ret = rdev->ops->get_channel(&rdev->wiphy, wdev, chandef);
 934         trace_rdev_return_chandef(&rdev->wiphy, ret, chandef);
 935 
 936         return ret;
 937 }
 938 
 939 static inline int rdev_start_p2p_device(struct cfg80211_registered_device *rdev,
 940                                         struct wireless_dev *wdev)
 941 {
 942         int ret;
 943 
 944         trace_rdev_start_p2p_device(&rdev->wiphy, wdev);
 945         ret = rdev->ops->start_p2p_device(&rdev->wiphy, wdev);
 946         trace_rdev_return_int(&rdev->wiphy, ret);
 947         return ret;
 948 }
 949 
 950 static inline void rdev_stop_p2p_device(struct cfg80211_registered_device *rdev,
 951                                         struct wireless_dev *wdev)
 952 {
 953         trace_rdev_stop_p2p_device(&rdev->wiphy, wdev);
 954         rdev->ops->stop_p2p_device(&rdev->wiphy, wdev);
 955         trace_rdev_return_void(&rdev->wiphy);
 956 }
 957 
 958 static inline int rdev_start_nan(struct cfg80211_registered_device *rdev,
 959                                  struct wireless_dev *wdev,
 960                                  struct cfg80211_nan_conf *conf)
 961 {
 962         int ret;
 963 
 964         trace_rdev_start_nan(&rdev->wiphy, wdev, conf);
 965         ret = rdev->ops->start_nan(&rdev->wiphy, wdev, conf);
 966         trace_rdev_return_int(&rdev->wiphy, ret);
 967         return ret;
 968 }
 969 
 970 static inline void rdev_stop_nan(struct cfg80211_registered_device *rdev,
 971                                  struct wireless_dev *wdev)
 972 {
 973         trace_rdev_stop_nan(&rdev->wiphy, wdev);
 974         rdev->ops->stop_nan(&rdev->wiphy, wdev);
 975         trace_rdev_return_void(&rdev->wiphy);
 976 }
 977 
 978 static inline int
 979 rdev_add_nan_func(struct cfg80211_registered_device *rdev,
 980                   struct wireless_dev *wdev,
 981                   struct cfg80211_nan_func *nan_func)
 982 {
 983         int ret;
 984 
 985         trace_rdev_add_nan_func(&rdev->wiphy, wdev, nan_func);
 986         ret = rdev->ops->add_nan_func(&rdev->wiphy, wdev, nan_func);
 987         trace_rdev_return_int(&rdev->wiphy, ret);
 988         return ret;
 989 }
 990 
 991 static inline void rdev_del_nan_func(struct cfg80211_registered_device *rdev,
 992                                     struct wireless_dev *wdev, u64 cookie)
 993 {
 994         trace_rdev_del_nan_func(&rdev->wiphy, wdev, cookie);
 995         rdev->ops->del_nan_func(&rdev->wiphy, wdev, cookie);
 996         trace_rdev_return_void(&rdev->wiphy);
 997 }
 998 
 999 static inline int
1000 rdev_nan_change_conf(struct cfg80211_registered_device *rdev,
1001                      struct wireless_dev *wdev,
1002                      struct cfg80211_nan_conf *conf, u32 changes)
1003 {
1004         int ret;
1005 
1006         trace_rdev_nan_change_conf(&rdev->wiphy, wdev, conf, changes);
1007         if (rdev->ops->nan_change_conf)
1008                 ret = rdev->ops->nan_change_conf(&rdev->wiphy, wdev, conf,
1009                                                  changes);
1010         else
1011                 ret = -ENOTSUPP;
1012         trace_rdev_return_int(&rdev->wiphy, ret);
1013         return ret;
1014 }
1015 
1016 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         int ret;
1021 
1022         trace_rdev_set_mac_acl(&rdev->wiphy, dev, params);
1023         ret = rdev->ops->set_mac_acl(&rdev->wiphy, dev, params);
1024         trace_rdev_return_int(&rdev->wiphy, ret);
1025         return ret;
1026 }
1027 
1028 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         int ret;
1033 
1034         trace_rdev_update_ft_ies(&rdev->wiphy, dev, ftie);
1035         ret = rdev->ops->update_ft_ies(&rdev->wiphy, dev, ftie);
1036         trace_rdev_return_int(&rdev->wiphy, ret);
1037         return ret;
1038 }
1039 
1040 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         int ret;
1046 
1047         trace_rdev_crit_proto_start(&rdev->wiphy, wdev, protocol, duration);
1048         ret = rdev->ops->crit_proto_start(&rdev->wiphy, wdev,
1049                                           protocol, duration);
1050         trace_rdev_return_int(&rdev->wiphy, ret);
1051         return ret;
1052 }
1053 
1054 static inline void rdev_crit_proto_stop(struct cfg80211_registered_device *rdev,
1055                                        struct wireless_dev *wdev)
1056 {
1057         trace_rdev_crit_proto_stop(&rdev->wiphy, wdev);
1058         rdev->ops->crit_proto_stop(&rdev->wiphy, wdev);
1059         trace_rdev_return_void(&rdev->wiphy);
1060 }
1061 
1062 static inline int rdev_channel_switch(struct cfg80211_registered_device *rdev,
1063                                       struct net_device *dev,
1064                                       struct cfg80211_csa_settings *params)
1065 {
1066         int ret;
1067 
1068         trace_rdev_channel_switch(&rdev->wiphy, dev, params);
1069         ret = rdev->ops->channel_switch(&rdev->wiphy, dev, params);
1070         trace_rdev_return_int(&rdev->wiphy, ret);
1071         return ret;
1072 }
1073 
1074 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         int ret = -EOPNOTSUPP;
1079 
1080         if (rdev->ops->set_qos_map) {
1081                 trace_rdev_set_qos_map(&rdev->wiphy, dev, qos_map);
1082                 ret = rdev->ops->set_qos_map(&rdev->wiphy, dev, qos_map);
1083                 trace_rdev_return_int(&rdev->wiphy, ret);
1084         }
1085 
1086         return ret;
1087 }
1088 
1089 static inline int
1090 rdev_set_ap_chanwidth(struct cfg80211_registered_device *rdev,
1091                       struct net_device *dev, struct cfg80211_chan_def *chandef)
1092 {
1093         int ret;
1094 
1095         trace_rdev_set_ap_chanwidth(&rdev->wiphy, dev, chandef);
1096         ret = rdev->ops->set_ap_chanwidth(&rdev->wiphy, dev, chandef);
1097         trace_rdev_return_int(&rdev->wiphy, ret);
1098 
1099         return ret;
1100 }
1101 
1102 static inline int
1103 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         int ret = -EOPNOTSUPP;
1108 
1109         trace_rdev_add_tx_ts(&rdev->wiphy, dev, tsid, peer,
1110                              user_prio, admitted_time);
1111         if (rdev->ops->add_tx_ts)
1112                 ret = rdev->ops->add_tx_ts(&rdev->wiphy, dev, tsid, peer,
1113                                            user_prio, admitted_time);
1114         trace_rdev_return_int(&rdev->wiphy, ret);
1115 
1116         return ret;
1117 }
1118 
1119 static inline int
1120 rdev_del_tx_ts(struct cfg80211_registered_device *rdev,
1121                struct net_device *dev, u8 tsid, const u8 *peer)
1122 {
1123         int ret = -EOPNOTSUPP;
1124 
1125         trace_rdev_del_tx_ts(&rdev->wiphy, dev, tsid, peer);
1126         if (rdev->ops->del_tx_ts)
1127                 ret = rdev->ops->del_tx_ts(&rdev->wiphy, dev, tsid, peer);
1128         trace_rdev_return_int(&rdev->wiphy, ret);
1129 
1130         return ret;
1131 }
1132 
1133 static inline int
1134 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         int ret;
1139 
1140         trace_rdev_tdls_channel_switch(&rdev->wiphy, dev, addr, oper_class,
1141                                        chandef);
1142         ret = rdev->ops->tdls_channel_switch(&rdev->wiphy, dev, addr,
1143                                              oper_class, chandef);
1144         trace_rdev_return_int(&rdev->wiphy, ret);
1145         return ret;
1146 }
1147 
1148 static inline void
1149 rdev_tdls_cancel_channel_switch(struct cfg80211_registered_device *rdev,
1150                                 struct net_device *dev, const u8 *addr)
1151 {
1152         trace_rdev_tdls_cancel_channel_switch(&rdev->wiphy, dev, addr);
1153         rdev->ops->tdls_cancel_channel_switch(&rdev->wiphy, dev, addr);
1154         trace_rdev_return_void(&rdev->wiphy);
1155 }
1156 
1157 static inline int
1158 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         int ret = -ENOTSUPP;
1164 
1165         trace_rdev_start_radar_detection(&rdev->wiphy, dev, chandef,
1166                                          cac_time_ms);
1167         if (rdev->ops->start_radar_detection)
1168                 ret = rdev->ops->start_radar_detection(&rdev->wiphy, dev,
1169                                                        chandef, cac_time_ms);
1170         trace_rdev_return_int(&rdev->wiphy, ret);
1171         return ret;
1172 }
1173 
1174 static inline void
1175 rdev_end_cac(struct cfg80211_registered_device *rdev,
1176              struct net_device *dev)
1177 {
1178         trace_rdev_end_cac(&rdev->wiphy, dev);
1179         if (rdev->ops->end_cac)
1180                 rdev->ops->end_cac(&rdev->wiphy, dev);
1181         trace_rdev_return_void(&rdev->wiphy);
1182 }
1183 
1184 static inline int
1185 rdev_set_mcast_rate(struct cfg80211_registered_device *rdev,
1186                     struct net_device *dev,
1187                     int mcast_rate[NUM_NL80211_BANDS])
1188 {
1189         int ret = -ENOTSUPP;
1190 
1191         trace_rdev_set_mcast_rate(&rdev->wiphy, dev, mcast_rate);
1192         if (rdev->ops->set_mcast_rate)
1193                 ret = rdev->ops->set_mcast_rate(&rdev->wiphy, dev, mcast_rate);
1194         trace_rdev_return_int(&rdev->wiphy, ret);
1195         return ret;
1196 }
1197 
1198 static inline int
1199 rdev_set_coalesce(struct cfg80211_registered_device *rdev,
1200                   struct cfg80211_coalesce *coalesce)
1201 {
1202         int ret = -ENOTSUPP;
1203 
1204         trace_rdev_set_coalesce(&rdev->wiphy, coalesce);
1205         if (rdev->ops->set_coalesce)
1206                 ret = rdev->ops->set_coalesce(&rdev->wiphy, coalesce);
1207         trace_rdev_return_int(&rdev->wiphy, ret);
1208         return ret;
1209 }
1210 
1211 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         int ret = -EOPNOTSUPP;
1216 
1217         trace_rdev_set_pmk(&rdev->wiphy, dev, pmk_conf);
1218         if (rdev->ops->set_pmk)
1219                 ret = rdev->ops->set_pmk(&rdev->wiphy, dev, pmk_conf);
1220         trace_rdev_return_int(&rdev->wiphy, ret);
1221         return ret;
1222 }
1223 
1224 static inline int rdev_del_pmk(struct cfg80211_registered_device *rdev,
1225                                struct net_device *dev, const u8 *aa)
1226 {
1227         int ret = -EOPNOTSUPP;
1228 
1229         trace_rdev_del_pmk(&rdev->wiphy, dev, aa);
1230         if (rdev->ops->del_pmk)
1231                 ret = rdev->ops->del_pmk(&rdev->wiphy, dev, aa);
1232         trace_rdev_return_int(&rdev->wiphy, ret);
1233         return ret;
1234 }
1235 
1236 static inline int
1237 rdev_external_auth(struct cfg80211_registered_device *rdev,
1238                    struct net_device *dev,
1239                    struct cfg80211_external_auth_params *params)
1240 {
1241         int ret = -EOPNOTSUPP;
1242 
1243         trace_rdev_external_auth(&rdev->wiphy, dev, params);
1244         if (rdev->ops->external_auth)
1245                 ret = rdev->ops->external_auth(&rdev->wiphy, dev, params);
1246         trace_rdev_return_int(&rdev->wiphy, ret);
1247         return ret;
1248 }
1249 
1250 static inline int
1251 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         int ret = -EOPNOTSUPP;
1256 
1257         trace_rdev_get_ftm_responder_stats(&rdev->wiphy, dev, ftm_stats);
1258         if (rdev->ops->get_ftm_responder_stats)
1259                 ret = rdev->ops->get_ftm_responder_stats(&rdev->wiphy, dev,
1260                                                         ftm_stats);
1261         trace_rdev_return_int(&rdev->wiphy, ret);
1262         return ret;
1263 }
1264 
1265 static inline int
1266 rdev_start_pmsr(struct cfg80211_registered_device *rdev,
1267                 struct wireless_dev *wdev,
1268                 struct cfg80211_pmsr_request *request)
1269 {
1270         int ret = -EOPNOTSUPP;
1271 
1272         trace_rdev_start_pmsr(&rdev->wiphy, wdev, request->cookie);
1273         if (rdev->ops->start_pmsr)
1274                 ret = rdev->ops->start_pmsr(&rdev->wiphy, wdev, request);
1275         trace_rdev_return_int(&rdev->wiphy, ret);
1276         return ret;
1277 }
1278 
1279 static inline void
1280 rdev_abort_pmsr(struct cfg80211_registered_device *rdev,
1281                 struct wireless_dev *wdev,
1282                 struct cfg80211_pmsr_request *request)
1283 {
1284         trace_rdev_abort_pmsr(&rdev->wiphy, wdev, request->cookie);
1285         if (rdev->ops->abort_pmsr)
1286                 rdev->ops->abort_pmsr(&rdev->wiphy, wdev, request);
1287         trace_rdev_return_void(&rdev->wiphy);
1288 }
1289 
1290 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         int ret = -EOPNOTSUPP;
1295 
1296         trace_rdev_update_owe_info(&rdev->wiphy, dev, oweinfo);
1297         if (rdev->ops->update_owe_info)
1298                 ret = rdev->ops->update_owe_info(&rdev->wiphy, dev, oweinfo);
1299         trace_rdev_return_int(&rdev->wiphy, ret);
1300         return ret;
1301 }
1302 
1303 static inline int
1304 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         int ret;
1309 
1310         trace_rdev_probe_mesh_link(&rdev->wiphy, dev, dest, buf, len);
1311         ret = rdev->ops->probe_mesh_link(&rdev->wiphy, dev, buf, len);
1312         trace_rdev_return_int(&rdev->wiphy, ret);
1313         return ret;
1314 }
1315 
1316 #endif /* __CFG80211_RDEV_OPS */

/* [<][>][^][v][top][bottom][index][help] */