From f0889332476077866710afd0073c6b0191290986 Mon Sep 17 00:00:00 2001 From: Pragaspathi Thilagaraj Date: Mon, 3 Feb 2020 01:20:14 +0530 Subject: [PATCH] qcacld-3.0: Refine csr_dump_connection_stats() with more info Add following changes to refine csr_dump_connection_stats: 1. Remove unused argument and rename the function to reduce the number of characters used. 2. Add self mac address information. 3. Rename Auth type to AKM. Print the AKM string instead of existing diag auth type enum as it doesn't include new WPA3 and FILS related AKM. 4. Print channel and channel bandwidth on the same line. New format of log: csr_connect_info: 3692: +---------CONNECTION INFO START------------+ csr_connect_info: 3692: VDEV-ID: 0 self_mac:18:23:73:36:23:0f csr_connect_info: 3692: ssid: FILS_AP csr_connect_info: 3692: bssid: c8:b3:73:36:a3:0f csr_connect_info: 3692: rssi: -25 dBm csr_connect_info: 3693: channel: 6 channel_bw: BW_20MHZ csr_connect_info: 3695: dot11Mode: DOT11_MODE_11N csr_connect_info: 3700: AKM: FILS-SHA384 csr_connect_info: 3701: Encry-type: ENC_MODE_OPEN csr_connect_info: 3702: channel frequency: 5745 csr_connect_info: 3703: Qos enable: 1 | Associated: yes csr_connect_info: 3704: +---------CONNECTION INFO END------------+ Change-Id: Ia87357dd607bfa0d9256c8129bf8e4448ae93104 CRs-Fixed: 2614465 --- core/sme/src/csr/csr_api_roam.c | 125 +++++++++++++++++++++++++++----- 1 file changed, 106 insertions(+), 19 deletions(-) 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) {