Browse Source

qcacld-3.0: Fix SAP get peer state error in AP+AP mode

WLAN driver working on AP0+AP1 mode. After a ref STA move
connection from AP0(vdev0) to AP1(vdev1). vdev0 have release
peer STA. But it can get a peer state from ol_txrx_get_peer_state.
Actually, the state is from vdev1, not vdev0. If vdev0 have data
send to FW, it will cause FW crash.

Change-Id: I7978b758e98a16993d16d53a55d67734aa896979
CRs-Fixed: 3477987
Ben Wang 1 year ago
parent
commit
5c44ee5d35
1 changed files with 3 additions and 0 deletions
  1. 3 0
      core/dp/txrx/ol_txrx.c

+ 3 - 0
core/dp/txrx/ol_txrx.c

@@ -2735,6 +2735,8 @@ static int ol_txrx_get_peer_state(struct cdp_soc_t *soc_hdl, uint8_t vdev_id,
 
 	peer_state = peer->state;
 	ol_txrx_peer_release_ref(peer, PEER_DEBUG_ID_OL_INTERNAL);
+	if (peer->vdev->vdev_id != vdev_id)
+		return OL_TXRX_PEER_STATE_INVALID;
 
 	return peer_state;
 }
@@ -3575,6 +3577,7 @@ static QDF_STATUS ol_txrx_peer_detach(struct cdp_soc_t *soc_hdl,
 	 * PEER_UNMAP message arrives to remove the other
 	 * reference, added by the PEER_MAP message.
 	 */
+	peer->state = OL_TXRX_PEER_STATE_INVALID;
 	ol_txrx_peer_release_ref(peer, PEER_DEBUG_ID_OL_PEER_ATTACH);
 
 	return QDF_STATUS_SUCCESS;