driver_i.h revision 051af73b8f8014eff33330aead0f36944b3403e6
1/* 2 * wpa_supplicant - Internal driver interface wrappers 3 * Copyright (c) 2003-2009, Jouni Malinen <j@w1.fi> 4 * 5 * This software may be distributed under the terms of the BSD license. 6 * See README for more details. 7 */ 8 9#ifndef DRIVER_I_H 10#define DRIVER_I_H 11 12#include "drivers/driver.h" 13 14/* driver_ops */ 15static inline void * wpa_drv_init(struct wpa_supplicant *wpa_s, 16 const char *ifname) 17{ 18 if (wpa_s->driver->init2) 19 return wpa_s->driver->init2(wpa_s, ifname, 20 wpa_s->global_drv_priv); 21 if (wpa_s->driver->init) { 22 return wpa_s->driver->init(wpa_s, ifname); 23 } 24 return NULL; 25} 26 27static inline void wpa_drv_deinit(struct wpa_supplicant *wpa_s) 28{ 29 if (wpa_s->driver->deinit) 30 wpa_s->driver->deinit(wpa_s->drv_priv); 31} 32 33static inline int wpa_drv_set_param(struct wpa_supplicant *wpa_s, 34 const char *param) 35{ 36 if (wpa_s->driver->set_param) 37 return wpa_s->driver->set_param(wpa_s->drv_priv, param); 38 return 0; 39} 40 41static inline int wpa_drv_set_countermeasures(struct wpa_supplicant *wpa_s, 42 int enabled) 43{ 44 if (wpa_s->driver->set_countermeasures) { 45 return wpa_s->driver->set_countermeasures(wpa_s->drv_priv, 46 enabled); 47 } 48 return -1; 49} 50 51static inline int wpa_drv_authenticate(struct wpa_supplicant *wpa_s, 52 struct wpa_driver_auth_params *params) 53{ 54 if (wpa_s->driver->authenticate) 55 return wpa_s->driver->authenticate(wpa_s->drv_priv, params); 56 return -1; 57} 58 59static inline int wpa_drv_associate(struct wpa_supplicant *wpa_s, 60 struct wpa_driver_associate_params *params) 61{ 62 if (wpa_s->driver->associate) { 63 return wpa_s->driver->associate(wpa_s->drv_priv, params); 64 } 65 return -1; 66} 67 68static inline int wpa_drv_scan(struct wpa_supplicant *wpa_s, 69 struct wpa_driver_scan_params *params) 70{ 71 if (wpa_s->driver->scan2) 72 return wpa_s->driver->scan2(wpa_s->drv_priv, params); 73 return -1; 74} 75 76static inline int wpa_drv_sched_scan(struct wpa_supplicant *wpa_s, 77 struct wpa_driver_scan_params *params, 78 u32 interval) 79{ 80 if (wpa_s->driver->sched_scan) 81 return wpa_s->driver->sched_scan(wpa_s->drv_priv, 82 params, interval); 83 return -1; 84} 85 86static inline int wpa_drv_stop_sched_scan(struct wpa_supplicant *wpa_s) 87{ 88 if (wpa_s->driver->stop_sched_scan) 89 return wpa_s->driver->stop_sched_scan(wpa_s->drv_priv); 90 return -1; 91} 92 93static inline struct wpa_scan_results * wpa_drv_get_scan_results2( 94 struct wpa_supplicant *wpa_s) 95{ 96 if (wpa_s->driver->get_scan_results2) 97 return wpa_s->driver->get_scan_results2(wpa_s->drv_priv); 98 return NULL; 99} 100 101static inline int wpa_drv_get_bssid(struct wpa_supplicant *wpa_s, u8 *bssid) 102{ 103 if (wpa_s->driver->get_bssid) { 104 return wpa_s->driver->get_bssid(wpa_s->drv_priv, bssid); 105 } 106 return -1; 107} 108 109static inline int wpa_drv_get_ssid(struct wpa_supplicant *wpa_s, u8 *ssid) 110{ 111 if (wpa_s->driver->get_ssid) { 112 return wpa_s->driver->get_ssid(wpa_s->drv_priv, ssid); 113 } 114 return -1; 115} 116 117static inline int wpa_drv_set_key(struct wpa_supplicant *wpa_s, 118 enum wpa_alg alg, const u8 *addr, 119 int key_idx, int set_tx, 120 const u8 *seq, size_t seq_len, 121 const u8 *key, size_t key_len) 122{ 123 if (wpa_s->driver->set_key) { 124 wpa_s->keys_cleared = 0; 125 return wpa_s->driver->set_key(wpa_s->ifname, wpa_s->drv_priv, 126 alg, addr, key_idx, set_tx, 127 seq, seq_len, key, key_len); 128 } 129 return -1; 130} 131 132static inline int wpa_drv_sta_deauth(struct wpa_supplicant *wpa_s, 133 const u8 *addr, int reason_code) 134{ 135 if (wpa_s->driver->sta_deauth) { 136 return wpa_s->driver->sta_deauth(wpa_s->drv_priv, 137 wpa_s->own_addr, addr, 138 reason_code); 139 } 140 return -1; 141} 142 143static inline int wpa_drv_deauthenticate(struct wpa_supplicant *wpa_s, 144 const u8 *addr, int reason_code) 145{ 146 if (wpa_s->driver->deauthenticate) { 147 return wpa_s->driver->deauthenticate(wpa_s->drv_priv, addr, 148 reason_code); 149 } 150 return -1; 151} 152 153static inline int wpa_drv_add_pmkid(struct wpa_supplicant *wpa_s, 154 const u8 *bssid, const u8 *pmkid) 155{ 156 if (wpa_s->driver->add_pmkid) { 157 return wpa_s->driver->add_pmkid(wpa_s->drv_priv, bssid, pmkid); 158 } 159 return -1; 160} 161 162static inline int wpa_drv_remove_pmkid(struct wpa_supplicant *wpa_s, 163 const u8 *bssid, const u8 *pmkid) 164{ 165 if (wpa_s->driver->remove_pmkid) { 166 return wpa_s->driver->remove_pmkid(wpa_s->drv_priv, bssid, 167 pmkid); 168 } 169 return -1; 170} 171 172static inline int wpa_drv_flush_pmkid(struct wpa_supplicant *wpa_s) 173{ 174 if (wpa_s->driver->flush_pmkid) { 175 return wpa_s->driver->flush_pmkid(wpa_s->drv_priv); 176 } 177 return -1; 178} 179 180static inline int wpa_drv_get_capa(struct wpa_supplicant *wpa_s, 181 struct wpa_driver_capa *capa) 182{ 183 if (wpa_s->driver->get_capa) { 184 return wpa_s->driver->get_capa(wpa_s->drv_priv, capa); 185 } 186 return -1; 187} 188 189static inline void wpa_drv_poll(struct wpa_supplicant *wpa_s) 190{ 191 if (wpa_s->driver->poll) { 192 wpa_s->driver->poll(wpa_s->drv_priv); 193 } 194} 195 196static inline const char * wpa_drv_get_ifname(struct wpa_supplicant *wpa_s) 197{ 198 if (wpa_s->driver->get_ifname) { 199 return wpa_s->driver->get_ifname(wpa_s->drv_priv); 200 } 201 return NULL; 202} 203 204static inline const u8 * wpa_drv_get_mac_addr(struct wpa_supplicant *wpa_s) 205{ 206 if (wpa_s->driver->get_mac_addr) { 207 return wpa_s->driver->get_mac_addr(wpa_s->drv_priv); 208 } 209 return NULL; 210} 211 212static inline int wpa_drv_send_eapol(struct wpa_supplicant *wpa_s, 213 const u8 *dst, u16 proto, 214 const u8 *data, size_t data_len) 215{ 216 if (wpa_s->driver->send_eapol) 217 return wpa_s->driver->send_eapol(wpa_s->drv_priv, dst, proto, 218 data, data_len); 219 return -1; 220} 221 222static inline int wpa_drv_set_operstate(struct wpa_supplicant *wpa_s, 223 int state) 224{ 225 if (wpa_s->driver->set_operstate) 226 return wpa_s->driver->set_operstate(wpa_s->drv_priv, state); 227 return 0; 228} 229 230static inline int wpa_drv_mlme_setprotection(struct wpa_supplicant *wpa_s, 231 const u8 *addr, int protect_type, 232 int key_type) 233{ 234 if (wpa_s->driver->mlme_setprotection) 235 return wpa_s->driver->mlme_setprotection(wpa_s->drv_priv, addr, 236 protect_type, 237 key_type); 238 return 0; 239} 240 241static inline struct hostapd_hw_modes * 242wpa_drv_get_hw_feature_data(struct wpa_supplicant *wpa_s, u16 *num_modes, 243 u16 *flags) 244{ 245 if (wpa_s->driver->get_hw_feature_data) 246 return wpa_s->driver->get_hw_feature_data(wpa_s->drv_priv, 247 num_modes, flags); 248 return NULL; 249} 250 251static inline int wpa_drv_set_country(struct wpa_supplicant *wpa_s, 252 const char *alpha2) 253{ 254 if (wpa_s->driver->set_country) 255 return wpa_s->driver->set_country(wpa_s->drv_priv, alpha2); 256 return 0; 257} 258 259static inline int wpa_drv_send_mlme(struct wpa_supplicant *wpa_s, 260 const u8 *data, size_t data_len, int noack) 261{ 262 if (wpa_s->driver->send_mlme) 263 return wpa_s->driver->send_mlme(wpa_s->drv_priv, 264 data, data_len, noack); 265 return -1; 266} 267 268static inline int wpa_drv_update_ft_ies(struct wpa_supplicant *wpa_s, 269 const u8 *md, 270 const u8 *ies, size_t ies_len) 271{ 272 if (wpa_s->driver->update_ft_ies) 273 return wpa_s->driver->update_ft_ies(wpa_s->drv_priv, md, 274 ies, ies_len); 275 return -1; 276} 277 278static inline int wpa_drv_send_ft_action(struct wpa_supplicant *wpa_s, 279 u8 action, const u8 *target_ap, 280 const u8 *ies, size_t ies_len) 281{ 282 if (wpa_s->driver->send_ft_action) 283 return wpa_s->driver->send_ft_action(wpa_s->drv_priv, action, 284 target_ap, ies, ies_len); 285 return -1; 286} 287 288static inline int wpa_drv_set_ap(struct wpa_supplicant *wpa_s, 289 struct wpa_driver_ap_params *params) 290{ 291 if (wpa_s->driver->set_ap) 292 return wpa_s->driver->set_ap(wpa_s->drv_priv, params); 293 return -1; 294} 295 296static inline int wpa_drv_sta_add(struct wpa_supplicant *wpa_s, 297 struct hostapd_sta_add_params *params) 298{ 299 if (wpa_s->driver->sta_add) 300 return wpa_s->driver->sta_add(wpa_s->drv_priv, params); 301 return -1; 302} 303 304static inline int wpa_drv_sta_remove(struct wpa_supplicant *wpa_s, 305 const u8 *addr) 306{ 307 if (wpa_s->driver->sta_remove) 308 return wpa_s->driver->sta_remove(wpa_s->drv_priv, addr); 309 return -1; 310} 311 312static inline int wpa_drv_hapd_send_eapol(struct wpa_supplicant *wpa_s, 313 const u8 *addr, const u8 *data, 314 size_t data_len, int encrypt, 315 const u8 *own_addr, u32 flags) 316{ 317 if (wpa_s->driver->hapd_send_eapol) 318 return wpa_s->driver->hapd_send_eapol(wpa_s->drv_priv, addr, 319 data, data_len, encrypt, 320 own_addr, flags); 321 return -1; 322} 323 324static inline int wpa_drv_sta_set_flags(struct wpa_supplicant *wpa_s, 325 const u8 *addr, int total_flags, 326 int flags_or, int flags_and) 327{ 328 if (wpa_s->driver->sta_set_flags) 329 return wpa_s->driver->sta_set_flags(wpa_s->drv_priv, addr, 330 total_flags, flags_or, 331 flags_and); 332 return -1; 333} 334 335static inline int wpa_drv_set_supp_port(struct wpa_supplicant *wpa_s, 336 int authorized) 337{ 338 if (wpa_s->driver->set_supp_port) { 339 return wpa_s->driver->set_supp_port(wpa_s->drv_priv, 340 authorized); 341 } 342 return 0; 343} 344 345static inline int wpa_drv_send_action(struct wpa_supplicant *wpa_s, 346 unsigned int freq, 347 unsigned int wait, 348 const u8 *dst, const u8 *src, 349 const u8 *bssid, 350 const u8 *data, size_t data_len, 351 int no_cck) 352{ 353 if (wpa_s->driver->send_action) 354 return wpa_s->driver->send_action(wpa_s->drv_priv, freq, 355 wait, dst, src, bssid, 356 data, data_len, no_cck); 357 return -1; 358} 359 360static inline void wpa_drv_send_action_cancel_wait(struct wpa_supplicant *wpa_s) 361{ 362 if (wpa_s->driver->send_action_cancel_wait) 363 wpa_s->driver->send_action_cancel_wait(wpa_s->drv_priv); 364} 365 366static inline int wpa_drv_set_freq(struct wpa_supplicant *wpa_s, 367 struct hostapd_freq_params *freq) 368{ 369 if (wpa_s->driver->set_freq) 370 return wpa_s->driver->set_freq(wpa_s->drv_priv, freq); 371 return -1; 372} 373 374static inline int wpa_drv_if_add(struct wpa_supplicant *wpa_s, 375 enum wpa_driver_if_type type, 376 const char *ifname, const u8 *addr, 377 void *bss_ctx, char *force_ifname, 378 u8 *if_addr, const char *bridge) 379{ 380 if (wpa_s->driver->if_add) 381 return wpa_s->driver->if_add(wpa_s->drv_priv, type, ifname, 382 addr, bss_ctx, NULL, force_ifname, 383 if_addr, bridge); 384 return -1; 385} 386 387static inline int wpa_drv_if_remove(struct wpa_supplicant *wpa_s, 388 enum wpa_driver_if_type type, 389 const char *ifname) 390{ 391 if (wpa_s->driver->if_remove) 392 return wpa_s->driver->if_remove(wpa_s->drv_priv, type, ifname); 393 return -1; 394} 395 396static inline int wpa_drv_remain_on_channel(struct wpa_supplicant *wpa_s, 397 unsigned int freq, 398 unsigned int duration) 399{ 400 if (wpa_s->driver->remain_on_channel) 401 return wpa_s->driver->remain_on_channel(wpa_s->drv_priv, freq, 402 duration); 403 return -1; 404} 405 406static inline int wpa_drv_cancel_remain_on_channel( 407 struct wpa_supplicant *wpa_s) 408{ 409 if (wpa_s->driver->cancel_remain_on_channel) 410 return wpa_s->driver->cancel_remain_on_channel( 411 wpa_s->drv_priv); 412 return -1; 413} 414 415static inline int wpa_drv_probe_req_report(struct wpa_supplicant *wpa_s, 416 int report) 417{ 418 if (wpa_s->driver->probe_req_report) 419 return wpa_s->driver->probe_req_report(wpa_s->drv_priv, 420 report); 421 return -1; 422} 423 424static inline int wpa_drv_deinit_ap(struct wpa_supplicant *wpa_s) 425{ 426 if (wpa_s->driver->deinit_ap) 427 return wpa_s->driver->deinit_ap(wpa_s->drv_priv); 428 return 0; 429} 430 431static inline int wpa_drv_deinit_p2p_cli(struct wpa_supplicant *wpa_s) 432{ 433 if (wpa_s->driver->deinit_p2p_cli) 434 return wpa_s->driver->deinit_p2p_cli(wpa_s->drv_priv); 435 return 0; 436} 437 438static inline void wpa_drv_suspend(struct wpa_supplicant *wpa_s) 439{ 440 if (wpa_s->driver->suspend) 441 wpa_s->driver->suspend(wpa_s->drv_priv); 442} 443 444static inline void wpa_drv_resume(struct wpa_supplicant *wpa_s) 445{ 446 if (wpa_s->driver->resume) 447 wpa_s->driver->resume(wpa_s->drv_priv); 448} 449 450static inline int wpa_drv_signal_monitor(struct wpa_supplicant *wpa_s, 451 int threshold, int hysteresis) 452{ 453 if (wpa_s->driver->signal_monitor) 454 return wpa_s->driver->signal_monitor(wpa_s->drv_priv, 455 threshold, hysteresis); 456 return -1; 457} 458 459static inline int wpa_drv_signal_poll(struct wpa_supplicant *wpa_s, 460 struct wpa_signal_info *si) 461{ 462 if (wpa_s->driver->signal_poll) 463 return wpa_s->driver->signal_poll(wpa_s->drv_priv, si); 464 return -1; 465} 466 467static inline int wpa_drv_pktcnt_poll(struct wpa_supplicant *wpa_s, 468 struct hostap_sta_driver_data *sta) 469{ 470 if (wpa_s->driver->read_sta_data) 471 return wpa_s->driver->read_sta_data(wpa_s->drv_priv, sta, 472 wpa_s->bssid); 473 return -1; 474} 475 476static inline int wpa_drv_set_ap_wps_ie(struct wpa_supplicant *wpa_s, 477 const struct wpabuf *beacon, 478 const struct wpabuf *proberesp, 479 const struct wpabuf *assocresp) 480{ 481 if (!wpa_s->driver->set_ap_wps_ie) 482 return -1; 483 return wpa_s->driver->set_ap_wps_ie(wpa_s->drv_priv, beacon, 484 proberesp, assocresp); 485} 486 487static inline int wpa_drv_shared_freq(struct wpa_supplicant *wpa_s) 488{ 489 if (!wpa_s->driver->shared_freq) 490 return -1; 491 return wpa_s->driver->shared_freq(wpa_s->drv_priv); 492} 493 494static inline int wpa_drv_get_noa(struct wpa_supplicant *wpa_s, 495 u8 *buf, size_t buf_len) 496{ 497 if (!wpa_s->driver->get_noa) 498 return -1; 499 return wpa_s->driver->get_noa(wpa_s->drv_priv, buf, buf_len); 500} 501 502static inline int wpa_drv_set_p2p_powersave(struct wpa_supplicant *wpa_s, 503 int legacy_ps, int opp_ps, 504 int ctwindow) 505{ 506 if (!wpa_s->driver->set_p2p_powersave) 507 return -1; 508 return wpa_s->driver->set_p2p_powersave(wpa_s->drv_priv, legacy_ps, 509 opp_ps, ctwindow); 510} 511 512static inline int wpa_drv_ampdu(struct wpa_supplicant *wpa_s, int ampdu) 513{ 514 if (!wpa_s->driver->ampdu) 515 return -1; 516 return wpa_s->driver->ampdu(wpa_s->drv_priv, ampdu); 517} 518 519static inline int wpa_drv_p2p_find(struct wpa_supplicant *wpa_s, 520 unsigned int timeout, int type) 521{ 522 if (!wpa_s->driver->p2p_find) 523 return -1; 524 return wpa_s->driver->p2p_find(wpa_s->drv_priv, timeout, type); 525} 526 527static inline int wpa_drv_p2p_stop_find(struct wpa_supplicant *wpa_s) 528{ 529 if (!wpa_s->driver->p2p_stop_find) 530 return -1; 531 return wpa_s->driver->p2p_stop_find(wpa_s->drv_priv); 532} 533 534static inline int wpa_drv_p2p_listen(struct wpa_supplicant *wpa_s, 535 unsigned int timeout) 536{ 537 if (!wpa_s->driver->p2p_listen) 538 return -1; 539 return wpa_s->driver->p2p_listen(wpa_s->drv_priv, timeout); 540} 541 542static inline int wpa_drv_p2p_connect(struct wpa_supplicant *wpa_s, 543 const u8 *peer_addr, int wps_method, 544 int go_intent, 545 const u8 *own_interface_addr, 546 unsigned int force_freq, 547 int persistent_group) 548{ 549 if (!wpa_s->driver->p2p_connect) 550 return -1; 551 return wpa_s->driver->p2p_connect(wpa_s->drv_priv, peer_addr, 552 wps_method, go_intent, 553 own_interface_addr, force_freq, 554 persistent_group); 555} 556 557static inline int wpa_drv_wps_success_cb(struct wpa_supplicant *wpa_s, 558 const u8 *peer_addr) 559{ 560 if (!wpa_s->driver->wps_success_cb) 561 return -1; 562 return wpa_s->driver->wps_success_cb(wpa_s->drv_priv, peer_addr); 563} 564 565static inline int 566wpa_drv_p2p_group_formation_failed(struct wpa_supplicant *wpa_s) 567{ 568 if (!wpa_s->driver->p2p_group_formation_failed) 569 return -1; 570 return wpa_s->driver->p2p_group_formation_failed(wpa_s->drv_priv); 571} 572 573static inline int wpa_drv_p2p_set_params(struct wpa_supplicant *wpa_s, 574 const struct p2p_params *params) 575{ 576 if (!wpa_s->driver->p2p_set_params) 577 return -1; 578 return wpa_s->driver->p2p_set_params(wpa_s->drv_priv, params); 579} 580 581static inline int wpa_drv_p2p_prov_disc_req(struct wpa_supplicant *wpa_s, 582 const u8 *peer_addr, 583 u16 config_methods, int join) 584{ 585 if (!wpa_s->driver->p2p_prov_disc_req) 586 return -1; 587 return wpa_s->driver->p2p_prov_disc_req(wpa_s->drv_priv, peer_addr, 588 config_methods, join); 589} 590 591static inline u64 wpa_drv_p2p_sd_request(struct wpa_supplicant *wpa_s, 592 const u8 *dst, 593 const struct wpabuf *tlvs) 594{ 595 if (!wpa_s->driver->p2p_sd_request) 596 return 0; 597 return wpa_s->driver->p2p_sd_request(wpa_s->drv_priv, dst, tlvs); 598} 599 600static inline int wpa_drv_p2p_sd_cancel_request(struct wpa_supplicant *wpa_s, 601 u64 req) 602{ 603 if (!wpa_s->driver->p2p_sd_cancel_request) 604 return -1; 605 return wpa_s->driver->p2p_sd_cancel_request(wpa_s->drv_priv, req); 606} 607 608static inline int wpa_drv_p2p_sd_response(struct wpa_supplicant *wpa_s, 609 int freq, const u8 *dst, 610 u8 dialog_token, 611 const struct wpabuf *resp_tlvs) 612{ 613 if (!wpa_s->driver->p2p_sd_response) 614 return -1; 615 return wpa_s->driver->p2p_sd_response(wpa_s->drv_priv, freq, dst, 616 dialog_token, resp_tlvs); 617} 618 619static inline int wpa_drv_p2p_service_update(struct wpa_supplicant *wpa_s) 620{ 621 if (!wpa_s->driver->p2p_service_update) 622 return -1; 623 return wpa_s->driver->p2p_service_update(wpa_s->drv_priv); 624} 625 626static inline int wpa_drv_p2p_reject(struct wpa_supplicant *wpa_s, 627 const u8 *addr) 628{ 629 if (!wpa_s->driver->p2p_reject) 630 return -1; 631 return wpa_s->driver->p2p_reject(wpa_s->drv_priv, addr); 632} 633 634static inline int wpa_drv_p2p_invite(struct wpa_supplicant *wpa_s, 635 const u8 *peer, int role, const u8 *bssid, 636 const u8 *ssid, size_t ssid_len, 637 const u8 *go_dev_addr, 638 int persistent_group) 639{ 640 if (!wpa_s->driver->p2p_invite) 641 return -1; 642 return wpa_s->driver->p2p_invite(wpa_s->drv_priv, peer, role, bssid, 643 ssid, ssid_len, go_dev_addr, 644 persistent_group); 645} 646 647static inline int wpa_drv_send_tdls_mgmt(struct wpa_supplicant *wpa_s, 648 const u8 *dst, u8 action_code, 649 u8 dialog_token, u16 status_code, 650 const u8 *buf, size_t len) 651{ 652 if (wpa_s->driver->send_tdls_mgmt) { 653 return wpa_s->driver->send_tdls_mgmt(wpa_s->drv_priv, dst, 654 action_code, dialog_token, 655 status_code, buf, len); 656 } 657 return -1; 658} 659 660static inline int wpa_drv_tdls_oper(struct wpa_supplicant *wpa_s, 661 enum tdls_oper oper, const u8 *peer) 662{ 663 if (!wpa_s->driver->tdls_oper) 664 return -1; 665 return wpa_s->driver->tdls_oper(wpa_s->drv_priv, oper, peer); 666} 667 668#ifdef ANDROID 669static inline int wpa_drv_driver_cmd(struct wpa_supplicant *wpa_s, 670 char *cmd, char *buf, size_t buf_len) 671{ 672 if (!wpa_s->driver->driver_cmd) 673 return -1; 674 return wpa_s->driver->driver_cmd(wpa_s->drv_priv, cmd, buf, buf_len); 675} 676#endif 677 678static inline void wpa_drv_set_rekey_info(struct wpa_supplicant *wpa_s, 679 const u8 *kek, const u8 *kck, 680 const u8 *replay_ctr) 681{ 682 if (!wpa_s->driver->set_rekey_info) 683 return; 684 wpa_s->driver->set_rekey_info(wpa_s->drv_priv, kek, kck, replay_ctr); 685} 686 687static inline int wpa_drv_radio_disable(struct wpa_supplicant *wpa_s, 688 int disabled) 689{ 690 if (!wpa_s->driver->radio_disable) 691 return -1; 692 return wpa_s->driver->radio_disable(wpa_s->drv_priv, disabled); 693} 694 695static inline int wpa_drv_switch_channel(struct wpa_supplicant *wpa_s, 696 unsigned int freq) 697{ 698 if (!wpa_s->driver->switch_channel) 699 return -1; 700 return wpa_s->driver->switch_channel(wpa_s->drv_priv, freq); 701} 702 703static inline int wpa_drv_wnm_oper(struct wpa_supplicant *wpa_s, 704 enum wnm_oper oper, const u8 *peer, 705 u8 *buf, u16 *buf_len) 706{ 707 if (!wpa_s->driver->wnm_oper) 708 return -1; 709 return wpa_s->driver->wnm_oper(wpa_s->drv_priv, oper, peer, buf, 710 buf_len); 711} 712 713static inline int wpa_drv_status(struct wpa_supplicant *wpa_s, 714 char *buf, size_t buflen) 715{ 716 if (!wpa_s->driver->status) 717 return -1; 718 return wpa_s->driver->status(wpa_s->drv_priv, buf, buflen); 719} 720 721static inline int wpa_drv_set_qos_map(struct wpa_supplicant *wpa_s, 722 const u8 *qos_map_set, u8 qos_map_set_len) 723{ 724 if (!wpa_s->driver->set_qos_map) 725 return -1; 726 return wpa_s->driver->set_qos_map(wpa_s->drv_priv, qos_map_set, 727 qos_map_set_len); 728} 729 730#endif /* DRIVER_I_H */ 731