1 /** @file rtos_wpa_supp_if.h
2  *
3  *  @brief  This file provides RTOS WPA Supplicant interface wifi APIs
4  *
5  *
6  *  Copyright 2008-2024 NXP
7  *
8  *  SPDX-License-Identifier: BSD-3-Clause
9  *
10  */
11 
12 #ifndef __RTOS_WPA_SUPP_IF_H__
13 #define __RTOS_WPA_SUPP_IF_H__
14 
15 #include <wifi_config_default.h>
16 
17 #if CONFIG_WPA_SUPP
18 #include "includes.h"
19 #include "common.h"
20 #include "eloop.h"
21 #include "wpa_supplicant/config.h"
22 #include "wpa_supplicant_i.h"
23 #include "bss.h"
24 #include "driver_i.h"
25 
26 #include <wmlog.h>
27 #include <wifi_nxp.h>
28 #include <wifi_nxp_internal.h>
29 
30 #define supp_e(...) wmlog_e("supp_if", ##__VA_ARGS__)
31 
32 #if CONFIG_SUPP_DEBUG
33 #define supp_d(...) wmlog("supp_if", ##__VA_ARGS__)
34 #else
35 #define supp_d(...)
36 #endif /* ! CONFIG_SUPP_DEBUG */
37 
38 int wifi_nxp_supp_state(void);
39 int wifi_nxp_hapd_state(void);
40 
41 void *wifi_nxp_wpa_supp_dev_init(void *supp_drv_if_ctx,
42                                  const char *iface_name,
43                                  rtos_wpa_supp_dev_callbk_fns *supp_callbk_fns);
44 
45 void wifi_nxp_wpa_supp_dev_deinit(void *if_priv);
46 
47 int wifi_nxp_wpa_supp_scan2(void *if_priv, struct wpa_driver_scan_params *params);
48 
49 int wifi_nxp_wpa_supp_set_default_scan_ies(void *priv, const u8 *ies, size_t ies_len);
50 
51 int wifi_nxp_wpa_supp_sched_scan(void *if_priv, struct wpa_driver_scan_params *params);
52 
53 int wifi_nxp_wpa_supp_stop_sched_scan(void *if_priv);
54 
55 int wifi_nxp_wpa_supp_scan_abort(void *if_priv);
56 
57 int wifi_nxp_wpa_supp_scan_results_get(void *if_priv);
58 
59 int wifi_nxp_wpa_supp_survey_results_get(void *if_priv);
60 
61 int wifi_nxp_wpa_supp_deauthenticate(void *if_priv, const char *addr, unsigned short reason_code);
62 
63 int wifi_nxp_wpa_supp_authenticate(void *if_priv, struct wpa_driver_auth_params *params, struct wpa_bss *curr_bss);
64 
65 int wifi_nxp_wpa_supp_associate(void *if_priv, struct wpa_driver_associate_params *params);
66 
67 int wifi_nxp_wpa_supp_set_supp_port(void *if_priv, int authorized, char *bssid);
68 
69 int wifi_nxp_wpa_supp_set_country(void *if_priv, const char *alpha2);
70 
71 int wifi_nxp_wpa_supp_get_country(void *if_priv, char *alpha2);
72 
73 int wifi_nxp_wpa_supp_signal_poll(void *if_priv, struct wpa_signal_info *si, unsigned char *bssid);
74 
75 int wifi_nxp_wpa_supp_send_mlme(void *if_priv,
76                            const u8 *data,
77                            size_t data_len,
78                            int noack,
79                            unsigned int freq,
80                            int no_cck,
81                            int offchanok,
82                            unsigned int wait_time,
83                            int cookie);
84 
85 int wifi_nxp_wpa_supp_get_wiphy(void *if_priv);
86 
87 int wifi_nxp_wpa_supp_get_conn_info(void *if_priv, struct wpa_conn_info *info);
88 
89 int wifi_nxp_wpa_supp_get_capa(void *if_priv, struct wpa_driver_capa *capa);
90 
91 int wifi_nxp_wpa_supp_set_key(void *if_priv,
92                               const unsigned char *ifname,
93                               enum wpa_alg alg,
94                               const unsigned char *addr,
95                               int key_idx,
96                               int set_tx,
97                               const unsigned char *seq,
98                               size_t seq_len,
99                               const unsigned char *key,
100                               size_t key_len,
101                               enum key_flag key_flag);
102 
103 int wifi_nxp_wpa_supp_del_key(void *if_priv, const unsigned char *addr, int key_idx);
104 
105 int wifi_nxp_wpa_supp_set_rekey_info(
106     void *if_priv, const u8 *kek, size_t kek_len, const u8 *kck, size_t kck_len, const u8 *replay_ctr);
107 
108 int wifi_nxp_wpa_supp_remain_on_channel(void *if_priv, unsigned int freq, unsigned int duration);
109 
110 int wifi_nxp_wpa_supp_cancel_remain_on_channel(void *if_priv);
111 
112 void wifi_nxp_wpa_supp_event_proc_mac_changed(void *if_priv);
113 
114 void wifi_nxp_wpa_supp_event_proc_scan_start(void *if_priv);
115 
116 void wifi_nxp_wpa_supp_event_proc_scan_done(void *if_priv, int aborted, int external_scan);
117 
118 void wifi_nxp_wpa_supp_event_proc_scan_res(void *if_priv,
119                                            nxp_wifi_event_new_scan_result_t *scan_res,
120                                            unsigned int event_len,
121                                            bool more_res);
122 
123 void wifi_nxp_wpa_supp_event_proc_auth_resp(void *if_priv,
124                                             nxp_wifi_event_mlme_t *auth_resp_event,
125                                             unsigned int event_len);
126 
127 void wifi_nxp_wpa_supp_event_proc_assoc_resp(void *if_priv,
128                                              nxp_wifi_assoc_event_mlme_t *assoc_resp_event,
129                                              unsigned int event_len);
130 
131 void wifi_nxp_wpa_supp_event_proc_deauth(void *if_priv, nxp_wifi_event_mlme_t *deauth_event, unsigned int event_len);
132 
133 void wifi_nxp_wpa_supp_event_proc_disassoc(void *if_priv,
134                                            nxp_wifi_event_mlme_t *disassoc_event,
135                                            unsigned int event_len);
136 
137 void wifi_nxp_wpa_supp_event_proc_unprot_mgmt(void *if_priv,
138                                               nxp_wifi_event_mlme_t *unprot_mgmt_event,
139                                               unsigned int event_len);
140 void wifi_nxp_wpa_supp_event_proc_remain_on_channel(void *if_priv, int cancel_channel);
141 void wifi_nxp_wpa_supp_event_proc_mgmt_rx(void *if_priv, nxp_wifi_event_mlme_t *mgmt_rx,
142                                           unsigned int event_len, int rssi);
143 void wifi_nxp_wpa_supp_event_get_wiphy(void *if_priv,
144                                               struct wifi_nxp_event_get_wiphy *wiphy_info, unsigned int event_len);
145 void wifi_nxp_wpa_supp_event_mgmt_tx_status(void *if_priv, nxp_wifi_event_mlme_t *mlme_event, unsigned int event_len);
146 void wifi_nxp_wpa_supp_event_proc_chan_list_changed(void *if_priv, const char *alpha2);
147 void wifi_nxp_wpa_supp_event_acs_channel_selected(void *if_priv, nxp_wifi_acs_params *acs_params);
148 void wifi_nxp_wpa_supp_event_proc_ecsa_complete(void *if_priv, nxp_wifi_ch_switch_info *ch_switch_info);
149 #if !CONFIG_WIFI_NM_WPA_SUPPLICANT
150 void wifi_nxp_wpa_supp_event_proc_survey_res(void *if_priv,
151                                              nxp_wifi_event_new_survey_result_t *survey_res,
152                                              unsigned int event_len,
153                                              bool more_res);
154 void wifi_nxp_wpa_supp_event_proc_eapol_rx(void *if_priv,
155                                            nxp_wifi_event_eapol_mlme_t *eapol_rx,
156                                            unsigned int event_len);
157 #endif
158 void wifi_nxp_wpa_supp_event_proc_dfs_cac_started(void *if_priv, nxp_wifi_dfs_cac_info *dfs_cac_info);
159 void wifi_nxp_wpa_supp_event_proc_dfs_cac_finished(void *if_priv, nxp_wifi_dfs_cac_info *dfs_cac_info);
160 void wifi_nxp_wpa_supp_event_signal_change(void *if_priv, t_s16 *curr_rssi);
161 #if CONFIG_WIFI_SOFTAP_SUPPORT
162 int wifi_nxp_wpa_supp_init_ap(void *if_priv, struct wpa_driver_associate_params *params);
163 #endif
164 #if CONFIG_WPA_SUPP_AP
165 void *wifi_nxp_hostapd_dev_init(void *hapd_drv_if_ctx,
166                                 const char *iface_name,
167                                 rtos_hostapd_dev_callbk_fns *hostapd_callbk_fns);
168 void wifi_nxp_hostapd_dev_deinit(void *if_priv);
169 int wifi_nxp_hostapd_do_acs(void *priv, struct drv_acs_params *params);
170 int wifi_nxp_hostapd_set_ap(void *if_priv, int beacon_set, struct wpa_driver_ap_params *params);
171 int wifi_nxp_hostapd_set_modes(void *if_priv, struct hostapd_hw_modes *modes);
172 int wifi_nxp_hostapd_sta_add(void *if_priv, struct hostapd_sta_add_params *params);
173 int wifi_nxp_hostapd_sta_remove(void *if_priv, const u8 *addr);
174 int wifi_nxp_hostapd_send_eapol(void *if_priv, const u8 *data, size_t data_len);
175 int wifi_nxp_hostapd_set_freq(void *if_priv, struct hostapd_freq_params *freq);
176 int wifi_nxp_hostapd_set_rts(void *if_priv, int rts_threshold);
177 int wifi_nxp_hostapd_set_frag(void *if_priv, int frag_threshold);
178 int wifi_nxp_hostapd_stop_ap(void *if_priv);
179 int wifi_nxp_hostapd_set_acl(void *if_priv, struct hostapd_acl_params *params);
180 #endif
181 int wifi_nxp_wpa_dpp_listen(void *if_priv, bool enable);
182 bool wifi_nxp_wpa_get_modes(void *if_priv);
183 void wifi_nxp_wpa_supp_cancel_action_wait(void *if_priv);
184 #endif /* CONFIG_WPA_SUPP */
185 #endif /*  __rtos_WPA_SUPP_IF_H__ */
186