wpa_supplicant / hostapd 2.0

driver_i.h

Go to the documentation of this file.
00001 
00010 #ifndef DRIVER_I_H
00011 #define DRIVER_I_H
00012 
00013 #include "drivers/driver.h"
00014 
00015 /* driver_ops */
00016 static inline void * wpa_drv_init(struct wpa_supplicant *wpa_s,
00017                                   const char *ifname)
00018 {
00019         if (wpa_s->driver->init2)
00020                 return wpa_s->driver->init2(wpa_s, ifname,
00021                                             wpa_s->global_drv_priv);
00022         if (wpa_s->driver->init) {
00023                 return wpa_s->driver->init(wpa_s, ifname);
00024         }
00025         return NULL;
00026 }
00027 
00028 static inline void wpa_drv_deinit(struct wpa_supplicant *wpa_s)
00029 {
00030         if (wpa_s->driver->deinit)
00031                 wpa_s->driver->deinit(wpa_s->drv_priv);
00032 }
00033 
00034 static inline int wpa_drv_set_param(struct wpa_supplicant *wpa_s,
00035                                     const char *param)
00036 {
00037         if (wpa_s->driver->set_param)
00038                 return wpa_s->driver->set_param(wpa_s->drv_priv, param);
00039         return 0;
00040 }
00041 
00042 static inline int wpa_drv_set_countermeasures(struct wpa_supplicant *wpa_s,
00043                                               int enabled)
00044 {
00045         if (wpa_s->driver->set_countermeasures) {
00046                 return wpa_s->driver->set_countermeasures(wpa_s->drv_priv,
00047                                                           enabled);
00048         }
00049         return -1;
00050 }
00051 
00052 static inline int wpa_drv_authenticate(struct wpa_supplicant *wpa_s,
00053                                        struct wpa_driver_auth_params *params)
00054 {
00055         if (wpa_s->driver->authenticate)
00056                 return wpa_s->driver->authenticate(wpa_s->drv_priv, params);
00057         return -1;
00058 }
00059 
00060 static inline int wpa_drv_associate(struct wpa_supplicant *wpa_s,
00061                                     struct wpa_driver_associate_params *params)
00062 {
00063         if (wpa_s->driver->associate) {
00064                 return wpa_s->driver->associate(wpa_s->drv_priv, params);
00065         }
00066         return -1;
00067 }
00068 
00069 static inline int wpa_drv_scan(struct wpa_supplicant *wpa_s,
00070                                struct wpa_driver_scan_params *params)
00071 {
00072         if (wpa_s->driver->scan2)
00073                 return wpa_s->driver->scan2(wpa_s->drv_priv, params);
00074         return -1;
00075 }
00076 
00077 static inline int wpa_drv_sched_scan(struct wpa_supplicant *wpa_s,
00078                                      struct wpa_driver_scan_params *params,
00079                                      u32 interval)
00080 {
00081         if (wpa_s->driver->sched_scan)
00082                 return wpa_s->driver->sched_scan(wpa_s->drv_priv,
00083                                                  params, interval);
00084         return -1;
00085 }
00086 
00087 static inline int wpa_drv_stop_sched_scan(struct wpa_supplicant *wpa_s)
00088 {
00089         if (wpa_s->driver->stop_sched_scan)
00090                 return wpa_s->driver->stop_sched_scan(wpa_s->drv_priv);
00091         return -1;
00092 }
00093 
00094 static inline struct wpa_scan_results * wpa_drv_get_scan_results2(
00095         struct wpa_supplicant *wpa_s)
00096 {
00097         if (wpa_s->driver->get_scan_results2)
00098                 return wpa_s->driver->get_scan_results2(wpa_s->drv_priv);
00099         return NULL;
00100 }
00101 
00102 static inline int wpa_drv_get_bssid(struct wpa_supplicant *wpa_s, u8 *bssid)
00103 {
00104         if (wpa_s->driver->get_bssid) {
00105                 return wpa_s->driver->get_bssid(wpa_s->drv_priv, bssid);
00106         }
00107         return -1;
00108 }
00109 
00110 static inline int wpa_drv_get_ssid(struct wpa_supplicant *wpa_s, u8 *ssid)
00111 {
00112         if (wpa_s->driver->get_ssid) {
00113                 return wpa_s->driver->get_ssid(wpa_s->drv_priv, ssid);
00114         }
00115         return -1;
00116 }
00117 
00118 static inline int wpa_drv_set_key(struct wpa_supplicant *wpa_s,
00119                                   enum wpa_alg alg, const u8 *addr,
00120                                   int key_idx, int set_tx,
00121                                    const u8 *seq, size_t seq_len,
00122                                    const u8 *key, size_t key_len)
00123 {
00124         if (wpa_s->driver->set_key) {
00125                 wpa_s->keys_cleared = 0;
00126                 return wpa_s->driver->set_key(wpa_s->ifname, wpa_s->drv_priv,
00127                                               alg, addr, key_idx, set_tx,
00128                                               seq, seq_len, key, key_len);
00129         }
00130         return -1;
00131 }
00132 
00133 static inline int wpa_drv_deauthenticate(struct wpa_supplicant *wpa_s,
00134                                          const u8 *addr, int reason_code)
00135 {
00136         if (wpa_s->driver->deauthenticate) {
00137                 return wpa_s->driver->deauthenticate(wpa_s->drv_priv, addr,
00138                                                      reason_code);
00139         }
00140         return -1;
00141 }
00142 
00143 static inline int wpa_drv_disassociate(struct wpa_supplicant *wpa_s,
00144                                        const u8 *addr, int reason_code)
00145 {
00146         if (wpa_s->driver->disassociate) {
00147                 return wpa_s->driver->disassociate(wpa_s->drv_priv, addr,
00148                                                    reason_code);
00149         }
00150         return -1;
00151 }
00152 
00153 static inline int wpa_drv_add_pmkid(struct wpa_supplicant *wpa_s,
00154                                     const u8 *bssid, const u8 *pmkid)
00155 {
00156         if (wpa_s->driver->add_pmkid) {
00157                 return wpa_s->driver->add_pmkid(wpa_s->drv_priv, bssid, pmkid);
00158         }
00159         return -1;
00160 }
00161 
00162 static inline int wpa_drv_remove_pmkid(struct wpa_supplicant *wpa_s,
00163                                        const u8 *bssid, const u8 *pmkid)
00164 {
00165         if (wpa_s->driver->remove_pmkid) {
00166                 return wpa_s->driver->remove_pmkid(wpa_s->drv_priv, bssid,
00167                                                    pmkid);
00168         }
00169         return -1;
00170 }
00171 
00172 static inline int wpa_drv_flush_pmkid(struct wpa_supplicant *wpa_s)
00173 {
00174         if (wpa_s->driver->flush_pmkid) {
00175                 return wpa_s->driver->flush_pmkid(wpa_s->drv_priv);
00176         }
00177         return -1;
00178 }
00179 
00180 static inline int wpa_drv_get_capa(struct wpa_supplicant *wpa_s,
00181                                    struct wpa_driver_capa *capa)
00182 {
00183         if (wpa_s->driver->get_capa) {
00184                 return wpa_s->driver->get_capa(wpa_s->drv_priv, capa);
00185         }
00186         return -1;
00187 }
00188 
00189 static inline void wpa_drv_poll(struct wpa_supplicant *wpa_s)
00190 {
00191         if (wpa_s->driver->poll) {
00192                 wpa_s->driver->poll(wpa_s->drv_priv);
00193         }
00194 }
00195 
00196 static inline const char * wpa_drv_get_ifname(struct wpa_supplicant *wpa_s)
00197 {
00198         if (wpa_s->driver->get_ifname) {
00199                 return wpa_s->driver->get_ifname(wpa_s->drv_priv);
00200         }
00201         return NULL;
00202 }
00203 
00204 static inline const u8 * wpa_drv_get_mac_addr(struct wpa_supplicant *wpa_s)
00205 {
00206         if (wpa_s->driver->get_mac_addr) {
00207                 return wpa_s->driver->get_mac_addr(wpa_s->drv_priv);
00208         }
00209         return NULL;
00210 }
00211 
00212 static inline int wpa_drv_send_eapol(struct wpa_supplicant *wpa_s,
00213                                      const u8 *dst, u16 proto,
00214                                      const u8 *data, size_t data_len)
00215 {
00216         if (wpa_s->driver->send_eapol)
00217                 return wpa_s->driver->send_eapol(wpa_s->drv_priv, dst, proto,
00218                                                  data, data_len);
00219         return -1;
00220 }
00221 
00222 static inline int wpa_drv_set_operstate(struct wpa_supplicant *wpa_s,
00223                                         int state)
00224 {
00225         if (wpa_s->driver->set_operstate)
00226                 return wpa_s->driver->set_operstate(wpa_s->drv_priv, state);
00227         return 0;
00228 }
00229 
00230 static inline int wpa_drv_mlme_setprotection(struct wpa_supplicant *wpa_s,
00231                                              const u8 *addr, int protect_type,
00232                                              int key_type)
00233 {
00234         if (wpa_s->driver->mlme_setprotection)
00235                 return wpa_s->driver->mlme_setprotection(wpa_s->drv_priv, addr,
00236                                                          protect_type,
00237                                                          key_type);
00238         return 0;
00239 }
00240 
00241 static inline struct hostapd_hw_modes *
00242 wpa_drv_get_hw_feature_data(struct wpa_supplicant *wpa_s, u16 *num_modes,
00243                             u16 *flags)
00244 {
00245         if (wpa_s->driver->get_hw_feature_data)
00246                 return wpa_s->driver->get_hw_feature_data(wpa_s->drv_priv,
00247                                                           num_modes, flags);
00248         return NULL;
00249 }
00250 
00251 static inline int wpa_drv_set_country(struct wpa_supplicant *wpa_s,
00252                                       const char *alpha2)
00253 {
00254         if (wpa_s->driver->set_country)
00255                 return wpa_s->driver->set_country(wpa_s->drv_priv, alpha2);
00256         return 0;
00257 }
00258 
00259 static inline int wpa_drv_send_mlme(struct wpa_supplicant *wpa_s,
00260                                     const u8 *data, size_t data_len, int noack)
00261 {
00262         if (wpa_s->driver->send_mlme)
00263                 return wpa_s->driver->send_mlme(wpa_s->drv_priv,
00264                                                 data, data_len, noack);
00265         return -1;
00266 }
00267 
00268 static inline int wpa_drv_update_ft_ies(struct wpa_supplicant *wpa_s,
00269                                         const u8 *md,
00270                                         const u8 *ies, size_t ies_len)
00271 {
00272         if (wpa_s->driver->update_ft_ies)
00273                 return wpa_s->driver->update_ft_ies(wpa_s->drv_priv, md,
00274                                                     ies, ies_len);
00275         return -1;
00276 }
00277 
00278 static inline int wpa_drv_send_ft_action(struct wpa_supplicant *wpa_s,
00279                                          u8 action, const u8 *target_ap,
00280                                          const u8 *ies, size_t ies_len)
00281 {
00282         if (wpa_s->driver->send_ft_action)
00283                 return wpa_s->driver->send_ft_action(wpa_s->drv_priv, action,
00284                                                      target_ap, ies, ies_len);
00285         return -1;
00286 }
00287 
00288 static inline int wpa_drv_set_ap(struct wpa_supplicant *wpa_s,
00289                                  struct wpa_driver_ap_params *params)
00290 {
00291         if (wpa_s->driver->set_ap)
00292                 return wpa_s->driver->set_ap(wpa_s->drv_priv, params);
00293         return -1;
00294 }
00295 
00296 static inline int wpa_drv_sta_add(struct wpa_supplicant *wpa_s,
00297                                   struct hostapd_sta_add_params *params)
00298 {
00299         if (wpa_s->driver->sta_add)
00300                 return wpa_s->driver->sta_add(wpa_s->drv_priv, params);
00301         return -1;
00302 }
00303 
00304 static inline int wpa_drv_sta_remove(struct wpa_supplicant *wpa_s,
00305                                      const u8 *addr)
00306 {
00307         if (wpa_s->driver->sta_remove)
00308                 return wpa_s->driver->sta_remove(wpa_s->drv_priv, addr);
00309         return -1;
00310 }
00311 
00312 static inline int wpa_drv_hapd_send_eapol(struct wpa_supplicant *wpa_s,
00313                                           const u8 *addr, const u8 *data,
00314                                           size_t data_len, int encrypt,
00315                                           const u8 *own_addr, u32 flags)
00316 {
00317         if (wpa_s->driver->hapd_send_eapol)
00318                 return wpa_s->driver->hapd_send_eapol(wpa_s->drv_priv, addr,
00319                                                       data, data_len, encrypt,
00320                                                       own_addr, flags);
00321         return -1;
00322 }
00323 
00324 static inline int wpa_drv_sta_set_flags(struct wpa_supplicant *wpa_s,
00325                                         const u8 *addr, int total_flags,
00326                                         int flags_or, int flags_and)
00327 {
00328         if (wpa_s->driver->sta_set_flags)
00329                 return wpa_s->driver->sta_set_flags(wpa_s->drv_priv, addr,
00330                                                     total_flags, flags_or,
00331                                                     flags_and);
00332         return -1;
00333 }
00334 
00335 static inline int wpa_drv_set_supp_port(struct wpa_supplicant *wpa_s,
00336                                         int authorized)
00337 {
00338         if (wpa_s->driver->set_supp_port) {
00339                 return wpa_s->driver->set_supp_port(wpa_s->drv_priv,
00340                                                     authorized);
00341         }
00342         return 0;
00343 }
00344 
00345 static inline int wpa_drv_send_action(struct wpa_supplicant *wpa_s,
00346                                       unsigned int freq,
00347                                       unsigned int wait,
00348                                       const u8 *dst, const u8 *src,
00349                                       const u8 *bssid,
00350                                       const u8 *data, size_t data_len,
00351                                       int no_cck)
00352 {
00353         if (wpa_s->driver->send_action)
00354                 return wpa_s->driver->send_action(wpa_s->drv_priv, freq,
00355                                                   wait, dst, src, bssid,
00356                                                   data, data_len, no_cck);
00357         return -1;
00358 }
00359 
00360 static inline void wpa_drv_send_action_cancel_wait(struct wpa_supplicant *wpa_s)
00361 {
00362         if (wpa_s->driver->send_action_cancel_wait)
00363                 wpa_s->driver->send_action_cancel_wait(wpa_s->drv_priv);
00364 }
00365 
00366 static inline int wpa_drv_set_freq(struct wpa_supplicant *wpa_s,
00367                                    struct hostapd_freq_params *freq)
00368 {
00369         if (wpa_s->driver->set_freq)
00370                 return wpa_s->driver->set_freq(wpa_s->drv_priv, freq);
00371         return -1;
00372 }
00373 
00374 static inline int wpa_drv_if_add(struct wpa_supplicant *wpa_s,
00375                                  enum wpa_driver_if_type type,
00376                                  const char *ifname, const u8 *addr,
00377                                  void *bss_ctx, char *force_ifname,
00378                                  u8 *if_addr, const char *bridge)
00379 {
00380         if (wpa_s->driver->if_add)
00381                 return wpa_s->driver->if_add(wpa_s->drv_priv, type, ifname,
00382                                              addr, bss_ctx, NULL, force_ifname,
00383                                              if_addr, bridge);
00384         return -1;
00385 }
00386 
00387 static inline int wpa_drv_if_remove(struct wpa_supplicant *wpa_s,
00388                                     enum wpa_driver_if_type type,
00389                                     const char *ifname)
00390 {
00391         if (wpa_s->driver->if_remove)
00392                 return wpa_s->driver->if_remove(wpa_s->drv_priv, type, ifname);
00393         return -1;
00394 }
00395 
00396 static inline int wpa_drv_remain_on_channel(struct wpa_supplicant *wpa_s,
00397                                             unsigned int freq,
00398                                             unsigned int duration)
00399 {
00400         if (wpa_s->driver->remain_on_channel)
00401                 return wpa_s->driver->remain_on_channel(wpa_s->drv_priv, freq,
00402                                                         duration);
00403         return -1;
00404 }
00405 
00406 static inline int wpa_drv_cancel_remain_on_channel(
00407         struct wpa_supplicant *wpa_s)
00408 {
00409         if (wpa_s->driver->cancel_remain_on_channel)
00410                 return wpa_s->driver->cancel_remain_on_channel(
00411                         wpa_s->drv_priv);
00412         return -1;
00413 }
00414 
00415 static inline int wpa_drv_probe_req_report(struct wpa_supplicant *wpa_s,
00416                                            int report)
00417 {
00418         if (wpa_s->driver->probe_req_report)
00419                 return wpa_s->driver->probe_req_report(wpa_s->drv_priv,
00420                                                        report);
00421         return -1;
00422 }
00423 
00424 static inline int wpa_drv_deinit_ap(struct wpa_supplicant *wpa_s)
00425 {
00426         if (wpa_s->driver->deinit_ap)
00427                 return wpa_s->driver->deinit_ap(wpa_s->drv_priv);
00428         return 0;
00429 }
00430 
00431 static inline int wpa_drv_deinit_p2p_cli(struct wpa_supplicant *wpa_s)
00432 {
00433         if (wpa_s->driver->deinit_p2p_cli)
00434                 return wpa_s->driver->deinit_p2p_cli(wpa_s->drv_priv);
00435         return 0;
00436 }
00437 
00438 static inline void wpa_drv_suspend(struct wpa_supplicant *wpa_s)
00439 {
00440         if (wpa_s->driver->suspend)
00441                 wpa_s->driver->suspend(wpa_s->drv_priv);
00442 }
00443 
00444 static inline void wpa_drv_resume(struct wpa_supplicant *wpa_s)
00445 {
00446         if (wpa_s->driver->resume)
00447                 wpa_s->driver->resume(wpa_s->drv_priv);
00448 }
00449 
00450 static inline int wpa_drv_signal_monitor(struct wpa_supplicant *wpa_s,
00451                                          int threshold, int hysteresis)
00452 {
00453         if (wpa_s->driver->signal_monitor)
00454                 return wpa_s->driver->signal_monitor(wpa_s->drv_priv,
00455                                                      threshold, hysteresis);
00456         return -1;
00457 }
00458 
00459 static inline int wpa_drv_signal_poll(struct wpa_supplicant *wpa_s,
00460                                       struct wpa_signal_info *si)
00461 {
00462         if (wpa_s->driver->signal_poll)
00463                 return wpa_s->driver->signal_poll(wpa_s->drv_priv, si);
00464         return -1;
00465 }
00466 
00467 static inline int wpa_drv_set_ap_wps_ie(struct wpa_supplicant *wpa_s,
00468                                         const struct wpabuf *beacon,
00469                                         const struct wpabuf *proberesp,
00470                                         const struct wpabuf *assocresp)
00471 {
00472         if (!wpa_s->driver->set_ap_wps_ie)
00473                 return -1;
00474         return wpa_s->driver->set_ap_wps_ie(wpa_s->drv_priv, beacon,
00475                                             proberesp, assocresp);
00476 }
00477 
00478 static inline int wpa_drv_shared_freq(struct wpa_supplicant *wpa_s)
00479 {
00480         if (!wpa_s->driver->shared_freq)
00481                 return -1;
00482         return wpa_s->driver->shared_freq(wpa_s->drv_priv);
00483 }
00484 
00485 static inline int wpa_drv_get_noa(struct wpa_supplicant *wpa_s,
00486                                   u8 *buf, size_t buf_len)
00487 {
00488         if (!wpa_s->driver->get_noa)
00489                 return -1;
00490         return wpa_s->driver->get_noa(wpa_s->drv_priv, buf, buf_len);
00491 }
00492 
00493 static inline int wpa_drv_set_p2p_powersave(struct wpa_supplicant *wpa_s,
00494                                             int legacy_ps, int opp_ps,
00495                                             int ctwindow)
00496 {
00497         if (!wpa_s->driver->set_p2p_powersave)
00498                 return -1;
00499         return wpa_s->driver->set_p2p_powersave(wpa_s->drv_priv, legacy_ps,
00500                                                 opp_ps, ctwindow);
00501 }
00502 
00503 static inline int wpa_drv_ampdu(struct wpa_supplicant *wpa_s, int ampdu)
00504 {
00505         if (!wpa_s->driver->ampdu)
00506                 return -1;
00507         return wpa_s->driver->ampdu(wpa_s->drv_priv, ampdu);
00508 }
00509 
00510 static inline int wpa_drv_p2p_find(struct wpa_supplicant *wpa_s,
00511                                    unsigned int timeout, int type)
00512 {
00513         if (!wpa_s->driver->p2p_find)
00514                 return -1;
00515         return wpa_s->driver->p2p_find(wpa_s->drv_priv, timeout, type);
00516 }
00517 
00518 static inline int wpa_drv_p2p_stop_find(struct wpa_supplicant *wpa_s)
00519 {
00520         if (!wpa_s->driver->p2p_stop_find)
00521                 return -1;
00522         return wpa_s->driver->p2p_stop_find(wpa_s->drv_priv);
00523 }
00524 
00525 static inline int wpa_drv_p2p_listen(struct wpa_supplicant *wpa_s,
00526                                      unsigned int timeout)
00527 {
00528         if (!wpa_s->driver->p2p_listen)
00529                 return -1;
00530         return wpa_s->driver->p2p_listen(wpa_s->drv_priv, timeout);
00531 }
00532 
00533 static inline int wpa_drv_p2p_connect(struct wpa_supplicant *wpa_s,
00534                                       const u8 *peer_addr, int wps_method,
00535                                       int go_intent,
00536                                       const u8 *own_interface_addr,
00537                                       unsigned int force_freq,
00538                                       int persistent_group)
00539 {
00540         if (!wpa_s->driver->p2p_connect)
00541                 return -1;
00542         return wpa_s->driver->p2p_connect(wpa_s->drv_priv, peer_addr,
00543                                           wps_method, go_intent,
00544                                           own_interface_addr, force_freq,
00545                                           persistent_group);
00546 }
00547 
00548 static inline int wpa_drv_wps_success_cb(struct wpa_supplicant *wpa_s,
00549                                          const u8 *peer_addr)
00550 {
00551         if (!wpa_s->driver->wps_success_cb)
00552                 return -1;
00553         return wpa_s->driver->wps_success_cb(wpa_s->drv_priv, peer_addr);
00554 }
00555 
00556 static inline int
00557 wpa_drv_p2p_group_formation_failed(struct wpa_supplicant *wpa_s)
00558 {
00559         if (!wpa_s->driver->p2p_group_formation_failed)
00560                 return -1;
00561         return wpa_s->driver->p2p_group_formation_failed(wpa_s->drv_priv);
00562 }
00563 
00564 static inline int wpa_drv_p2p_set_params(struct wpa_supplicant *wpa_s,
00565                                          const struct p2p_params *params)
00566 {
00567         if (!wpa_s->driver->p2p_set_params)
00568                 return -1;
00569         return wpa_s->driver->p2p_set_params(wpa_s->drv_priv, params);
00570 }
00571 
00572 static inline int wpa_drv_p2p_prov_disc_req(struct wpa_supplicant *wpa_s,
00573                                             const u8 *peer_addr,
00574                                             u16 config_methods, int join)
00575 {
00576         if (!wpa_s->driver->p2p_prov_disc_req)
00577                 return -1;
00578         return wpa_s->driver->p2p_prov_disc_req(wpa_s->drv_priv, peer_addr,
00579                                                 config_methods, join);
00580 }
00581 
00582 static inline u64 wpa_drv_p2p_sd_request(struct wpa_supplicant *wpa_s,
00583                                          const u8 *dst,
00584                                          const struct wpabuf *tlvs)
00585 {
00586         if (!wpa_s->driver->p2p_sd_request)
00587                 return 0;
00588         return wpa_s->driver->p2p_sd_request(wpa_s->drv_priv, dst, tlvs);
00589 }
00590 
00591 static inline int wpa_drv_p2p_sd_cancel_request(struct wpa_supplicant *wpa_s,
00592                                                 u64 req)
00593 {
00594         if (!wpa_s->driver->p2p_sd_cancel_request)
00595                 return -1;
00596         return wpa_s->driver->p2p_sd_cancel_request(wpa_s->drv_priv, req);
00597 }
00598 
00599 static inline int wpa_drv_p2p_sd_response(struct wpa_supplicant *wpa_s,
00600                                           int freq, const u8 *dst,
00601                                           u8 dialog_token,
00602                                           const struct wpabuf *resp_tlvs)
00603 {
00604         if (!wpa_s->driver->p2p_sd_response)
00605                 return -1;
00606         return wpa_s->driver->p2p_sd_response(wpa_s->drv_priv, freq, dst,
00607                                               dialog_token, resp_tlvs);
00608 }
00609 
00610 static inline int wpa_drv_p2p_service_update(struct wpa_supplicant *wpa_s)
00611 {
00612         if (!wpa_s->driver->p2p_service_update)
00613                 return -1;
00614         return wpa_s->driver->p2p_service_update(wpa_s->drv_priv);
00615 }
00616 
00617 static inline int wpa_drv_p2p_reject(struct wpa_supplicant *wpa_s,
00618                                      const u8 *addr)
00619 {
00620         if (!wpa_s->driver->p2p_reject)
00621                 return -1;
00622         return wpa_s->driver->p2p_reject(wpa_s->drv_priv, addr);
00623 }
00624 
00625 static inline int wpa_drv_p2p_invite(struct wpa_supplicant *wpa_s,
00626                                      const u8 *peer, int role, const u8 *bssid,
00627                                      const u8 *ssid, size_t ssid_len,
00628                                      const u8 *go_dev_addr,
00629                                      int persistent_group)
00630 {
00631         if (!wpa_s->driver->p2p_invite)
00632                 return -1;
00633         return wpa_s->driver->p2p_invite(wpa_s->drv_priv, peer, role, bssid,
00634                                          ssid, ssid_len, go_dev_addr,
00635                                          persistent_group);
00636 }
00637 
00638 static inline int wpa_drv_send_tdls_mgmt(struct wpa_supplicant *wpa_s,
00639                                          const u8 *dst, u8 action_code,
00640                                          u8 dialog_token, u16 status_code,
00641                                          const u8 *buf, size_t len)
00642 {
00643         if (wpa_s->driver->send_tdls_mgmt) {
00644                 return wpa_s->driver->send_tdls_mgmt(wpa_s->drv_priv, dst,
00645                                                      action_code, dialog_token,
00646                                                      status_code, buf, len);
00647         }
00648         return -1;
00649 }
00650 
00651 static inline int wpa_drv_tdls_oper(struct wpa_supplicant *wpa_s,
00652                                     enum tdls_oper oper, const u8 *peer)
00653 {
00654         if (!wpa_s->driver->tdls_oper)
00655                 return -1;
00656         return wpa_s->driver->tdls_oper(wpa_s->drv_priv, oper, peer);
00657 }
00658 
00659 static inline void wpa_drv_set_rekey_info(struct wpa_supplicant *wpa_s,
00660                                           const u8 *kek, const u8 *kck,
00661                                           const u8 *replay_ctr)
00662 {
00663         if (!wpa_s->driver->set_rekey_info)
00664                 return;
00665         wpa_s->driver->set_rekey_info(wpa_s->drv_priv, kek, kck, replay_ctr);
00666 }
00667 
00668 static inline int wpa_drv_radio_disable(struct wpa_supplicant *wpa_s,
00669                                         int disabled)
00670 {
00671         if (!wpa_s->driver->radio_disable)
00672                 return -1;
00673         return wpa_s->driver->radio_disable(wpa_s->drv_priv, disabled);
00674 }
00675 
00676 #endif /* DRIVER_I_H */
00677 
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines