LCOV - code coverage report
Current view: top level - wpa_supplicant - driver_i.h (source / functions) Hit Total Coverage
Test: wpa_supplicant/hostapd combined for hwsim test run 1475438200 Lines: 237 322 73.6 %
Date: 2016-10-02 Functions: 70 78 89.7 %

          Line data    Source code
       1             : /*
       2             :  * wpa_supplicant - Internal driver interface wrappers
       3             :  * Copyright (c) 2003-2015, 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 */
      15         715 : static inline void * wpa_drv_init(struct wpa_supplicant *wpa_s,
      16             :                                   const char *ifname)
      17             : {
      18         715 :         if (wpa_s->driver->init2)
      19         652 :                 return wpa_s->driver->init2(wpa_s, ifname,
      20             :                                             wpa_s->global_drv_priv);
      21          63 :         if (wpa_s->driver->init) {
      22          63 :                 return wpa_s->driver->init(wpa_s, ifname);
      23             :         }
      24           0 :         return NULL;
      25             : }
      26             : 
      27         711 : static inline void wpa_drv_deinit(struct wpa_supplicant *wpa_s)
      28             : {
      29         711 :         if (wpa_s->driver->deinit)
      30         711 :                 wpa_s->driver->deinit(wpa_s->drv_priv);
      31         711 : }
      32             : 
      33         711 : static inline int wpa_drv_set_param(struct wpa_supplicant *wpa_s,
      34             :                                     const char *param)
      35             : {
      36         711 :         if (wpa_s->driver->set_param)
      37         649 :                 return wpa_s->driver->set_param(wpa_s->drv_priv, param);
      38          62 :         return 0;
      39             : }
      40             : 
      41        1419 : static inline int wpa_drv_set_countermeasures(struct wpa_supplicant *wpa_s,
      42             :                                               int enabled)
      43             : {
      44        1419 :         if (wpa_s->driver->set_countermeasures) {
      45          19 :                 return wpa_s->driver->set_countermeasures(wpa_s->drv_priv,
      46             :                                                           enabled);
      47             :         }
      48        1400 :         return -1;
      49             : }
      50             : 
      51        4818 : static inline int wpa_drv_authenticate(struct wpa_supplicant *wpa_s,
      52             :                                        struct wpa_driver_auth_params *params)
      53             : {
      54        4818 :         if (wpa_s->driver->authenticate)
      55        4818 :                 return wpa_s->driver->authenticate(wpa_s->drv_priv, params);
      56           0 :         return -1;
      57             : }
      58             : 
      59        5273 : static inline int wpa_drv_associate(struct wpa_supplicant *wpa_s,
      60             :                                     struct wpa_driver_associate_params *params)
      61             : {
      62        5273 :         if (wpa_s->driver->associate) {
      63        5273 :                 return wpa_s->driver->associate(wpa_s->drv_priv, params);
      64             :         }
      65           0 :         return -1;
      66             : }
      67             : 
      68         174 : static inline int wpa_drv_init_mesh(struct wpa_supplicant *wpa_s)
      69             : {
      70         174 :         if (wpa_s->driver->init_mesh)
      71         174 :                 return wpa_s->driver->init_mesh(wpa_s->drv_priv);
      72           0 :         return -1;
      73             : }
      74             : 
      75         168 : static inline int wpa_drv_join_mesh(struct wpa_supplicant *wpa_s,
      76             :                                     struct wpa_driver_mesh_join_params *params)
      77             : {
      78         168 :         if (wpa_s->driver->join_mesh)
      79         168 :                 return wpa_s->driver->join_mesh(wpa_s->drv_priv, params);
      80           0 :         return -1;
      81             : }
      82             : 
      83         193 : static inline int wpa_drv_leave_mesh(struct wpa_supplicant *wpa_s)
      84             : {
      85         193 :         if (wpa_s->driver->leave_mesh)
      86         193 :                 return wpa_s->driver->leave_mesh(wpa_s->drv_priv);
      87           0 :         return -1;
      88             : }
      89             : 
      90        5602 : static inline int wpa_drv_scan(struct wpa_supplicant *wpa_s,
      91             :                                struct wpa_driver_scan_params *params)
      92             : {
      93             : #ifdef CONFIG_TESTING_OPTIONS
      94        5602 :         if (wpa_s->test_failure == WPAS_TEST_FAILURE_SCAN_TRIGGER)
      95           3 :                 return -EBUSY;
      96             : #endif /* CONFIG_TESTING_OPTIONS */
      97        5599 :         if (wpa_s->driver->scan2)
      98        5599 :                 return wpa_s->driver->scan2(wpa_s->drv_priv, params);
      99           0 :         return -1;
     100             : }
     101             : 
     102           0 : static inline int wpa_drv_sched_scan(struct wpa_supplicant *wpa_s,
     103             :                                      struct wpa_driver_scan_params *params)
     104             : {
     105           0 :         if (wpa_s->driver->sched_scan)
     106           0 :                 return wpa_s->driver->sched_scan(wpa_s->drv_priv, params);
     107           0 :         return -1;
     108             : }
     109             : 
     110           0 : static inline int wpa_drv_stop_sched_scan(struct wpa_supplicant *wpa_s)
     111             : {
     112           0 :         if (wpa_s->driver->stop_sched_scan)
     113           0 :                 return wpa_s->driver->stop_sched_scan(wpa_s->drv_priv);
     114           0 :         return -1;
     115             : }
     116             : 
     117        5718 : static inline struct wpa_scan_results * wpa_drv_get_scan_results2(
     118             :         struct wpa_supplicant *wpa_s)
     119             : {
     120        5718 :         if (wpa_s->driver->get_scan_results2)
     121        5718 :                 return wpa_s->driver->get_scan_results2(wpa_s->drv_priv);
     122           0 :         return NULL;
     123             : }
     124             : 
     125       26007 : static inline int wpa_drv_get_bssid(struct wpa_supplicant *wpa_s, u8 *bssid)
     126             : {
     127       26007 :         if (wpa_s->driver->get_bssid) {
     128       26007 :                 return wpa_s->driver->get_bssid(wpa_s->drv_priv, bssid);
     129             :         }
     130           0 :         return -1;
     131             : }
     132             : 
     133        6833 : static inline int wpa_drv_get_ssid(struct wpa_supplicant *wpa_s, u8 *ssid)
     134             : {
     135        6833 :         if (wpa_s->driver->get_ssid) {
     136        6833 :                 return wpa_s->driver->get_ssid(wpa_s->drv_priv, ssid);
     137             :         }
     138           0 :         return -1;
     139             : }
     140             : 
     141       16694 : static inline int wpa_drv_set_key(struct wpa_supplicant *wpa_s,
     142             :                                   enum wpa_alg alg, const u8 *addr,
     143             :                                   int key_idx, int set_tx,
     144             :                                   const u8 *seq, size_t seq_len,
     145             :                                   const u8 *key, size_t key_len)
     146             : {
     147       16694 :         if (alg != WPA_ALG_NONE) {
     148        5453 :                 if (key_idx >= 0 && key_idx <= 6)
     149        5375 :                         wpa_s->keys_cleared &= ~BIT(key_idx);
     150             :                 else
     151          78 :                         wpa_s->keys_cleared = 0;
     152             :         }
     153       16694 :         if (wpa_s->driver->set_key) {
     154       16376 :                 return wpa_s->driver->set_key(wpa_s->ifname, wpa_s->drv_priv,
     155             :                                               alg, addr, key_idx, set_tx,
     156             :                                               seq, seq_len, key, key_len);
     157             :         }
     158         318 :         return -1;
     159             : }
     160             : 
     161          84 : static inline int wpa_drv_get_seqnum(struct wpa_supplicant *wpa_s,
     162             :                                      const u8 *addr, int idx, u8 *seq)
     163             : {
     164          84 :         if (wpa_s->driver->get_seqnum)
     165          84 :                 return wpa_s->driver->get_seqnum(wpa_s->ifname, wpa_s->drv_priv,
     166             :                                                  addr, idx, seq);
     167           0 :         return -1;
     168             : }
     169             : 
     170           2 : static inline int wpa_drv_sta_deauth(struct wpa_supplicant *wpa_s,
     171             :                                      const u8 *addr, int reason_code)
     172             : {
     173           2 :         if (wpa_s->driver->sta_deauth) {
     174           4 :                 return wpa_s->driver->sta_deauth(wpa_s->drv_priv,
     175           2 :                                                  wpa_s->own_addr, addr,
     176             :                                                  reason_code);
     177             :         }
     178           0 :         return -1;
     179             : }
     180             : 
     181        4379 : static inline int wpa_drv_deauthenticate(struct wpa_supplicant *wpa_s,
     182             :                                          const u8 *addr, int reason_code)
     183             : {
     184        4379 :         if (wpa_s->driver->deauthenticate) {
     185        4379 :                 return wpa_s->driver->deauthenticate(wpa_s->drv_priv, addr,
     186             :                                                      reason_code);
     187             :         }
     188           0 :         return -1;
     189             : }
     190             : 
     191        1276 : static inline int wpa_drv_add_pmkid(struct wpa_supplicant *wpa_s,
     192             :                                     const u8 *bssid, const u8 *pmkid)
     193             : {
     194        1276 :         if (wpa_s->driver->add_pmkid) {
     195        1276 :                 return wpa_s->driver->add_pmkid(wpa_s->drv_priv, bssid, pmkid);
     196             :         }
     197           0 :         return -1;
     198             : }
     199             : 
     200        1276 : static inline int wpa_drv_remove_pmkid(struct wpa_supplicant *wpa_s,
     201             :                                        const u8 *bssid, const u8 *pmkid)
     202             : {
     203        1276 :         if (wpa_s->driver->remove_pmkid) {
     204        1276 :                 return wpa_s->driver->remove_pmkid(wpa_s->drv_priv, bssid,
     205             :                                                    pmkid);
     206             :         }
     207           0 :         return -1;
     208             : }
     209             : 
     210         705 : static inline int wpa_drv_flush_pmkid(struct wpa_supplicant *wpa_s)
     211             : {
     212         705 :         if (wpa_s->driver->flush_pmkid) {
     213         657 :                 return wpa_s->driver->flush_pmkid(wpa_s->drv_priv);
     214             :         }
     215          48 :         return -1;
     216             : }
     217             : 
     218        1593 : static inline int wpa_drv_get_capa(struct wpa_supplicant *wpa_s,
     219             :                                    struct wpa_driver_capa *capa)
     220             : {
     221        1593 :         if (wpa_s->driver->get_capa) {
     222        1509 :                 return wpa_s->driver->get_capa(wpa_s->drv_priv, capa);
     223             :         }
     224          84 :         return -1;
     225             : }
     226             : 
     227        4446 : static inline void wpa_drv_poll(struct wpa_supplicant *wpa_s)
     228             : {
     229        4446 :         if (wpa_s->driver->poll) {
     230           0 :                 wpa_s->driver->poll(wpa_s->drv_priv);
     231             :         }
     232        4446 : }
     233             : 
     234         711 : static inline const char * wpa_drv_get_ifname(struct wpa_supplicant *wpa_s)
     235             : {
     236         711 :         if (wpa_s->driver->get_ifname) {
     237           0 :                 return wpa_s->driver->get_ifname(wpa_s->drv_priv);
     238             :         }
     239         711 :         return NULL;
     240             : }
     241             : 
     242             : static inline const char *
     243         711 : wpa_driver_get_radio_name(struct wpa_supplicant *wpa_s)
     244             : {
     245         711 :         if (wpa_s->driver->get_radio_name)
     246         658 :                 return wpa_s->driver->get_radio_name(wpa_s->drv_priv);
     247          53 :         return NULL;
     248             : }
     249             : 
     250         744 : static inline const u8 * wpa_drv_get_mac_addr(struct wpa_supplicant *wpa_s)
     251             : {
     252         744 :         if (wpa_s->driver->get_mac_addr) {
     253         685 :                 return wpa_s->driver->get_mac_addr(wpa_s->drv_priv);
     254             :         }
     255          59 :         return NULL;
     256             : }
     257             : 
     258       27469 : static inline int wpa_drv_set_operstate(struct wpa_supplicant *wpa_s,
     259             :                                         int state)
     260             : {
     261       27469 :         if (wpa_s->driver->set_operstate)
     262       27381 :                 return wpa_s->driver->set_operstate(wpa_s->drv_priv, state);
     263          88 :         return 0;
     264             : }
     265             : 
     266        6682 : static inline int wpa_drv_mlme_setprotection(struct wpa_supplicant *wpa_s,
     267             :                                              const u8 *addr, int protect_type,
     268             :                                              int key_type)
     269             : {
     270        6682 :         if (wpa_s->driver->mlme_setprotection)
     271           0 :                 return wpa_s->driver->mlme_setprotection(wpa_s->drv_priv, addr,
     272             :                                                          protect_type,
     273             :                                                          key_type);
     274        6682 :         return 0;
     275             : }
     276             : 
     277             : static inline struct hostapd_hw_modes *
     278       15410 : wpa_drv_get_hw_feature_data(struct wpa_supplicant *wpa_s, u16 *num_modes,
     279             :                             u16 *flags)
     280             : {
     281       15410 :         if (wpa_s->driver->get_hw_feature_data)
     282       15352 :                 return wpa_s->driver->get_hw_feature_data(wpa_s->drv_priv,
     283             :                                                           num_modes, flags);
     284          58 :         return NULL;
     285             : }
     286             : 
     287           9 : static inline int wpa_drv_set_country(struct wpa_supplicant *wpa_s,
     288             :                                       const char *alpha2)
     289             : {
     290           9 :         if (wpa_s->driver->set_country)
     291           9 :                 return wpa_s->driver->set_country(wpa_s->drv_priv, alpha2);
     292           0 :         return 0;
     293             : }
     294             : 
     295         763 : static inline int wpa_drv_send_mlme(struct wpa_supplicant *wpa_s,
     296             :                                     const u8 *data, size_t data_len, int noack,
     297             :                                     unsigned int freq)
     298             : {
     299         763 :         if (wpa_s->driver->send_mlme)
     300         763 :                 return wpa_s->driver->send_mlme(wpa_s->drv_priv,
     301             :                                                 data, data_len, noack,
     302             :                                                 freq, NULL, 0);
     303           0 :         return -1;
     304             : }
     305             : 
     306           0 : static inline int wpa_drv_update_ft_ies(struct wpa_supplicant *wpa_s,
     307             :                                         const u8 *md,
     308             :                                         const u8 *ies, size_t ies_len)
     309             : {
     310           0 :         if (wpa_s->driver->update_ft_ies)
     311           0 :                 return wpa_s->driver->update_ft_ies(wpa_s->drv_priv, md,
     312             :                                                     ies, ies_len);
     313           0 :         return -1;
     314             : }
     315             : 
     316             : static inline int wpa_drv_set_ap(struct wpa_supplicant *wpa_s,
     317             :                                  struct wpa_driver_ap_params *params)
     318             : {
     319             :         if (wpa_s->driver->set_ap)
     320             :                 return wpa_s->driver->set_ap(wpa_s->drv_priv, params);
     321             :         return -1;
     322             : }
     323             : 
     324         896 : static inline int wpa_drv_sta_add(struct wpa_supplicant *wpa_s,
     325             :                                   struct hostapd_sta_add_params *params)
     326             : {
     327         896 :         if (wpa_s->driver->sta_add)
     328         896 :                 return wpa_s->driver->sta_add(wpa_s->drv_priv, params);
     329           0 :         return -1;
     330             : }
     331             : 
     332             : static inline int wpa_drv_sta_remove(struct wpa_supplicant *wpa_s,
     333             :                                      const u8 *addr)
     334             : {
     335             :         if (wpa_s->driver->sta_remove)
     336             :                 return wpa_s->driver->sta_remove(wpa_s->drv_priv, addr);
     337             :         return -1;
     338             : }
     339             : 
     340             : static inline int wpa_drv_hapd_send_eapol(struct wpa_supplicant *wpa_s,
     341             :                                           const u8 *addr, const u8 *data,
     342             :                                           size_t data_len, int encrypt,
     343             :                                           const u8 *own_addr, u32 flags)
     344             : {
     345             :         if (wpa_s->driver->hapd_send_eapol)
     346             :                 return wpa_s->driver->hapd_send_eapol(wpa_s->drv_priv, addr,
     347             :                                                       data, data_len, encrypt,
     348             :                                                       own_addr, flags);
     349             :         return -1;
     350             : }
     351             : 
     352          36 : static inline int wpa_drv_sta_set_flags(struct wpa_supplicant *wpa_s,
     353             :                                         const u8 *addr, int total_flags,
     354             :                                         int flags_or, int flags_and)
     355             : {
     356          36 :         if (wpa_s->driver->sta_set_flags)
     357          36 :                 return wpa_s->driver->sta_set_flags(wpa_s->drv_priv, addr,
     358             :                                                     total_flags, flags_or,
     359             :                                                     flags_and);
     360           0 :         return -1;
     361             : }
     362             : 
     363        9611 : static inline int wpa_drv_set_supp_port(struct wpa_supplicant *wpa_s,
     364             :                                         int authorized)
     365             : {
     366        9611 :         if (wpa_s->driver->set_supp_port) {
     367        9533 :                 return wpa_s->driver->set_supp_port(wpa_s->drv_priv,
     368             :                                                     authorized);
     369             :         }
     370          78 :         return 0;
     371             : }
     372             : 
     373        3926 : static inline int wpa_drv_send_action(struct wpa_supplicant *wpa_s,
     374             :                                       unsigned int freq,
     375             :                                       unsigned int wait,
     376             :                                       const u8 *dst, const u8 *src,
     377             :                                       const u8 *bssid,
     378             :                                       const u8 *data, size_t data_len,
     379             :                                       int no_cck)
     380             : {
     381        3926 :         if (wpa_s->driver->send_action)
     382        3926 :                 return wpa_s->driver->send_action(wpa_s->drv_priv, freq,
     383             :                                                   wait, dst, src, bssid,
     384             :                                                   data, data_len, no_cck);
     385           0 :         return -1;
     386             : }
     387             : 
     388        1520 : static inline void wpa_drv_send_action_cancel_wait(struct wpa_supplicant *wpa_s)
     389             : {
     390        1520 :         if (wpa_s->driver->send_action_cancel_wait)
     391        1520 :                 wpa_s->driver->send_action_cancel_wait(wpa_s->drv_priv);
     392        1520 : }
     393             : 
     394             : static inline int wpa_drv_set_freq(struct wpa_supplicant *wpa_s,
     395             :                                    struct hostapd_freq_params *freq)
     396             : {
     397             :         if (wpa_s->driver->set_freq)
     398             :                 return wpa_s->driver->set_freq(wpa_s->drv_priv, freq);
     399             :         return -1;
     400             : }
     401             : 
     402         236 : static inline int wpa_drv_if_add(struct wpa_supplicant *wpa_s,
     403             :                                  enum wpa_driver_if_type type,
     404             :                                  const char *ifname, const u8 *addr,
     405             :                                  void *bss_ctx, char *force_ifname,
     406             :                                  u8 *if_addr, const char *bridge)
     407             : {
     408         236 :         if (wpa_s->driver->if_add)
     409         236 :                 return wpa_s->driver->if_add(wpa_s->drv_priv, type, ifname,
     410             :                                              addr, bss_ctx, NULL, force_ifname,
     411             :                                              if_addr, bridge, 0, 0);
     412           0 :         return -1;
     413             : }
     414             : 
     415         203 : static inline int wpa_drv_if_remove(struct wpa_supplicant *wpa_s,
     416             :                                     enum wpa_driver_if_type type,
     417             :                                     const char *ifname)
     418             : {
     419         203 :         if (wpa_s->driver->if_remove)
     420         203 :                 return wpa_s->driver->if_remove(wpa_s->drv_priv, type, ifname);
     421           0 :         return -1;
     422             : }
     423             : 
     424        2059 : static inline int wpa_drv_remain_on_channel(struct wpa_supplicant *wpa_s,
     425             :                                             unsigned int freq,
     426             :                                             unsigned int duration)
     427             : {
     428        2059 :         if (wpa_s->driver->remain_on_channel)
     429        2059 :                 return wpa_s->driver->remain_on_channel(wpa_s->drv_priv, freq,
     430             :                                                         duration);
     431           0 :         return -1;
     432             : }
     433             : 
     434        1050 : static inline int wpa_drv_cancel_remain_on_channel(
     435             :         struct wpa_supplicant *wpa_s)
     436             : {
     437        1050 :         if (wpa_s->driver->cancel_remain_on_channel)
     438        1050 :                 return wpa_s->driver->cancel_remain_on_channel(
     439             :                         wpa_s->drv_priv);
     440           0 :         return -1;
     441             : }
     442             : 
     443       35967 : static inline int wpa_drv_probe_req_report(struct wpa_supplicant *wpa_s,
     444             :                                            int report)
     445             : {
     446       35967 :         if (wpa_s->driver->probe_req_report)
     447       35905 :                 return wpa_s->driver->probe_req_report(wpa_s->drv_priv,
     448             :                                                        report);
     449          62 :         return -1;
     450             : }
     451             : 
     452         442 : static inline int wpa_drv_deinit_ap(struct wpa_supplicant *wpa_s)
     453             : {
     454         442 :         if (wpa_s->driver->deinit_ap)
     455         442 :                 return wpa_s->driver->deinit_ap(wpa_s->drv_priv);
     456           0 :         return 0;
     457             : }
     458             : 
     459         239 : static inline int wpa_drv_deinit_p2p_cli(struct wpa_supplicant *wpa_s)
     460             : {
     461         239 :         if (wpa_s->driver->deinit_p2p_cli)
     462         239 :                 return wpa_s->driver->deinit_p2p_cli(wpa_s->drv_priv);
     463           0 :         return 0;
     464             : }
     465             : 
     466           2 : static inline void wpa_drv_suspend(struct wpa_supplicant *wpa_s)
     467             : {
     468           2 :         if (wpa_s->driver->suspend)
     469           0 :                 wpa_s->driver->suspend(wpa_s->drv_priv);
     470           2 : }
     471             : 
     472           2 : static inline void wpa_drv_resume(struct wpa_supplicant *wpa_s)
     473             : {
     474           2 :         if (wpa_s->driver->resume)
     475           2 :                 wpa_s->driver->resume(wpa_s->drv_priv);
     476           2 : }
     477             : 
     478          18 : static inline int wpa_drv_signal_monitor(struct wpa_supplicant *wpa_s,
     479             :                                          int threshold, int hysteresis)
     480             : {
     481          18 :         if (wpa_s->driver->signal_monitor)
     482          18 :                 return wpa_s->driver->signal_monitor(wpa_s->drv_priv,
     483             :                                                      threshold, hysteresis);
     484           0 :         return -1;
     485             : }
     486             : 
     487          62 : static inline int wpa_drv_signal_poll(struct wpa_supplicant *wpa_s,
     488             :                                       struct wpa_signal_info *si)
     489             : {
     490          62 :         if (wpa_s->driver->signal_poll)
     491          62 :                 return wpa_s->driver->signal_poll(wpa_s->drv_priv, si);
     492           0 :         return -1;
     493             : }
     494             : 
     495           1 : static inline int wpa_drv_pktcnt_poll(struct wpa_supplicant *wpa_s,
     496             :                                       struct hostap_sta_driver_data *sta)
     497             : {
     498           1 :         if (wpa_s->driver->read_sta_data)
     499           2 :                 return wpa_s->driver->read_sta_data(wpa_s->drv_priv, sta,
     500           1 :                                                     wpa_s->bssid);
     501           0 :         return -1;
     502             : }
     503             : 
     504       35252 : static inline int wpa_drv_set_ap_wps_ie(struct wpa_supplicant *wpa_s,
     505             :                                         const struct wpabuf *beacon,
     506             :                                         const struct wpabuf *proberesp,
     507             :                                         const struct wpabuf *assocresp)
     508             : {
     509       35252 :         if (!wpa_s->driver->set_ap_wps_ie)
     510       35252 :                 return -1;
     511           0 :         return wpa_s->driver->set_ap_wps_ie(wpa_s->drv_priv, beacon,
     512             :                                             proberesp, assocresp);
     513             : }
     514             : 
     515          10 : static inline int wpa_drv_get_noa(struct wpa_supplicant *wpa_s,
     516             :                                   u8 *buf, size_t buf_len)
     517             : {
     518          10 :         if (!wpa_s->driver->get_noa)
     519          10 :                 return -1;
     520           0 :         return wpa_s->driver->get_noa(wpa_s->drv_priv, buf, buf_len);
     521             : }
     522             : 
     523           8 : static inline int wpa_drv_set_p2p_powersave(struct wpa_supplicant *wpa_s,
     524             :                                             int legacy_ps, int opp_ps,
     525             :                                             int ctwindow)
     526             : {
     527           8 :         if (!wpa_s->driver->set_p2p_powersave)
     528           0 :                 return -1;
     529           8 :         return wpa_s->driver->set_p2p_powersave(wpa_s->drv_priv, legacy_ps,
     530             :                                                 opp_ps, ctwindow);
     531             : }
     532             : 
     533           1 : static inline int wpa_drv_ampdu(struct wpa_supplicant *wpa_s, int ampdu)
     534             : {
     535           1 :         if (!wpa_s->driver->ampdu)
     536           1 :                 return -1;
     537           0 :         return wpa_s->driver->ampdu(wpa_s->drv_priv, ampdu);
     538             : }
     539             : 
     540         143 : static inline int wpa_drv_send_tdls_mgmt(struct wpa_supplicant *wpa_s,
     541             :                                          const u8 *dst, u8 action_code,
     542             :                                          u8 dialog_token, u16 status_code,
     543             :                                          u32 peer_capab, int initiator,
     544             :                                          const u8 *buf, size_t len)
     545             : {
     546         143 :         if (wpa_s->driver->send_tdls_mgmt) {
     547         143 :                 return wpa_s->driver->send_tdls_mgmt(wpa_s->drv_priv, dst,
     548             :                                                      action_code, dialog_token,
     549             :                                                      status_code, peer_capab,
     550             :                                                      initiator, buf, len);
     551             :         }
     552           0 :         return -1;
     553             : }
     554             : 
     555        6186 : static inline int wpa_drv_tdls_oper(struct wpa_supplicant *wpa_s,
     556             :                                     enum tdls_oper oper, const u8 *peer)
     557             : {
     558        6186 :         if (!wpa_s->driver->tdls_oper)
     559           0 :                 return -1;
     560        6186 :         return wpa_s->driver->tdls_oper(wpa_s->drv_priv, oper, peer);
     561             : }
     562             : 
     563             : #ifdef ANDROID
     564             : static inline int wpa_drv_driver_cmd(struct wpa_supplicant *wpa_s,
     565             :                                      char *cmd, char *buf, size_t buf_len)
     566             : {
     567             :         if (!wpa_s->driver->driver_cmd)
     568             :                 return -1;
     569             :         return wpa_s->driver->driver_cmd(wpa_s->drv_priv, cmd, buf, buf_len);
     570             : }
     571             : #endif /* ANDROID */
     572             : 
     573        2156 : static inline void wpa_drv_set_rekey_info(struct wpa_supplicant *wpa_s,
     574             :                                           const u8 *kek, size_t kek_len,
     575             :                                           const u8 *kck, size_t kck_len,
     576             :                                           const u8 *replay_ctr)
     577             : {
     578        2156 :         if (!wpa_s->driver->set_rekey_info)
     579        2164 :                 return;
     580        2148 :         wpa_s->driver->set_rekey_info(wpa_s->drv_priv, kek, kek_len,
     581             :                                       kck, kck_len, replay_ctr);
     582             : }
     583             : 
     584        6060 : static inline int wpa_drv_radio_disable(struct wpa_supplicant *wpa_s,
     585             :                                         int disabled)
     586             : {
     587        6060 :         if (!wpa_s->driver->radio_disable)
     588        6060 :                 return -1;
     589           0 :         return wpa_s->driver->radio_disable(wpa_s->drv_priv, disabled);
     590             : }
     591             : 
     592             : static inline int wpa_drv_switch_channel(struct wpa_supplicant *wpa_s,
     593             :                                          struct csa_settings *settings)
     594             : {
     595             :         if (!wpa_s->driver->switch_channel)
     596             :                 return -1;
     597             :         return wpa_s->driver->switch_channel(wpa_s->drv_priv, settings);
     598             : }
     599             : 
     600           0 : static inline int wpa_drv_add_ts(struct wpa_supplicant *wpa_s, u8 tsid,
     601             :                                  const u8 *address, u8 user_priority,
     602             :                                  u16 admitted_time)
     603             : {
     604           0 :         if (!wpa_s->driver->add_tx_ts)
     605           0 :                 return -1;
     606           0 :         return wpa_s->driver->add_tx_ts(wpa_s->drv_priv, tsid, address,
     607             :                                         user_priority, admitted_time);
     608             : }
     609             : 
     610           0 : static inline int wpa_drv_del_ts(struct wpa_supplicant *wpa_s, u8 tid,
     611             :                                  const u8 *address)
     612             : {
     613           0 :         if (!wpa_s->driver->del_tx_ts)
     614           0 :                 return -1;
     615           0 :         return wpa_s->driver->del_tx_ts(wpa_s->drv_priv, tid, address);
     616             : }
     617             : 
     618           1 : static inline int wpa_drv_tdls_enable_channel_switch(
     619             :         struct wpa_supplicant *wpa_s, const u8 *addr, u8 oper_class,
     620             :         const struct hostapd_freq_params *freq_params)
     621             : {
     622           1 :         if (!wpa_s->driver->tdls_enable_channel_switch)
     623           0 :                 return -1;
     624           1 :         return wpa_s->driver->tdls_enable_channel_switch(wpa_s->drv_priv, addr,
     625             :                                                          oper_class,
     626             :                                                          freq_params);
     627             : }
     628             : 
     629             : static inline int
     630           1 : wpa_drv_tdls_disable_channel_switch(struct wpa_supplicant *wpa_s,
     631             :                                     const u8 *addr)
     632             : {
     633           1 :         if (!wpa_s->driver->tdls_disable_channel_switch)
     634           0 :                 return -1;
     635           1 :         return wpa_s->driver->tdls_disable_channel_switch(wpa_s->drv_priv,
     636             :                                                           addr);
     637             : }
     638             : 
     639          39 : static inline int wpa_drv_wnm_oper(struct wpa_supplicant *wpa_s,
     640             :                                    enum wnm_oper oper, const u8 *peer,
     641             :                                    u8 *buf, u16 *buf_len)
     642             : {
     643          39 :         if (!wpa_s->driver->wnm_oper)
     644          39 :                 return -1;
     645           0 :         return wpa_s->driver->wnm_oper(wpa_s->drv_priv, oper, peer, buf,
     646             :                                        buf_len);
     647             : }
     648             : 
     649        8126 : static inline int wpa_drv_status(struct wpa_supplicant *wpa_s,
     650             :                                  char *buf, size_t buflen)
     651             : {
     652        8126 :         if (!wpa_s->driver->status)
     653           0 :                 return -1;
     654        8126 :         return wpa_s->driver->status(wpa_s->drv_priv, buf, buflen);
     655             : }
     656             : 
     657           2 : static inline int wpa_drv_set_qos_map(struct wpa_supplicant *wpa_s,
     658             :                                       const u8 *qos_map_set, u8 qos_map_set_len)
     659             : {
     660           2 :         if (!wpa_s->driver->set_qos_map)
     661           0 :                 return -1;
     662           2 :         return wpa_s->driver->set_qos_map(wpa_s->drv_priv, qos_map_set,
     663             :                                           qos_map_set_len);
     664             : }
     665             : 
     666           0 : static inline int wpa_drv_wowlan(struct wpa_supplicant *wpa_s,
     667             :                                  const struct wowlan_triggers *triggers)
     668             : {
     669           0 :         if (!wpa_s->driver->set_wowlan)
     670           0 :                 return -1;
     671           0 :         return wpa_s->driver->set_wowlan(wpa_s->drv_priv, triggers);
     672             : }
     673             : 
     674           5 : static inline int wpa_drv_vendor_cmd(struct wpa_supplicant *wpa_s,
     675             :                                      int vendor_id, int subcmd, const u8 *data,
     676             :                                      size_t data_len, struct wpabuf *buf)
     677             : {
     678           5 :         if (!wpa_s->driver->vendor_cmd)
     679           0 :                 return -1;
     680           5 :         return wpa_s->driver->vendor_cmd(wpa_s->drv_priv, vendor_id, subcmd,
     681             :                                          data, data_len, buf);
     682             : }
     683             : 
     684          12 : static inline int wpa_drv_roaming(struct wpa_supplicant *wpa_s, int allowed,
     685             :                                   const u8 *bssid)
     686             : {
     687          12 :         if (!wpa_s->driver->roaming)
     688          12 :                 return -1;
     689           0 :         return wpa_s->driver->roaming(wpa_s->drv_priv, allowed, bssid);
     690             : }
     691             : 
     692          12 : static inline int wpa_drv_set_mac_addr(struct wpa_supplicant *wpa_s,
     693             :                                        const u8 *addr)
     694             : {
     695          12 :         if (!wpa_s->driver->set_mac_addr)
     696           0 :                 return -1;
     697          12 :         return wpa_s->driver->set_mac_addr(wpa_s->drv_priv, addr);
     698             : }
     699             : 
     700             : 
     701             : #ifdef CONFIG_MACSEC
     702             : 
     703             : static inline int wpa_drv_macsec_init(struct wpa_supplicant *wpa_s,
     704             :                                       struct macsec_init_params *params)
     705             : {
     706             :         if (!wpa_s->driver->macsec_init)
     707             :                 return -1;
     708             :         return wpa_s->driver->macsec_init(wpa_s->drv_priv, params);
     709             : }
     710             : 
     711             : static inline int wpa_drv_macsec_deinit(struct wpa_supplicant *wpa_s)
     712             : {
     713             :         if (!wpa_s->driver->macsec_deinit)
     714             :                 return -1;
     715             :         return wpa_s->driver->macsec_deinit(wpa_s->drv_priv);
     716             : }
     717             : 
     718             : static inline int wpa_drv_enable_protect_frames(struct wpa_supplicant *wpa_s,
     719             :                                                 Boolean enabled)
     720             : {
     721             :         if (!wpa_s->driver->enable_protect_frames)
     722             :                 return -1;
     723             :         return wpa_s->driver->enable_protect_frames(wpa_s->drv_priv, enabled);
     724             : }
     725             : 
     726             : static inline int wpa_drv_set_replay_protect(struct wpa_supplicant *wpa_s,
     727             :                                              Boolean enabled, u32 window)
     728             : {
     729             :         if (!wpa_s->driver->set_replay_protect)
     730             :                 return -1;
     731             :         return wpa_s->driver->set_replay_protect(wpa_s->drv_priv, enabled,
     732             :                                                  window);
     733             : }
     734             : 
     735             : static inline int wpa_drv_set_current_cipher_suite(struct wpa_supplicant *wpa_s,
     736             :                                                    u64 cs)
     737             : {
     738             :         if (!wpa_s->driver->set_current_cipher_suite)
     739             :                 return -1;
     740             :         return wpa_s->driver->set_current_cipher_suite(wpa_s->drv_priv, cs);
     741             : }
     742             : 
     743             : static inline int wpa_drv_enable_controlled_port(struct wpa_supplicant *wpa_s,
     744             :                                                  Boolean enabled)
     745             : {
     746             :         if (!wpa_s->driver->enable_controlled_port)
     747             :                 return -1;
     748             :         return wpa_s->driver->enable_controlled_port(wpa_s->drv_priv, enabled);
     749             : }
     750             : 
     751             : static inline int wpa_drv_get_receive_lowest_pn(struct wpa_supplicant *wpa_s,
     752             :                                                 u32 channel, u8 an,
     753             :                                                 u32 *lowest_pn)
     754             : {
     755             :         if (!wpa_s->driver->get_receive_lowest_pn)
     756             :                 return -1;
     757             :         return wpa_s->driver->get_receive_lowest_pn(wpa_s->drv_priv, channel,
     758             :                                                     an, lowest_pn);
     759             : }
     760             : 
     761             : static inline int wpa_drv_get_transmit_next_pn(struct wpa_supplicant *wpa_s,
     762             :                                                 u32 channel, u8 an,
     763             :                                                 u32 *next_pn)
     764             : {
     765             :         if (!wpa_s->driver->get_transmit_next_pn)
     766             :                 return -1;
     767             :         return wpa_s->driver->get_transmit_next_pn(wpa_s->drv_priv, channel,
     768             :                                                     an, next_pn);
     769             : }
     770             : 
     771             : static inline int wpa_drv_set_transmit_next_pn(struct wpa_supplicant *wpa_s,
     772             :                                                 u32 channel, u8 an,
     773             :                                                 u32 next_pn)
     774             : {
     775             :         if (!wpa_s->driver->set_transmit_next_pn)
     776             :                 return -1;
     777             :         return wpa_s->driver->set_transmit_next_pn(wpa_s->drv_priv, channel,
     778             :                                                     an, next_pn);
     779             : }
     780             : 
     781             : static inline int wpa_drv_get_available_receive_sc(struct wpa_supplicant *wpa_s,
     782             :                                                    u32 *channel)
     783             : {
     784             :         if (!wpa_s->driver->get_available_receive_sc)
     785             :                 return -1;
     786             :         return wpa_s->driver->get_available_receive_sc(wpa_s->drv_priv,
     787             :                                                        channel);
     788             : }
     789             : 
     790             : static inline int
     791             : wpa_drv_create_receive_sc(struct wpa_supplicant *wpa_s, u32 channel,
     792             :                           const u8 *sci_addr, u16 sci_port,
     793             :                           unsigned int conf_offset, int validation)
     794             : {
     795             :         if (!wpa_s->driver->create_receive_sc)
     796             :                 return -1;
     797             :         return wpa_s->driver->create_receive_sc(wpa_s->drv_priv, channel,
     798             :                                                 sci_addr, sci_port, conf_offset,
     799             :                                                 validation);
     800             : }
     801             : 
     802             : static inline int wpa_drv_delete_receive_sc(struct wpa_supplicant *wpa_s,
     803             :                                             u32 channel)
     804             : {
     805             :         if (!wpa_s->driver->delete_receive_sc)
     806             :                 return -1;
     807             :         return wpa_s->driver->delete_receive_sc(wpa_s->drv_priv, channel);
     808             : }
     809             : 
     810             : static inline int wpa_drv_create_receive_sa(struct wpa_supplicant *wpa_s,
     811             :                                             u32 channel, u8 an,
     812             :                                             u32 lowest_pn, const u8 *sak)
     813             : {
     814             :         if (!wpa_s->driver->create_receive_sa)
     815             :                 return -1;
     816             :         return wpa_s->driver->create_receive_sa(wpa_s->drv_priv, channel, an,
     817             :                                                 lowest_pn, sak);
     818             : }
     819             : 
     820             : static inline int wpa_drv_enable_receive_sa(struct wpa_supplicant *wpa_s,
     821             :                                             u32 channel, u8 an)
     822             : {
     823             :         if (!wpa_s->driver->enable_receive_sa)
     824             :                 return -1;
     825             :         return wpa_s->driver->enable_receive_sa(wpa_s->drv_priv, channel, an);
     826             : }
     827             : 
     828             : static inline int wpa_drv_disable_receive_sa(struct wpa_supplicant *wpa_s,
     829             :                                              u32 channel, u8 an)
     830             : {
     831             :         if (!wpa_s->driver->disable_receive_sa)
     832             :                 return -1;
     833             :         return wpa_s->driver->disable_receive_sa(wpa_s->drv_priv, channel, an);
     834             : }
     835             : 
     836             : static inline int
     837             : wpa_drv_get_available_transmit_sc(struct wpa_supplicant *wpa_s, u32 *channel)
     838             : {
     839             :         if (!wpa_s->driver->get_available_transmit_sc)
     840             :                 return -1;
     841             :         return wpa_s->driver->get_available_transmit_sc(wpa_s->drv_priv,
     842             :                                                         channel);
     843             : }
     844             : 
     845             : static inline int
     846             : wpa_drv_create_transmit_sc(struct wpa_supplicant *wpa_s, u32 channel,
     847             :                            const u8 *sci_addr, u16 sci_port,
     848             :                            unsigned int conf_offset)
     849             : {
     850             :         if (!wpa_s->driver->create_transmit_sc)
     851             :                 return -1;
     852             :         return wpa_s->driver->create_transmit_sc(wpa_s->drv_priv, channel,
     853             :                                                  sci_addr, sci_port,
     854             :                                                  conf_offset);
     855             : }
     856             : 
     857             : static inline int wpa_drv_delete_transmit_sc(struct wpa_supplicant *wpa_s,
     858             :                                              u32 channel)
     859             : {
     860             :         if (!wpa_s->driver->delete_transmit_sc)
     861             :                 return -1;
     862             :         return wpa_s->driver->delete_transmit_sc(wpa_s->drv_priv, channel);
     863             : }
     864             : 
     865             : static inline int wpa_drv_create_transmit_sa(struct wpa_supplicant *wpa_s,
     866             :                                              u32 channel, u8 an,
     867             :                                              u32 next_pn,
     868             :                                              Boolean confidentiality,
     869             :                                              const u8 *sak)
     870             : {
     871             :         if (!wpa_s->driver->create_transmit_sa)
     872             :                 return -1;
     873             :         return wpa_s->driver->create_transmit_sa(wpa_s->drv_priv, channel, an,
     874             :                                                  next_pn, confidentiality, sak);
     875             : }
     876             : 
     877             : static inline int wpa_drv_enable_transmit_sa(struct wpa_supplicant *wpa_s,
     878             :                                              u32 channel, u8 an)
     879             : {
     880             :         if (!wpa_s->driver->enable_transmit_sa)
     881             :                 return -1;
     882             :         return wpa_s->driver->enable_transmit_sa(wpa_s->drv_priv, channel, an);
     883             : }
     884             : 
     885             : static inline int wpa_drv_disable_transmit_sa(struct wpa_supplicant *wpa_s,
     886             :                                               u32 channel, u8 an)
     887             : {
     888             :         if (!wpa_s->driver->disable_transmit_sa)
     889             :                 return -1;
     890             :         return wpa_s->driver->disable_transmit_sa(wpa_s->drv_priv, channel, an);
     891             : }
     892             : #endif /* CONFIG_MACSEC */
     893             : 
     894           8 : static inline int wpa_drv_setband(struct wpa_supplicant *wpa_s,
     895             :                                   enum set_band band)
     896             : {
     897           8 :         if (!wpa_s->driver->set_band)
     898           8 :                 return -1;
     899           0 :         return wpa_s->driver->set_band(wpa_s->drv_priv, band);
     900             : }
     901             : 
     902         819 : static inline int wpa_drv_get_pref_freq_list(struct wpa_supplicant *wpa_s,
     903             :                                              enum wpa_driver_if_type if_type,
     904             :                                              unsigned int *num,
     905             :                                              unsigned int *freq_list)
     906             : {
     907         819 :         if (!wpa_s->driver->get_pref_freq_list)
     908         819 :                 return -1;
     909           0 :         return wpa_s->driver->get_pref_freq_list(wpa_s->drv_priv, if_type,
     910             :                                                  num, freq_list);
     911             : }
     912             : 
     913         145 : static inline int wpa_drv_set_prob_oper_freq(struct wpa_supplicant *wpa_s,
     914             :                                              unsigned int freq)
     915             : {
     916         145 :         if (!wpa_s->driver->set_prob_oper_freq)
     917         145 :                 return 0;
     918           0 :         return wpa_s->driver->set_prob_oper_freq(wpa_s->drv_priv, freq);
     919             : }
     920             : 
     921          60 : static inline int wpa_drv_abort_scan(struct wpa_supplicant *wpa_s)
     922             : {
     923          60 :         if (!wpa_s->driver->abort_scan)
     924           0 :                 return -1;
     925          60 :         return wpa_s->driver->abort_scan(wpa_s->drv_priv);
     926             : }
     927             : 
     928       11223 : static inline int wpa_drv_configure_frame_filters(struct wpa_supplicant *wpa_s,
     929             :                                                   u32 filters)
     930             : {
     931       11223 :         if (!wpa_s->driver->configure_data_frame_filters)
     932         147 :                 return -1;
     933       11076 :         return wpa_s->driver->configure_data_frame_filters(wpa_s->drv_priv,
     934             :                                                            filters);
     935             : }
     936             : 
     937       10918 : static inline int wpa_drv_get_ext_capa(struct wpa_supplicant *wpa_s,
     938             :                                        enum wpa_driver_if_type type)
     939             : {
     940       10918 :         if (!wpa_s->driver->get_ext_capab)
     941          76 :                 return -1;
     942       10842 :         return wpa_s->driver->get_ext_capab(wpa_s->drv_priv, type,
     943             :                                             &wpa_s->extended_capa,
     944             :                                             &wpa_s->extended_capa_mask,
     945             :                                             &wpa_s->extended_capa_len);
     946             : }
     947             : 
     948           0 : static inline int wpa_drv_p2p_lo_start(struct wpa_supplicant *wpa_s,
     949             :                                        unsigned int channel,
     950             :                                        unsigned int period,
     951             :                                        unsigned int interval,
     952             :                                        unsigned int count,
     953             :                                        const u8 *device_types,
     954             :                                        size_t dev_types_len,
     955             :                                        const u8 *ies, size_t ies_len)
     956             : {
     957           0 :         if (!wpa_s->driver->p2p_lo_start)
     958           0 :                 return -1;
     959           0 :         return wpa_s->driver->p2p_lo_start(wpa_s->drv_priv, channel, period,
     960             :                                            interval, count, device_types,
     961             :                                            dev_types_len, ies, ies_len);
     962             : }
     963             : 
     964           0 : static inline int wpa_drv_p2p_lo_stop(struct wpa_supplicant *wpa_s)
     965             : {
     966           0 :         if (!wpa_s->driver->p2p_lo_stop)
     967           0 :                 return -1;
     968           0 :         return wpa_s->driver->p2p_lo_stop(wpa_s->drv_priv);
     969             : }
     970             : 
     971         959 : static inline int wpa_drv_set_default_scan_ies(struct wpa_supplicant *wpa_s,
     972             :                                                const u8 *ies, size_t len)
     973             : {
     974         959 :         if (!wpa_s->driver->set_default_scan_ies)
     975         959 :                 return -1;
     976           0 :         return wpa_s->driver->set_default_scan_ies(wpa_s->drv_priv, ies, len);
     977             : }
     978             : 
     979             : #endif /* DRIVER_I_H */

Generated by: LCOV version 1.10