qcacld-3.0: Replace cdp peer_find_by_addr by get_ref_by_addr

Change the existing cdp_peer_find_by_addr by calls to
cdp_peer_get_ref_by_addr and cdp_peer_release_ref. The new APIs
make sure that the peer is valid as long as the peer reference is not
released (call to cdp_peer_release_ref)

Change-Id: Ibde9944a9721e5dcf0f7838058c229539efae7e4
CRs-Fixed: 2139801
This commit is contained in:
Mohit Khanna 2017-11-20 11:06:33 -08:00 • committed by snandini
commit c4c222535f
3 changed files with 17 additions and 6 deletions

View file

@ -1676,7 +1676,8 @@ static void lim_process_addba_req(tpAniSirGlobal mac_ctx, uint8_t *rx_pkt_info,
status, frame_len);
}
peer = cdp_peer_find_by_addr(soc, pdev, mac_hdr->sa, &peer_id);
peer = cdp_peer_get_ref_by_addr(soc, pdev, mac_hdr->sa, &peer_id,
PEER_DEBUG_ID_WMA_ADDBA_REQ);
if (!peer) {
pe_err("PEER [%pM] not found", mac_hdr->sa);
goto error;
@ -1689,6 +1690,8 @@ static void lim_process_addba_req(tpAniSirGlobal mac_ctx, uint8_t *rx_pkt_info,
addba_req->addba_param_set.buff_size,
addba_req->ba_start_seq_ctrl.ssn);
cdp_peer_release_ref(soc, peer, PEER_DEBUG_ID_WMA_ADDBA_REQ);
if (QDF_STATUS_SUCCESS == qdf_status) {
lim_send_addba_response_frame(mac_ctx, mac_hdr->sa,
addba_req->addba_param_set.tid, session);
@ -1755,7 +1758,8 @@ static void lim_process_delba_req(tpAniSirGlobal mac_ctx, uint8_t *rx_pkt_info,
status, frame_len);
}
peer = cdp_peer_find_by_addr(soc, pdev, mac_hdr->sa, &peer_id);
peer = cdp_peer_get_ref_by_addr(soc, pdev, mac_hdr->sa, &peer_id,
PEER_DEBUG_ID_WMA_DELBA_REQ);
if (!peer) {
pe_err("PEER [%pM] not found", mac_hdr->sa);
goto error;
@ -1764,6 +1768,8 @@ static void lim_process_delba_req(tpAniSirGlobal mac_ctx, uint8_t *rx_pkt_info,
qdf_status = cdp_delba_process(soc, peer,
delba_req->delba_param_set.tid, delba_req->Reason.code);
cdp_peer_release_ref(soc, peer, PEER_DEBUG_ID_WMA_DELBA_REQ);
if (QDF_STATUS_SUCCESS != qdf_status)
pe_err("Failed to process delba request");

View file

@ -4691,7 +4691,8 @@ QDF_STATUS lim_send_addba_response_frame(tpAniSirGlobal mac_ctx,
return QDF_STATUS_E_FAILURE;
}
peer = cdp_peer_find_by_addr(soc, pdev, peer_mac, &peer_id);
peer = cdp_peer_get_ref_by_addr(soc, pdev, peer_mac, &peer_id,
PEER_DEBUG_ID_LIM_SEND_ADDBA_RESP);
if (!peer) {
pe_err("PEER [%pM] not found", peer_mac);
return QDF_STATUS_E_FAILURE;
@ -4700,6 +4701,7 @@ QDF_STATUS lim_send_addba_response_frame(tpAniSirGlobal mac_ctx,
cdp_addba_responsesetup(soc, peer, tid, &dialog_token,
&status_code, &buff_size, &batimeout);
cdp_peer_release_ref(soc, peer, PEER_DEBUG_ID_LIM_SEND_ADDBA_RESP);
qdf_mem_set((uint8_t *) &frm, sizeof(frm), 0);
frm.Category.category = SIR_MAC_ACTION_BLKACK;
frm.Action.action = SIR_MAC_ADDBA_RSP;

View file

@ -3447,7 +3447,7 @@ static bool wma_is_pkt_drop_candidate(tp_wma_handle wma_handle,
uint8_t *peer_addr, uint8_t *bssid,
uint8_t subtype)
{
void *peer;
void *peer = NULL;
struct cdp_pdev *pdev_ctx;
uint8_t peer_id;
bool should_drop = false;
@ -3481,8 +3481,8 @@ static bool wma_is_pkt_drop_candidate(tp_wma_handle wma_handle,
goto end;
}
peer = cdp_peer_find_by_addr(soc, pdev_ctx,
peer_addr, &peer_id);
peer = cdp_peer_get_ref_by_addr(soc, pdev_ctx, peer_addr, &peer_id,
PEER_DEBUG_ID_WMA_PKT_DROP);
if (!peer) {
if (IEEE80211_FC0_SUBTYPE_ASSOC_REQ != subtype) {
WMA_LOGI(
@ -3547,6 +3547,9 @@ static bool wma_is_pkt_drop_candidate(tp_wma_handle wma_handle,
}
end:
if (peer)
cdp_peer_release_ref(soc, peer, PEER_DEBUG_ID_WMA_PKT_DROP);
return should_drop;
}