qcacmn: Add proprietary status codes for disconnection

Host adds internal status code in enum wlan_status_code.

Change-Id: I17cdcee9f0df1e34cc13425a4f06985a418d5a8a
CRs-Fixed: 2799197
This commit is contained in:
Abhishek Ambure
2020-10-15 17:03:40 +05:30
committed by snandini
parent c5798d9910
commit 58c169c64c
4 changed files with 82 additions and 7 deletions

View File

@@ -31,7 +31,19 @@
#include <cdp_txrx_mob_def.h> #include <cdp_txrx_mob_def.h>
#endif #endif
#ifdef FEATURE_CM_ENABLE /**
* osif_cm_mac_to_qca_connect_fail_reason() - Convert to qca internal connect
* fail reason
* @internal_reason: Mac reason code of type @wlan_status_code
*
* Check if it is internal status code and convert it to the
* enum qca_sta_connect_fail_reason_codes.
*
* Return: Reason code of type enum qca_sta_connect_fail_reason_codes
*/
enum qca_sta_connect_fail_reason_codes
osif_cm_mac_to_qca_connect_fail_reason(enum wlan_status_code internal_reason);
/** /**
* osif_cm_qca_reason_to_str() - return string conversion of qca reason code * osif_cm_qca_reason_to_str() - return string conversion of qca reason code
* @reason: enum qca_disconnect_reason_codes * @reason: enum qca_disconnect_reason_codes
@@ -56,6 +68,7 @@ osif_cm_qca_reason_to_str(enum qca_disconnect_reason_codes reason);
enum qca_disconnect_reason_codes enum qca_disconnect_reason_codes
osif_cm_mac_to_qca_reason(enum wlan_reason_code internal_reason); osif_cm_mac_to_qca_reason(enum wlan_reason_code internal_reason);
#ifdef FEATURE_CM_ENABLE
/** /**
* osif_cm_register_cb() - API to register connection manager * osif_cm_register_cb() - API to register connection manager
* callbacks. * callbacks.

View File

@@ -24,6 +24,7 @@
#ifndef __OSIF_CM_RSP_H #ifndef __OSIF_CM_RSP_H
#define __OSIF_CM_RSP_H #define __OSIF_CM_RSP_H
#ifdef FEATURE_CM_ENABLE
#include "wlan_objmgr_vdev_obj.h" #include "wlan_objmgr_vdev_obj.h"
#include "wlan_cm_public_struct.h" #include "wlan_cm_public_struct.h"
@@ -71,4 +72,5 @@ QDF_STATUS osif_connect_handler(struct wlan_objmgr_vdev *vdev,
QDF_STATUS osif_failed_candidate_handler(struct wlan_objmgr_vdev *vdev, QDF_STATUS osif_failed_candidate_handler(struct wlan_objmgr_vdev *vdev,
struct wlan_cm_connect_rsp *rsp); struct wlan_cm_connect_rsp *rsp);
#endif /* FEATURE_CM_ENABLE */
#endif /* __OSIF_CM_RSP_H */ #endif /* __OSIF_CM_RSP_H */

View File

@@ -27,7 +27,43 @@
#include "osif_cm_rsp.h" #include "osif_cm_rsp.h"
#include "wlan_cfg80211_scan.h" #include "wlan_cfg80211_scan.h"
static struct osif_cm_ops *osif_cm_legacy_ops; enum qca_sta_connect_fail_reason_codes
osif_cm_mac_to_qca_connect_fail_reason(enum wlan_status_code internal_reason)
{
enum qca_sta_connect_fail_reason_codes reason = 0;
if (internal_reason < STATUS_PROP_START)
return reason;
switch (internal_reason) {
case STATUS_NO_NETWORK_FOUND:
reason = QCA_STA_CONNECT_FAIL_REASON_NO_BSS_FOUND;
break;
case STATUS_AUTH_TX_FAIL:
reason = QCA_STA_CONNECT_FAIL_REASON_AUTH_TX_FAIL;
break;
case STATUS_AUTH_NO_ACK_RECEIVED:
reason = QCA_STA_CONNECT_FAIL_REASON_AUTH_NO_ACK_RECEIVED;
break;
case STATUS_AUTH_NO_RESP_RECEIVED:
reason = QCA_STA_CONNECT_FAIL_REASON_AUTH_NO_RESP_RECEIVED;
break;
case STATUS_ASSOC_TX_FAIL:
reason = QCA_STA_CONNECT_FAIL_REASON_ASSOC_REQ_TX_FAIL;
break;
case STATUS_ASSOC_NO_ACK_RECEIVED:
reason = QCA_STA_CONNECT_FAIL_REASON_ASSOC_NO_ACK_RECEIVED;
break;
case STATUS_ASSOC_NO_RESP_RECEIVED:
reason = QCA_STA_CONNECT_FAIL_REASON_ASSOC_NO_RESP_RECEIVED;
break;
default:
osif_debug("QCA code not present for internal status code %d",
internal_reason);
}
return reason;
}
const char * const char *
osif_cm_qca_reason_to_str(enum qca_disconnect_reason_codes reason) osif_cm_qca_reason_to_str(enum qca_disconnect_reason_codes reason)
@@ -67,9 +103,10 @@ osif_cm_mac_to_qca_reason(enum wlan_reason_code internal_reason)
switch (internal_reason) { switch (internal_reason) {
case REASON_HOST_TRIGGERED_ROAM_FAILURE: case REASON_HOST_TRIGGERED_ROAM_FAILURE:
case REASON_FW_TRIGGERED_ROAM_FAILURE:
reason = QCA_DISCONNECT_REASON_INTERNAL_ROAM_FAILURE; reason = QCA_DISCONNECT_REASON_INTERNAL_ROAM_FAILURE;
break; break;
case REASON_FW_TRIGGERED_ROAM_FAILURE: case REASON_USER_TRIGGERED_ROAM_FAILURE:
reason = QCA_DISCONNECT_REASON_EXTERNAL_ROAM_FAILURE; reason = QCA_DISCONNECT_REASON_EXTERNAL_ROAM_FAILURE;
break; break;
case REASON_GATEWAY_REACHABILITY_FAILURE: case REASON_GATEWAY_REACHABILITY_FAILURE:
@@ -114,9 +151,6 @@ osif_cm_mac_to_qca_reason(enum wlan_reason_code internal_reason)
case REASON_BEACON_MISSED: case REASON_BEACON_MISSED:
reason = QCA_DISCONNECT_REASON_BEACON_MISS_FAILURE; reason = QCA_DISCONNECT_REASON_BEACON_MISS_FAILURE;
break; break;
case REASON_USER_TRIGGERED_ROAM_FAILURE:
reason = QCA_DISCONNECT_REASON_USER_TRIGGERED;
break;
default: default:
osif_debug("No QCA reason code for mac reason: %u", osif_debug("No QCA reason code for mac reason: %u",
internal_reason); internal_reason);
@@ -126,6 +160,9 @@ osif_cm_mac_to_qca_reason(enum wlan_reason_code internal_reason)
return reason; return reason;
} }
#ifdef FEATURE_CM_ENABLE
static struct osif_cm_ops *osif_cm_legacy_ops;
void osif_cm_reset_id_and_src_no_lock(struct vdev_osif_priv *osif_priv) void osif_cm_reset_id_and_src_no_lock(struct vdev_osif_priv *osif_priv)
{ {
osif_priv->cm_info.last_id = CM_ID_INVALID; osif_priv->cm_info.last_id = CM_ID_INVALID;
@@ -401,4 +438,4 @@ void osif_cm_reset_legacy_cb(void)
{ {
osif_cm_legacy_ops = NULL; osif_cm_legacy_ops = NULL;
} }
#endif

View File

@@ -746,6 +746,19 @@ enum wlan_reason_code {
* listen interval is too large. * listen interval is too large.
* @STATUS_INVALID_FT_ACTION_FRAME_COUNT: Invalid FT Action frame count. * @STATUS_INVALID_FT_ACTION_FRAME_COUNT: Invalid FT Action frame count.
* @STATUS_INVALID_PMKID: Invalid pairwise master key identifier (PMKID). * @STATUS_INVALID_PMKID: Invalid pairwise master key identifier (PMKID).
*
* Internal status codes: Add any internal status code just after
* STATUS_PROP_START and decrease the value of STATUS_PROP_START
* accordingly.
*
* @STATUS_PROP_START: Start of prop status codes.
* @STATUS_NO_NETWORK_FOUND: No network found
* @STATUS_AUTH_TX_FAIL: Failed to sent AUTH on air
* @STATUS_AUTH_NO_ACK_RECEIVED: No ack received for Auth tx
* @STATUS_AUTH_NO_RESP_RECEIVED: No Auth response for Auth tx
* @STATUS_ASSOC_TX_FAIL: Failed to sent Assoc on air
* @STATUS_ASSOC_NO_ACK_RECEIVED: No ack received for Assoc tx
* @STATUS_ASSOC_NO_RESP_RECEIVED: No Assoc response for Assoc tx
*/ */
enum wlan_status_code { enum wlan_status_code {
STATUS_SUCCESS = 0, STATUS_SUCCESS = 0,
@@ -794,6 +807,16 @@ enum wlan_status_code {
STATUS_ASSOC_DENIED_LISTEN_INT_TOO_LARGE = 51, STATUS_ASSOC_DENIED_LISTEN_INT_TOO_LARGE = 51,
STATUS_INVALID_FT_ACTION_FRAME_COUNT = 52, STATUS_INVALID_FT_ACTION_FRAME_COUNT = 52,
STATUS_INVALID_PMKID = 53, STATUS_INVALID_PMKID = 53,
/* Error STATUS code for intenal usage*/
STATUS_PROP_START = 65528,
STATUS_NO_NETWORK_FOUND = 65528,
STATUS_AUTH_TX_FAIL = 65529,
STATUS_AUTH_NO_ACK_RECEIVED = 65530,
STATUS_AUTH_NO_RESP_RECEIVED = 65531,
STATUS_ASSOC_TX_FAIL = 65532,
STATUS_ASSOC_NO_ACK_RECEIVED = 65533,
STATUS_ASSOC_NO_RESP_RECEIVED = 65534,
}; };
#define WLAN_OUI_SIZE 4 #define WLAN_OUI_SIZE 4