From 0f54d03172dcc9448d83d7135cc421a42d8a3f14 Mon Sep 17 00:00:00 2001 From: Sandeep Puligilla Date: Tue, 10 Dec 2019 14:45:18 -0800 Subject: [PATCH] qcacld-3.0: Set peer state to AUTHORIZE after 4way handshake Firmware peer state needs to be set to AUTHORIZE only after completing the 4 way handshake. In failure scenario, host configured AUTHORIZE state before 4 way handshake and it triggered assert in the firmware. Peer state moved to connection in progress/CONN after successful association and AUTH state after successful 4way handshake. Change-Id: I5e3d94843443d0fc2612a918b5c14479f91914d8 CRs-Fixed: 2580929 --- core/hdd/src/wlan_hdd_assoc.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/core/hdd/src/wlan_hdd_assoc.c b/core/hdd/src/wlan_hdd_assoc.c index b07e0db0bdb2..35324314dfb3 100644 --- a/core/hdd/src/wlan_hdd_assoc.c +++ b/core/hdd/src/wlan_hdd_assoc.c @@ -2050,23 +2050,26 @@ QDF_STATUS hdd_update_dp_vdev_flags(void *cbk_data, * @adapter: pointer to adapter * @roam_info: pointer to roam info * @mac_addr: peer mac address + * @sta_state: peer state * * Return: QDF_STATUS enumeration */ #ifdef WLAN_FEATURE_ROAM_OFFLOAD static QDF_STATUS hdd_conn_change_peer_state(struct hdd_adapter *adapter, struct csr_roam_info *roam_info, - uint8_t *mac_addr) + uint8_t *mac_addr, + enum ol_txrx_peer_state sta_state) { - return hdd_change_peer_state(adapter, mac_addr, OL_TXRX_PEER_STATE_AUTH, + return hdd_change_peer_state(adapter, mac_addr, sta_state, roam_info->roamSynchInProgress); } #else static QDF_STATUS hdd_conn_change_peer_state(struct hdd_adapter *adapter, struct csr_roam_info *roam_info, - uint8_t *mac_addr) + uint8_t *mac_addr, + enum ol_txrx_peer_state sta_state) { - return hdd_change_peer_state(adapter, mac_addr, OL_TXRX_PEER_STATE_AUTH, + return hdd_change_peer_state(adapter, mac_addr, sta_state, false); } #endif @@ -2162,7 +2165,8 @@ QDF_STATUS hdd_roam_register_sta(struct hdd_adapter *adapter, */ qdf_status = hdd_conn_change_peer_state( adapter, roam_info, - txrx_desc.peer_addr.bytes); + txrx_desc.peer_addr.bytes, + OL_TXRX_PEER_STATE_AUTH); hdd_conn_set_authenticated(adapter, true); hdd_objmgr_set_peer_mlme_auth_state(adapter->vdev, true); @@ -2173,7 +2177,8 @@ QDF_STATUS hdd_roam_register_sta(struct hdd_adapter *adapter, qdf_status = hdd_conn_change_peer_state( adapter, roam_info, - txrx_desc.peer_addr.bytes); + txrx_desc.peer_addr.bytes, + OL_TXRX_PEER_STATE_CONN); hdd_conn_set_authenticated(adapter, false); hdd_objmgr_set_peer_mlme_auth_state(adapter->vdev, false);