net: wifi: shell: wifi status support all sae pwe types
Add support for wifi status show sae HNP,H2E and AUTO exactly. Signed-off-by: Rex Chen <rex.chen_1@nxp.com>
This commit is contained in:
parent
2dc288cf85
commit
dabeb9c95c
1 changed files with 16 additions and 9 deletions
|
|
@ -362,7 +362,7 @@ static inline enum wifi_frequency_bands wpas_band_to_zephyr(enum wpa_radio_work_
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline enum wifi_security_type wpas_key_mgmt_to_zephyr(int key_mgmt, int proto)
|
static inline enum wifi_security_type wpas_key_mgmt_to_zephyr(int key_mgmt, int proto, int pwe)
|
||||||
{
|
{
|
||||||
switch (key_mgmt) {
|
switch (key_mgmt) {
|
||||||
case WPA_KEY_MGMT_IEEE8021X:
|
case WPA_KEY_MGMT_IEEE8021X:
|
||||||
|
|
@ -380,7 +380,13 @@ static inline enum wifi_security_type wpas_key_mgmt_to_zephyr(int key_mgmt, int
|
||||||
case WPA_KEY_MGMT_PSK_SHA256:
|
case WPA_KEY_MGMT_PSK_SHA256:
|
||||||
return WIFI_SECURITY_TYPE_PSK_SHA256;
|
return WIFI_SECURITY_TYPE_PSK_SHA256;
|
||||||
case WPA_KEY_MGMT_SAE:
|
case WPA_KEY_MGMT_SAE:
|
||||||
return WIFI_SECURITY_TYPE_SAE;
|
if (pwe == 1) {
|
||||||
|
return WIFI_SECURITY_TYPE_SAE_H2E;
|
||||||
|
} else if (pwe == 2) {
|
||||||
|
return WIFI_SECURITY_TYPE_SAE_AUTO;
|
||||||
|
} else {
|
||||||
|
return WIFI_SECURITY_TYPE_SAE_HNP;
|
||||||
|
}
|
||||||
case WPA_KEY_MGMT_SAE | WPA_KEY_MGMT_PSK:
|
case WPA_KEY_MGMT_SAE | WPA_KEY_MGMT_PSK:
|
||||||
return WIFI_SECURITY_TYPE_WPA_AUTO_PERSONAL;
|
return WIFI_SECURITY_TYPE_WPA_AUTO_PERSONAL;
|
||||||
case WPA_KEY_MGMT_FT_PSK:
|
case WPA_KEY_MGMT_FT_PSK:
|
||||||
|
|
@ -1520,22 +1526,21 @@ int supplicant_status(const struct device *dev, struct wifi_iface_status *status
|
||||||
u8 *_ssid = ssid->ssid;
|
u8 *_ssid = ssid->ssid;
|
||||||
size_t ssid_len = ssid->ssid_len;
|
size_t ssid_len = ssid->ssid_len;
|
||||||
struct status_resp cli_status;
|
struct status_resp cli_status;
|
||||||
bool is_ap;
|
|
||||||
int proto;
|
int proto;
|
||||||
int key_mgmt;
|
int key_mgmt;
|
||||||
|
int sae_pwe;
|
||||||
|
|
||||||
if (!ssid) {
|
if (!ssid) {
|
||||||
wpa_printf(MSG_ERROR, "Failed to get current ssid");
|
wpa_printf(MSG_ERROR, "Failed to get current ssid");
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
is_ap = ssid->mode == WPAS_MODE_AP;
|
proto = ssid->proto;
|
||||||
/* For AP its always the configured one */
|
key_mgmt = ssid->key_mgmt;
|
||||||
proto = is_ap ? ssid->proto : wpa_s->wpa_proto;
|
sae_pwe = wpa_s->conf->sae_pwe;
|
||||||
key_mgmt = is_ap ? ssid->key_mgmt : wpa_s->key_mgmt;
|
|
||||||
os_memcpy(status->bssid, wpa_s->bssid, WIFI_MAC_ADDR_LEN);
|
os_memcpy(status->bssid, wpa_s->bssid, WIFI_MAC_ADDR_LEN);
|
||||||
status->band = wpas_band_to_zephyr(wpas_freq_to_band(wpa_s->assoc_freq));
|
status->band = wpas_band_to_zephyr(wpas_freq_to_band(wpa_s->assoc_freq));
|
||||||
status->security = wpas_key_mgmt_to_zephyr(key_mgmt, proto);
|
status->security = wpas_key_mgmt_to_zephyr(key_mgmt, proto, sae_pwe);
|
||||||
status->mfp = get_mfp(ssid->ieee80211w);
|
status->mfp = get_mfp(ssid->ieee80211w);
|
||||||
ieee80211_freq_to_chan(wpa_s->assoc_freq, &channel);
|
ieee80211_freq_to_chan(wpa_s->assoc_freq, &channel);
|
||||||
status->channel = channel;
|
status->channel = channel;
|
||||||
|
|
@ -2483,6 +2488,7 @@ int supplicant_ap_status(const struct device *dev, struct wifi_iface_status *sta
|
||||||
struct hostapd_hw_modes *hw_mode;
|
struct hostapd_hw_modes *hw_mode;
|
||||||
int proto; /* Wi-Fi secure protocol */
|
int proto; /* Wi-Fi secure protocol */
|
||||||
int key_mgmt; /* Wi-Fi key management */
|
int key_mgmt; /* Wi-Fi key management */
|
||||||
|
int sae_pwe;
|
||||||
|
|
||||||
k_mutex_lock(&wpa_supplicant_mutex, K_FOREVER);
|
k_mutex_lock(&wpa_supplicant_mutex, K_FOREVER);
|
||||||
|
|
||||||
|
|
@ -2522,7 +2528,8 @@ int supplicant_ap_status(const struct device *dev, struct wifi_iface_status *sta
|
||||||
status->band = wpas_band_to_zephyr(wpas_freq_to_band(iface->freq));
|
status->band = wpas_band_to_zephyr(wpas_freq_to_band(iface->freq));
|
||||||
key_mgmt = bss->wpa_key_mgmt;
|
key_mgmt = bss->wpa_key_mgmt;
|
||||||
proto = bss->wpa;
|
proto = bss->wpa;
|
||||||
status->security = wpas_key_mgmt_to_zephyr(key_mgmt, proto);
|
sae_pwe = bss->sae_pwe;
|
||||||
|
status->security = wpas_key_mgmt_to_zephyr(key_mgmt, proto, sae_pwe);
|
||||||
status->mfp = get_mfp(bss->ieee80211w);
|
status->mfp = get_mfp(bss->ieee80211w);
|
||||||
status->channel = conf->channel;
|
status->channel = conf->channel;
|
||||||
os_memcpy(status->ssid, ssid->ssid, ssid->ssid_len);
|
os_memcpy(status->ssid, ssid->ssid, ssid->ssid_len);
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue