aboutsummaryrefslogtreecommitdiff
path: root/wpa_supplicant/driver_i.h
diff options
context:
space:
mode:
Diffstat (limited to 'wpa_supplicant/driver_i.h')
-rw-r--r--wpa_supplicant/driver_i.h124
1 files changed, 91 insertions, 33 deletions
diff --git a/wpa_supplicant/driver_i.h b/wpa_supplicant/driver_i.h
index 237f4e08516f..d01b52bb1f04 100644
--- a/wpa_supplicant/driver_i.h
+++ b/wpa_supplicant/driver_i.h
@@ -60,6 +60,9 @@ static inline int wpa_drv_associate(struct wpa_supplicant *wpa_s,
struct wpa_driver_associate_params *params)
{
if (wpa_s->driver->associate) {
+ if (params)
+ params->freq.link_id = -1;
+
return wpa_s->driver->associate(wpa_s->drv_priv, params);
}
return -1;
@@ -125,7 +128,7 @@ static inline int wpa_drv_stop_sched_scan(struct wpa_supplicant *wpa_s)
}
struct wpa_scan_results *
-wpa_drv_get_scan_results2(struct wpa_supplicant *wpa_s);
+wpa_drv_get_scan_results(struct wpa_supplicant *wpa_s, const u8 *bssid);
static inline int wpa_drv_get_bssid(struct wpa_supplicant *wpa_s, u8 *bssid)
{
@@ -143,7 +146,7 @@ static inline int wpa_drv_get_ssid(struct wpa_supplicant *wpa_s, u8 *ssid)
return -1;
}
-static inline int wpa_drv_set_key(struct wpa_supplicant *wpa_s,
+static inline int wpa_drv_set_key(struct wpa_supplicant *wpa_s, int link_id,
enum wpa_alg alg, const u8 *addr,
int key_idx, int set_tx,
const u8 *seq, size_t seq_len,
@@ -163,6 +166,7 @@ static inline int wpa_drv_set_key(struct wpa_supplicant *wpa_s,
params.key = key;
params.key_len = key_len;
params.key_flag = key_flag;
+ params.link_id = link_id;
if (alg != WPA_ALG_NONE) {
/* keyidx = 1 can be either a broadcast or--with
@@ -188,7 +192,7 @@ static inline int wpa_drv_get_seqnum(struct wpa_supplicant *wpa_s,
{
if (wpa_s->driver->get_seqnum)
return wpa_s->driver->get_seqnum(wpa_s->ifname, wpa_s->drv_priv,
- addr, idx, seq);
+ addr, idx, -1, seq);
return -1;
}
@@ -198,7 +202,7 @@ static inline int wpa_drv_sta_deauth(struct wpa_supplicant *wpa_s,
if (wpa_s->driver->sta_deauth) {
return wpa_s->driver->sta_deauth(wpa_s->drv_priv,
wpa_s->own_addr, addr,
- reason_code);
+ reason_code, -1);
}
return -1;
}
@@ -324,7 +328,7 @@ static inline int wpa_drv_send_mlme(struct wpa_supplicant *wpa_s,
if (wpa_s->driver->send_mlme)
return wpa_s->driver->send_mlme(wpa_s->drv_priv,
data, data_len, noack,
- freq, NULL, 0, 0, wait);
+ freq, NULL, 0, 0, wait, -1);
return -1;
}
@@ -338,19 +342,15 @@ static inline int wpa_drv_update_ft_ies(struct wpa_supplicant *wpa_s,
return -1;
}
-static inline int wpa_drv_set_ap(struct wpa_supplicant *wpa_s,
- struct wpa_driver_ap_params *params)
-{
- if (wpa_s->driver->set_ap)
- return wpa_s->driver->set_ap(wpa_s->drv_priv, params);
- return -1;
-}
-
static inline int wpa_drv_sta_add(struct wpa_supplicant *wpa_s,
struct hostapd_sta_add_params *params)
{
- if (wpa_s->driver->sta_add)
+ if (wpa_s->driver->sta_add) {
+ /* Set link_id to -1 for non-TDLS peers */
+ if (!(params->flags & WPA_STA_TDLS_PEER))
+ params->mld_link_id = -1;
return wpa_s->driver->sta_add(wpa_s->drv_priv, params);
+ }
return -1;
}
@@ -370,7 +370,7 @@ static inline int wpa_drv_tx_control_port(struct wpa_supplicant *wpa_s,
if (!wpa_s->driver->tx_control_port)
return -1;
return wpa_s->driver->tx_control_port(wpa_s->drv_priv, dest, proto,
- buf, len, no_encrypt);
+ buf, len, no_encrypt, -1);
}
static inline int wpa_drv_hapd_send_eapol(struct wpa_supplicant *wpa_s,
@@ -381,7 +381,7 @@ static inline int wpa_drv_hapd_send_eapol(struct wpa_supplicant *wpa_s,
if (wpa_s->driver->hapd_send_eapol)
return wpa_s->driver->hapd_send_eapol(wpa_s->drv_priv, addr,
data, data_len, encrypt,
- own_addr, flags);
+ own_addr, flags, -1);
return -1;
}
@@ -406,20 +406,10 @@ static inline int wpa_drv_set_supp_port(struct wpa_supplicant *wpa_s,
return 0;
}
-static inline int wpa_drv_send_action(struct wpa_supplicant *wpa_s,
- unsigned int freq,
- unsigned int wait,
- const u8 *dst, const u8 *src,
- const u8 *bssid,
- const u8 *data, size_t data_len,
- int no_cck)
-{
- if (wpa_s->driver->send_action)
- return wpa_s->driver->send_action(wpa_s->drv_priv, freq,
- wait, dst, src, bssid,
- data, data_len, no_cck);
- return -1;
-}
+int wpa_drv_send_action(struct wpa_supplicant *wpa_s, unsigned int freq,
+ unsigned int wait, const u8 *dst, const u8 *src,
+ const u8 *bssid, const u8 *data, size_t data_len,
+ int no_cck);
static inline void wpa_drv_send_action_cancel_wait(struct wpa_supplicant *wpa_s)
{
@@ -523,6 +513,14 @@ static inline int wpa_drv_signal_monitor(struct wpa_supplicant *wpa_s,
int wpa_drv_signal_poll(struct wpa_supplicant *wpa_s,
struct wpa_signal_info *si);
+static inline int wpa_drv_mlo_signal_poll(struct wpa_supplicant *wpa_s,
+ struct wpa_mlo_signal_info *mlo_si)
+{
+ if (wpa_s->driver->mlo_signal_poll)
+ return wpa_s->driver->mlo_signal_poll(wpa_s->drv_priv, mlo_si);
+ return -1;
+}
+
static inline int wpa_drv_channel_info(struct wpa_supplicant *wpa_s,
struct wpa_channel_info *ci)
{
@@ -580,13 +578,14 @@ static inline int wpa_drv_send_tdls_mgmt(struct wpa_supplicant *wpa_s,
const u8 *dst, u8 action_code,
u8 dialog_token, u16 status_code,
u32 peer_capab, int initiator,
- const u8 *buf, size_t len)
+ const u8 *buf, size_t len, int link_id)
{
if (wpa_s->driver->send_tdls_mgmt) {
return wpa_s->driver->send_tdls_mgmt(wpa_s->drv_priv, dst,
action_code, dialog_token,
status_code, peer_capab,
- initiator, buf, len);
+ initiator, buf, len,
+ link_id);
}
return -1;
}
@@ -804,6 +803,14 @@ static inline int wpa_drv_set_replay_protect(struct wpa_supplicant *wpa_s,
window);
}
+static inline int wpa_drv_set_offload(struct wpa_supplicant *wpa_s, u8 offload)
+{
+ if (!wpa_s->driver->set_offload)
+ return -1;
+ return wpa_s->driver->set_offload(wpa_s->drv_priv, offload);
+
+}
+
static inline int wpa_drv_set_current_cipher_suite(struct wpa_supplicant *wpa_s,
u64 cs)
{
@@ -964,7 +971,7 @@ static inline int wpa_drv_setband(struct wpa_supplicant *wpa_s,
static inline int wpa_drv_get_pref_freq_list(struct wpa_supplicant *wpa_s,
enum wpa_driver_if_type if_type,
unsigned int *num,
- unsigned int *freq_list)
+ struct weighted_pcl *freq_list)
{
#ifdef CONFIG_TESTING_OPTIONS
if (wpa_s->get_pref_freq_list_override)
@@ -1088,6 +1095,10 @@ static inline int wpa_drv_update_connect_params(
{
if (!wpa_s->driver->update_connect_params)
return -1;
+
+ if (params)
+ params->freq.link_id = -1;
+
return wpa_s->driver->update_connect_params(wpa_s->drv_priv, params,
mask);
}
@@ -1117,4 +1128,51 @@ static inline int wpa_drv_dpp_listen(struct wpa_supplicant *wpa_s, bool enable)
return wpa_s->driver->dpp_listen(wpa_s->drv_priv, enable);
}
+static inline int wpa_drv_send_pasn_resp(struct wpa_supplicant *wpa_s,
+ struct pasn_auth *params)
+{
+ if (!wpa_s->driver->send_pasn_resp)
+ return -1;
+ return wpa_s->driver->send_pasn_resp(wpa_s->drv_priv, params);
+}
+
+static inline int wpa_drv_set_secure_ranging_ctx(struct wpa_supplicant *wpa_s,
+ const u8 *own_addr,
+ const u8 *peer_addr,
+ u32 cipher, u8 tk_len,
+ const u8 *tk,
+ u8 ltf_keyseed_len,
+ const u8 *ltf_keyseed,
+ u32 action)
+{
+ struct secure_ranging_params params;
+
+ /* Configure secure ranging context only to the drivers that support it.
+ */
+ if (!wpa_s->driver->set_secure_ranging_ctx)
+ return 0;
+
+ os_memset(&params, 0, sizeof(params));
+ params.action = action;
+ params.own_addr = own_addr;
+ params.peer_addr = peer_addr;
+ params.cipher = cipher;
+ params.tk_len = tk_len;
+ params.tk = tk;
+ params.ltf_keyseed_len = ltf_keyseed_len;
+ params.ltf_keyseed = ltf_keyseed;
+
+ return wpa_s->driver->set_secure_ranging_ctx(wpa_s->drv_priv, &params);
+}
+
+static inline int
+wpas_drv_get_sta_mlo_info(struct wpa_supplicant *wpa_s,
+ struct driver_sta_mlo_info *mlo_info)
+{
+ if (!wpa_s->driver->get_sta_mlo_info)
+ return 0;
+
+ return wpa_s->driver->get_sta_mlo_info(wpa_s->drv_priv, mlo_info);
+}
+
#endif /* DRIVER_I_H */