qcacld-3.0: Add diag events for disconnect and connect complete
Add diag events for disconnect and connect complete for connection manager. Change-Id: I71cd968dd14e26cab9178c5bab892520b8d8af8c CRs-Fixed: 2864507
This commit is contained in:

committed by
snandini

parent
6683dbb655
commit
ca5b8c897c
@@ -30,6 +30,7 @@
|
||||
#include "wlan_cm_roam_public_struct.h"
|
||||
#include "wlan_mlme_twt_public_struct.h"
|
||||
#include "cfg_mlme_generic.h"
|
||||
#include "host_diag_core_event.h"
|
||||
|
||||
#define OWE_TRANSITION_OUI_TYPE "\x50\x6f\x9a\x1c"
|
||||
#define OWE_TRANSITION_OUI_SIZE 4
|
||||
@@ -92,6 +93,23 @@
|
||||
*/
|
||||
#define AP_OFF_RSSI_OFFSET 20
|
||||
|
||||
enum diagwlan_status_eventsubtype {
|
||||
DIAG_WLAN_STATUS_CONNECT = 0,
|
||||
DIAG_WLAN_STATUS_DISCONNECT
|
||||
};
|
||||
|
||||
enum diagwlan_status_eventreason {
|
||||
DIAG_REASON_UNSPECIFIED = 0,
|
||||
DIAG_REASON_USER_REQUESTED,
|
||||
DIAG_REASON_MIC_ERROR,
|
||||
DIAG_REASON_DISASSOC,
|
||||
DIAG_REASON_DEAUTH,
|
||||
DIAG_REASON_HANDOFF,
|
||||
DIAG_REASON_ROAM_SYNCH_IND,
|
||||
DIAG_REASON_ROAM_SYNCH_CNF,
|
||||
DIAG_REASON_ROAM_HO_FAIL,
|
||||
};
|
||||
|
||||
/**
|
||||
* struct mlme_cfg_str - generic structure for all mlme CFG string items
|
||||
*
|
||||
@@ -1542,6 +1560,9 @@ struct wlan_mlme_sta_cfg {
|
||||
bool allow_tpc_from_ap;
|
||||
enum station_keepalive_method sta_keepalive_method;
|
||||
bool usr_disabled_roaming;
|
||||
#ifdef FEATURE_WLAN_DIAG_SUPPORT_CSR
|
||||
host_event_wlan_status_payload_type event_payload;
|
||||
#endif
|
||||
};
|
||||
|
||||
/**
|
||||
|
@@ -149,6 +149,61 @@ static inline void cm_update_hlp_info(struct wlan_objmgr_vdev *vdev,
|
||||
{}
|
||||
#endif
|
||||
|
||||
#ifdef FEATURE_WLAN_DIAG_SUPPORT_CSR
|
||||
/**
|
||||
* cm_get_diag_enc_type - get diag enc type
|
||||
* @cipherset: enc type to convert
|
||||
*
|
||||
* Return: diag enc type
|
||||
*/
|
||||
enum mgmt_encrypt_type cm_get_diag_enc_type(uint32_t cipherset);
|
||||
|
||||
/**
|
||||
* cm_diag_get_auth_type - get auth type
|
||||
* @auth_type: diag auth type to fill
|
||||
* @authmodeset: authmode to calculate diag auth type
|
||||
* @akm: akm to calculate diag auth type
|
||||
* @ucastcipherset: cipher to calculate diag auth type
|
||||
*
|
||||
* Return: none
|
||||
*/
|
||||
void cm_diag_get_auth_type(uint8_t *auth_type,
|
||||
uint32_t authmodeset, uint32_t akm,
|
||||
uint32_t ucastcipherset);
|
||||
|
||||
/**
|
||||
* cm_connect_info - send connect info to diag
|
||||
* @vdev: vdev ptr
|
||||
* @connect_success: if connect was success
|
||||
* @bssid: bssid
|
||||
* @ssid: ssid
|
||||
* @freq: freq
|
||||
*
|
||||
* Return: none
|
||||
*/
|
||||
void cm_connect_info(struct wlan_objmgr_vdev *vdev, bool connect_success,
|
||||
struct qdf_mac_addr *bssid, struct wlan_ssid *ssid,
|
||||
qdf_freq_t freq);
|
||||
|
||||
#ifdef WLAN_UNIT_TEST
|
||||
/**
|
||||
* cm_get_sta_cxn_info - fill sta context info in buffer
|
||||
* @buf: buffer to fill
|
||||
* @buf_sz: buf size
|
||||
*
|
||||
* Return: none
|
||||
*/
|
||||
void cm_get_sta_cxn_info(struct wlan_objmgr_vdev *vdev,
|
||||
char *buf, uint32_t buf_sz);
|
||||
#endif
|
||||
#else
|
||||
static inline void
|
||||
cm_connect_info(struct wlan_objmgr_vdev *vdev, bool connect_success,
|
||||
struct qdf_mac_addr *bssid, struct wlan_ssid *ssid,
|
||||
qdf_freq_t freq)
|
||||
{}
|
||||
#endif
|
||||
|
||||
#ifdef FEATURE_CM_ENABLE
|
||||
static inline QDF_STATUS cm_ext_hdl_create(struct cnx_mgr *cm_ctx)
|
||||
{
|
||||
|
@@ -28,6 +28,8 @@
|
||||
#include "wlan_tdls_api.h"
|
||||
#include "wlan_mlme_vdev_mgr_interface.h"
|
||||
#include "wni_api.h"
|
||||
#include "wlan_crypto_global_api.h"
|
||||
#include "wlan_scan_api.h"
|
||||
|
||||
#ifdef WLAN_FEATURE_FILS_SK
|
||||
void cm_update_hlp_info(struct wlan_objmgr_vdev *vdev,
|
||||
@@ -71,6 +73,646 @@ void cm_update_hlp_info(struct wlan_objmgr_vdev *vdev,
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef FEATURE_WLAN_DIAG_SUPPORT_CSR
|
||||
static const char *cm_diag_get_ch_width_str(uint8_t ch_width)
|
||||
{
|
||||
switch (ch_width) {
|
||||
CASE_RETURN_STRING(BW_20MHZ);
|
||||
CASE_RETURN_STRING(BW_40MHZ);
|
||||
CASE_RETURN_STRING(BW_80MHZ);
|
||||
CASE_RETURN_STRING(BW_160MHZ);
|
||||
CASE_RETURN_STRING(BW_80P80MHZ);
|
||||
CASE_RETURN_STRING(BW_5MHZ);
|
||||
CASE_RETURN_STRING(BW_10MHZ);
|
||||
default:
|
||||
return "Unknown";
|
||||
}
|
||||
}
|
||||
|
||||
static const char *cm_diag_get_dot11_mode_str(enum mgmt_dot11_mode dot11mode)
|
||||
{
|
||||
switch (dot11mode) {
|
||||
CASE_RETURN_STRING(DOT11_MODE_AUTO);
|
||||
CASE_RETURN_STRING(DOT11_MODE_ABG);
|
||||
CASE_RETURN_STRING(DOT11_MODE_11A);
|
||||
CASE_RETURN_STRING(DOT11_MODE_11B);
|
||||
CASE_RETURN_STRING(DOT11_MODE_11G);
|
||||
CASE_RETURN_STRING(DOT11_MODE_11N);
|
||||
CASE_RETURN_STRING(DOT11_MODE_11AC);
|
||||
CASE_RETURN_STRING(DOT11_MODE_11G_ONLY);
|
||||
CASE_RETURN_STRING(DOT11_MODE_11N_ONLY);
|
||||
CASE_RETURN_STRING(DOT11_MODE_11AC_ONLY);
|
||||
CASE_RETURN_STRING(DOT11_MODE_11AX);
|
||||
CASE_RETURN_STRING(DOT11_MODE_11AX_ONLY);
|
||||
default:
|
||||
return "Unknown";
|
||||
}
|
||||
}
|
||||
|
||||
static const char *cm_diag_get_encr_type_str(uint8_t encr_type)
|
||||
{
|
||||
switch (encr_type) {
|
||||
CASE_RETURN_STRING(ENC_MODE_OPEN);
|
||||
CASE_RETURN_STRING(ENC_MODE_WEP40);
|
||||
CASE_RETURN_STRING(ENC_MODE_WEP104);
|
||||
CASE_RETURN_STRING(ENC_MODE_TKIP);
|
||||
CASE_RETURN_STRING(ENC_MODE_AES);
|
||||
CASE_RETURN_STRING(ENC_MODE_AES_GCMP);
|
||||
CASE_RETURN_STRING(ENC_MODE_AES_GCMP_256);
|
||||
CASE_RETURN_STRING(ENC_MODE_SMS4);
|
||||
default:
|
||||
return "Unknown";
|
||||
}
|
||||
}
|
||||
|
||||
static const uint8_t *cm_diag_get_akm_str(enum mgmt_auth_type auth_type,
|
||||
uint32_t akm)
|
||||
{
|
||||
if (auth_type == AUTH_OPEN)
|
||||
return "Open";
|
||||
else if (auth_type == AUTH_SHARED)
|
||||
return "Shared Key";
|
||||
else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_FT_FILS_SHA384))
|
||||
return "FT-FILS-SHA384";
|
||||
else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_FT_FILS_SHA256))
|
||||
return "FT-FILS-SHA256";
|
||||
else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_FILS_SHA384))
|
||||
return "FILS-SHA384";
|
||||
else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_FILS_SHA256))
|
||||
return "FILS-SHA256";
|
||||
else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_FT_SAE))
|
||||
return "FT-SAE";
|
||||
else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_SAE))
|
||||
return "SAE";
|
||||
else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_DPP))
|
||||
return "DPP";
|
||||
else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_OSEN))
|
||||
return "OSEN";
|
||||
else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_OWE))
|
||||
return "OWE";
|
||||
else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_FT_IEEE8021X))
|
||||
return "FT-802.1x";
|
||||
else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_FT_PSK))
|
||||
return "FT-PSK";
|
||||
else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_IEEE8021X))
|
||||
return "EAP 802.1x";
|
||||
else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_PSK))
|
||||
return "WPA2-PSK";
|
||||
else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_CCKM))
|
||||
return "RSN-CCKM";
|
||||
else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_PSK_SHA256))
|
||||
return "PSK-SHA256";
|
||||
else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_IEEE8021X_SHA256))
|
||||
return "EAP 802.1x-SHA256";
|
||||
else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_IEEE8021X_SUITE_B))
|
||||
return "EAP Suite-B SHA256";
|
||||
else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_IEEE8021X_SUITE_B_192))
|
||||
return "EAP Suite-B SHA384";
|
||||
else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_FT_IEEE8021X_SHA384))
|
||||
return "FT-Suite-B SHA384";
|
||||
else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_IEEE8021X))
|
||||
return "WPA";
|
||||
else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_PSK))
|
||||
return "WPA-PSK";
|
||||
else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_CCKM))
|
||||
return "WPA-CCKM";
|
||||
else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_WPA_NONE))
|
||||
return "WPA-NONE";
|
||||
else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_WAPI_CERT))
|
||||
return "WAPI-CERT";
|
||||
else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_WAPI_PSK))
|
||||
return "WAPI-PSK";
|
||||
else
|
||||
return "NONE";
|
||||
}
|
||||
|
||||
static enum mgmt_dot11_mode
|
||||
cm_diag_dot11_mode_from_phy_mode(enum wlan_phymode phymode)
|
||||
{
|
||||
switch (phymode) {
|
||||
case WLAN_PHYMODE_11A:
|
||||
return DOT11_MODE_11A;
|
||||
case WLAN_PHYMODE_11B:
|
||||
return DOT11_MODE_11B;
|
||||
case WLAN_PHYMODE_11G:
|
||||
return DOT11_MODE_11G;
|
||||
case WLAN_PHYMODE_11G_ONLY:
|
||||
return DOT11_MODE_11G_ONLY;
|
||||
case WLAN_PHYMODE_AUTO:
|
||||
return DOT11_MODE_AUTO;
|
||||
default:
|
||||
if (IS_WLAN_PHYMODE_HT(phymode))
|
||||
return DOT11_MODE_11N;
|
||||
else if (IS_WLAN_PHYMODE_VHT(phymode))
|
||||
return DOT11_MODE_11AC;
|
||||
else if (IS_WLAN_PHYMODE_HE(phymode))
|
||||
return DOT11_MODE_11AX;
|
||||
else
|
||||
return DOT11_MODE_MAX;
|
||||
}
|
||||
}
|
||||
|
||||
static enum mgmt_ch_width cm_get_diag_ch_width(enum phy_ch_width ch_width)
|
||||
{
|
||||
switch (ch_width) {
|
||||
case CH_WIDTH_20MHZ:
|
||||
return BW_20MHZ;
|
||||
case CH_WIDTH_40MHZ:
|
||||
return BW_40MHZ;
|
||||
case CH_WIDTH_80MHZ:
|
||||
return BW_80MHZ;
|
||||
case CH_WIDTH_160MHZ:
|
||||
return BW_160MHZ;
|
||||
case CH_WIDTH_80P80MHZ:
|
||||
return BW_80P80MHZ;
|
||||
case CH_WIDTH_5MHZ:
|
||||
return BW_5MHZ;
|
||||
case CH_WIDTH_10MHZ:
|
||||
return BW_10MHZ;
|
||||
default:
|
||||
return BW_MAX;
|
||||
}
|
||||
}
|
||||
|
||||
static enum mgmt_bss_type cm_get_diag_persona(enum QDF_OPMODE persona)
|
||||
{
|
||||
switch (persona) {
|
||||
case QDF_STA_MODE:
|
||||
return STA_PERSONA;
|
||||
case QDF_SAP_MODE:
|
||||
return SAP_PERSONA;
|
||||
case QDF_P2P_CLIENT_MODE:
|
||||
return P2P_CLIENT_PERSONA;
|
||||
case QDF_P2P_GO_MODE:
|
||||
return P2P_GO_PERSONA;
|
||||
case QDF_FTM_MODE:
|
||||
return FTM_PERSONA;
|
||||
case QDF_MONITOR_MODE:
|
||||
return MONITOR_PERSONA;
|
||||
case QDF_P2P_DEVICE_MODE:
|
||||
return P2P_DEVICE_PERSONA;
|
||||
case QDF_OCB_MODE:
|
||||
return OCB_PERSONA;
|
||||
case QDF_EPPING_MODE:
|
||||
return EPPING_PERSONA;
|
||||
case QDF_QVIT_MODE:
|
||||
return QVIT_PERSONA;
|
||||
case QDF_NDI_MODE:
|
||||
return NDI_PERSONA;
|
||||
case QDF_WDS_MODE:
|
||||
return WDS_PERSONA;
|
||||
case QDF_BTAMP_MODE:
|
||||
return BTAMP_PERSONA;
|
||||
case QDF_AHDEMO_MODE:
|
||||
return AHDEMO_PERSONA;
|
||||
default:
|
||||
return MAX_PERSONA;
|
||||
}
|
||||
}
|
||||
|
||||
enum mgmt_encrypt_type cm_get_diag_enc_type(uint32_t cipherset)
|
||||
{
|
||||
enum mgmt_encrypt_type n = ENC_MODE_OPEN;
|
||||
|
||||
if (!cipherset)
|
||||
return n;
|
||||
|
||||
if (QDF_HAS_PARAM(cipherset, WLAN_CRYPTO_CIPHER_AES_GCM_256))
|
||||
n = ENC_MODE_AES_GCMP_256;
|
||||
else if (QDF_HAS_PARAM(cipherset, WLAN_CRYPTO_CIPHER_AES_GCM))
|
||||
n = ENC_MODE_AES_GCMP;
|
||||
else if (QDF_HAS_PARAM(cipherset, WLAN_CRYPTO_CIPHER_AES_CCM) ||
|
||||
QDF_HAS_PARAM(cipherset, WLAN_CRYPTO_CIPHER_AES_OCB) ||
|
||||
QDF_HAS_PARAM(cipherset, WLAN_CRYPTO_CIPHER_AES_CCM_256) ||
|
||||
QDF_HAS_PARAM(cipherset, WLAN_CRYPTO_CIPHER_AES_CMAC) ||
|
||||
QDF_HAS_PARAM(cipherset, WLAN_CRYPTO_CIPHER_AES_CMAC_256) ||
|
||||
QDF_HAS_PARAM(cipherset, WLAN_CRYPTO_CIPHER_AES_GMAC) ||
|
||||
QDF_HAS_PARAM(cipherset, WLAN_CRYPTO_CIPHER_AES_GMAC_256))
|
||||
n = ENC_MODE_AES;
|
||||
else if (QDF_HAS_PARAM(cipherset, WLAN_CRYPTO_CIPHER_TKIP))
|
||||
n = ENC_MODE_TKIP;
|
||||
else if (QDF_HAS_PARAM(cipherset, WLAN_CRYPTO_CIPHER_WAPI_GCM4) ||
|
||||
QDF_HAS_PARAM(cipherset, WLAN_CRYPTO_CIPHER_WAPI_SMS4))
|
||||
n = ENC_MODE_SMS4;
|
||||
else if (QDF_HAS_PARAM(cipherset, WLAN_CRYPTO_CIPHER_WEP))
|
||||
n = ENC_MODE_WEP40;
|
||||
else if (QDF_HAS_PARAM(cipherset, WLAN_CRYPTO_CIPHER_WEP_40))
|
||||
n = ENC_MODE_WEP40;
|
||||
else if (QDF_HAS_PARAM(cipherset, WLAN_CRYPTO_CIPHER_WEP_104))
|
||||
n = ENC_MODE_WEP104;
|
||||
|
||||
return n;
|
||||
}
|
||||
|
||||
static void cm_diag_fill_rsn_auth_type(uint8_t *auth_type, uint32_t akm)
|
||||
{
|
||||
if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_FT_IEEE8021X) ||
|
||||
QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_IEEE8021X) ||
|
||||
QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_IEEE8021X_SHA256) ||
|
||||
QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_IEEE8021X_SUITE_B) ||
|
||||
QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_IEEE8021X_SUITE_B_192) ||
|
||||
QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_FT_IEEE8021X_SHA384))
|
||||
*auth_type = AUTH_WPA2_EAP;
|
||||
else
|
||||
*auth_type = AUTH_WPA2_PSK;
|
||||
}
|
||||
|
||||
static void cm_diag_fill_wpa_auth_type(uint8_t *auth_type, uint32_t akm)
|
||||
{
|
||||
/* Try the more preferred ones first. */
|
||||
if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_IEEE8021X))
|
||||
*auth_type = AUTH_WPA_EAP;
|
||||
else
|
||||
*auth_type = AUTH_WPA_PSK;
|
||||
}
|
||||
|
||||
static void cm_diag_fill_wapi_auth_type(uint8_t *auth_type, uint32_t akm)
|
||||
{
|
||||
/* Try the more preferred ones first. */
|
||||
if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_WAPI_CERT))
|
||||
*auth_type = AUTH_WAPI_CERT;
|
||||
else
|
||||
*auth_type = AUTH_WAPI_PSK;
|
||||
}
|
||||
|
||||
void cm_diag_get_auth_type(uint8_t *auth_type,
|
||||
uint32_t authmodeset, uint32_t akm,
|
||||
uint32_t ucastcipherset)
|
||||
{
|
||||
if (!authmodeset) {
|
||||
*auth_type = AUTH_OPEN;
|
||||
return;
|
||||
}
|
||||
|
||||
if (QDF_HAS_PARAM(authmodeset, WLAN_CRYPTO_AUTH_NONE) ||
|
||||
QDF_HAS_PARAM(authmodeset, WLAN_CRYPTO_AUTH_OPEN)) {
|
||||
*auth_type = AUTH_OPEN;
|
||||
return;
|
||||
}
|
||||
|
||||
if (QDF_HAS_PARAM(authmodeset, WLAN_CRYPTO_AUTH_AUTO)) {
|
||||
if ((QDF_HAS_PARAM(ucastcipherset, WLAN_CRYPTO_CIPHER_WEP) ||
|
||||
QDF_HAS_PARAM(ucastcipherset, WLAN_CRYPTO_CIPHER_WEP_40) ||
|
||||
QDF_HAS_PARAM(ucastcipherset, WLAN_CRYPTO_CIPHER_WEP_104)))
|
||||
*auth_type = AUTH_SHARED;
|
||||
else
|
||||
*auth_type = AUTH_OPEN;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (QDF_HAS_PARAM(authmodeset, WLAN_CRYPTO_AUTH_SHARED)) {
|
||||
*auth_type = AUTH_SHARED;
|
||||
return;
|
||||
}
|
||||
|
||||
if (QDF_HAS_PARAM(authmodeset, WLAN_CRYPTO_AUTH_8021X) ||
|
||||
QDF_HAS_PARAM(authmodeset, WLAN_CRYPTO_AUTH_RSNA) ||
|
||||
QDF_HAS_PARAM(authmodeset, WLAN_CRYPTO_AUTH_CCKM) ||
|
||||
QDF_HAS_PARAM(authmodeset, WLAN_CRYPTO_AUTH_SAE) ||
|
||||
QDF_HAS_PARAM(authmodeset, WLAN_CRYPTO_AUTH_FILS_SK)) {
|
||||
cm_diag_fill_rsn_auth_type(auth_type, akm);
|
||||
return;
|
||||
}
|
||||
|
||||
if (QDF_HAS_PARAM(authmodeset, WLAN_CRYPTO_AUTH_WPA)) {
|
||||
cm_diag_fill_wpa_auth_type(auth_type, akm);
|
||||
return;
|
||||
}
|
||||
|
||||
if (QDF_HAS_PARAM(authmodeset, WLAN_CRYPTO_AUTH_WAPI)) {
|
||||
cm_diag_fill_wapi_auth_type(auth_type, akm);
|
||||
return;
|
||||
}
|
||||
|
||||
*auth_type = AUTH_OPEN;
|
||||
}
|
||||
|
||||
static int8_t cm_get_rssi_by_bssid(struct wlan_objmgr_pdev *pdev,
|
||||
struct qdf_mac_addr *bssid)
|
||||
{
|
||||
struct scan_filter *scan_filter;
|
||||
int8_t rssi = 0;
|
||||
qdf_list_t *list = NULL;
|
||||
struct scan_cache_node *first_node = NULL;
|
||||
|
||||
scan_filter = qdf_mem_malloc(sizeof(*scan_filter));
|
||||
if (!scan_filter)
|
||||
return rssi;
|
||||
|
||||
scan_filter->num_of_bssid = 1;
|
||||
qdf_mem_copy(scan_filter->bssid_list[0].bytes,
|
||||
bssid, sizeof(struct qdf_mac_addr));
|
||||
scan_filter->ignore_auth_enc_type = true;
|
||||
list = wlan_scan_get_result(pdev, scan_filter);
|
||||
qdf_mem_free(scan_filter);
|
||||
|
||||
if (!list || (list && !qdf_list_size(list))) {
|
||||
mlme_debug("scan list empty");
|
||||
goto error;
|
||||
}
|
||||
|
||||
qdf_list_peek_front(list, (qdf_list_node_t **) &first_node);
|
||||
if (first_node && first_node->entry)
|
||||
rssi = first_node->entry->rssi_raw;
|
||||
error:
|
||||
if (list)
|
||||
wlan_scan_purge_results(list);
|
||||
|
||||
return rssi;
|
||||
}
|
||||
|
||||
static void
|
||||
cm_connect_success_diag(struct wlan_mlme_psoc_ext_obj *mlme_obj,
|
||||
struct host_event_wlan_connection_stats *stats)
|
||||
{
|
||||
WLAN_HOST_DIAG_EVENT_DEF(connect_status,
|
||||
host_event_wlan_status_payload_type);
|
||||
|
||||
qdf_mem_zero(&connect_status,
|
||||
sizeof(host_event_wlan_status_payload_type));
|
||||
|
||||
connect_status.eventId = DIAG_WLAN_STATUS_CONNECT;
|
||||
connect_status.bssType = 0;
|
||||
mlme_obj->cfg.sta.current_rssi = stats->rssi;
|
||||
|
||||
connect_status.qosCapability = stats->qos_capability;
|
||||
connect_status.authType = stats->auth_type;
|
||||
connect_status.encryptionType = stats->encryption_type;
|
||||
qdf_mem_copy(connect_status.ssid, stats->ssid, stats->ssid_len);
|
||||
connect_status.reason = DIAG_REASON_UNSPECIFIED;
|
||||
qdf_mem_copy(&mlme_obj->cfg.sta.event_payload, &connect_status,
|
||||
sizeof(host_event_wlan_status_payload_type));
|
||||
WLAN_HOST_DIAG_EVENT_REPORT(&connect_status, EVENT_WLAN_STATUS_V2);
|
||||
}
|
||||
|
||||
void cm_connect_info(struct wlan_objmgr_vdev *vdev, bool connect_success,
|
||||
struct qdf_mac_addr *bssid, struct wlan_ssid *ssid,
|
||||
qdf_freq_t freq)
|
||||
{
|
||||
struct wlan_channel *des_chan;
|
||||
struct vdev_mlme_obj *vdev_mlme;
|
||||
struct wlan_crypto_params *crypto_params;
|
||||
uint8_t max_supported_nss;
|
||||
enum QDF_OPMODE opmode;
|
||||
struct wlan_objmgr_pdev *pdev;
|
||||
struct wlan_objmgr_psoc *psoc;
|
||||
struct wlan_mlme_psoc_ext_obj *mlme_obj;
|
||||
WLAN_HOST_DIAG_EVENT_DEF(conn_stats,
|
||||
struct host_event_wlan_connection_stats);
|
||||
|
||||
if (!ssid || !bssid)
|
||||
return;
|
||||
pdev = wlan_vdev_get_pdev(vdev);
|
||||
if (!pdev)
|
||||
return;
|
||||
psoc = wlan_pdev_get_psoc(pdev);
|
||||
if (!psoc)
|
||||
return;
|
||||
mlme_obj = mlme_get_psoc_ext_obj(psoc);
|
||||
if (!mlme_obj)
|
||||
return;
|
||||
qdf_mem_zero(&conn_stats,
|
||||
sizeof(struct host_event_wlan_connection_stats));
|
||||
|
||||
qdf_mem_copy(conn_stats.bssid, bssid->bytes,
|
||||
QDF_MAC_ADDR_SIZE);
|
||||
|
||||
conn_stats.ssid_len = ssid->length;
|
||||
if (conn_stats.ssid_len > WLAN_SSID_MAX_LEN)
|
||||
conn_stats.ssid_len = WLAN_SSID_MAX_LEN;
|
||||
qdf_mem_copy(conn_stats.ssid, ssid->ssid, conn_stats.ssid_len);
|
||||
|
||||
conn_stats.rssi = cm_get_rssi_by_bssid(pdev, bssid);
|
||||
conn_stats.est_link_speed = 0;
|
||||
|
||||
des_chan = wlan_vdev_mlme_get_des_chan(vdev);
|
||||
|
||||
conn_stats.chnl_bw =
|
||||
cm_get_diag_ch_width(des_chan->ch_width);
|
||||
conn_stats.dot11mode =
|
||||
cm_diag_dot11_mode_from_phy_mode(des_chan->ch_phymode);
|
||||
|
||||
opmode = wlan_vdev_mlme_get_opmode(vdev);
|
||||
conn_stats.bss_type = cm_get_diag_persona(opmode);
|
||||
|
||||
if (freq)
|
||||
conn_stats.operating_channel =
|
||||
wlan_reg_freq_to_chan(pdev, freq);
|
||||
|
||||
vdev_mlme = wlan_vdev_mlme_get_cmpt_obj(vdev);
|
||||
if (!vdev_mlme) {
|
||||
mlme_err("vdev component object is NULL");
|
||||
return;
|
||||
}
|
||||
conn_stats.qos_capability =
|
||||
vdev_mlme->ext_vdev_ptr->connect_info.qos_enabled;
|
||||
|
||||
crypto_params = wlan_crypto_vdev_get_crypto_params(vdev);
|
||||
|
||||
if (!crypto_params) {
|
||||
mlme_err("crypto params is null");
|
||||
return;
|
||||
}
|
||||
|
||||
cm_diag_get_auth_type(&conn_stats.auth_type,
|
||||
crypto_params->authmodeset,
|
||||
crypto_params->key_mgmt,
|
||||
crypto_params->ucastcipherset);
|
||||
|
||||
conn_stats.encryption_type =
|
||||
cm_get_diag_enc_type(crypto_params->ucastcipherset);
|
||||
|
||||
conn_stats.result_code = connect_success;
|
||||
conn_stats.reason_code = 0;
|
||||
conn_stats.op_freq = freq;
|
||||
|
||||
max_supported_nss = mlme_obj->cfg.vht_caps.vht_cap_info.enable2x2 ?
|
||||
MAX_VDEV_NSS : 1;
|
||||
mlme_nofl_debug("+---------CONNECTION INFO START------------+");
|
||||
mlme_nofl_debug("VDEV-ID: %d self_mac:"QDF_MAC_ADDR_FMT,
|
||||
wlan_vdev_get_id(vdev),
|
||||
QDF_MAC_ADDR_REF(wlan_vdev_mlme_get_macaddr(vdev)));
|
||||
mlme_nofl_debug("ssid: %.*s bssid: "QDF_MAC_ADDR_FMT" RSSI: %d dBm",
|
||||
conn_stats.ssid_len, conn_stats.ssid,
|
||||
QDF_MAC_ADDR_REF(conn_stats.bssid), conn_stats.rssi);
|
||||
mlme_nofl_debug("Channel Freq: %d channel_bw: %s dot11Mode: %s",
|
||||
conn_stats.op_freq,
|
||||
cm_diag_get_ch_width_str(conn_stats.chnl_bw),
|
||||
cm_diag_get_dot11_mode_str(conn_stats.dot11mode));
|
||||
mlme_nofl_debug("AKM: %s Encry-type: %s",
|
||||
cm_diag_get_akm_str(conn_stats.auth_type,
|
||||
crypto_params->key_mgmt),
|
||||
cm_diag_get_encr_type_str(conn_stats.encryption_type));
|
||||
mlme_nofl_debug("DUT_NSS: %d | Intersected NSS:%d",
|
||||
max_supported_nss, wlan_vdev_mlme_get_nss(vdev));
|
||||
mlme_nofl_debug("Qos enable: %d | Associated: %s",
|
||||
conn_stats.qos_capability,
|
||||
(conn_stats.result_code ? "yes" : "no"));
|
||||
mlme_nofl_debug("+---------CONNECTION INFO END------------+");
|
||||
|
||||
WLAN_HOST_DIAG_EVENT_REPORT(&conn_stats, EVENT_WLAN_CONN_STATS_V2);
|
||||
|
||||
if (!connect_success)
|
||||
return;
|
||||
|
||||
/* store connect info on success */
|
||||
cm_connect_success_diag(mlme_obj, &conn_stats);
|
||||
}
|
||||
|
||||
#ifdef WLAN_UNIT_TEST
|
||||
static const char *cm_diag_get_persona(enum mgmt_bss_type persona)
|
||||
{
|
||||
switch (persona) {
|
||||
CASE_RETURN_STRING(STA_PERSONA);
|
||||
CASE_RETURN_STRING(SAP_PERSONA);
|
||||
CASE_RETURN_STRING(P2P_CLIENT_PERSONA);
|
||||
CASE_RETURN_STRING(P2P_GO_PERSONA);
|
||||
CASE_RETURN_STRING(FTM_PERSONA);
|
||||
CASE_RETURN_STRING(MONITOR_PERSONA);
|
||||
CASE_RETURN_STRING(P2P_DEVICE_PERSONA);
|
||||
CASE_RETURN_STRING(NDI_PERSONA);
|
||||
CASE_RETURN_STRING(WDS_PERSONA);
|
||||
default:
|
||||
return "Unknown";
|
||||
}
|
||||
}
|
||||
|
||||
static const char *cm_diag_get_auth_type_str(uint8_t auth_type)
|
||||
{
|
||||
switch (auth_type) {
|
||||
CASE_RETURN_STRING(AUTH_OPEN);
|
||||
CASE_RETURN_STRING(AUTH_SHARED);
|
||||
CASE_RETURN_STRING(AUTH_WPA_EAP);
|
||||
CASE_RETURN_STRING(AUTH_WPA_PSK);
|
||||
CASE_RETURN_STRING(AUTH_WPA2_EAP);
|
||||
CASE_RETURN_STRING(AUTH_WPA2_PSK);
|
||||
CASE_RETURN_STRING(AUTH_WAPI_CERT);
|
||||
CASE_RETURN_STRING(AUTH_WAPI_PSK);
|
||||
default:
|
||||
return "Unknown";
|
||||
}
|
||||
}
|
||||
|
||||
void cm_get_sta_cxn_info(struct wlan_objmgr_vdev *vdev,
|
||||
char *buf, uint32_t buf_sz)
|
||||
{
|
||||
struct qdf_mac_addr bss_peer_mac;
|
||||
struct wlan_ssid ssid;
|
||||
QDF_STATUS status;
|
||||
struct wlan_channel *des_chan;
|
||||
struct vdev_mlme_obj *vdev_mlme;
|
||||
struct wlan_crypto_params *crypto_params;
|
||||
qdf_freq_t oper_freq;
|
||||
int8_t rssi = 0;
|
||||
uint32_t nss, hw_mode;
|
||||
struct policy_mgr_conc_connection_info *conn_info;
|
||||
uint32_t i = 0, len = 0, max_cxn = 0;
|
||||
enum mgmt_ch_width ch_width;
|
||||
enum mgmt_dot11_mode dot11mode;
|
||||
enum mgmt_bss_type type;
|
||||
uint8_t authtype;
|
||||
enum mgmt_encrypt_type enctype;
|
||||
enum QDF_OPMODE opmode;
|
||||
struct wlan_objmgr_pdev *pdev;
|
||||
struct wlan_objmgr_psoc *psoc;
|
||||
|
||||
pdev = wlan_vdev_get_pdev(vdev);
|
||||
if (!pdev)
|
||||
return;
|
||||
psoc = wlan_pdev_get_psoc(pdev);
|
||||
if (!psoc)
|
||||
return;
|
||||
|
||||
qdf_mem_set(buf, buf_sz, '\0');
|
||||
|
||||
status = wlan_vdev_get_bss_peer_mac(vdev, &bss_peer_mac);
|
||||
if (QDF_IS_STATUS_ERROR(status))
|
||||
return;
|
||||
|
||||
len += qdf_scnprintf(buf + len, buf_sz - len,
|
||||
"\n\tbssid: "QDF_MAC_ADDR_FMT,
|
||||
QDF_MAC_ADDR_REF(bss_peer_mac.bytes));
|
||||
|
||||
status = wlan_vdev_mlme_get_ssid(vdev, ssid.ssid, &ssid.length);
|
||||
if (QDF_IS_STATUS_ERROR(status))
|
||||
return;
|
||||
if (ssid.length > WLAN_SSID_MAX_LEN)
|
||||
ssid.length = WLAN_SSID_MAX_LEN;
|
||||
len += qdf_scnprintf(buf + len, buf_sz - len,
|
||||
"\n\tssid: %.*s", ssid.length,
|
||||
ssid.ssid);
|
||||
|
||||
rssi = cm_get_rssi_by_bssid(pdev, &bss_peer_mac);
|
||||
len += qdf_scnprintf(buf + len, buf_sz - len,
|
||||
"\n\trssi: %d", rssi);
|
||||
|
||||
des_chan = wlan_vdev_mlme_get_des_chan(vdev);
|
||||
ch_width = cm_get_diag_ch_width(des_chan->ch_width);
|
||||
len += qdf_scnprintf(buf + len, buf_sz - len,
|
||||
"\n\tbw: %s", cm_diag_get_ch_width_str(ch_width));
|
||||
dot11mode = cm_diag_dot11_mode_from_phy_mode(des_chan->ch_phymode);
|
||||
len += qdf_scnprintf(buf + len, buf_sz - len,
|
||||
"\n\tdot11mode: %s",
|
||||
cm_diag_get_dot11_mode_str(dot11mode));
|
||||
|
||||
opmode = wlan_vdev_mlme_get_opmode(vdev);
|
||||
type = cm_get_diag_persona(opmode);
|
||||
len += qdf_scnprintf(buf + len, buf_sz - len,
|
||||
"\n\tbss_type: %s", cm_diag_get_persona(type));
|
||||
|
||||
oper_freq = wlan_get_operation_chan_freq(vdev);
|
||||
len += qdf_scnprintf(buf + len, buf_sz - len,
|
||||
"\n\tch_freq: %d", oper_freq);
|
||||
|
||||
vdev_mlme = wlan_vdev_mlme_get_cmpt_obj(vdev);
|
||||
if (!vdev_mlme) {
|
||||
mlme_err("vdev component object is NULL");
|
||||
return;
|
||||
}
|
||||
len += qdf_scnprintf(buf + len, buf_sz - len,
|
||||
"\n\tQoS: %d",
|
||||
vdev_mlme->ext_vdev_ptr->connect_info.qos_enabled);
|
||||
|
||||
crypto_params = wlan_crypto_vdev_get_crypto_params(vdev);
|
||||
|
||||
if (!crypto_params) {
|
||||
mlme_err("crypto params is null");
|
||||
return;
|
||||
}
|
||||
|
||||
cm_diag_get_auth_type(&authtype, crypto_params->authmodeset,
|
||||
crypto_params->key_mgmt,
|
||||
crypto_params->ucastcipherset);
|
||||
len += qdf_scnprintf(buf + len, buf_sz - len,
|
||||
"\n\tauth_type: %s",
|
||||
cm_diag_get_auth_type_str(authtype));
|
||||
|
||||
enctype = cm_get_diag_enc_type(crypto_params->ucastcipherset);
|
||||
len += qdf_scnprintf(buf + len, buf_sz - len,
|
||||
"\n\tencry_type: %s",
|
||||
cm_diag_get_encr_type_str(enctype));
|
||||
|
||||
conn_info = policy_mgr_get_conn_info(&max_cxn);
|
||||
for (i = 0; i < max_cxn; i++)
|
||||
if ((conn_info->vdev_id == wlan_vdev_get_id(vdev)) &&
|
||||
(conn_info->in_use))
|
||||
break;
|
||||
len += qdf_scnprintf(buf + len, buf_sz - len,
|
||||
"\n\tmac: %d", conn_info->mac);
|
||||
nss = wlan_vdev_mlme_get_nss(vdev);
|
||||
len += qdf_scnprintf(buf + len, buf_sz - len,
|
||||
"\n\torig_nss: %dx%d neg_nss: %dx%d",
|
||||
conn_info->original_nss, conn_info->original_nss,
|
||||
nss, nss);
|
||||
hw_mode = policy_mgr_is_current_hwmode_dbs(psoc);
|
||||
len += qdf_scnprintf(buf + len, buf_sz - len,
|
||||
"\n\tis_current_hw_mode_dbs: %s",
|
||||
((hw_mode != 0) ? "yes" : "no"));
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef FEATURE_CM_ENABLE
|
||||
QDF_STATUS cm_connect_start_ind(struct wlan_objmgr_vdev *vdev,
|
||||
struct wlan_cm_connect_req *req)
|
||||
@@ -321,6 +963,9 @@ cm_connect_complete_ind(struct wlan_objmgr_vdev *vdev,
|
||||
wlan_cm_roam_state_change(pdev, vdev_id, WLAN_ROAM_INIT,
|
||||
REASON_CONNECT);
|
||||
cm_csr_connect_done_ind(vdev, rsp);
|
||||
cm_connect_info(vdev, QDF_IS_STATUS_SUCCESS(rsp->connect_status) ?
|
||||
true : false, &rsp->bssid, &rsp->ssid,
|
||||
rsp->freq);
|
||||
|
||||
if (QDF_IS_STATUS_SUCCESS(rsp->connect_status))
|
||||
policy_mgr_incr_active_session(psoc, op_mode, vdev_id);
|
||||
|
@@ -117,6 +117,60 @@ cm_handle_disconnect_req(struct wlan_objmgr_vdev *vdev,
|
||||
return status;
|
||||
}
|
||||
|
||||
#ifdef FEATURE_WLAN_DIAG_SUPPORT_CSR
|
||||
static void cm_disconnect_diag_event(struct wlan_objmgr_vdev *vdev,
|
||||
struct wlan_cm_discon_rsp *rsp)
|
||||
{
|
||||
struct wlan_objmgr_psoc *psoc;
|
||||
struct wlan_mlme_psoc_ext_obj *mlme_obj;
|
||||
WLAN_HOST_DIAG_EVENT_DEF(connect_status,
|
||||
host_event_wlan_status_payload_type);
|
||||
|
||||
psoc = wlan_vdev_get_psoc(vdev);
|
||||
if (!psoc)
|
||||
return;
|
||||
|
||||
mlme_obj = mlme_get_psoc_ext_obj(psoc);
|
||||
if (!mlme_obj)
|
||||
return;
|
||||
qdf_mem_zero(&connect_status,
|
||||
sizeof(host_event_wlan_status_payload_type));
|
||||
qdf_mem_copy(&connect_status,
|
||||
&mlme_obj->cfg.sta.event_payload,
|
||||
sizeof(host_event_wlan_status_payload_type));
|
||||
|
||||
connect_status.rssi = mlme_obj->cfg.sta.current_rssi;
|
||||
connect_status.eventId = DIAG_WLAN_STATUS_DISCONNECT;
|
||||
if (rsp->req.req.reason_code == REASON_MIC_FAILURE) {
|
||||
connect_status.reason = DIAG_REASON_MIC_ERROR;
|
||||
} else if (rsp->req.req.source == CM_PEER_DISCONNECT) {
|
||||
switch (rsp->req.req.reason_code) {
|
||||
case REASON_PREV_AUTH_NOT_VALID:
|
||||
case REASON_CLASS2_FRAME_FROM_NON_AUTH_STA:
|
||||
case REASON_DEAUTH_NETWORK_LEAVING:
|
||||
connect_status.reason = DIAG_REASON_DEAUTH;
|
||||
break;
|
||||
default:
|
||||
connect_status.reason = DIAG_REASON_DISASSOC;
|
||||
break;
|
||||
}
|
||||
connect_status.reasonDisconnect = rsp->req.req.reason_code;
|
||||
} else if (rsp->req.req.source == CM_SB_DISCONNECT) {
|
||||
connect_status.reason = DIAG_REASON_DEAUTH;
|
||||
connect_status.reasonDisconnect = rsp->req.req.reason_code;
|
||||
} else {
|
||||
connect_status.reason = DIAG_REASON_USER_REQUESTED;
|
||||
}
|
||||
|
||||
WLAN_HOST_DIAG_EVENT_REPORT(&connect_status,
|
||||
EVENT_WLAN_STATUS_V2);
|
||||
}
|
||||
#else
|
||||
static inline void cm_disconnect_diag_event(struct wlan_objmgr_vdev *vdev,
|
||||
struct wlan_cm_discon_rsp *rsp)
|
||||
{}
|
||||
#endif
|
||||
|
||||
QDF_STATUS
|
||||
cm_disconnect_complete_ind(struct wlan_objmgr_vdev *vdev,
|
||||
struct wlan_cm_discon_rsp *rsp)
|
||||
@@ -138,7 +192,7 @@ cm_disconnect_complete_ind(struct wlan_objmgr_vdev *vdev,
|
||||
mlme_err("vdev_id: %d psoc not found", vdev_id);
|
||||
return QDF_STATUS_E_INVAL;
|
||||
}
|
||||
|
||||
cm_disconnect_diag_event(vdev, rsp);
|
||||
wlan_tdls_notify_sta_disconnect(vdev_id, false, false, vdev);
|
||||
policy_mgr_decr_session_set_pcl(psoc, op_mode, vdev_id);
|
||||
|
||||
|
@@ -1278,6 +1278,7 @@ struct switch_channel_ind {
|
||||
struct ch_params chan_params;
|
||||
struct qdf_mac_addr bssid; /* BSSID */
|
||||
QDF_STATUS status;
|
||||
enum wlan_phymode ch_phymode;
|
||||
};
|
||||
|
||||
/* / Definition for MIC failure indication */
|
||||
|
@@ -2043,6 +2043,7 @@ void lim_switch_channel_cback(struct mac_context *mac, QDF_STATUS status,
|
||||
pSirSmeSwitchChInd->chan_params.mhz_freq_seg1 =
|
||||
des_chan->ch_cfreq2;
|
||||
}
|
||||
pSirSmeSwitchChInd->ch_phymode = des_chan->ch_phymode;
|
||||
|
||||
pSirSmeSwitchChInd->status = status;
|
||||
qdf_mem_copy(pSirSmeSwitchChInd->bssid.bytes, pe_session->bssId,
|
||||
|
@@ -182,23 +182,6 @@ enum csr_roam_wmstatus_changetypes {
|
||||
eCsrDeauthenticated
|
||||
};
|
||||
|
||||
enum csr_diagwlan_status_eventsubtype {
|
||||
eCSR_WLAN_STATUS_CONNECT = 0,
|
||||
eCSR_WLAN_STATUS_DISCONNECT
|
||||
};
|
||||
|
||||
enum csr_diagwlan_status_eventreason {
|
||||
eCSR_REASON_UNSPECIFIED = 0,
|
||||
eCSR_REASON_USER_REQUESTED,
|
||||
eCSR_REASON_MIC_ERROR,
|
||||
eCSR_REASON_DISASSOC,
|
||||
eCSR_REASON_DEAUTH,
|
||||
eCSR_REASON_HANDOFF,
|
||||
eCSR_REASON_ROAM_SYNCH_IND,
|
||||
eCSR_REASON_ROAM_SYNCH_CNF,
|
||||
eCSR_REASON_ROAM_HO_FAIL,
|
||||
};
|
||||
|
||||
struct csr_channel {
|
||||
uint8_t numChannels;
|
||||
uint32_t channel_freq_list[CFG_VALID_CHANNEL_LIST_LEN];
|
||||
@@ -963,12 +946,12 @@ void csr_process_ho_fail_ind(struct mac_context *mac, void *msg_buf);
|
||||
#ifdef FEATURE_WLAN_DIAG_SUPPORT_CSR
|
||||
void csr_roaming_report_diag_event(struct mac_context *mac_ctx,
|
||||
struct roam_offload_synch_ind *roam_synch_ind_ptr,
|
||||
enum csr_diagwlan_status_eventreason reason);
|
||||
enum diagwlan_status_eventreason reason);
|
||||
#else
|
||||
static inline void csr_roaming_report_diag_event(
|
||||
struct mac_context *mac_ctx,
|
||||
struct roam_offload_synch_ind *roam_synch_ind_ptr,
|
||||
enum csr_diagwlan_status_eventreason reason)
|
||||
enum diagwlan_status_eventreason reason)
|
||||
{}
|
||||
#endif
|
||||
|
||||
|
@@ -3792,6 +3792,7 @@ sme_test_config_twt_terminate(struct wmi_twt_del_dialog_param *params)
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef WLAN_UNIT_TEST
|
||||
/**
|
||||
* sme_get_sta_cxn_info() - This function populates all the connection
|
||||
* information which is formed by DUT-STA to AP
|
||||
@@ -3817,6 +3818,7 @@ sme_get_sta_cxn_info(mac_handle_t mac_handle, uint32_t session_id,
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(FEATURE_WLAN_ESE) && defined(WLAN_FEATURE_ROAM_OFFLOAD)
|
||||
/**
|
||||
|
@@ -378,9 +378,6 @@ struct sme_context {
|
||||
void **sme_cmd_buf_addr;
|
||||
tDblLinkList sme_cmd_freelist; /* preallocated roam cmd list */
|
||||
enum QDF_OPMODE curr_device_mode;
|
||||
#ifdef FEATURE_WLAN_DIAG_SUPPORT_CSR
|
||||
host_event_wlan_status_payload_type eventPayload;
|
||||
#endif
|
||||
void *ll_stats_context;
|
||||
link_layer_stats_cb link_layer_stats_cb;
|
||||
void (*link_layer_stats_ext_cb)(hdd_handle_t callback_ctx,
|
||||
|
@@ -15183,6 +15183,7 @@ uint8_t sme_get_mcs_idx(uint16_t raw_rate, enum tx_rate_info rate_flags,
|
||||
nss, dcm, guard_interval, mcs_rate_flags);
|
||||
}
|
||||
|
||||
#ifdef WLAN_UNIT_TEST
|
||||
#ifdef FEATURE_WLAN_DIAG_SUPPORT_CSR
|
||||
QDF_STATUS sme_get_sta_cxn_info(mac_handle_t mac_handle, uint32_t session_id,
|
||||
char *buf, uint32_t buf_sz)
|
||||
@@ -15197,6 +15198,8 @@ QDF_STATUS sme_get_sta_cxn_info(mac_handle_t mac_handle, uint32_t session_id,
|
||||
return status;
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
QDF_STATUS
|
||||
sme_get_roam_scan_stats(mac_handle_t mac_handle,
|
||||
roam_scan_stats_cb cb, void *context,
|
||||
|
@@ -172,178 +172,6 @@ static inline QDF_STATUS csr_sae_callback(struct mac_context *mac_ctx,
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef FEATURE_WLAN_DIAG_SUPPORT_CSR
|
||||
enum mgmt_auth_type diag_auth_type_from_csr_type(enum csr_akm_type authtype)
|
||||
{
|
||||
int n = AUTH_OPEN;
|
||||
|
||||
switch (authtype) {
|
||||
case eCSR_AUTH_TYPE_SHARED_KEY:
|
||||
n = AUTH_SHARED;
|
||||
break;
|
||||
case eCSR_AUTH_TYPE_WPA:
|
||||
n = AUTH_WPA_EAP;
|
||||
break;
|
||||
case eCSR_AUTH_TYPE_WPA_PSK:
|
||||
n = AUTH_WPA_PSK;
|
||||
break;
|
||||
case eCSR_AUTH_TYPE_RSN:
|
||||
case eCSR_AUTH_TYPE_SUITEB_EAP_SHA256:
|
||||
case eCSR_AUTH_TYPE_SUITEB_EAP_SHA384:
|
||||
#ifdef WLAN_FEATURE_11W
|
||||
case eCSR_AUTH_TYPE_RSN_8021X_SHA256:
|
||||
#endif
|
||||
n = AUTH_WPA2_EAP;
|
||||
break;
|
||||
case eCSR_AUTH_TYPE_RSN_PSK:
|
||||
#ifdef WLAN_FEATURE_11W
|
||||
case eCSR_AUTH_TYPE_RSN_PSK_SHA256:
|
||||
#endif
|
||||
n = AUTH_WPA2_PSK;
|
||||
break;
|
||||
#ifdef FEATURE_WLAN_WAPI
|
||||
case eCSR_AUTH_TYPE_WAPI_WAI_CERTIFICATE:
|
||||
n = AUTH_WAPI_CERT;
|
||||
break;
|
||||
case eCSR_AUTH_TYPE_WAPI_WAI_PSK:
|
||||
n = AUTH_WAPI_PSK;
|
||||
break;
|
||||
#endif /* FEATURE_WLAN_WAPI */
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return n;
|
||||
}
|
||||
|
||||
enum mgmt_encrypt_type diag_enc_type_from_csr_type(eCsrEncryptionType enctype)
|
||||
{
|
||||
int n = ENC_MODE_OPEN;
|
||||
|
||||
switch (enctype) {
|
||||
case eCSR_ENCRYPT_TYPE_WEP40_STATICKEY:
|
||||
case eCSR_ENCRYPT_TYPE_WEP40:
|
||||
n = ENC_MODE_WEP40;
|
||||
break;
|
||||
case eCSR_ENCRYPT_TYPE_WEP104_STATICKEY:
|
||||
case eCSR_ENCRYPT_TYPE_WEP104:
|
||||
n = ENC_MODE_WEP104;
|
||||
break;
|
||||
case eCSR_ENCRYPT_TYPE_TKIP:
|
||||
n = ENC_MODE_TKIP;
|
||||
break;
|
||||
case eCSR_ENCRYPT_TYPE_AES:
|
||||
n = ENC_MODE_AES;
|
||||
break;
|
||||
case eCSR_ENCRYPT_TYPE_AES_GCMP:
|
||||
n = ENC_MODE_AES_GCMP;
|
||||
break;
|
||||
case eCSR_ENCRYPT_TYPE_AES_GCMP_256:
|
||||
n = ENC_MODE_AES_GCMP_256;
|
||||
break;
|
||||
#ifdef FEATURE_WLAN_WAPI
|
||||
case eCSR_ENCRYPT_TYPE_WPI:
|
||||
n = ENC_MODE_SMS4;
|
||||
break;
|
||||
#endif /* FEATURE_WLAN_WAPI */
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return n;
|
||||
}
|
||||
|
||||
enum mgmt_dot11_mode
|
||||
diag_dot11_mode_from_csr_type(enum csr_cfgdot11mode dot11mode)
|
||||
{
|
||||
switch (dot11mode) {
|
||||
case eCSR_CFG_DOT11_MODE_ABG:
|
||||
return DOT11_MODE_ABG;
|
||||
case eCSR_CFG_DOT11_MODE_11A:
|
||||
return DOT11_MODE_11A;
|
||||
case eCSR_CFG_DOT11_MODE_11B:
|
||||
return DOT11_MODE_11B;
|
||||
case eCSR_CFG_DOT11_MODE_11G:
|
||||
return DOT11_MODE_11G;
|
||||
case eCSR_CFG_DOT11_MODE_11N:
|
||||
return DOT11_MODE_11N;
|
||||
case eCSR_CFG_DOT11_MODE_11AC:
|
||||
return DOT11_MODE_11AC;
|
||||
case eCSR_CFG_DOT11_MODE_11G_ONLY:
|
||||
return DOT11_MODE_11G_ONLY;
|
||||
case eCSR_CFG_DOT11_MODE_11N_ONLY:
|
||||
return DOT11_MODE_11N_ONLY;
|
||||
case eCSR_CFG_DOT11_MODE_11AC_ONLY:
|
||||
return DOT11_MODE_11AC_ONLY;
|
||||
case eCSR_CFG_DOT11_MODE_AUTO:
|
||||
return DOT11_MODE_AUTO;
|
||||
case eCSR_CFG_DOT11_MODE_11AX:
|
||||
return DOT11_MODE_11AX;
|
||||
case eCSR_CFG_DOT11_MODE_11AX_ONLY:
|
||||
return DOT11_MODE_11AX_ONLY;
|
||||
default:
|
||||
return DOT11_MODE_MAX;
|
||||
}
|
||||
}
|
||||
|
||||
enum mgmt_ch_width diag_ch_width_from_csr_type(enum phy_ch_width ch_width)
|
||||
{
|
||||
switch (ch_width) {
|
||||
case CH_WIDTH_20MHZ:
|
||||
return BW_20MHZ;
|
||||
case CH_WIDTH_40MHZ:
|
||||
return BW_40MHZ;
|
||||
case CH_WIDTH_80MHZ:
|
||||
return BW_80MHZ;
|
||||
case CH_WIDTH_160MHZ:
|
||||
return BW_160MHZ;
|
||||
case CH_WIDTH_80P80MHZ:
|
||||
return BW_80P80MHZ;
|
||||
case CH_WIDTH_5MHZ:
|
||||
return BW_5MHZ;
|
||||
case CH_WIDTH_10MHZ:
|
||||
return BW_10MHZ;
|
||||
default:
|
||||
return BW_MAX;
|
||||
}
|
||||
}
|
||||
|
||||
enum mgmt_bss_type diag_persona_from_csr_type(enum QDF_OPMODE persona)
|
||||
{
|
||||
switch (persona) {
|
||||
case QDF_STA_MODE:
|
||||
return STA_PERSONA;
|
||||
case QDF_SAP_MODE:
|
||||
return SAP_PERSONA;
|
||||
case QDF_P2P_CLIENT_MODE:
|
||||
return P2P_CLIENT_PERSONA;
|
||||
case QDF_P2P_GO_MODE:
|
||||
return P2P_GO_PERSONA;
|
||||
case QDF_FTM_MODE:
|
||||
return FTM_PERSONA;
|
||||
case QDF_MONITOR_MODE:
|
||||
return MONITOR_PERSONA;
|
||||
case QDF_P2P_DEVICE_MODE:
|
||||
return P2P_DEVICE_PERSONA;
|
||||
case QDF_OCB_MODE:
|
||||
return OCB_PERSONA;
|
||||
case QDF_EPPING_MODE:
|
||||
return EPPING_PERSONA;
|
||||
case QDF_QVIT_MODE:
|
||||
return QVIT_PERSONA;
|
||||
case QDF_NDI_MODE:
|
||||
return NDI_PERSONA;
|
||||
case QDF_WDS_MODE:
|
||||
return WDS_PERSONA;
|
||||
case QDF_BTAMP_MODE:
|
||||
return BTAMP_PERSONA;
|
||||
case QDF_AHDEMO_MODE:
|
||||
return AHDEMO_PERSONA;
|
||||
default:
|
||||
return MAX_PERSONA;
|
||||
}
|
||||
}
|
||||
#endif /* #ifdef FEATURE_WLAN_DIAG_SUPPORT_CSR */
|
||||
|
||||
static const uint32_t
|
||||
social_channel_freq[MAX_SOCIAL_CHANNELS] = { 2412, 2437, 2462 };
|
||||
|
||||
@@ -2783,194 +2611,51 @@ static void csr_roam_populate_channels(tDot11fBeaconIEs *beacon_ies,
|
||||
#endif
|
||||
|
||||
#ifdef FEATURE_WLAN_DIAG_SUPPORT_CSR
|
||||
static const char *csr_get_ch_width_str(uint8_t ch_width)
|
||||
{
|
||||
switch (ch_width) {
|
||||
CASE_RETURN_STRING(BW_20MHZ);
|
||||
CASE_RETURN_STRING(BW_40MHZ);
|
||||
CASE_RETURN_STRING(BW_80MHZ);
|
||||
CASE_RETURN_STRING(BW_160MHZ);
|
||||
CASE_RETURN_STRING(BW_80P80MHZ);
|
||||
CASE_RETURN_STRING(BW_5MHZ);
|
||||
CASE_RETURN_STRING(BW_10MHZ);
|
||||
default:
|
||||
return "Unknown";
|
||||
}
|
||||
}
|
||||
|
||||
static const char *csr_get_persona(enum mgmt_bss_type persona)
|
||||
{
|
||||
switch (persona) {
|
||||
CASE_RETURN_STRING(STA_PERSONA);
|
||||
CASE_RETURN_STRING(SAP_PERSONA);
|
||||
CASE_RETURN_STRING(P2P_CLIENT_PERSONA);
|
||||
CASE_RETURN_STRING(P2P_GO_PERSONA);
|
||||
CASE_RETURN_STRING(FTM_PERSONA);
|
||||
CASE_RETURN_STRING(MONITOR_PERSONA);
|
||||
CASE_RETURN_STRING(P2P_DEVICE_PERSONA);
|
||||
CASE_RETURN_STRING(NDI_PERSONA);
|
||||
CASE_RETURN_STRING(WDS_PERSONA);
|
||||
default:
|
||||
return "Unknown";
|
||||
}
|
||||
}
|
||||
|
||||
static const char *csr_get_dot11_mode_str(enum mgmt_dot11_mode dot11mode)
|
||||
{
|
||||
switch (dot11mode) {
|
||||
CASE_RETURN_STRING(DOT11_MODE_AUTO);
|
||||
CASE_RETURN_STRING(DOT11_MODE_ABG);
|
||||
CASE_RETURN_STRING(DOT11_MODE_11A);
|
||||
CASE_RETURN_STRING(DOT11_MODE_11B);
|
||||
CASE_RETURN_STRING(DOT11_MODE_11G);
|
||||
CASE_RETURN_STRING(DOT11_MODE_11N);
|
||||
CASE_RETURN_STRING(DOT11_MODE_11AC);
|
||||
CASE_RETURN_STRING(DOT11_MODE_11G_ONLY);
|
||||
CASE_RETURN_STRING(DOT11_MODE_11N_ONLY);
|
||||
CASE_RETURN_STRING(DOT11_MODE_11AC_ONLY);
|
||||
CASE_RETURN_STRING(DOT11_MODE_11AX);
|
||||
CASE_RETURN_STRING(DOT11_MODE_11AX_ONLY);
|
||||
default:
|
||||
return "Unknown";
|
||||
}
|
||||
}
|
||||
|
||||
static const char *csr_get_auth_type_str(uint8_t auth_type)
|
||||
{
|
||||
switch (auth_type) {
|
||||
CASE_RETURN_STRING(AUTH_OPEN);
|
||||
CASE_RETURN_STRING(AUTH_SHARED);
|
||||
CASE_RETURN_STRING(AUTH_WPA_EAP);
|
||||
CASE_RETURN_STRING(AUTH_WPA_PSK);
|
||||
CASE_RETURN_STRING(AUTH_WPA2_EAP);
|
||||
CASE_RETURN_STRING(AUTH_WPA2_PSK);
|
||||
CASE_RETURN_STRING(AUTH_WAPI_CERT);
|
||||
CASE_RETURN_STRING(AUTH_WAPI_PSK);
|
||||
default:
|
||||
return "Unknown";
|
||||
}
|
||||
}
|
||||
|
||||
static const char *csr_get_encr_type_str(uint8_t encr_type)
|
||||
{
|
||||
switch (encr_type) {
|
||||
CASE_RETURN_STRING(ENC_MODE_OPEN);
|
||||
CASE_RETURN_STRING(ENC_MODE_WEP40);
|
||||
CASE_RETURN_STRING(ENC_MODE_WEP104);
|
||||
CASE_RETURN_STRING(ENC_MODE_TKIP);
|
||||
CASE_RETURN_STRING(ENC_MODE_AES);
|
||||
CASE_RETURN_STRING(ENC_MODE_AES_GCMP);
|
||||
CASE_RETURN_STRING(ENC_MODE_AES_GCMP_256);
|
||||
CASE_RETURN_STRING(ENC_MODE_SMS4);
|
||||
default:
|
||||
return "Unknown";
|
||||
}
|
||||
}
|
||||
|
||||
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)
|
||||
void cm_diag_get_auth_enc_type_vdev_id(struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t *auth_type,
|
||||
uint8_t *ucast_cipher,
|
||||
uint8_t *mcast_cipher,
|
||||
uint8_t vdev_id)
|
||||
{
|
||||
struct wlan_objmgr_vdev *vdev;
|
||||
uint8_t intrsct_nss;
|
||||
struct wlan_crypto_params *crypto_params;
|
||||
|
||||
vdev = wlan_objmgr_get_vdev_by_id_from_psoc(mac_ctx->psoc, vdev_id,
|
||||
vdev = wlan_objmgr_get_vdev_by_id_from_psoc(psoc, vdev_id,
|
||||
WLAN_LEGACY_MAC_ID);
|
||||
if (!vdev) {
|
||||
pe_warn("vdev not found for id: %d", vdev_id);
|
||||
return 0;
|
||||
mlme_err("vdev object is NULL for vdev %d", vdev_id);
|
||||
return;
|
||||
}
|
||||
wlan_vdev_obj_lock(vdev);
|
||||
intrsct_nss = wlan_vdev_mlme_get_nss(vdev);
|
||||
wlan_vdev_obj_unlock(vdev);
|
||||
crypto_params = wlan_crypto_vdev_get_crypto_params(vdev);
|
||||
|
||||
if (!crypto_params) {
|
||||
mlme_err("crypto params is null");
|
||||
wlan_objmgr_vdev_release_ref(vdev, WLAN_LEGACY_MAC_ID);
|
||||
return;
|
||||
}
|
||||
if (auth_type)
|
||||
cm_diag_get_auth_type(auth_type,
|
||||
crypto_params->authmodeset,
|
||||
crypto_params->key_mgmt,
|
||||
crypto_params->ucastcipherset);
|
||||
if (ucast_cipher)
|
||||
*ucast_cipher =
|
||||
cm_get_diag_enc_type(crypto_params->ucastcipherset);
|
||||
if (mcast_cipher)
|
||||
*mcast_cipher =
|
||||
cm_get_diag_enc_type(crypto_params->ucastcipherset);
|
||||
wlan_objmgr_vdev_release_ref(vdev, WLAN_LEGACY_MAC_ID);
|
||||
|
||||
return intrsct_nss;
|
||||
}
|
||||
|
||||
#ifndef FEATURE_CM_ENABLE
|
||||
static void
|
||||
csr_cm_connect_info(struct mac_context *mac_ctx, uint8_t vdev_id,
|
||||
bool connect_success)
|
||||
bool connect_success, struct qdf_mac_addr *bssid,
|
||||
tSirMacSSid *connect_ssid, qdf_freq_t freq)
|
||||
{
|
||||
struct wlan_objmgr_vdev *vdev;
|
||||
struct qdf_mac_addr bss_peer_mac;
|
||||
struct sSirMacSSid ssid;
|
||||
qdf_freq_t oper_freq;
|
||||
QDF_STATUS status;
|
||||
struct wlan_channel *des_chan;
|
||||
struct vdev_mlme_obj *vdev_mlme;
|
||||
struct wlan_crypto_params *crypto_params;
|
||||
eCsrEncryptionType uc_encrypt_type;
|
||||
enum csr_akm_type auth_type;
|
||||
uint8_t max_supported_nss;
|
||||
enum QDF_OPMODE opmode;
|
||||
WLAN_HOST_DIAG_EVENT_DEF(conn_stats,
|
||||
struct host_event_wlan_connection_stats);
|
||||
struct wlan_ssid ssid;
|
||||
|
||||
vdev = wlan_objmgr_get_vdev_by_id_from_psoc(mac_ctx->psoc, vdev_id,
|
||||
WLAN_LEGACY_MAC_ID);
|
||||
@@ -2978,127 +2663,17 @@ csr_cm_connect_info(struct mac_context *mac_ctx, uint8_t vdev_id,
|
||||
sme_err("vdev object is NULL for vdev %d", vdev_id);
|
||||
return;
|
||||
}
|
||||
|
||||
qdf_mem_zero(&conn_stats,
|
||||
sizeof(struct host_event_wlan_connection_stats));
|
||||
|
||||
status = wlan_vdev_get_bss_peer_mac(vdev, &bss_peer_mac);
|
||||
if (QDF_IS_STATUS_ERROR(status))
|
||||
goto connect_info_failed;
|
||||
qdf_mem_copy(conn_stats.bssid, bss_peer_mac.bytes,
|
||||
QDF_MAC_ADDR_SIZE);
|
||||
|
||||
status = wlan_vdev_mlme_get_ssid(vdev, ssid.ssId, &ssid.length);
|
||||
if (QDF_IS_STATUS_ERROR(status))
|
||||
goto connect_info_failed;
|
||||
conn_stats.ssid_len = ssid.length;
|
||||
if (conn_stats.ssid_len > WLAN_SSID_MAX_LEN)
|
||||
conn_stats.ssid_len = WLAN_SSID_MAX_LEN;
|
||||
qdf_mem_copy(conn_stats.ssid, ssid.ssId,
|
||||
conn_stats.ssid_len);
|
||||
|
||||
sme_get_rssi_snr_by_bssid(MAC_HANDLE(mac_ctx),
|
||||
&conn_stats.bssid[0], &conn_stats.rssi, NULL);
|
||||
conn_stats.est_link_speed = 0;
|
||||
|
||||
des_chan = wlan_vdev_mlme_get_des_chan(vdev);
|
||||
|
||||
conn_stats.chnl_bw =
|
||||
diag_ch_width_from_csr_type(des_chan->ch_width);
|
||||
conn_stats.dot11mode =
|
||||
diag_dot11_mode_from_csr_type(
|
||||
sme_phy_mode_to_dot11mode(des_chan->ch_phymode));
|
||||
|
||||
opmode = wlan_vdev_mlme_get_opmode(vdev);
|
||||
conn_stats.bss_type = diag_persona_from_csr_type(opmode);
|
||||
|
||||
oper_freq = wlan_get_operation_chan_freq(vdev);
|
||||
if (oper_freq)
|
||||
conn_stats.operating_channel =
|
||||
wlan_reg_freq_to_chan(mac_ctx->pdev, oper_freq);
|
||||
|
||||
vdev_mlme = wlan_vdev_mlme_get_cmpt_obj(vdev);
|
||||
if (!vdev_mlme) {
|
||||
sme_err("vdev component object is NULL");
|
||||
goto connect_info_failed;
|
||||
}
|
||||
conn_stats.qos_capability =
|
||||
vdev_mlme->ext_vdev_ptr->connect_info.qos_enabled;
|
||||
|
||||
crypto_params = wlan_crypto_vdev_get_crypto_params(vdev);
|
||||
|
||||
if (!crypto_params) {
|
||||
sme_err("crypto params is null");
|
||||
goto connect_info_failed;
|
||||
}
|
||||
|
||||
csr_fill_auth_type(&auth_type,
|
||||
crypto_params->authmodeset,
|
||||
crypto_params->key_mgmt,
|
||||
crypto_params->ucastcipherset);
|
||||
conn_stats.auth_type =
|
||||
diag_auth_type_from_csr_type(auth_type);
|
||||
|
||||
csr_fill_enc_type(&uc_encrypt_type, crypto_params->ucastcipherset);
|
||||
conn_stats.encryption_type =
|
||||
diag_enc_type_from_csr_type(uc_encrypt_type);
|
||||
|
||||
conn_stats.result_code = connect_success;
|
||||
conn_stats.reason_code = 0;
|
||||
conn_stats.op_freq = oper_freq;
|
||||
|
||||
max_supported_nss = mac_ctx->mlme_cfg->vht_caps.vht_cap_info.enable2x2 ?
|
||||
MAX_VDEV_NSS : 1;
|
||||
sme_nofl_debug("+---------CONNECTION INFO START------------+");
|
||||
sme_nofl_debug("VDEV-ID: %d self_mac:"QDF_MAC_ADDR_FMT, vdev_id,
|
||||
QDF_MAC_ADDR_REF(wlan_vdev_mlme_get_macaddr(vdev)));
|
||||
sme_nofl_debug("ssid: %.*s bssid: "QDF_MAC_ADDR_FMT" RSSI: %d dBm",
|
||||
conn_stats.ssid_len, conn_stats.ssid,
|
||||
QDF_MAC_ADDR_REF(conn_stats.bssid), conn_stats.rssi);
|
||||
sme_nofl_debug("Channel Freq: %d channel_bw: %s dot11Mode: %s", conn_stats.op_freq,
|
||||
csr_get_ch_width_str(conn_stats.chnl_bw),
|
||||
csr_get_dot11_mode_str(conn_stats.dot11mode));
|
||||
sme_nofl_debug("AKM: %s Encry-type: %s",
|
||||
csr_get_akm_str(auth_type),
|
||||
csr_get_encr_type_str(conn_stats.encryption_type));
|
||||
sme_nofl_debug("DUT_NSS: %d | Intersected NSS:%d",
|
||||
max_supported_nss,
|
||||
csr_get_sta_ap_intersected_nss(mac_ctx, vdev_id));
|
||||
sme_nofl_debug("Qos enable: %d | Associated: %s",
|
||||
conn_stats.qos_capability,
|
||||
(conn_stats.result_code ? "yes" : "no"));
|
||||
sme_nofl_debug("+---------CONNECTION INFO END------------+");
|
||||
|
||||
WLAN_HOST_DIAG_EVENT_REPORT(&conn_stats, EVENT_WLAN_CONN_STATS_V2);
|
||||
|
||||
connect_info_failed:
|
||||
ssid.length = connect_ssid->length;
|
||||
qdf_mem_copy(ssid.ssid, connect_ssid->ssId, WLAN_SSID_MAX_LEN);
|
||||
cm_connect_info(vdev, connect_success, bssid, &ssid, freq);
|
||||
wlan_objmgr_vdev_release_ref(vdev, WLAN_LEGACY_MAC_ID);
|
||||
}
|
||||
|
||||
#endif
|
||||
#ifdef WLAN_UNIT_TEST
|
||||
void csr_cm_get_sta_cxn_info(struct mac_context *mac_ctx, uint8_t vdev_id,
|
||||
char *buf, uint32_t buf_sz)
|
||||
{
|
||||
struct wlan_objmgr_vdev *vdev;
|
||||
struct qdf_mac_addr bss_peer_mac;
|
||||
struct sSirMacSSid ssid;
|
||||
QDF_STATUS status;
|
||||
struct wlan_channel *des_chan;
|
||||
struct vdev_mlme_obj *vdev_mlme;
|
||||
struct wlan_crypto_params *crypto_params;
|
||||
eCsrEncryptionType uc_encrypt_type;
|
||||
enum csr_akm_type auth_type;
|
||||
qdf_freq_t oper_freq;
|
||||
int8_t rssi = 0;
|
||||
uint32_t nss, hw_mode;
|
||||
struct policy_mgr_conc_connection_info *conn_info;
|
||||
struct wma_txrx_node *wma_conn_table_entry = NULL;
|
||||
uint32_t i = 0, len = 0, max_cxn = 0;
|
||||
enum mgmt_ch_width ch_width;
|
||||
enum mgmt_dot11_mode dot11mode;
|
||||
enum mgmt_bss_type type;
|
||||
enum mgmt_auth_type authtype;
|
||||
enum mgmt_encrypt_type enctype;
|
||||
enum QDF_OPMODE opmode;
|
||||
|
||||
vdev = wlan_objmgr_get_vdev_by_id_from_psoc(mac_ctx->psoc, vdev_id,
|
||||
WLAN_LEGACY_MAC_ID);
|
||||
@@ -3107,111 +2682,21 @@ void csr_cm_get_sta_cxn_info(struct mac_context *mac_ctx, uint8_t vdev_id,
|
||||
return;
|
||||
}
|
||||
|
||||
qdf_mem_set(buf, buf_sz, '\0');
|
||||
|
||||
status = wlan_vdev_get_bss_peer_mac(vdev, &bss_peer_mac);
|
||||
if (QDF_IS_STATUS_ERROR(status))
|
||||
goto cm_get_sta_cxn_info_failed;
|
||||
|
||||
len += qdf_scnprintf(buf + len, buf_sz - len,
|
||||
"\n\tbssid: "QDF_MAC_ADDR_FMT,
|
||||
QDF_MAC_ADDR_REF(bss_peer_mac.bytes));
|
||||
|
||||
status = wlan_vdev_mlme_get_ssid(vdev, ssid.ssId, &ssid.length);
|
||||
if (QDF_IS_STATUS_ERROR(status))
|
||||
goto cm_get_sta_cxn_info_failed;
|
||||
if (ssid.length > WLAN_SSID_MAX_LEN)
|
||||
ssid.length = WLAN_SSID_MAX_LEN;
|
||||
len += qdf_scnprintf(buf + len, buf_sz - len,
|
||||
"\n\tssid: %.*s", ssid.length,
|
||||
ssid.ssId);
|
||||
|
||||
sme_get_rssi_snr_by_bssid(MAC_HANDLE(mac_ctx),
|
||||
bss_peer_mac.bytes, &rssi, NULL);
|
||||
len += qdf_scnprintf(buf + len, buf_sz - len,
|
||||
"\n\trssi: %d", rssi);
|
||||
|
||||
des_chan = wlan_vdev_mlme_get_des_chan(vdev);
|
||||
ch_width = diag_ch_width_from_csr_type(des_chan->ch_width);
|
||||
len += qdf_scnprintf(buf + len, buf_sz - len,
|
||||
"\n\tbw: %s", csr_get_ch_width_str(ch_width));
|
||||
dot11mode = diag_dot11_mode_from_csr_type(
|
||||
sme_phy_mode_to_dot11mode(des_chan->ch_phymode));
|
||||
len += qdf_scnprintf(buf + len, buf_sz - len,
|
||||
"\n\tdot11mode: %s",
|
||||
csr_get_dot11_mode_str(dot11mode));
|
||||
|
||||
opmode = wlan_vdev_mlme_get_opmode(vdev);
|
||||
type = diag_persona_from_csr_type(opmode);
|
||||
len += qdf_scnprintf(buf + len, buf_sz - len,
|
||||
"\n\tbss_type: %s", csr_get_persona(type));
|
||||
|
||||
oper_freq = wlan_get_operation_chan_freq(vdev);
|
||||
len += qdf_scnprintf(buf + len, buf_sz - len,
|
||||
"\n\tch_freq: %d", oper_freq);
|
||||
|
||||
vdev_mlme = wlan_vdev_mlme_get_cmpt_obj(vdev);
|
||||
if (!vdev_mlme) {
|
||||
sme_err("vdev component object is NULL");
|
||||
goto cm_get_sta_cxn_info_failed;
|
||||
}
|
||||
len += qdf_scnprintf(buf + len, buf_sz - len,
|
||||
"\n\tQoS: %d",
|
||||
vdev_mlme->ext_vdev_ptr->connect_info.qos_enabled);
|
||||
|
||||
crypto_params = wlan_crypto_vdev_get_crypto_params(vdev);
|
||||
|
||||
if (!crypto_params) {
|
||||
sme_err("crypto params is null");
|
||||
goto cm_get_sta_cxn_info_failed;
|
||||
}
|
||||
|
||||
csr_fill_auth_type(&auth_type, crypto_params->authmodeset,
|
||||
crypto_params->key_mgmt,
|
||||
crypto_params->ucastcipherset);
|
||||
authtype = diag_auth_type_from_csr_type(auth_type);
|
||||
len += qdf_scnprintf(buf + len, buf_sz - len,
|
||||
"\n\tauth_type: %s",
|
||||
csr_get_auth_type_str(authtype));
|
||||
|
||||
csr_fill_enc_type(&uc_encrypt_type, crypto_params->ucastcipherset);
|
||||
enctype = diag_enc_type_from_csr_type(uc_encrypt_type);
|
||||
len += qdf_scnprintf(buf + len, buf_sz - len,
|
||||
"\n\tencry_type: %s",
|
||||
csr_get_encr_type_str(enctype));
|
||||
|
||||
conn_info = policy_mgr_get_conn_info(&max_cxn);
|
||||
for (i = 0; i < max_cxn; i++)
|
||||
if ((conn_info->vdev_id == vdev_id) &&
|
||||
(conn_info->in_use))
|
||||
break;
|
||||
len += qdf_scnprintf(buf + len, buf_sz - len,
|
||||
"\n\tmac: %d", conn_info->mac);
|
||||
wma_conn_table_entry = wma_get_interface_by_vdev_id(vdev_id);
|
||||
if (wma_conn_table_entry)
|
||||
nss = wma_conn_table_entry->nss;
|
||||
else
|
||||
nss = 0;
|
||||
len += qdf_scnprintf(buf + len, buf_sz - len,
|
||||
"\n\torig_nss: %dx%d neg_nss: %dx%d",
|
||||
conn_info->original_nss, conn_info->original_nss,
|
||||
nss, nss);
|
||||
hw_mode = policy_mgr_is_current_hwmode_dbs(mac_ctx->psoc);
|
||||
len += qdf_scnprintf(buf + len, buf_sz - len,
|
||||
"\n\tis_current_hw_mode_dbs: %s",
|
||||
((hw_mode != 0) ? "yes" : "no"));
|
||||
|
||||
cm_get_sta_cxn_info_failed:
|
||||
cm_get_sta_cxn_info(vdev, buf, buf_sz);
|
||||
wlan_objmgr_vdev_release_ref(vdev, WLAN_LEGACY_MAC_ID);
|
||||
|
||||
}
|
||||
#endif
|
||||
#else
|
||||
static void
|
||||
#ifndef FEATURE_CM_ENABLE
|
||||
static inline void
|
||||
csr_cm_connect_info(struct mac_context *mac_ctx, uint8_t vdev_id,
|
||||
bool connect_success)
|
||||
bool connect_success, struct qdf_mac_addr *bssid,
|
||||
tSirMacSSid *connect_ssid, qdf_freq_t freq)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
QDF_STATUS csr_roam_call_callback(struct mac_context *mac, uint32_t sessionId,
|
||||
struct csr_roam_info *roam_info,
|
||||
@@ -3219,14 +2704,13 @@ QDF_STATUS csr_roam_call_callback(struct mac_context *mac, uint32_t sessionId,
|
||||
eRoamCmdStatus u1, eCsrRoamResult u2)
|
||||
{
|
||||
QDF_STATUS status = QDF_STATUS_SUCCESS;
|
||||
#ifdef FEATURE_WLAN_DIAG_SUPPORT_CSR
|
||||
|
||||
WLAN_HOST_DIAG_EVENT_DEF(connectionStatus,
|
||||
host_event_wlan_status_payload_type);
|
||||
#endif
|
||||
struct csr_roam_session *pSession;
|
||||
/* This is temp ifdef will be removed in near future */
|
||||
#ifndef FEATURE_CM_ENABLE
|
||||
#ifdef FEATURE_WLAN_DIAG_SUPPORT_CSR
|
||||
WLAN_HOST_DIAG_EVENT_DEF(connectionStatus,
|
||||
host_event_wlan_status_payload_type);
|
||||
#endif
|
||||
tDot11fBeaconIEs *beacon_ies = NULL;
|
||||
uint8_t chan1, chan2;
|
||||
uint32_t chan_freq;
|
||||
@@ -3302,10 +2786,13 @@ QDF_STATUS csr_roam_call_callback(struct mac_context *mac, uint32_t sessionId,
|
||||
/* This is temp ifdef will be removed in near future */
|
||||
#ifndef FEATURE_CM_ENABLE
|
||||
|
||||
if (eCSR_ROAM_ASSOCIATION_COMPLETION == u1)
|
||||
csr_cm_connect_info(
|
||||
mac, sessionId,
|
||||
(u2 == eCSR_ROAM_RESULT_ASSOCIATED) ? true : false);
|
||||
if (eCSR_ROAM_ASSOCIATION_COMPLETION == u1 && roam_info &&
|
||||
roam_info->u.pConnectedProfile)
|
||||
csr_cm_connect_info(mac, sessionId,
|
||||
(u2 == eCSR_ROAM_RESULT_ASSOCIATED) ? true : false,
|
||||
&roam_info->bssid,
|
||||
&roam_info->u.pConnectedProfile->SSID,
|
||||
roam_info->u.pConnectedProfile->op_freq);
|
||||
#endif
|
||||
|
||||
if (mac->session_roam_complete_cb) {
|
||||
@@ -3314,6 +2801,8 @@ QDF_STATUS csr_roam_call_callback(struct mac_context *mac, uint32_t sessionId,
|
||||
status = mac->session_roam_complete_cb(mac->psoc, sessionId, roam_info,
|
||||
roamId, u1, u2);
|
||||
}
|
||||
/* This is temp ifdef will be removed in near future */
|
||||
#ifndef FEATURE_CM_ENABLE
|
||||
/*
|
||||
* EVENT_WLAN_STATUS_V2: eCSR_ROAM_ASSOCIATION_COMPLETION,
|
||||
* eCSR_ROAM_LOSTLINK,
|
||||
@@ -3323,68 +2812,32 @@ QDF_STATUS csr_roam_call_callback(struct mac_context *mac, uint32_t sessionId,
|
||||
qdf_mem_zero(&connectionStatus,
|
||||
sizeof(host_event_wlan_status_payload_type));
|
||||
|
||||
/* This is temp ifdef will be removed in near future */
|
||||
#ifndef FEATURE_CM_ENABLE
|
||||
if ((eCSR_ROAM_ASSOCIATION_COMPLETION == u1)
|
||||
&& (eCSR_ROAM_RESULT_ASSOCIATED == u2) && roam_info) {
|
||||
connectionStatus.eventId = eCSR_WLAN_STATUS_CONNECT;
|
||||
connectionStatus.bssType =
|
||||
roam_info->u.pConnectedProfile->BSSType;
|
||||
|
||||
if (roam_info->bss_desc) {
|
||||
connectionStatus.rssi =
|
||||
roam_info->bss_desc->rssi * (-1);
|
||||
connectionStatus.channel =
|
||||
wlan_reg_freq_to_chan(
|
||||
mac->pdev,
|
||||
roam_info->bss_desc->chan_freq);
|
||||
}
|
||||
mac->mlme_cfg->sta.current_rssi = connectionStatus.rssi;
|
||||
|
||||
connectionStatus.qosCapability =
|
||||
roam_info->u.pConnectedProfile->qosConnection;
|
||||
connectionStatus.authType =
|
||||
(uint8_t) diag_auth_type_from_csr_type(
|
||||
roam_info->u.pConnectedProfile->AuthType);
|
||||
connectionStatus.encryptionType =
|
||||
(uint8_t) diag_enc_type_from_csr_type(
|
||||
roam_info->u.pConnectedProfile->EncryptionType);
|
||||
qdf_mem_copy(connectionStatus.ssid,
|
||||
roam_info->u.pConnectedProfile->SSID.ssId,
|
||||
roam_info->u.pConnectedProfile->SSID.length);
|
||||
|
||||
connectionStatus.reason = eCSR_REASON_UNSPECIFIED;
|
||||
qdf_mem_copy(&mac->sme.eventPayload, &connectionStatus,
|
||||
sizeof(host_event_wlan_status_payload_type));
|
||||
WLAN_HOST_DIAG_EVENT_REPORT(&connectionStatus,
|
||||
EVENT_WLAN_STATUS_V2);
|
||||
}
|
||||
#endif
|
||||
if ((eCSR_ROAM_MIC_ERROR_IND == u1)
|
||||
|| (eCSR_ROAM_RESULT_MIC_FAILURE == u2)) {
|
||||
qdf_mem_copy(&connectionStatus, &mac->sme.eventPayload,
|
||||
sizeof(host_event_wlan_status_payload_type));
|
||||
qdf_mem_copy(&connectionStatus,
|
||||
&mac->mlme_cfg->sta.event_payload,
|
||||
sizeof(host_event_wlan_status_payload_type));
|
||||
connectionStatus.rssi = mac->mlme_cfg->sta.current_rssi;
|
||||
connectionStatus.eventId = eCSR_WLAN_STATUS_DISCONNECT;
|
||||
connectionStatus.reason = eCSR_REASON_MIC_ERROR;
|
||||
connectionStatus.eventId = DIAG_WLAN_STATUS_DISCONNECT;
|
||||
connectionStatus.reason = DIAG_REASON_MIC_ERROR;
|
||||
WLAN_HOST_DIAG_EVENT_REPORT(&connectionStatus,
|
||||
EVENT_WLAN_STATUS_V2);
|
||||
}
|
||||
if (eCSR_ROAM_RESULT_FORCED == u2) {
|
||||
qdf_mem_copy(&connectionStatus, &mac->sme.eventPayload,
|
||||
qdf_mem_copy(&connectionStatus, &mac->mlme_cfg->sta.event_payload,
|
||||
sizeof(host_event_wlan_status_payload_type));
|
||||
connectionStatus.rssi = mac->mlme_cfg->sta.current_rssi;
|
||||
connectionStatus.eventId = eCSR_WLAN_STATUS_DISCONNECT;
|
||||
connectionStatus.reason = eCSR_REASON_USER_REQUESTED;
|
||||
connectionStatus.eventId = DIAG_WLAN_STATUS_DISCONNECT;
|
||||
connectionStatus.reason = DIAG_REASON_USER_REQUESTED;
|
||||
WLAN_HOST_DIAG_EVENT_REPORT(&connectionStatus,
|
||||
EVENT_WLAN_STATUS_V2);
|
||||
}
|
||||
if (eCSR_ROAM_RESULT_DISASSOC_IND == u2) {
|
||||
qdf_mem_copy(&connectionStatus, &mac->sme.eventPayload,
|
||||
qdf_mem_copy(&connectionStatus, &mac->mlme_cfg->sta.event_payload,
|
||||
sizeof(host_event_wlan_status_payload_type));
|
||||
connectionStatus.rssi = mac->mlme_cfg->sta.current_rssi;
|
||||
connectionStatus.eventId = eCSR_WLAN_STATUS_DISCONNECT;
|
||||
connectionStatus.reason = eCSR_REASON_DISASSOC;
|
||||
connectionStatus.eventId = DIAG_WLAN_STATUS_DISCONNECT;
|
||||
connectionStatus.reason = DIAG_REASON_DISASSOC;
|
||||
if (roam_info)
|
||||
connectionStatus.reasonDisconnect =
|
||||
roam_info->reasonCode;
|
||||
@@ -3393,11 +2846,11 @@ QDF_STATUS csr_roam_call_callback(struct mac_context *mac, uint32_t sessionId,
|
||||
EVENT_WLAN_STATUS_V2);
|
||||
}
|
||||
if (eCSR_ROAM_RESULT_DEAUTH_IND == u2) {
|
||||
qdf_mem_copy(&connectionStatus, &mac->sme.eventPayload,
|
||||
qdf_mem_copy(&connectionStatus, &mac->mlme_cfg->sta.event_payload,
|
||||
sizeof(host_event_wlan_status_payload_type));
|
||||
connectionStatus.rssi = mac->mlme_cfg->sta.current_rssi;
|
||||
connectionStatus.eventId = eCSR_WLAN_STATUS_DISCONNECT;
|
||||
connectionStatus.reason = eCSR_REASON_DEAUTH;
|
||||
connectionStatus.eventId = DIAG_WLAN_STATUS_DISCONNECT;
|
||||
connectionStatus.reason = DIAG_REASON_DEAUTH;
|
||||
if (roam_info)
|
||||
connectionStatus.reasonDisconnect =
|
||||
roam_info->reasonCode;
|
||||
@@ -3405,6 +2858,7 @@ QDF_STATUS csr_roam_call_callback(struct mac_context *mac, uint32_t sessionId,
|
||||
EVENT_WLAN_STATUS_V2);
|
||||
}
|
||||
#endif /* FEATURE_WLAN_DIAG_SUPPORT_CSR */
|
||||
#endif
|
||||
|
||||
return status;
|
||||
}
|
||||
@@ -9997,17 +9451,13 @@ csr_roam_diag_set_ctx_rsp(struct mac_context *mac_ctx,
|
||||
else
|
||||
setKeyEvent.eventId =
|
||||
WLAN_SECURITY_EVENT_SET_UNICAST_RSP;
|
||||
setKeyEvent.encryptionModeMulticast =
|
||||
(uint8_t) diag_enc_type_from_csr_type(
|
||||
session->connectedProfile.mcEncryptionType);
|
||||
setKeyEvent.encryptionModeUnicast =
|
||||
(uint8_t) diag_enc_type_from_csr_type(
|
||||
session->connectedProfile.EncryptionType);
|
||||
cm_diag_get_auth_enc_type_vdev_id(mac_ctx->psoc,
|
||||
&setKeyEvent.authMode,
|
||||
&setKeyEvent.encryptionModeUnicast,
|
||||
&setKeyEvent.encryptionModeMulticast,
|
||||
session->vdev_id);
|
||||
qdf_mem_copy(setKeyEvent.bssid, session->connectedProfile.bssid.bytes,
|
||||
QDF_MAC_ADDR_SIZE);
|
||||
setKeyEvent.authMode =
|
||||
(uint8_t) diag_auth_type_from_csr_type(
|
||||
session->connectedProfile.AuthType);
|
||||
if (eSIR_SME_SUCCESS != pRsp->status_code)
|
||||
setKeyEvent.status = WLAN_SECURITY_STATUS_FAILURE;
|
||||
WLAN_HOST_DIAG_EVENT_REPORT(&setKeyEvent, EVENT_WLAN_SECURITY);
|
||||
@@ -11448,21 +10898,13 @@ csr_roam_chk_lnk_swt_ch_ind(struct mac_context *mac_ctx, tSirSmeRsp *msg_ptr)
|
||||
roam_info->chan_info.band_center_freq2 =
|
||||
pSwitchChnInd->chan_params.mhz_freq_seg1;
|
||||
|
||||
switch (session->bssParams.uCfgDot11Mode) {
|
||||
case eCSR_CFG_DOT11_MODE_11N:
|
||||
case eCSR_CFG_DOT11_MODE_11N_ONLY:
|
||||
if (IS_WLAN_PHYMODE_HT(pSwitchChnInd->ch_phymode))
|
||||
roam_info->mode = SIR_SME_PHY_MODE_HT;
|
||||
break;
|
||||
case eCSR_CFG_DOT11_MODE_11AC:
|
||||
case eCSR_CFG_DOT11_MODE_11AC_ONLY:
|
||||
case eCSR_CFG_DOT11_MODE_11AX:
|
||||
case eCSR_CFG_DOT11_MODE_11AX_ONLY:
|
||||
else if (IS_WLAN_PHYMODE_VHT(pSwitchChnInd->ch_phymode) ||
|
||||
IS_WLAN_PHYMODE_HE(pSwitchChnInd->ch_phymode))
|
||||
roam_info->mode = SIR_SME_PHY_MODE_VHT;
|
||||
break;
|
||||
default:
|
||||
else
|
||||
roam_info->mode = SIR_SME_PHY_MODE_LEGACY;
|
||||
break;
|
||||
}
|
||||
|
||||
status = csr_roam_call_callback(mac_ctx, sessionId, roam_info, 0,
|
||||
eCSR_ROAM_STA_CHANNEL_SWITCH,
|
||||
@@ -11554,15 +10996,11 @@ csr_roam_diag_mic_fail(struct mac_context *mac_ctx, uint32_t sessionId)
|
||||
}
|
||||
qdf_mem_zero(&secEvent, sizeof(host_event_wlan_security_payload_type));
|
||||
secEvent.eventId = WLAN_SECURITY_EVENT_MIC_ERROR;
|
||||
secEvent.encryptionModeMulticast =
|
||||
(uint8_t) diag_enc_type_from_csr_type(
|
||||
session->connectedProfile.mcEncryptionType);
|
||||
secEvent.encryptionModeUnicast =
|
||||
(uint8_t) diag_enc_type_from_csr_type(
|
||||
session->connectedProfile.EncryptionType);
|
||||
secEvent.authMode =
|
||||
(uint8_t) diag_auth_type_from_csr_type(
|
||||
session->connectedProfile.AuthType);
|
||||
cm_diag_get_auth_enc_type_vdev_id(mac_ctx->psoc,
|
||||
&secEvent.authMode,
|
||||
&secEvent.encryptionModeUnicast,
|
||||
&secEvent.encryptionModeMulticast,
|
||||
sessionId);
|
||||
qdf_mem_copy(secEvent.bssid, session->connectedProfile.bssid.bytes,
|
||||
QDF_MAC_ADDR_SIZE);
|
||||
WLAN_HOST_DIAG_EVENT_REPORT(&secEvent, EVENT_WLAN_SECURITY);
|
||||
@@ -14220,7 +13658,7 @@ cm_csr_connect_done_ind(struct wlan_objmgr_vdev *vdev,
|
||||
SME_QOS_CSR_DISCONNECT_IND, NULL);
|
||||
/* Fill legacy structures from resp for failure */
|
||||
|
||||
goto cm_connect_info;
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
mlme_priv = wlan_vdev_mlme_get_ext_hdl(vdev);
|
||||
if (mlme_priv)
|
||||
@@ -14273,11 +13711,6 @@ cm_csr_connect_done_ind(struct wlan_objmgr_vdev *vdev,
|
||||
vdev_id);
|
||||
}
|
||||
|
||||
cm_connect_info:
|
||||
csr_cm_connect_info(
|
||||
mac_ctx, vdev_id,
|
||||
rsp->connect_status == STATUS_SUCCESS ? true : false);
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
@@ -17383,26 +16816,26 @@ QDF_STATUS csr_sta_continue_csa(struct mac_context *mac_ctx, uint8_t vdev_id)
|
||||
*/
|
||||
void csr_roaming_report_diag_event(struct mac_context *mac_ctx,
|
||||
struct roam_offload_synch_ind *roam_synch_ind_ptr,
|
||||
enum csr_diagwlan_status_eventreason reason)
|
||||
enum diagwlan_status_eventreason reason)
|
||||
{
|
||||
WLAN_HOST_DIAG_EVENT_DEF(roam_connection,
|
||||
host_event_wlan_status_payload_type);
|
||||
qdf_mem_zero(&roam_connection,
|
||||
sizeof(host_event_wlan_status_payload_type));
|
||||
switch (reason) {
|
||||
case eCSR_REASON_ROAM_SYNCH_IND:
|
||||
roam_connection.eventId = eCSR_WLAN_STATUS_CONNECT;
|
||||
case DIAG_REASON_ROAM_SYNCH_IND:
|
||||
roam_connection.eventId = DIAG_WLAN_STATUS_CONNECT;
|
||||
if (roam_synch_ind_ptr) {
|
||||
roam_connection.rssi = roam_synch_ind_ptr->rssi;
|
||||
roam_connection.channel =
|
||||
cds_freq_to_chan(roam_synch_ind_ptr->chan_freq);
|
||||
}
|
||||
break;
|
||||
case eCSR_REASON_ROAM_SYNCH_CNF:
|
||||
roam_connection.eventId = eCSR_WLAN_STATUS_CONNECT;
|
||||
case DIAG_REASON_ROAM_SYNCH_CNF:
|
||||
roam_connection.eventId = DIAG_WLAN_STATUS_CONNECT;
|
||||
break;
|
||||
case eCSR_REASON_ROAM_HO_FAIL:
|
||||
roam_connection.eventId = eCSR_WLAN_STATUS_DISCONNECT;
|
||||
case DIAG_REASON_ROAM_HO_FAIL:
|
||||
roam_connection.eventId = DIAG_WLAN_STATUS_DISCONNECT;
|
||||
break;
|
||||
default:
|
||||
sme_err("LFR3: Unsupported reason %d", reason);
|
||||
@@ -17457,7 +16890,7 @@ void csr_process_ho_fail_ind(struct mac_context *mac_ctx, void *msg_buf)
|
||||
eCSR_ROAM_NAPI_OFF, eCSR_ROAM_RESULT_FAILURE);
|
||||
csr_roam_synch_clean_up(mac_ctx, sessionId);
|
||||
csr_roaming_report_diag_event(mac_ctx, NULL,
|
||||
eCSR_REASON_ROAM_HO_FAIL);
|
||||
DIAG_REASON_ROAM_HO_FAIL);
|
||||
/* This is temp ifdef will be removed in near future */
|
||||
#ifdef FEATURE_CM_ENABLE
|
||||
cm_disconnect(mac_ctx->psoc, sessionId,
|
||||
|
@@ -2165,6 +2165,7 @@ static QDF_STATUS csr_parse_scan_list(struct mac_context *mac_ctx,
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
#ifndef FEATURE_CM_ENABLE
|
||||
static void csr_get_pcl_chan_weigtage_for_sta(struct mac_context *mac_ctx,
|
||||
struct pcl_freq_weight_list *pcl_lst)
|
||||
{
|
||||
@@ -2206,6 +2207,7 @@ static void csr_calculate_scores(struct mac_context *mac_ctx,
|
||||
if (pcl_lst)
|
||||
qdf_mem_free(pcl_lst);
|
||||
}
|
||||
#endif
|
||||
|
||||
QDF_STATUS csr_scan_get_result(struct mac_context *mac_ctx,
|
||||
struct scan_filter *filter,
|
||||
@@ -2234,9 +2236,10 @@ QDF_STATUS csr_scan_get_result(struct mac_context *mac_ctx,
|
||||
sme_debug("num_entries %d", num_bss);
|
||||
}
|
||||
|
||||
#ifndef FEATURE_CM_ENABLE
|
||||
if (num_bss && filter && scoring_required)
|
||||
csr_calculate_scores(mac_ctx, filter, list);
|
||||
|
||||
#endif
|
||||
if (!list || (list && !qdf_list_size(list))) {
|
||||
sme_debug("scan list empty");
|
||||
if (num_bss)
|
||||
|
@@ -603,58 +603,11 @@ void csr_get_vdev_type_nss(enum QDF_OPMODE dev_mode, uint8_t *nss_2g,
|
||||
#define WLAN_80211D_SUPPORT_MULTI_DOMAIN 1
|
||||
#define WLAN_80211D_NOT_SUPPORT_MULTI_DOMAIN 2
|
||||
|
||||
/**
|
||||
* diag_auth_type_from_csr_type() - to convert CSR auth type to DIAG auth type
|
||||
* @authtype: CSR auth type
|
||||
*
|
||||
* DIAG tool understands its own ENUMs, so this API can be used to convert
|
||||
* CSR defined auth type ENUMs to DIAG defined auth type ENUMs
|
||||
*
|
||||
*
|
||||
* Return: DIAG auth type
|
||||
*/
|
||||
enum mgmt_auth_type diag_auth_type_from_csr_type(enum csr_akm_type authtype);
|
||||
/**
|
||||
* diag_enc_type_from_csr_type() - to convert CSR encr type to DIAG encr type
|
||||
* @enctype: CSR encryption type
|
||||
*
|
||||
* DIAG tool understands its own ENUMs, so this API can be used to convert
|
||||
* CSR defined encr type ENUMs to DIAG defined encr type ENUMs
|
||||
*
|
||||
* Return: DIAG encryption type
|
||||
*/
|
||||
enum mgmt_encrypt_type diag_enc_type_from_csr_type(eCsrEncryptionType enctype);
|
||||
/**
|
||||
* diag_dot11_mode_from_csr_type() - to convert CSR .11 mode to DIAG .11 mode
|
||||
* @dot11mode: CSR 80211 mode
|
||||
*
|
||||
* DIAG tool understands its own ENUMs, so this API can be used to convert
|
||||
* CSR defined 80211 mode ENUMs to DIAG defined 80211 mode ENUMs
|
||||
*
|
||||
* Return: DIAG 80211mode
|
||||
*/
|
||||
enum mgmt_dot11_mode
|
||||
diag_dot11_mode_from_csr_type(enum csr_cfgdot11mode dot11mode);
|
||||
/**
|
||||
* diag_ch_width_from_csr_type() - to convert CSR ch width to DIAG ch width
|
||||
* @ch_width: CSR channel width
|
||||
*
|
||||
* DIAG tool understands its own ENUMs, so this API can be used to convert
|
||||
* CSR defined ch width ENUMs to DIAG defined ch width ENUMs
|
||||
*
|
||||
* Return: DIAG channel width
|
||||
*/
|
||||
enum mgmt_ch_width diag_ch_width_from_csr_type(enum phy_ch_width ch_width);
|
||||
/**
|
||||
* diag_persona_from_csr_type() - to convert QDF persona to DIAG persona
|
||||
* @persona: QDF persona
|
||||
*
|
||||
* DIAG tool understands its own ENUMs, so this API can be used to convert
|
||||
* QDF defined persona type ENUMs to DIAG defined persona type ENUMs
|
||||
*
|
||||
* Return: DIAG persona
|
||||
*/
|
||||
enum mgmt_bss_type diag_persona_from_csr_type(enum QDF_OPMODE persona);
|
||||
void cm_diag_get_auth_enc_type_vdev_id(struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t *auth_type,
|
||||
uint8_t *ucast_cipher,
|
||||
uint8_t *mcast_cipher,
|
||||
uint8_t vdev_id);
|
||||
#endif /* #ifdef FEATURE_WLAN_DIAG_SUPPORT_CSR */
|
||||
/*
|
||||
* csr_scan_result_purge() -
|
||||
@@ -1127,6 +1080,7 @@ csr_scan_get_channel_for_hw_mode_change(
|
||||
QDF_STATUS csr_setup_vdev_session(struct vdev_mlme_obj *vdev_mlme);
|
||||
|
||||
|
||||
#ifdef WLAN_UNIT_TEST
|
||||
#ifdef FEATURE_WLAN_DIAG_SUPPORT_CSR
|
||||
/**
|
||||
* csr_cm_get_sta_cxn_info() - This function populates all the connection
|
||||
@@ -1142,4 +1096,6 @@ void csr_cm_get_sta_cxn_info(struct mac_context *mac_ctx, uint8_t vdev_id,
|
||||
char *buf, uint32_t buf_sz);
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#endif /* CSR_INSIDE_API_H__ */
|
||||
|
Reference in New Issue
Block a user