diff --git a/core/sme/src/csr/csr_api_roam.c b/core/sme/src/csr/csr_api_roam.c index 6eed8d2ab943..5e06c784417a 100644 --- a/core/sme/src/csr/csr_api_roam.c +++ b/core/sme/src/csr/csr_api_roam.c @@ -3646,10 +3646,97 @@ static const char *csr_get_encr_type_str(uint8_t encr_type) } } -static void csr_dump_connection_stats(struct mac_context *mac_ctx, - struct csr_roam_session *session, - struct csr_roam_info *roam_info, - eRoamCmdStatus u1, eCsrRoamResult u2) +static const uint8_t *csr_get_akm_str(uint8_t akm) +{ + switch (akm) { + case eCSR_AUTH_TYPE_OPEN_SYSTEM: + return "Open"; + case eCSR_AUTH_TYPE_SHARED_KEY: + return "Shared Key"; + case eCSR_AUTH_TYPE_SAE: + return "SAE"; + case eCSR_AUTH_TYPE_WPA: + return "WPA"; + case eCSR_AUTH_TYPE_WPA_PSK: + return "WPA-PSK"; + case eCSR_AUTH_TYPE_WPA_NONE: + return "WPA-NONE"; + case eCSR_AUTH_TYPE_RSN: + return "EAP 802.1x"; + case eCSR_AUTH_TYPE_RSN_PSK: + return "WPA2-PSK"; + case eCSR_AUTH_TYPE_FT_RSN: + return "FT-802.1x"; + case eCSR_AUTH_TYPE_FT_RSN_PSK: + return "FT-PSK"; + case eCSR_AUTH_TYPE_CCKM_WPA: + return "WPA-CCKM"; + case eCSR_AUTH_TYPE_CCKM_RSN: + return "RSN-CCKM"; + case eCSR_AUTH_TYPE_RSN_PSK_SHA256: + return "PSK-SHA256"; + case eCSR_AUTH_TYPE_RSN_8021X_SHA256: + return "EAP 802.1x-SHA256"; + case eCSR_AUTH_TYPE_FILS_SHA256: + return "FILS-SHA256"; + case eCSR_AUTH_TYPE_FILS_SHA384: + return "FILS-SHA384"; + case eCSR_AUTH_TYPE_FT_FILS_SHA256: + return "FILS-SHA256"; + case eCSR_AUTH_TYPE_FT_FILS_SHA384: + return "FILS-SHA384"; + case eCSR_AUTH_TYPE_DPP_RSN: + return "DPP"; + case eCSR_AUTH_TYPE_OWE: + return "OWE"; + case eCSR_AUTH_TYPE_SUITEB_EAP_SHA256: + return "EAP Suite-B SHA256"; + case eCSR_AUTH_TYPE_SUITEB_EAP_SHA384: + return "EAP Suite-B SHA384"; + case eCSR_AUTH_TYPE_OSEN: + return "OSEN"; + case eCSR_AUTH_TYPE_FT_SAE: + return "FT-SAE"; + case eCSR_AUTH_TYPE_FT_SUITEB_EAP_SHA384: + return "FT-Suite-B SHA384"; + default: + return "NONE"; + } +} + +/** + * csr_get_sta_ap_intersected_nss - Get the intersected NSS capability between + * sta and connected AP. + * @mac_ctx: Pointer to mac context + * @vdev_id: Vdev id + * + * Return: NSS value + */ +static uint8_t +csr_get_sta_ap_intersected_nss(struct mac_context *mac_ctx, uint8_t vdev_id) +{ + struct wlan_objmgr_vdev *vdev; + uint8_t intrsct_nss; + + vdev = wlan_objmgr_get_vdev_by_id_from_psoc(mac_ctx->psoc, vdev_id, + WLAN_LEGACY_MAC_ID); + if (!vdev) { + pe_warn("vdev not found for id: %d", vdev_id); + return 0; + } + wlan_vdev_obj_lock(vdev); + intrsct_nss = wlan_vdev_mlme_get_nss(vdev); + wlan_vdev_obj_unlock(vdev); + wlan_objmgr_vdev_release_ref(vdev, WLAN_LEGACY_MAC_ID); + + return intrsct_nss; +} + +static void +csr_connect_info(struct mac_context *mac_ctx, + struct csr_roam_session *session, + struct csr_roam_info *roam_info, + eCsrRoamResult u2) { struct tagCsrRoamConnectedProfile *conn_profile; struct csr_roam_profile *profile; @@ -3694,23 +3781,23 @@ static void csr_dump_connection_stats(struct mac_context *mac_ctx, conn_stats.reason_code = 0; conn_stats.op_freq = conn_profile->op_freq; sme_debug("+---------CONNECTION INFO START------------+"); - sme_debug("connection stats for session-id: %d", session->sessionId); + sme_debug("VDEV-ID: %d self_mac:%pM", session->vdev_id, + session->self_mac_addr.bytes); sme_debug("ssid: %.*s", conn_stats.ssid_len, conn_stats.ssid); sme_debug("bssid: %pM", conn_stats.bssid); - sme_debug("rssi: %d dBm", conn_stats.rssi); - sme_debug("channel: %d", conn_stats.operating_channel); + sme_debug("RSSI: %d dBm", conn_stats.rssi); + sme_debug("Channel Freq: %d channel_bw: %s", conn_stats.op_freq, + csr_get_ch_width_str(conn_stats.chnl_bw)); sme_debug("dot11Mode: %s", csr_get_dot11_mode_str(conn_stats.dot11mode)); - sme_debug("channel bw: %s", - csr_get_ch_width_str(conn_stats.chnl_bw)); - sme_debug("Qos enable: %d", conn_stats.qos_capability); - sme_debug("Auth-type: %s", - csr_get_auth_type_str(conn_stats.auth_type)); + sme_debug("AKM: %s", csr_get_akm_str(conn_profile->AuthType)); + sme_debug("DUT_NSS: %d | Intersected NSS:%d", session->vdev_nss, + csr_get_sta_ap_intersected_nss(mac_ctx, session->vdev_id)); sme_debug("Encry-type: %s", csr_get_encr_type_str(conn_stats.encryption_type)); - sme_debug("is associated?: %s", + sme_debug("Qos enable: %d | Associated: %s", + conn_stats.qos_capability, (conn_stats.result_code ? "yes" : "no")); - sme_debug("channel frequency: %d", conn_stats.op_freq); sme_debug("+---------CONNECTION INFO END------------+"); WLAN_HOST_DIAG_EVENT_REPORT(&conn_stats, EVENT_WLAN_CONN_STATS_V2); @@ -3792,10 +3879,10 @@ void csr_get_sta_cxn_info(struct mac_context *mac_ctx, ((hw_mode != 0) ? "yes" : "no")); } #else -static void csr_dump_connection_stats(struct mac_context *mac_ctx, - struct csr_roam_session *session, - struct csr_roam_info *roam_info, - eRoamCmdStatus u1, eCsrRoamResult u2) +static void csr_connect_info(struct mac_context *mac_ctx, + struct csr_roam_session *session, + struct csr_roam_info *roam_info, + eCsrRoamResult u2) {} #endif @@ -3881,7 +3968,7 @@ QDF_STATUS csr_roam_call_callback(struct mac_context *mac, uint32_t sessionId, } if (eCSR_ROAM_ASSOCIATION_COMPLETION == u1) - csr_dump_connection_stats(mac, pSession, roam_info, u1, u2); + csr_connect_info(mac, pSession, roam_info, u2); if (mac->session_roam_complete_cb) { if (roam_info) {