mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-10 22:40:54 -04:00
qcacmn: Handle failure scenario for qdf_nbuf_map()
Handle failure scenario for qdf_nbuf_map() API by freeing allocated memory, returning failure/error etc. Change-Id: I493fb063c8f57e38525e2dc1701a6e972d2ec0e6 CRs-Fixed: 2028524
This commit is contained in:
parent
17e8533110
commit
fa594d9f08
2 changed files with 30 additions and 7 deletions
|
|
@ -541,6 +541,7 @@ static A_STATUS htc_issue_packets(HTC_TARGET *target,
|
|||
HTC_FRAME_HDR *pHtcHdr;
|
||||
uint32_t data_attr = 0;
|
||||
enum qdf_bus_type bus_type;
|
||||
QDF_STATUS ret;
|
||||
|
||||
bus_type = hif_get_bus_type(target->hif_dev);
|
||||
|
||||
|
|
@ -610,9 +611,16 @@ static A_STATUS htc_issue_packets(HTC_TARGET *target,
|
|||
*/
|
||||
if (pPacket->PktInfo.AsTx.
|
||||
Flags & HTC_TX_PACKET_FLAG_FIXUP_NETBUF) {
|
||||
qdf_nbuf_map(target->osdev,
|
||||
GET_HTC_PACKET_NET_BUF_CONTEXT
|
||||
(pPacket), QDF_DMA_TO_DEVICE);
|
||||
ret = qdf_nbuf_map(target->osdev,
|
||||
GET_HTC_PACKET_NET_BUF_CONTEXT
|
||||
(pPacket), QDF_DMA_TO_DEVICE);
|
||||
if (ret != QDF_STATUS_SUCCESS) {
|
||||
AR_DEBUG_PRINTF(ATH_DEBUG_ERR,
|
||||
("%s: nbuf map failed, endpoint %p\n",
|
||||
__func__, pEndpoint));
|
||||
status = A_ERROR;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1361,6 +1369,7 @@ A_STATUS htc_send_pkts_multiple(HTC_HANDLE HTCHandle, HTC_PACKET_QUEUE *pPktQueu
|
|||
HTC_PACKET *pPacket;
|
||||
qdf_nbuf_t netbuf;
|
||||
HTC_FRAME_HDR *pHtcHdr;
|
||||
QDF_STATUS status;
|
||||
|
||||
AR_DEBUG_PRINTF(ATH_DEBUG_SEND,
|
||||
("+htc_send_pkts_multiple: Queue: %p, Pkts %d \n",
|
||||
|
|
@ -1418,9 +1427,15 @@ A_STATUS htc_send_pkts_multiple(HTC_HANDLE HTCHandle, HTC_PACKET_QUEUE *pPktQueu
|
|||
* mapped. This only applies to non-data frames, since data frames
|
||||
* were already mapped as they entered into the driver.
|
||||
*/
|
||||
qdf_nbuf_map(target->osdev,
|
||||
GET_HTC_PACKET_NET_BUF_CONTEXT(pPacket),
|
||||
QDF_DMA_TO_DEVICE);
|
||||
status = qdf_nbuf_map(target->osdev,
|
||||
GET_HTC_PACKET_NET_BUF_CONTEXT(pPacket),
|
||||
QDF_DMA_TO_DEVICE);
|
||||
if (status != QDF_STATUS_SUCCESS) {
|
||||
AR_DEBUG_PRINTF(ATH_DEBUG_ERR,
|
||||
("%s: nbuf map failed, endpoint %p, seq_no. %d\n",
|
||||
__func__, pEndpoint, pEndpoint->SeqNo));
|
||||
return A_ERROR;
|
||||
}
|
||||
|
||||
pPacket->PktInfo.AsTx.Flags |= HTC_TX_PACKET_FLAG_FIXUP_NETBUF;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2480,6 +2480,7 @@ static QDF_STATUS send_mgmt_cmd_tlv(wmi_unified_t wmi_handle,
|
|||
uint64_t dma_addr;
|
||||
void *qdf_ctx = param->qdf_ctx;
|
||||
uint8_t *bufp;
|
||||
QDF_STATUS status;
|
||||
int32_t bufp_len = (param->frm_len < mgmt_tx_dl_frm_len) ? param->frm_len :
|
||||
mgmt_tx_dl_frm_len;
|
||||
|
||||
|
|
@ -2508,7 +2509,14 @@ static QDF_STATUS send_mgmt_cmd_tlv(wmi_unified_t wmi_handle,
|
|||
sizeof(uint32_t)));
|
||||
bufp += WMI_TLV_HDR_SIZE;
|
||||
qdf_mem_copy(bufp, param->pdata, bufp_len);
|
||||
qdf_nbuf_map_single(qdf_ctx, param->tx_frame, QDF_DMA_TO_DEVICE);
|
||||
|
||||
status = qdf_nbuf_map_single(qdf_ctx, param->tx_frame,
|
||||
QDF_DMA_TO_DEVICE);
|
||||
if (status != QDF_STATUS_SUCCESS) {
|
||||
WMI_LOGE("%s: wmi buf map failed", __func__);
|
||||
goto err1;
|
||||
}
|
||||
|
||||
dma_addr = qdf_nbuf_get_frag_paddr(param->tx_frame, 0);
|
||||
cmd->paddr_lo = (uint32_t)(dma_addr & 0xffffffff);
|
||||
#if defined(HTT_PADDR64)
|
||||
|
|
|
|||
Loading…
Reference in a new issue