Home | History | Annotate | Line # | Download | only in wpa_supplicant
driver_i.h revision 1.1
      1  1.1  christos /*
      2  1.1  christos  * wpa_supplicant - Internal driver interface wrappers
      3  1.1  christos  * Copyright (c) 2003-2009, Jouni Malinen <j (at) w1.fi>
      4  1.1  christos  *
      5  1.1  christos  * This program is free software; you can redistribute it and/or modify
      6  1.1  christos  * it under the terms of the GNU General Public License version 2 as
      7  1.1  christos  * published by the Free Software Foundation.
      8  1.1  christos  *
      9  1.1  christos  * Alternatively, this software may be distributed under the terms of BSD
     10  1.1  christos  * license.
     11  1.1  christos  *
     12  1.1  christos  * See README and COPYING for more details.
     13  1.1  christos  */
     14  1.1  christos 
     15  1.1  christos #ifndef DRIVER_I_H
     16  1.1  christos #define DRIVER_I_H
     17  1.1  christos 
     18  1.1  christos #include "drivers/driver.h"
     19  1.1  christos 
     20  1.1  christos /* driver_ops */
     21  1.1  christos static inline void * wpa_drv_init(struct wpa_supplicant *wpa_s,
     22  1.1  christos 				  const char *ifname)
     23  1.1  christos {
     24  1.1  christos 	if (wpa_s->driver->init2)
     25  1.1  christos 		return wpa_s->driver->init2(wpa_s, ifname,
     26  1.1  christos 					    wpa_s->global_drv_priv);
     27  1.1  christos 	if (wpa_s->driver->init) {
     28  1.1  christos 		return wpa_s->driver->init(wpa_s, ifname);
     29  1.1  christos 	}
     30  1.1  christos 	return NULL;
     31  1.1  christos }
     32  1.1  christos 
     33  1.1  christos static inline void wpa_drv_deinit(struct wpa_supplicant *wpa_s)
     34  1.1  christos {
     35  1.1  christos 	if (wpa_s->driver->deinit)
     36  1.1  christos 		wpa_s->driver->deinit(wpa_s->drv_priv);
     37  1.1  christos }
     38  1.1  christos 
     39  1.1  christos static inline int wpa_drv_set_param(struct wpa_supplicant *wpa_s,
     40  1.1  christos 				    const char *param)
     41  1.1  christos {
     42  1.1  christos 	if (wpa_s->driver->set_param)
     43  1.1  christos 		return wpa_s->driver->set_param(wpa_s->drv_priv, param);
     44  1.1  christos 	return 0;
     45  1.1  christos }
     46  1.1  christos 
     47  1.1  christos static inline int wpa_drv_set_countermeasures(struct wpa_supplicant *wpa_s,
     48  1.1  christos 					      int enabled)
     49  1.1  christos {
     50  1.1  christos 	if (wpa_s->driver->set_countermeasures) {
     51  1.1  christos 		return wpa_s->driver->set_countermeasures(wpa_s->drv_priv,
     52  1.1  christos 							  enabled);
     53  1.1  christos 	}
     54  1.1  christos 	return -1;
     55  1.1  christos }
     56  1.1  christos 
     57  1.1  christos static inline int wpa_drv_authenticate(struct wpa_supplicant *wpa_s,
     58  1.1  christos 				       struct wpa_driver_auth_params *params)
     59  1.1  christos {
     60  1.1  christos 	if (wpa_s->driver->authenticate)
     61  1.1  christos 		return wpa_s->driver->authenticate(wpa_s->drv_priv, params);
     62  1.1  christos 	return -1;
     63  1.1  christos }
     64  1.1  christos 
     65  1.1  christos static inline int wpa_drv_associate(struct wpa_supplicant *wpa_s,
     66  1.1  christos 				    struct wpa_driver_associate_params *params)
     67  1.1  christos {
     68  1.1  christos 	if (wpa_s->driver->associate) {
     69  1.1  christos 		return wpa_s->driver->associate(wpa_s->drv_priv, params);
     70  1.1  christos 	}
     71  1.1  christos 	return -1;
     72  1.1  christos }
     73  1.1  christos 
     74  1.1  christos static inline int wpa_drv_scan(struct wpa_supplicant *wpa_s,
     75  1.1  christos 			       struct wpa_driver_scan_params *params)
     76  1.1  christos {
     77  1.1  christos 	if (wpa_s->driver->scan2)
     78  1.1  christos 		return wpa_s->driver->scan2(wpa_s->drv_priv, params);
     79  1.1  christos 	return -1;
     80  1.1  christos }
     81  1.1  christos 
     82  1.1  christos static inline struct wpa_scan_results * wpa_drv_get_scan_results2(
     83  1.1  christos 	struct wpa_supplicant *wpa_s)
     84  1.1  christos {
     85  1.1  christos 	if (wpa_s->driver->get_scan_results2)
     86  1.1  christos 		return wpa_s->driver->get_scan_results2(wpa_s->drv_priv);
     87  1.1  christos 	return NULL;
     88  1.1  christos }
     89  1.1  christos 
     90  1.1  christos static inline int wpa_drv_get_bssid(struct wpa_supplicant *wpa_s, u8 *bssid)
     91  1.1  christos {
     92  1.1  christos 	if (wpa_s->driver->get_bssid) {
     93  1.1  christos 		return wpa_s->driver->get_bssid(wpa_s->drv_priv, bssid);
     94  1.1  christos 	}
     95  1.1  christos 	return -1;
     96  1.1  christos }
     97  1.1  christos 
     98  1.1  christos static inline int wpa_drv_get_ssid(struct wpa_supplicant *wpa_s, u8 *ssid)
     99  1.1  christos {
    100  1.1  christos 	if (wpa_s->driver->get_ssid) {
    101  1.1  christos 		return wpa_s->driver->get_ssid(wpa_s->drv_priv, ssid);
    102  1.1  christos 	}
    103  1.1  christos 	return -1;
    104  1.1  christos }
    105  1.1  christos 
    106  1.1  christos static inline int wpa_drv_set_key(struct wpa_supplicant *wpa_s,
    107  1.1  christos 				  enum wpa_alg alg, const u8 *addr,
    108  1.1  christos 				  int key_idx, int set_tx,
    109  1.1  christos 				   const u8 *seq, size_t seq_len,
    110  1.1  christos 				   const u8 *key, size_t key_len)
    111  1.1  christos {
    112  1.1  christos 	if (wpa_s->driver->set_key) {
    113  1.1  christos 		wpa_s->keys_cleared = 0;
    114  1.1  christos 		return wpa_s->driver->set_key(wpa_s->ifname, wpa_s->drv_priv,
    115  1.1  christos 					      alg, addr, key_idx, set_tx,
    116  1.1  christos 					      seq, seq_len, key, key_len);
    117  1.1  christos 	}
    118  1.1  christos 	return -1;
    119  1.1  christos }
    120  1.1  christos 
    121  1.1  christos static inline int wpa_drv_deauthenticate(struct wpa_supplicant *wpa_s,
    122  1.1  christos 					 const u8 *addr, int reason_code)
    123  1.1  christos {
    124  1.1  christos 	if (wpa_s->driver->deauthenticate) {
    125  1.1  christos 		return wpa_s->driver->deauthenticate(wpa_s->drv_priv, addr,
    126  1.1  christos 						     reason_code);
    127  1.1  christos 	}
    128  1.1  christos 	return -1;
    129  1.1  christos }
    130  1.1  christos 
    131  1.1  christos static inline int wpa_drv_disassociate(struct wpa_supplicant *wpa_s,
    132  1.1  christos 				       const u8 *addr, int reason_code)
    133  1.1  christos {
    134  1.1  christos 	if (wpa_s->driver->disassociate) {
    135  1.1  christos 		return wpa_s->driver->disassociate(wpa_s->drv_priv, addr,
    136  1.1  christos 						   reason_code);
    137  1.1  christos 	}
    138  1.1  christos 	return -1;
    139  1.1  christos }
    140  1.1  christos 
    141  1.1  christos static inline int wpa_drv_add_pmkid(struct wpa_supplicant *wpa_s,
    142  1.1  christos 				    const u8 *bssid, const u8 *pmkid)
    143  1.1  christos {
    144  1.1  christos 	if (wpa_s->driver->add_pmkid) {
    145  1.1  christos 		return wpa_s->driver->add_pmkid(wpa_s->drv_priv, bssid, pmkid);
    146  1.1  christos 	}
    147  1.1  christos 	return -1;
    148  1.1  christos }
    149  1.1  christos 
    150  1.1  christos static inline int wpa_drv_remove_pmkid(struct wpa_supplicant *wpa_s,
    151  1.1  christos 				       const u8 *bssid, const u8 *pmkid)
    152  1.1  christos {
    153  1.1  christos 	if (wpa_s->driver->remove_pmkid) {
    154  1.1  christos 		return wpa_s->driver->remove_pmkid(wpa_s->drv_priv, bssid,
    155  1.1  christos 						   pmkid);
    156  1.1  christos 	}
    157  1.1  christos 	return -1;
    158  1.1  christos }
    159  1.1  christos 
    160  1.1  christos static inline int wpa_drv_flush_pmkid(struct wpa_supplicant *wpa_s)
    161  1.1  christos {
    162  1.1  christos 	if (wpa_s->driver->flush_pmkid) {
    163  1.1  christos 		return wpa_s->driver->flush_pmkid(wpa_s->drv_priv);
    164  1.1  christos 	}
    165  1.1  christos 	return -1;
    166  1.1  christos }
    167  1.1  christos 
    168  1.1  christos static inline int wpa_drv_get_capa(struct wpa_supplicant *wpa_s,
    169  1.1  christos 				   struct wpa_driver_capa *capa)
    170  1.1  christos {
    171  1.1  christos 	if (wpa_s->driver->get_capa) {
    172  1.1  christos 		return wpa_s->driver->get_capa(wpa_s->drv_priv, capa);
    173  1.1  christos 	}
    174  1.1  christos 	return -1;
    175  1.1  christos }
    176  1.1  christos 
    177  1.1  christos static inline void wpa_drv_poll(struct wpa_supplicant *wpa_s)
    178  1.1  christos {
    179  1.1  christos 	if (wpa_s->driver->poll) {
    180  1.1  christos 		wpa_s->driver->poll(wpa_s->drv_priv);
    181  1.1  christos 	}
    182  1.1  christos }
    183  1.1  christos 
    184  1.1  christos static inline const char * wpa_drv_get_ifname(struct wpa_supplicant *wpa_s)
    185  1.1  christos {
    186  1.1  christos 	if (wpa_s->driver->get_ifname) {
    187  1.1  christos 		return wpa_s->driver->get_ifname(wpa_s->drv_priv);
    188  1.1  christos 	}
    189  1.1  christos 	return NULL;
    190  1.1  christos }
    191  1.1  christos 
    192  1.1  christos static inline const u8 * wpa_drv_get_mac_addr(struct wpa_supplicant *wpa_s)
    193  1.1  christos {
    194  1.1  christos 	if (wpa_s->driver->get_mac_addr) {
    195  1.1  christos 		return wpa_s->driver->get_mac_addr(wpa_s->drv_priv);
    196  1.1  christos 	}
    197  1.1  christos 	return NULL;
    198  1.1  christos }
    199  1.1  christos 
    200  1.1  christos static inline int wpa_drv_send_eapol(struct wpa_supplicant *wpa_s,
    201  1.1  christos 				     const u8 *dst, u16 proto,
    202  1.1  christos 				     const u8 *data, size_t data_len)
    203  1.1  christos {
    204  1.1  christos 	if (wpa_s->driver->send_eapol)
    205  1.1  christos 		return wpa_s->driver->send_eapol(wpa_s->drv_priv, dst, proto,
    206  1.1  christos 						 data, data_len);
    207  1.1  christos 	return -1;
    208  1.1  christos }
    209  1.1  christos 
    210  1.1  christos static inline int wpa_drv_set_operstate(struct wpa_supplicant *wpa_s,
    211  1.1  christos 					int state)
    212  1.1  christos {
    213  1.1  christos 	if (wpa_s->driver->set_operstate)
    214  1.1  christos 		return wpa_s->driver->set_operstate(wpa_s->drv_priv, state);
    215  1.1  christos 	return 0;
    216  1.1  christos }
    217  1.1  christos 
    218  1.1  christos static inline int wpa_drv_mlme_setprotection(struct wpa_supplicant *wpa_s,
    219  1.1  christos 					     const u8 *addr, int protect_type,
    220  1.1  christos 					     int key_type)
    221  1.1  christos {
    222  1.1  christos 	if (wpa_s->driver->mlme_setprotection)
    223  1.1  christos 		return wpa_s->driver->mlme_setprotection(wpa_s->drv_priv, addr,
    224  1.1  christos 							 protect_type,
    225  1.1  christos 							 key_type);
    226  1.1  christos 	return 0;
    227  1.1  christos }
    228  1.1  christos 
    229  1.1  christos static inline struct hostapd_hw_modes *
    230  1.1  christos wpa_drv_get_hw_feature_data(struct wpa_supplicant *wpa_s, u16 *num_modes,
    231  1.1  christos 			    u16 *flags)
    232  1.1  christos {
    233  1.1  christos 	if (wpa_s->driver->get_hw_feature_data)
    234  1.1  christos 		return wpa_s->driver->get_hw_feature_data(wpa_s->drv_priv,
    235  1.1  christos 							  num_modes, flags);
    236  1.1  christos 	return NULL;
    237  1.1  christos }
    238  1.1  christos 
    239  1.1  christos static inline int wpa_drv_set_channel(struct wpa_supplicant *wpa_s,
    240  1.1  christos 				      enum hostapd_hw_mode phymode, int chan,
    241  1.1  christos 				      int freq)
    242  1.1  christos {
    243  1.1  christos 	if (wpa_s->driver->set_channel)
    244  1.1  christos 		return wpa_s->driver->set_channel(wpa_s->drv_priv, phymode,
    245  1.1  christos 						  chan, freq);
    246  1.1  christos 	return -1;
    247  1.1  christos }
    248  1.1  christos 
    249  1.1  christos static inline int wpa_drv_set_ssid(struct wpa_supplicant *wpa_s,
    250  1.1  christos 				   const u8 *ssid, size_t ssid_len)
    251  1.1  christos {
    252  1.1  christos 	if (wpa_s->driver->set_ssid) {
    253  1.1  christos 		return wpa_s->driver->set_ssid(wpa_s->drv_priv, ssid,
    254  1.1  christos 					       ssid_len);
    255  1.1  christos 	}
    256  1.1  christos 	return -1;
    257  1.1  christos }
    258  1.1  christos 
    259  1.1  christos static inline int wpa_drv_set_bssid(struct wpa_supplicant *wpa_s,
    260  1.1  christos 				    const u8 *bssid)
    261  1.1  christos {
    262  1.1  christos 	if (wpa_s->driver->set_bssid) {
    263  1.1  christos 		return wpa_s->driver->set_bssid(wpa_s->drv_priv, bssid);
    264  1.1  christos 	}
    265  1.1  christos 	return -1;
    266  1.1  christos }
    267  1.1  christos 
    268  1.1  christos static inline int wpa_drv_set_country(struct wpa_supplicant *wpa_s,
    269  1.1  christos 				      const char *alpha2)
    270  1.1  christos {
    271  1.1  christos 	if (wpa_s->driver->set_country)
    272  1.1  christos 		return wpa_s->driver->set_country(wpa_s->drv_priv, alpha2);
    273  1.1  christos 	return 0;
    274  1.1  christos }
    275  1.1  christos 
    276  1.1  christos static inline int wpa_drv_send_mlme(struct wpa_supplicant *wpa_s,
    277  1.1  christos 				    const u8 *data, size_t data_len)
    278  1.1  christos {
    279  1.1  christos 	if (wpa_s->driver->send_mlme)
    280  1.1  christos 		return wpa_s->driver->send_mlme(wpa_s->drv_priv,
    281  1.1  christos 						data, data_len);
    282  1.1  christos 	return -1;
    283  1.1  christos }
    284  1.1  christos 
    285  1.1  christos static inline int wpa_drv_mlme_add_sta(struct wpa_supplicant *wpa_s,
    286  1.1  christos 				       const u8 *addr, const u8 *supp_rates,
    287  1.1  christos 				       size_t supp_rates_len)
    288  1.1  christos {
    289  1.1  christos 	if (wpa_s->driver->mlme_add_sta)
    290  1.1  christos 		return wpa_s->driver->mlme_add_sta(wpa_s->drv_priv, addr,
    291  1.1  christos 						   supp_rates, supp_rates_len);
    292  1.1  christos 	return -1;
    293  1.1  christos }
    294  1.1  christos 
    295  1.1  christos static inline int wpa_drv_mlme_remove_sta(struct wpa_supplicant *wpa_s,
    296  1.1  christos 					  const u8 *addr)
    297  1.1  christos {
    298  1.1  christos 	if (wpa_s->driver->mlme_remove_sta)
    299  1.1  christos 		return wpa_s->driver->mlme_remove_sta(wpa_s->drv_priv, addr);
    300  1.1  christos 	return -1;
    301  1.1  christos }
    302  1.1  christos 
    303  1.1  christos static inline int wpa_drv_update_ft_ies(struct wpa_supplicant *wpa_s,
    304  1.1  christos 					const u8 *md,
    305  1.1  christos 					const u8 *ies, size_t ies_len)
    306  1.1  christos {
    307  1.1  christos 	if (wpa_s->driver->update_ft_ies)
    308  1.1  christos 		return wpa_s->driver->update_ft_ies(wpa_s->drv_priv, md,
    309  1.1  christos 						    ies, ies_len);
    310  1.1  christos 	return -1;
    311  1.1  christos }
    312  1.1  christos 
    313  1.1  christos static inline int wpa_drv_send_ft_action(struct wpa_supplicant *wpa_s,
    314  1.1  christos 					 u8 action, const u8 *target_ap,
    315  1.1  christos 					 const u8 *ies, size_t ies_len)
    316  1.1  christos {
    317  1.1  christos 	if (wpa_s->driver->send_ft_action)
    318  1.1  christos 		return wpa_s->driver->send_ft_action(wpa_s->drv_priv, action,
    319  1.1  christos 						     target_ap, ies, ies_len);
    320  1.1  christos 	return -1;
    321  1.1  christos }
    322  1.1  christos 
    323  1.1  christos static inline int wpa_drv_set_beacon(struct wpa_supplicant *wpa_s,
    324  1.1  christos 				     const u8 *head, size_t head_len,
    325  1.1  christos 				     const u8 *tail, size_t tail_len,
    326  1.1  christos 				     int dtim_period, int beacon_int)
    327  1.1  christos {
    328  1.1  christos 	if (wpa_s->driver->set_beacon)
    329  1.1  christos 		return wpa_s->driver->set_beacon(wpa_s->drv_priv, head,
    330  1.1  christos 						 head_len, tail, tail_len,
    331  1.1  christos 						 dtim_period, beacon_int);
    332  1.1  christos 	return -1;
    333  1.1  christos }
    334  1.1  christos 
    335  1.1  christos static inline int wpa_drv_sta_add(struct wpa_supplicant *wpa_s,
    336  1.1  christos 				  struct hostapd_sta_add_params *params)
    337  1.1  christos {
    338  1.1  christos 	if (wpa_s->driver->sta_add)
    339  1.1  christos 		return wpa_s->driver->sta_add(wpa_s->drv_priv, params);
    340  1.1  christos 	return -1;
    341  1.1  christos }
    342  1.1  christos 
    343  1.1  christos static inline int wpa_drv_sta_remove(struct wpa_supplicant *wpa_s,
    344  1.1  christos 				     const u8 *addr)
    345  1.1  christos {
    346  1.1  christos 	if (wpa_s->driver->sta_remove)
    347  1.1  christos 		return wpa_s->driver->sta_remove(wpa_s->drv_priv, addr);
    348  1.1  christos 	return -1;
    349  1.1  christos }
    350  1.1  christos 
    351  1.1  christos static inline int wpa_drv_hapd_send_eapol(struct wpa_supplicant *wpa_s,
    352  1.1  christos 					  const u8 *addr, const u8 *data,
    353  1.1  christos 					  size_t data_len, int encrypt,
    354  1.1  christos 					  const u8 *own_addr)
    355  1.1  christos {
    356  1.1  christos 	if (wpa_s->driver->hapd_send_eapol)
    357  1.1  christos 		return wpa_s->driver->hapd_send_eapol(wpa_s->drv_priv, addr,
    358  1.1  christos 						      data, data_len, encrypt,
    359  1.1  christos 						      own_addr);
    360  1.1  christos 	return -1;
    361  1.1  christos }
    362  1.1  christos 
    363  1.1  christos static inline int wpa_drv_sta_set_flags(struct wpa_supplicant *wpa_s,
    364  1.1  christos 					const u8 *addr, int total_flags,
    365  1.1  christos 					int flags_or, int flags_and)
    366  1.1  christos {
    367  1.1  christos 	if (wpa_s->driver->sta_set_flags)
    368  1.1  christos 		return wpa_s->driver->sta_set_flags(wpa_s->drv_priv, addr,
    369  1.1  christos 						    total_flags, flags_or,
    370  1.1  christos 						    flags_and);
    371  1.1  christos 	return -1;
    372  1.1  christos }
    373  1.1  christos 
    374  1.1  christos static inline int wpa_drv_set_supp_port(struct wpa_supplicant *wpa_s,
    375  1.1  christos 					int authorized)
    376  1.1  christos {
    377  1.1  christos 	if (wpa_s->driver->set_supp_port) {
    378  1.1  christos 		return wpa_s->driver->set_supp_port(wpa_s->drv_priv,
    379  1.1  christos 						    authorized);
    380  1.1  christos 	}
    381  1.1  christos 	return 0;
    382  1.1  christos }
    383  1.1  christos 
    384  1.1  christos static inline int wpa_drv_send_action(struct wpa_supplicant *wpa_s,
    385  1.1  christos 				      unsigned int freq,
    386  1.1  christos 				      const u8 *dst, const u8 *src,
    387  1.1  christos 				      const u8 *bssid,
    388  1.1  christos 				      const u8 *data, size_t data_len)
    389  1.1  christos {
    390  1.1  christos 	if (wpa_s->driver->send_action)
    391  1.1  christos 		return wpa_s->driver->send_action(wpa_s->drv_priv, freq,
    392  1.1  christos 						  dst, src, bssid, data,
    393  1.1  christos 						  data_len);
    394  1.1  christos 	return -1;
    395  1.1  christos }
    396  1.1  christos 
    397  1.1  christos static inline int wpa_drv_if_add(struct wpa_supplicant *wpa_s,
    398  1.1  christos 				 enum wpa_driver_if_type type,
    399  1.1  christos 				 const char *ifname, const u8 *addr,
    400  1.1  christos 				 void *bss_ctx, char *force_ifname,
    401  1.1  christos 				 u8 *if_addr)
    402  1.1  christos {
    403  1.1  christos 	if (wpa_s->driver->if_add)
    404  1.1  christos 		return wpa_s->driver->if_add(wpa_s->drv_priv, type, ifname,
    405  1.1  christos 					     addr, bss_ctx, NULL, force_ifname,
    406  1.1  christos 					     if_addr);
    407  1.1  christos 	return -1;
    408  1.1  christos }
    409  1.1  christos 
    410  1.1  christos static inline int wpa_drv_if_remove(struct wpa_supplicant *wpa_s,
    411  1.1  christos 				    enum wpa_driver_if_type type,
    412  1.1  christos 				    const char *ifname)
    413  1.1  christos {
    414  1.1  christos 	if (wpa_s->driver->if_remove)
    415  1.1  christos 		return wpa_s->driver->if_remove(wpa_s->drv_priv, type, ifname);
    416  1.1  christos 	return -1;
    417  1.1  christos }
    418  1.1  christos 
    419  1.1  christos static inline int wpa_drv_remain_on_channel(struct wpa_supplicant *wpa_s,
    420  1.1  christos 					    unsigned int freq,
    421  1.1  christos 					    unsigned int duration)
    422  1.1  christos {
    423  1.1  christos 	if (wpa_s->driver->remain_on_channel)
    424  1.1  christos 		return wpa_s->driver->remain_on_channel(wpa_s->drv_priv, freq,
    425  1.1  christos 							duration);
    426  1.1  christos 	return -1;
    427  1.1  christos }
    428  1.1  christos 
    429  1.1  christos static inline int wpa_drv_cancel_remain_on_channel(
    430  1.1  christos 	struct wpa_supplicant *wpa_s)
    431  1.1  christos {
    432  1.1  christos 	if (wpa_s->driver->cancel_remain_on_channel)
    433  1.1  christos 		return wpa_s->driver->cancel_remain_on_channel(
    434  1.1  christos 			wpa_s->drv_priv);
    435  1.1  christos 	return -1;
    436  1.1  christos }
    437  1.1  christos 
    438  1.1  christos static inline int wpa_drv_probe_req_report(struct wpa_supplicant *wpa_s,
    439  1.1  christos 					   int report)
    440  1.1  christos {
    441  1.1  christos 	if (wpa_s->driver->probe_req_report)
    442  1.1  christos 		return wpa_s->driver->probe_req_report(wpa_s->drv_priv,
    443  1.1  christos 						       report);
    444  1.1  christos 	return -1;
    445  1.1  christos }
    446  1.1  christos 
    447  1.1  christos static inline int wpa_drv_disable_11b_rates(struct wpa_supplicant *wpa_s,
    448  1.1  christos 					    int disabled)
    449  1.1  christos {
    450  1.1  christos 	if (wpa_s->driver->disable_11b_rates)
    451  1.1  christos 		return wpa_s->driver->disable_11b_rates(wpa_s->drv_priv,
    452  1.1  christos 							disabled);
    453  1.1  christos 	return -1;
    454  1.1  christos }
    455  1.1  christos 
    456  1.1  christos static inline int wpa_drv_deinit_ap(struct wpa_supplicant *wpa_s)
    457  1.1  christos {
    458  1.1  christos 	if (wpa_s->driver->deinit_ap)
    459  1.1  christos 		return wpa_s->driver->deinit_ap(wpa_s->drv_priv);
    460  1.1  christos 	return 0;
    461  1.1  christos }
    462  1.1  christos 
    463  1.1  christos static inline void wpa_drv_suspend(struct wpa_supplicant *wpa_s)
    464  1.1  christos {
    465  1.1  christos 	if (wpa_s->driver->suspend)
    466  1.1  christos 		wpa_s->driver->suspend(wpa_s->drv_priv);
    467  1.1  christos }
    468  1.1  christos 
    469  1.1  christos static inline void wpa_drv_resume(struct wpa_supplicant *wpa_s)
    470  1.1  christos {
    471  1.1  christos 	if (wpa_s->driver->resume)
    472  1.1  christos 		wpa_s->driver->resume(wpa_s->drv_priv);
    473  1.1  christos }
    474  1.1  christos 
    475  1.1  christos static inline int wpa_drv_signal_monitor(struct wpa_supplicant *wpa_s,
    476  1.1  christos 					 int threshold, int hysteresis)
    477  1.1  christos {
    478  1.1  christos 	if (wpa_s->driver->signal_monitor)
    479  1.1  christos 		return wpa_s->driver->signal_monitor(wpa_s->drv_priv,
    480  1.1  christos 						     threshold, hysteresis);
    481  1.1  christos 	return -1;
    482  1.1  christos }
    483  1.1  christos 
    484  1.1  christos static inline int wpa_drv_set_ap_wps_ie(struct wpa_supplicant *wpa_s,
    485  1.1  christos 					const struct wpabuf *beacon,
    486  1.1  christos 					const struct wpabuf *proberesp)
    487  1.1  christos {
    488  1.1  christos 	if (!wpa_s->driver->set_ap_wps_ie)
    489  1.1  christos 		return -1;
    490  1.1  christos 	return wpa_s->driver->set_ap_wps_ie(wpa_s->drv_priv, beacon,
    491  1.1  christos 					    proberesp);
    492  1.1  christos }
    493  1.1  christos 
    494  1.1  christos #endif /* DRIVER_I_H */
    495