Ver Fonte

qcacmn: Fix scan entry assoc state update issue

On disconnecting, the bssid may not be filled in cm_req->discon_req.
Zero bssid will fail to update the scan entry to non association
state which may block the scan entry age out.
Move disconnect bssid fill before update the scan entry for
disconnecting.

Change-Id: Id8a36d8a37c212af727c7b61a24b51f2782c4a2c
CRs-Fixed: 3291599
Liangwei Dong há 2 anos atrás
pai
commit
4b20a11518

+ 2 - 2
umac/mlme/connection_mgr/core/src/wlan_cm_disconnect.c

@@ -438,6 +438,8 @@ cm_disconnect_continue_after_rso_stop(struct wlan_objmgr_vdev *vdev,
 		return QDF_STATUS_E_INVAL;
 
 	wlan_vdev_get_bss_peer_mac(cm_ctx->vdev, &bssid);
+
+	qdf_copy_macaddr(&req->req.bssid, &bssid);
 	/*
 	 * for northbound req, bssid is not provided so update it from vdev
 	 * in case bssid is not present
@@ -446,8 +448,6 @@ cm_disconnect_continue_after_rso_stop(struct wlan_objmgr_vdev *vdev,
 	    qdf_is_macaddr_broadcast(&cm_req->discon_req.req.bssid))
 		qdf_copy_macaddr(&cm_req->discon_req.req.bssid,
 				 &req->req.bssid);
-
-	qdf_copy_macaddr(&req->req.bssid, &bssid);
 	cm_update_scan_mlme_on_disconnect(cm_ctx->vdev,
 					  &cm_req->discon_req);
 

+ 4 - 0
umac/scan/core/src/wlan_scan_cache_db.c

@@ -1973,6 +1973,10 @@ QDF_STATUS scm_scan_update_mlme_by_bssinfo(struct wlan_objmgr_pdev *pdev,
 			qdf_spin_lock_bh(&scan_db->scan_db_lock);
 			qdf_mem_copy(&entry->mlme_info, mlme,
 					sizeof(struct mlme_info));
+			scm_debug("BSSID: "QDF_MAC_ADDR_FMT" set assoc_state to %d with age %lu ms",
+				  QDF_MAC_ADDR_REF(entry->bssid.bytes),
+				  mlme->assoc_state,
+				  util_scan_entry_age(entry));
 			scm_scan_entry_put_ref(scan_db,
 					cur_node, false);
 			qdf_spin_unlock_bh(&scan_db->scan_db_lock);