mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-15 01:01:56 -04:00
qcacld-3.0: Add macros to inc/dec peer->ref_cnt
Currently peer ref_cnt increments and decrements are done by the caller function. Wrap peer->ref_cnt increment and decrement into MACRO calls so they can be tracked. Change-Id: I64d8b85d5898545bbc5a4b81101d1fd306de3fc9 CRs-Fixed: 2005652
This commit is contained in:
parent
1eabdb6027
commit
b04dfcd09a
7 changed files with 86 additions and 98 deletions
|
|
@ -1524,7 +1524,7 @@ int ol_txrx_mgmt_send_frame(
|
|||
1 /* error */);
|
||||
if (tx_msdu_info->peer) {
|
||||
/* remove the peer reference added above */
|
||||
ol_txrx_peer_unref_delete(tx_msdu_info->peer);
|
||||
OL_TXRX_PEER_UNREF_DELETE(tx_msdu_info->peer);
|
||||
}
|
||||
return 1; /* can't accept the tx mgmt frame */
|
||||
}
|
||||
|
|
@ -1549,7 +1549,7 @@ int ol_txrx_mgmt_send_frame(
|
|||
ol_tx_enqueue(vdev->pdev, txq, tx_desc, tx_msdu_info);
|
||||
if (tx_msdu_info->peer) {
|
||||
/* remove the peer reference added above */
|
||||
ol_txrx_peer_unref_delete(tx_msdu_info->peer);
|
||||
OL_TXRX_PEER_UNREF_DELETE(tx_msdu_info->peer);
|
||||
}
|
||||
ol_tx_sched(vdev->pdev);
|
||||
|
||||
|
|
@ -1739,7 +1739,7 @@ ol_tx_hl_base(
|
|||
if (tx_msdu_info.peer) {
|
||||
/* remove the peer reference
|
||||
* added above */
|
||||
ol_txrx_peer_unref_delete(
|
||||
OL_TXRX_PEER_UNREF_DELETE(
|
||||
tx_msdu_info.peer);
|
||||
}
|
||||
goto MSDU_LOOP_BOTTOM;
|
||||
|
|
@ -1757,7 +1757,7 @@ ol_tx_hl_base(
|
|||
ol_tx_desc_frame_free_nonstd(pdev,
|
||||
tx_desc,
|
||||
1);
|
||||
ol_txrx_peer_unref_delete(
|
||||
OL_TXRX_PEER_UNREF_DELETE(
|
||||
tx_msdu_info.peer);
|
||||
msdu = next;
|
||||
continue;
|
||||
|
|
@ -1773,7 +1773,7 @@ ol_tx_hl_base(
|
|||
ol_tx_desc_frame_free_nonstd(
|
||||
pdev,
|
||||
tx_desc, 1);
|
||||
ol_txrx_peer_unref_delete(
|
||||
OL_TXRX_PEER_UNREF_DELETE(
|
||||
tx_msdu_info.peer);
|
||||
msdu = next;
|
||||
continue;
|
||||
|
|
@ -1822,7 +1822,7 @@ ol_tx_hl_base(
|
|||
OL_TX_PEER_STATS_UPDATE(tx_msdu_info.peer,
|
||||
msdu);
|
||||
/* remove the peer reference added above */
|
||||
ol_txrx_peer_unref_delete(tx_msdu_info.peer);
|
||||
OL_TXRX_PEER_UNREF_DELETE(tx_msdu_info.peer);
|
||||
}
|
||||
MSDU_LOOP_BOTTOM:
|
||||
msdu = next;
|
||||
|
|
|
|||
|
|
@ -357,7 +357,7 @@ struct ol_txrx_peer_t *ol_tx_tdls_peer_find(struct ol_txrx_pdev_t *pdev,
|
|||
peer = NULL;
|
||||
} else {
|
||||
if (peer)
|
||||
qdf_atomic_inc(&peer->ref_cnt);
|
||||
OL_TXRX_PEER_INC_REF_CNT(peer);
|
||||
}
|
||||
}
|
||||
if (!peer)
|
||||
|
|
@ -582,7 +582,7 @@ ol_tx_classify(
|
|||
"%s: remove the peer for invalid peer_id %p\n",
|
||||
__func__, peer);
|
||||
/* remove the peer reference added above */
|
||||
ol_txrx_peer_unref_delete(peer);
|
||||
OL_TXRX_PEER_UNREF_DELETE(peer);
|
||||
tx_msdu_info->peer = NULL;
|
||||
}
|
||||
return NULL;
|
||||
|
|
@ -605,7 +605,7 @@ ol_tx_classify(
|
|||
"%s: remove the peer reference %p\n",
|
||||
__func__, peer);
|
||||
/* remove the peer reference added above */
|
||||
ol_txrx_peer_unref_delete(tx_msdu_info->peer);
|
||||
OL_TXRX_PEER_UNREF_DELETE(tx_msdu_info->peer);
|
||||
/* Making peer NULL in case if multicast non STA mode */
|
||||
tx_msdu_info->peer = NULL;
|
||||
}
|
||||
|
|
@ -688,11 +688,7 @@ ol_tx_classify_mgmt(
|
|||
if (ol_txrx_peer_find_mac_addr_cmp(
|
||||
mac_addr,
|
||||
&peer->mac_addr) != 0) {
|
||||
rcnt = ol_txrx_peer_unref_delete(peer);
|
||||
QDF_TRACE(QDF_MODULE_ID_TXRX,
|
||||
QDF_TRACE_LEVEL_INFO_HIGH,
|
||||
"%s: peer %p peer->ref_cnt %d",
|
||||
__func__, peer, rcnt);
|
||||
rcnt = OL_TXRX_PEER_UNREF_DELETE(peer);
|
||||
peer = NULL;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -111,13 +111,7 @@ ol_tx_queue_vdev_flush(struct ol_txrx_pdev_t *pdev, struct ol_txrx_vdev_t *vdev)
|
|||
for (i = 0; i < OL_TX_NUM_TIDS; i++) {
|
||||
txq = &peer->txqs[i];
|
||||
if (txq->frms) {
|
||||
qdf_atomic_inc(&peer->ref_cnt);
|
||||
QDF_TRACE(QDF_MODULE_ID_TXRX,
|
||||
QDF_TRACE_LEVEL_INFO_HIGH,
|
||||
"%s: peer %p peer->ref_cnt %d",
|
||||
__func__, peer,
|
||||
qdf_atomic_read
|
||||
(&peer->ref_cnt));
|
||||
OL_TXRX_PEER_INC_REF_CNT(peer);
|
||||
peers[peer_count++] = peer;
|
||||
break;
|
||||
}
|
||||
|
|
@ -135,7 +129,7 @@ ol_tx_queue_vdev_flush(struct ol_txrx_pdev_t *pdev, struct ol_txrx_vdev_t *vdev)
|
|||
}
|
||||
ol_txrx_info(
|
||||
"%s: Delete Peer %p\n", __func__, peer);
|
||||
ol_txrx_peer_unref_delete(peers[i]);
|
||||
OL_TXRX_PEER_UNREF_DELETE(peers[i]);
|
||||
}
|
||||
} while (peer_count >= PEER_ARRAY_COUNT);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -310,10 +310,7 @@ ol_txrx_find_peer_by_addr_and_vdev(struct cdp_pdev *ppdev,
|
|||
if (!peer)
|
||||
return NULL;
|
||||
*peer_id = peer->local_id;
|
||||
qdf_atomic_dec(&peer->ref_cnt);
|
||||
QDF_TRACE(QDF_MODULE_ID_TXRX, QDF_TRACE_LEVEL_INFO_HIGH,
|
||||
"%s: peer %p peer->ref_cnt %d", __func__, peer,
|
||||
qdf_atomic_read(&peer->ref_cnt));
|
||||
OL_TXRX_PEER_DEC_REF_CNT(peer);
|
||||
return peer;
|
||||
}
|
||||
|
||||
|
|
@ -369,11 +366,8 @@ void *ol_txrx_find_peer_by_addr(struct cdp_pdev *ppdev,
|
|||
if (!peer)
|
||||
return NULL;
|
||||
*peer_id = peer->local_id;
|
||||
qdf_atomic_dec(&peer->ref_cnt);
|
||||
QDF_TRACE(QDF_MODULE_ID_TXRX, QDF_TRACE_LEVEL_INFO_HIGH,
|
||||
"%s: peer %p peer->ref_cnt %d", __func__, peer,
|
||||
qdf_atomic_read(&peer->ref_cnt));
|
||||
return (void *)peer;
|
||||
OL_TXRX_PEER_DEC_REF_CNT(peer);
|
||||
return peer;
|
||||
}
|
||||
|
||||
static uint16_t ol_txrx_local_peer_id(void *ppeer)
|
||||
|
|
@ -2505,7 +2499,7 @@ ol_txrx_peer_attach(struct cdp_vdev *pvdev, uint8_t *peer_mac_addr)
|
|||
qdf_atomic_init(&peer->ref_cnt);
|
||||
|
||||
/* keep one reference for attach */
|
||||
qdf_atomic_inc(&peer->ref_cnt);
|
||||
OL_TXRX_PEER_INC_REF_CNT(peer);
|
||||
|
||||
/*
|
||||
* Set a flag to indicate peer create is pending in firmware and
|
||||
|
|
@ -2516,7 +2510,7 @@ ol_txrx_peer_attach(struct cdp_vdev *pvdev, uint8_t *peer_mac_addr)
|
|||
*/
|
||||
qdf_atomic_init(&peer->fw_create_pending);
|
||||
qdf_atomic_set(&peer->fw_create_pending, 1);
|
||||
qdf_atomic_inc(&peer->ref_cnt);
|
||||
OL_TXRX_PEER_INC_REF_CNT(peer);
|
||||
|
||||
peer->valid = 1;
|
||||
qdf_timer_init(pdev->osdev, &peer->peer_unmap_timer,
|
||||
|
|
@ -2943,11 +2937,7 @@ QDF_STATUS ol_txrx_peer_state_update(struct cdp_pdev *ppdev,
|
|||
"%s: no state change, returns directly\n",
|
||||
__func__);
|
||||
#endif
|
||||
peer_ref_cnt = ol_txrx_peer_unref_delete(peer);
|
||||
QDF_TRACE(QDF_MODULE_ID_TXRX, QDF_TRACE_LEVEL_INFO_HIGH,
|
||||
"%s: peer %p peer->ref_cnt %d",
|
||||
__func__, peer, peer_ref_cnt);
|
||||
|
||||
peer_ref_cnt = OL_TXRX_PEER_UNREF_DELETE(peer);
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
|
|
@ -2977,15 +2967,12 @@ QDF_STATUS ol_txrx_peer_state_update(struct cdp_pdev *ppdev,
|
|||
ol_txrx_peer_tid_unpause(peer, tid);
|
||||
}
|
||||
}
|
||||
peer_ref_cnt = ol_txrx_peer_unref_delete(peer);
|
||||
QDF_TRACE(QDF_MODULE_ID_TXRX, QDF_TRACE_LEVEL_INFO_HIGH,
|
||||
"%s: peer %p peer->ref_cnt %d",
|
||||
__func__, peer, peer_ref_cnt);
|
||||
peer_ref_cnt = OL_TXRX_PEER_UNREF_DELETE(peer);
|
||||
/*
|
||||
* after ol_txrx_peer_unref_delete, peer object cannot be accessed
|
||||
* after OL_TXRX_PEER_UNREF_DELETE, peer object cannot be accessed
|
||||
* if the return code was 0
|
||||
*/
|
||||
if (peer_ref_cnt)
|
||||
if (peer_ref_cnt > 0)
|
||||
/*
|
||||
* Set the state after the Pause to avoid the race condiction
|
||||
* with ADDBA check in tx path
|
||||
|
|
@ -3090,10 +3077,7 @@ ol_txrx_peer_update(ol_txrx_vdev_handle vdev,
|
|||
break;
|
||||
}
|
||||
} /* switch */
|
||||
peer_ref_cnt = ol_txrx_peer_unref_delete(peer);
|
||||
QDF_TRACE(QDF_MODULE_ID_TXRX, QDF_TRACE_LEVEL_INFO_HIGH,
|
||||
"%s: peer %p peer->ref_cnt %d",
|
||||
__func__, peer, peer_ref_cnt);
|
||||
peer_ref_cnt = OL_TXRX_PEER_UNREF_DELETE(peer);
|
||||
}
|
||||
|
||||
uint8_t
|
||||
|
|
@ -3119,7 +3103,9 @@ ol_txrx_peer_qoscapable_get(struct ol_txrx_pdev_t *txrx_pdev, uint16_t peer_id)
|
|||
return 0;
|
||||
}
|
||||
|
||||
int ol_txrx_peer_unref_delete(ol_txrx_peer_handle peer)
|
||||
int ol_txrx_peer_unref_delete(ol_txrx_peer_handle peer,
|
||||
const char *fname,
|
||||
int line)
|
||||
{
|
||||
int rc;
|
||||
struct ol_txrx_vdev_t *vdev;
|
||||
|
|
@ -3285,8 +3271,8 @@ int ol_txrx_peer_unref_delete(ol_txrx_peer_handle peer)
|
|||
} else {
|
||||
qdf_spin_unlock_bh(&pdev->peer_ref_mutex);
|
||||
QDF_TRACE(QDF_MODULE_ID_TXRX, QDF_TRACE_LEVEL_DEBUG,
|
||||
"%s: peer %p peer->ref_cnt = %d",
|
||||
__func__, peer, rc);
|
||||
"ref delete(%s): peer %p peer->ref_cnt = %d",
|
||||
fname, peer, rc);
|
||||
}
|
||||
|
||||
return rc;
|
||||
|
|
@ -3449,7 +3435,7 @@ static void ol_txrx_peer_detach(void *ppeer)
|
|||
* PEER_UNMAP message arrives to remove the other
|
||||
* reference, added by the PEER_MAP message.
|
||||
*/
|
||||
ol_txrx_peer_unref_delete(peer);
|
||||
OL_TXRX_PEER_UNREF_DELETE(peer);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -3477,7 +3463,7 @@ static void ol_txrx_peer_detach_force_delete(void *ppeer)
|
|||
qdf_spin_unlock_bh(&pdev->peer_map_unmap_lock);
|
||||
|
||||
/*
|
||||
* Set ref_cnt = 1 so that ol_txrx_peer_unref_delete() called by
|
||||
* Set ref_cnt = 1 so that OL_TXRX_PEER_UNREF_DELETE() called by
|
||||
* ol_txrx_peer_detach() will actually delete this peer entry properly.
|
||||
*/
|
||||
qdf_spin_lock_bh(&pdev->peer_ref_mutex);
|
||||
|
|
@ -3497,7 +3483,7 @@ ol_txrx_peer_find_by_addr(struct ol_txrx_pdev_t *pdev, uint8_t *peer_mac_addr)
|
|||
ol_txrx_info_high(
|
||||
"%s: Delete extra reference %p", __func__, peer);
|
||||
/* release the extra reference */
|
||||
ol_txrx_peer_unref_delete(peer);
|
||||
OL_TXRX_PEER_UNREF_DELETE(peer);
|
||||
}
|
||||
return peer;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -39,8 +39,13 @@
|
|||
* only for forwarding path.
|
||||
*/
|
||||
#define OL_TX_NON_FWD_RESERVE 100
|
||||
#define OL_TXRX_PEER_UNREF_DELETE(peer) \
|
||||
ol_txrx_peer_unref_delete(peer, __func__, __LINE__);
|
||||
|
||||
int ol_txrx_peer_unref_delete(ol_txrx_peer_handle peer,
|
||||
const char *fname,
|
||||
int line);
|
||||
|
||||
int ol_txrx_peer_unref_delete(struct ol_txrx_peer_t *peer);
|
||||
|
||||
/**
|
||||
* ol_tx_desc_pool_size_hl() - allocate tx descriptor pool size for HL systems
|
||||
|
|
|
|||
|
|
@ -69,6 +69,26 @@ static int ol_txrx_log2_ceil(unsigned int value)
|
|||
return log2;
|
||||
}
|
||||
|
||||
/**
|
||||
* __ol_txrx_peer_change_ref_cnt() - change peer ref count by the input value
|
||||
* @peer: pointer to peer structure
|
||||
* @change: value to add to the peer->ref_cnt, can be negative
|
||||
* @fname: name of the calling function
|
||||
* @line: line number of the calling function
|
||||
*
|
||||
* Return: the QDF_STATUS return from hdd_execute_config_command
|
||||
*/
|
||||
void __ol_txrx_peer_change_ref_cnt(struct ol_txrx_peer_t *peer,
|
||||
int change,
|
||||
const char *fname,
|
||||
int line)
|
||||
{
|
||||
qdf_atomic_add(change, &peer->ref_cnt);
|
||||
QDF_TRACE(QDF_MODULE_ID_TXRX, QDF_TRACE_LEVEL_INFO_HIGH,
|
||||
"[%s][%d]: peer %p peer->ref_cnt changed by(%d) to %d",
|
||||
fname, line, peer, change, qdf_atomic_read(&peer->ref_cnt));
|
||||
}
|
||||
|
||||
/*=== function definitions for peer MAC addr --> peer object hash table =====*/
|
||||
|
||||
/*
|
||||
|
|
@ -178,15 +198,9 @@ struct ol_txrx_peer_t *ol_txrx_peer_vdev_find_hash(struct ol_txrx_pdev_t *pdev,
|
|||
if (ol_txrx_peer_find_mac_addr_cmp(mac_addr, &peer->mac_addr) ==
|
||||
0 && (check_valid == 0 || peer->valid)
|
||||
&& peer->vdev == vdev) {
|
||||
/*
|
||||
* found it - increment the ref count before releasing
|
||||
* the lock
|
||||
*/
|
||||
qdf_atomic_inc(&peer->ref_cnt);
|
||||
QDF_TRACE(QDF_MODULE_ID_TXRX, QDF_TRACE_LEVEL_INFO_HIGH,
|
||||
"%s: peer %p peer->ref_cnt %d",
|
||||
__func__, peer,
|
||||
qdf_atomic_read(&peer->ref_cnt));
|
||||
|
||||
/* found it */
|
||||
OL_TXRX_PEER_INC_REF_CNT(peer);
|
||||
qdf_spin_unlock_bh(&pdev->peer_ref_mutex);
|
||||
return peer;
|
||||
}
|
||||
|
|
@ -216,16 +230,9 @@ struct ol_txrx_peer_t *ol_txrx_peer_find_hash_find(struct ol_txrx_pdev_t *pdev,
|
|||
TAILQ_FOREACH(peer, &pdev->peer_hash.bins[index], hash_list_elem) {
|
||||
if (ol_txrx_peer_find_mac_addr_cmp(mac_addr, &peer->mac_addr) ==
|
||||
0 && (check_valid == 0 || peer->valid)) {
|
||||
/*
|
||||
* found it - increment the ref count before
|
||||
* releasing the lock
|
||||
*/
|
||||
qdf_atomic_inc(&peer->ref_cnt);
|
||||
/* found it */
|
||||
OL_TXRX_PEER_INC_REF_CNT(peer);
|
||||
qdf_spin_unlock_bh(&pdev->peer_ref_mutex);
|
||||
QDF_TRACE(QDF_MODULE_ID_TXRX, QDF_TRACE_LEVEL_INFO_HIGH,
|
||||
"%s: peer %p peer->ref_cnt %d",
|
||||
__func__, peer,
|
||||
qdf_atomic_read(&peer->ref_cnt));
|
||||
return peer;
|
||||
}
|
||||
}
|
||||
|
|
@ -286,16 +293,11 @@ void ol_txrx_peer_find_hash_erase(struct ol_txrx_pdev_t *pdev)
|
|||
/*
|
||||
* Artificially adjust the peer's ref count to
|
||||
* 1, so it will get deleted by
|
||||
* ol_txrx_peer_unref_delete.
|
||||
* OL_TXRX_PEER_UNREF_DELETE.
|
||||
*/
|
||||
qdf_atomic_init(&peer->ref_cnt); /* set to 0 */
|
||||
qdf_atomic_inc(&peer->ref_cnt); /* incr to 1 */
|
||||
QDF_TRACE(QDF_MODULE_ID_TXRX,
|
||||
QDF_TRACE_LEVEL_INFO_HIGH,
|
||||
"%s: Delete Peer %p ref_cnt %d\n",
|
||||
__func__, peer,
|
||||
qdf_atomic_read(&peer->ref_cnt));
|
||||
ol_txrx_peer_unref_delete(peer);
|
||||
OL_TXRX_PEER_INC_REF_CNT(peer); /* incr to 1 */
|
||||
OL_TXRX_PEER_UNREF_DELETE(peer);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -345,6 +347,8 @@ static inline void ol_txrx_peer_find_add_id(struct ol_txrx_pdev_t *pdev,
|
|||
struct ol_txrx_peer_t *peer;
|
||||
int status;
|
||||
int i;
|
||||
uint32_t peer_id_ref_cnt;
|
||||
uint32_t peer_ref_cnt;
|
||||
|
||||
/* check if there's already a peer object with this MAC address */
|
||||
peer =
|
||||
|
|
@ -395,18 +399,17 @@ static inline void ol_txrx_peer_find_add_id(struct ol_txrx_pdev_t *pdev,
|
|||
* was sent to firmware.
|
||||
*/
|
||||
qdf_atomic_set(&peer->fw_create_pending, 0);
|
||||
ol_txrx_peer_unref_delete(peer);
|
||||
OL_TXRX_PEER_UNREF_DELETE(peer);
|
||||
}
|
||||
|
||||
qdf_spin_unlock(&pdev->peer_map_unmap_lock);
|
||||
|
||||
QDF_TRACE(QDF_MODULE_ID_TXRX, QDF_TRACE_LEVEL_ERROR,
|
||||
peer_id_ref_cnt = qdf_atomic_read(&pdev->
|
||||
peer_id_to_obj_map[peer_id].peer_id_ref_cnt);
|
||||
peer_ref_cnt = qdf_atomic_read(&peer->ref_cnt);
|
||||
QDF_TRACE(QDF_MODULE_ID_TXRX, QDF_TRACE_LEVEL_INFO_HIGH,
|
||||
"%s: peer %p ID %d peer_id[%d] peer_id_ref_cnt %d peer->ref_cnt %d",
|
||||
__func__, peer, peer_id, i,
|
||||
qdf_atomic_read(&pdev->
|
||||
peer_id_to_obj_map[peer_id].
|
||||
peer_id_ref_cnt),
|
||||
qdf_atomic_read(&peer->ref_cnt));
|
||||
__func__, peer, peer_id, i, peer_id_ref_cnt, peer_ref_cnt);
|
||||
|
||||
if (status) {
|
||||
/* TBDXXX: assert for now */
|
||||
|
|
@ -591,7 +594,7 @@ void ol_rx_peer_unmap_handler(ol_txrx_pdev_handle pdev, uint16_t peer_id)
|
|||
* Remove a reference to the peer.
|
||||
* If there are no more references, delete the peer object.
|
||||
*/
|
||||
ol_txrx_peer_unref_delete(peer);
|
||||
OL_TXRX_PEER_UNREF_DELETE(peer);
|
||||
|
||||
QDF_TRACE(QDF_MODULE_ID_TXRX, QDF_TRACE_LEVEL_DEBUG,
|
||||
"%s: Remove the ID %d reference to peer %p peer_id_ref_cnt %d",
|
||||
|
|
@ -633,7 +636,7 @@ void ol_txrx_peer_remove_obj_map_entries(ol_txrx_pdev_handle pdev,
|
|||
peer_id, peer_id_ref_cnt, i);
|
||||
/*
|
||||
* Transfer peer_id_ref_cnt into del_peer_id_ref_cnt so that
|
||||
* ol_txrx_peer_unref_delete will decrement del_peer_id_ref_cnt
|
||||
* OL_TXRX_PEER_UNREF_DELETE will decrement del_peer_id_ref_cnt
|
||||
* and any map events will increment peer_id_ref_cnt. Otherwise
|
||||
* accounting will be messed up.
|
||||
*
|
||||
|
|
@ -660,13 +663,8 @@ struct ol_txrx_peer_t *ol_txrx_assoc_peer_find(struct ol_txrx_vdev_t *vdev)
|
|||
*/
|
||||
if (vdev->last_real_peer
|
||||
&& vdev->last_real_peer->peer_ids[0] != HTT_INVALID_PEER_ID) {
|
||||
qdf_atomic_inc(&vdev->last_real_peer->ref_cnt);
|
||||
OL_TXRX_PEER_INC_REF_CNT(vdev->last_real_peer);
|
||||
peer = vdev->last_real_peer;
|
||||
QDF_TRACE(QDF_MODULE_ID_TXRX, QDF_TRACE_LEVEL_INFO_HIGH,
|
||||
"%s: peer %p peer->ref_cnt %d",
|
||||
__func__, peer,
|
||||
qdf_atomic_read
|
||||
(&peer->ref_cnt));
|
||||
} else {
|
||||
peer = NULL;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -36,6 +36,17 @@
|
|||
#include <cdp_txrx_cmn.h> /* ol_txrx_pdev_t, etc. */
|
||||
#include <ol_txrx_internal.h> /* TXRX_ASSERT */
|
||||
|
||||
|
||||
#define OL_TXRX_PEER_INC_REF_CNT(peer) \
|
||||
__ol_txrx_peer_change_ref_cnt(peer, 1, __func__, __LINE__);
|
||||
|
||||
#define OL_TXRX_PEER_DEC_REF_CNT(peer) \
|
||||
__ol_txrx_peer_change_ref_cnt(peer, (-1), __func__, __LINE__);
|
||||
|
||||
void __ol_txrx_peer_change_ref_cnt(struct ol_txrx_peer_t *peer,
|
||||
int change,
|
||||
const char *fname,
|
||||
int line);
|
||||
int ol_txrx_peer_find_attach(struct ol_txrx_pdev_t *pdev);
|
||||
|
||||
void ol_txrx_peer_find_detach(struct ol_txrx_pdev_t *pdev);
|
||||
|
|
@ -107,10 +118,8 @@ ol_txrx_peer_find_hash_remove(struct ol_txrx_pdev_t *pdev,
|
|||
void ol_txrx_peer_find_hash_erase(struct ol_txrx_pdev_t *pdev);
|
||||
|
||||
struct ol_txrx_peer_t *ol_txrx_assoc_peer_find(struct ol_txrx_vdev_t *vdev);
|
||||
|
||||
void ol_txrx_peer_remove_obj_map_entries(ol_txrx_pdev_handle pdev,
|
||||
struct ol_txrx_peer_t *peer);
|
||||
|
||||
#if defined(TXRX_DEBUG_LEVEL) && TXRX_DEBUG_LEVEL > 5
|
||||
void ol_txrx_peer_find_display(ol_txrx_pdev_handle pdev, int indent);
|
||||
#else
|
||||
|
|
|
|||
Loading…
Reference in a new issue