mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-24 21:54:34 -04:00
Merge "qcacld-3.0: Remove extra peer ref during attach" into wlan-cld3.driver.lnx.2.0-dev
This commit is contained in:
commit
f6ddbab074
2 changed files with 14 additions and 26 deletions
|
|
@ -2516,12 +2516,12 @@ ol_txrx_peer_attach(struct cdp_vdev *pvdev, uint8_t *peer_mac_addr)
|
|||
cmp_wait_mac = true;
|
||||
|
||||
qdf_spin_lock_bh(&pdev->peer_ref_mutex);
|
||||
/* check for duplicate exsisting peer */
|
||||
/* check for duplicate existing peer */
|
||||
TAILQ_FOREACH(temp_peer, &vdev->peer_list, peer_list_elem) {
|
||||
if (!ol_txrx_peer_find_mac_addr_cmp(&temp_peer->mac_addr,
|
||||
(union ol_txrx_align_mac_addr_t *)peer_mac_addr)) {
|
||||
ol_txrx_info_high(
|
||||
"vdev_id %d (%02x:%02x:%02x:%02x:%02x:%02x) already exsist.\n",
|
||||
"vdev_id %d (%02x:%02x:%02x:%02x:%02x:%02x) already exists.\n",
|
||||
vdev->vdev_id,
|
||||
peer_mac_addr[0], peer_mac_addr[1],
|
||||
peer_mac_addr[2], peer_mac_addr[3],
|
||||
|
|
@ -2540,7 +2540,7 @@ ol_txrx_peer_attach(struct cdp_vdev *pvdev, uint8_t *peer_mac_addr)
|
|||
&temp_peer->mac_addr,
|
||||
&vdev->last_peer_mac_addr)) {
|
||||
ol_txrx_info_high(
|
||||
"vdev_id %d (%02x:%02x:%02x:%02x:%02x:%02x) old peer exsist.\n",
|
||||
"vdev_id %d (%02x:%02x:%02x:%02x:%02x:%02x) old peer exists.\n",
|
||||
vdev->vdev_id,
|
||||
vdev->last_peer_mac_addr.raw[0],
|
||||
vdev->last_peer_mac_addr.raw[1],
|
||||
|
|
@ -2569,7 +2569,7 @@ ol_txrx_peer_attach(struct cdp_vdev *pvdev, uint8_t *peer_mac_addr)
|
|||
rc = qdf_wait_single_event(&vdev->wait_delete_comp,
|
||||
PEER_DELETION_TIMEOUT);
|
||||
if (QDF_STATUS_SUCCESS != rc) {
|
||||
ol_txrx_err("error waiting for peer(%d) deletion, status %d\n",
|
||||
ol_txrx_err("error waiting for peer_id(%d) deletion, status %d\n",
|
||||
vdev->wait_on_peer_id, (int) rc);
|
||||
cds_trigger_recovery(PEER_DEL_TIMEOUT);
|
||||
vdev->wait_on_peer_id = OL_TXRX_INVALID_LOCAL_PEER_ID;
|
||||
|
|
@ -2615,20 +2615,12 @@ ol_txrx_peer_attach(struct cdp_vdev *pvdev, uint8_t *peer_mac_addr)
|
|||
qdf_atomic_init(&peer->flush_in_progress);
|
||||
|
||||
qdf_atomic_init(&peer->ref_cnt);
|
||||
|
||||
/* keep one reference for attach */
|
||||
OL_TXRX_PEER_INC_REF_CNT(peer);
|
||||
|
||||
/*
|
||||
* Set a flag to indicate peer create is pending in firmware and
|
||||
* increment ref_cnt so that peer will not get deleted while
|
||||
* peer create command is pending in firmware.
|
||||
* First peer_map event from firmware signifies successful
|
||||
* peer creation and it will be decremented in peer_map handling.
|
||||
*/
|
||||
/* Set a flag to indicate peer create is pending in firmware */
|
||||
qdf_atomic_init(&peer->fw_create_pending);
|
||||
qdf_atomic_set(&peer->fw_create_pending, 1);
|
||||
OL_TXRX_PEER_INC_REF_CNT(peer);
|
||||
|
||||
peer->valid = 1;
|
||||
qdf_timer_init(pdev->osdev, &peer->peer_unmap_timer,
|
||||
|
|
@ -3366,10 +3358,13 @@ int ol_txrx_peer_unref_delete(ol_txrx_peer_handle peer,
|
|||
qdf_spin_unlock_bh(&pdev->peer_ref_mutex);
|
||||
}
|
||||
|
||||
QDF_TRACE(QDF_MODULE_ID_TXRX, QDF_TRACE_LEVEL_DEBUG,
|
||||
"%s: Deleting peer %pK (%pM) ref_cnt = %d",
|
||||
__func__, peer, peer->mac_addr.raw,
|
||||
qdf_atomic_read(&peer->ref_cnt));
|
||||
QDF_TRACE(QDF_MODULE_ID_TXRX, QDF_TRACE_LEVEL_INFO_HIGH,
|
||||
"[%s][%d]: Deleting peer %p (%pM) peer->ref_cnt = %d %s",
|
||||
fname, line, peer, peer->mac_addr.raw,
|
||||
qdf_atomic_read(&peer->ref_cnt),
|
||||
qdf_atomic_read(&peer->fw_create_pending) == 1 ?
|
||||
"(No Maps received)" : "");
|
||||
|
||||
ol_txrx_peer_tx_queue_free(pdev, peer);
|
||||
|
||||
/* Remove mappings from peer_id to peer object */
|
||||
|
|
@ -3398,8 +3393,8 @@ int ol_txrx_peer_unref_delete(ol_txrx_peer_handle peer,
|
|||
qdf_mem_free(peer);
|
||||
} else {
|
||||
qdf_spin_unlock_bh(&pdev->peer_ref_mutex);
|
||||
QDF_TRACE(QDF_MODULE_ID_TXRX, QDF_TRACE_LEVEL_DEBUG,
|
||||
"[%s][%d]: ref delete peer %pK peer->ref_cnt = %d",
|
||||
QDF_TRACE(QDF_MODULE_ID_TXRX, QDF_TRACE_LEVEL_INFO_HIGH,
|
||||
"[%s][%d]: ref delete peer %p peer->ref_cnt = %d",
|
||||
fname, line, peer, rc);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -422,14 +422,7 @@ static inline void ol_txrx_peer_find_add_id(struct ol_txrx_pdev_t *pdev,
|
|||
}
|
||||
|
||||
if (qdf_atomic_read(&peer->fw_create_pending) == 1) {
|
||||
/*
|
||||
* First peer map event signifies successful peer
|
||||
* creation in firmware. Decrement the ref count
|
||||
* which was incremented when peer create command
|
||||
* was sent to firmware.
|
||||
*/
|
||||
qdf_atomic_set(&peer->fw_create_pending, 0);
|
||||
OL_TXRX_PEER_UNREF_DELETE(peer);
|
||||
}
|
||||
|
||||
qdf_spin_unlock(&pdev->peer_map_unmap_lock);
|
||||
|
|
|
|||
Loading…
Reference in a new issue