diff --git a/drivers/wifi/nrf_wifi/src/net_if.c b/drivers/wifi/nrf_wifi/src/net_if.c index af3186d9e42..0ce2caaa9e0 100644 --- a/drivers/wifi/nrf_wifi/src/net_if.c +++ b/drivers/wifi/nrf_wifi/src/net_if.c @@ -454,15 +454,20 @@ int nrf_wifi_if_send(const struct device *dev, goto drop; } - /* VIF or per-peer depending on RA */ - if (peer_id == MAX_PEERS) { + /* Use authorized from vif_ctx_zep for STA mode, or per-peer for AP/GO */ + if (vif_ctx_zep->if_type == NRF_WIFI_IFTYPE_STATION) { authorized = vif_ctx_zep->authorized; - } else { + } else if (peer_id != MAX_PEERS) { authorized = sys_dev_ctx->tx_config.peers[peer_id].authorized; + } else { + /* non-STA modes always allow group frames */ + authorized = true; } if ((vif_ctx_zep->if_carr_state != NRF_WIFI_FMAC_IF_CARR_STATE_ON) || (!authorized && !is_eapol(pkt))) { + LOG_DBG("%s: carrier state: %d, authorized: %d, is_eapol: %d", + __func__, vif_ctx_zep->if_carr_state, authorized, is_eapol(pkt)); ret = -EPERM; goto drop; } diff --git a/drivers/wifi/nrf_wifi/src/wpa_supp_if.c b/drivers/wifi/nrf_wifi/src/wpa_supp_if.c index 5a69676e47a..8acf6389984 100644 --- a/drivers/wifi/nrf_wifi/src/wpa_supp_if.c +++ b/drivers/wifi/nrf_wifi/src/wpa_supp_if.c @@ -546,7 +546,18 @@ int nrf_wifi_wpa_supp_scan2(void *if_priv, struct wpa_driver_scan_params *params scan_info->scan_params.num_scan_channels = indx; } - if (params->num_ssids) { + + if (params->filter_ssids) { + scan_info->scan_params.num_scan_ssids = params->num_filter_ssids; + for (indx = 0; indx < params->num_filter_ssids; indx++) { + memcpy(scan_info->scan_params.scan_ssids[indx].nrf_wifi_ssid, + params->filter_ssids[indx].ssid, + params->filter_ssids[indx].ssid_len); + + scan_info->scan_params.scan_ssids[indx].nrf_wifi_ssid_len = + params->filter_ssids[indx].ssid_len; + } + } else if (params->num_ssids) { scan_info->scan_params.num_scan_ssids = params->num_ssids; for (indx = 0; indx < params->num_ssids; indx++) { @@ -2312,6 +2323,7 @@ static int nrf_wifi_iftype_change(struct nrf_wifi_vif_ctx_zep *vif_ctx_zep, int goto out; } + vif_ctx_zep->if_type = iftype; ret = nrf_wifi_vif_state_change(vif_ctx_zep, NRF_WIFI_FMAC_IF_OP_STATE_UP); if (ret) { LOG_ERR("%s: Failed to set interface up", __func__); diff --git a/west.yml b/west.yml index b9a1a35b79e..0f45e45ddbc 100644 --- a/west.yml +++ b/west.yml @@ -281,7 +281,7 @@ manifest: - hal - name: hostap path: modules/lib/hostap - revision: 528eb2d95e35c7c9b187a15d2fb7f6e5bb983181 + revision: pull/117/head - name: liblc3 revision: 48bbd3eacd36e99a57317a0a4867002e0b09e183 path: modules/lib/liblc3 @@ -337,7 +337,7 @@ manifest: revision: 5eec7aca321735f5fc8e3e7c79e162f0e9810b16 path: modules/bsim_hw_models/nrf_hw_models - name: nrf_wifi - revision: 97c6751657187ab811e73c36cc4c47acb1783fff + revision: pull/94/head path: modules/lib/nrf_wifi - name: open-amp revision: c30a6d8b92fcebdb797fc1a7698e8729e250f637