diff --git a/htc/htc_send.c b/htc/htc_send.c index b792b5c6d2cd..a65e0ce0acc8 100644 --- a/htc/htc_send.c +++ b/htc/htc_send.c @@ -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; } diff --git a/wmi/src/wmi_unified_tlv.c b/wmi/src/wmi_unified_tlv.c index 2376a116f267..6e2f4dd8f68d 100644 --- a/wmi/src/wmi_unified_tlv.c +++ b/wmi/src/wmi_unified_tlv.c @@ -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)