浏览代码

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 2 年之前
父节点
当前提交
4b20a11518
共有 2 个文件被更改,包括 6 次插入2 次删除
  1. 2 2
      umac/mlme/connection_mgr/core/src/wlan_cm_disconnect.c
  2. 4 0
      umac/scan/core/src/wlan_scan_cache_db.c

+ 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);