diff options
| author | Houston Hoffman <hhoffman@codeaurora.org> | 2017-10-12 00:20:57 -0700 |
|---|---|---|
| committer | snandini <snandini@codeaurora.org> | 2017-10-12 13:43:40 -0700 |
| commit | 013e8260aef6e159af1c834ccfde80352d696948 (patch) | |
| tree | 433e9a1acbf3275163a7fa9a5803e6ecde7d0b37 /core/utils | |
| parent | 585f28e715e53ded038df573c11e03edc9b1f322 (diff) | |
qcacld-3.0: Use epping_tx_complete instead of epping_tx_complete_multiple
modify epping_tx_complete_multiple to accept single packets.
Currenly htc invokes the callback on individual packets.
Change-Id: I9df269ba4c714ccd05c2dea89b0acc94ce895492
CRs-Fixed: 2125391
Diffstat (limited to 'core/utils')
| -rw-r--r-- | core/utils/epping/inc/epping_internal.h | 2 | ||||
| -rw-r--r-- | core/utils/epping/src/epping_tx.c | 90 | ||||
| -rw-r--r-- | core/utils/epping/src/epping_txrx.c | 4 |
3 files changed, 47 insertions, 49 deletions
diff --git a/core/utils/epping/inc/epping_internal.h b/core/utils/epping/inc/epping_internal.h index d7003c9680e6..a6bfda25db5f 100644 --- a/core/utils/epping/inc/epping_internal.h +++ b/core/utils/epping/inc/epping_internal.h @@ -167,7 +167,7 @@ void epping_set_kperf_flag(epping_adapter_t *pAdapter, /* epping_tx signatures */ void epping_tx_timer_expire(epping_adapter_t *pAdapter); -void epping_tx_complete_multiple(void *ctx, HTC_PACKET_QUEUE *pPacketQueue); +void epping_tx_complete(void *ctx, HTC_PACKET *htc_pkt); int epping_tx_send(qdf_nbuf_t skb, epping_adapter_t *pAdapter); #ifdef HIF_SDIO diff --git a/core/utils/epping/src/epping_tx.c b/core/utils/epping/src/epping_tx.c index 597e511f891f..706544683ad4 100644 --- a/core/utils/epping/src/epping_tx.c +++ b/core/utils/epping/src/epping_tx.c @@ -315,7 +315,7 @@ enum htc_send_full_action epping_tx_queue_full(void *Context, return HTC_SEND_FULL_KEEP; } #endif /* HIF_SDIO */ -void epping_tx_complete_multiple(void *ctx, HTC_PACKET_QUEUE *pPacketQueue) +void epping_tx_complete(void *ctx, HTC_PACKET *htc_pkt) { epping_context_t *pEpping_ctx = (epping_context_t *) ctx; epping_adapter_t *pAdapter = pEpping_ctx->epping_adapter; @@ -326,70 +326,68 @@ void epping_tx_complete_multiple(void *ctx, HTC_PACKET_QUEUE *pPacketQueue) struct epping_cookie *cookie; A_BOOL flushing = false; qdf_nbuf_queue_t skb_queue; - HTC_PACKET *htc_pkt; + + if (htc_pkt == NULL) + return; qdf_nbuf_queue_init(&skb_queue); qdf_spin_lock_bh(&pAdapter->data_lock); - while (!HTC_QUEUE_EMPTY(pPacketQueue)) { - htc_pkt = htc_packet_dequeue(pPacketQueue); - if (htc_pkt == NULL) - break; - status = htc_pkt->Status; - eid = htc_pkt->Endpoint; - pktSkb = GET_HTC_PACKET_NET_BUF_CONTEXT(htc_pkt); - cookie = htc_pkt->pPktContext; - if (!pktSkb) { + status = htc_pkt->Status; + eid = htc_pkt->Endpoint; + pktSkb = GET_HTC_PACKET_NET_BUF_CONTEXT(htc_pkt); + cookie = htc_pkt->pPktContext; + + if (!pktSkb) { + EPPING_LOG(QDF_TRACE_LEVEL_ERROR, + "%s: NULL skb from hc packet", __func__); + QDF_BUG(0); + } else { + if (htc_pkt->pBuffer != qdf_nbuf_data(pktSkb)) { EPPING_LOG(QDF_TRACE_LEVEL_ERROR, - "%s: NULL skb from hc packet", __func__); + "%s: htc_pkt buffer not equal to skb->data", + __func__); QDF_BUG(0); - } else { - if (htc_pkt->pBuffer != qdf_nbuf_data(pktSkb)) { + } + /* add this to the list, use faster non-lock API */ + qdf_nbuf_queue_add(&skb_queue, pktSkb); + + if (QDF_IS_STATUS_SUCCESS(status)) { + if (htc_pkt->ActualLength != + qdf_nbuf_len(pktSkb)) { EPPING_LOG(QDF_TRACE_LEVEL_ERROR, - "%s: htc_pkt buffer not equal to skb->data", - __func__); + "%s: htc_pkt length not equal to skb->len", + __func__); QDF_BUG(0); } - /* add this to the list, use faster non-lock API */ - qdf_nbuf_queue_add(&skb_queue, pktSkb); - - if (QDF_IS_STATUS_SUCCESS(status)) { - if (htc_pkt->ActualLength != - qdf_nbuf_len(pktSkb)) { - EPPING_LOG(QDF_TRACE_LEVEL_ERROR, - "%s: htc_pkt length not equal to skb->len", - __func__); - QDF_BUG(0); - } - } } + } - EPPING_LOG(QDF_TRACE_LEVEL_INFO, - "%s skb=%pK data=%pK len=0x%x eid=%d ", - __func__, pktSkb, htc_pkt->pBuffer, - htc_pkt->ActualLength, eid); + EPPING_LOG(QDF_TRACE_LEVEL_INFO, + "%s skb=%pK data=%pK len=0x%x eid=%d ", + __func__, pktSkb, htc_pkt->pBuffer, + htc_pkt->ActualLength, eid); - if (QDF_IS_STATUS_ERROR(status)) { - if (status == QDF_STATUS_E_CANCELED) { - /* a packet was flushed */ - flushing = true; - } - if (status != QDF_STATUS_E_RESOURCES) { - printk("%s() -TX ERROR, status: 0x%x\n", - __func__, status); - } - } else { - EPPING_LOG(QDF_TRACE_LEVEL_INFO, "%s: OK\n", __func__); - flushing = false; + if (QDF_IS_STATUS_ERROR(status)) { + if (status == QDF_STATUS_E_CANCELED) { + /* a packet was flushed */ + flushing = true; } - - epping_free_cookie(pAdapter->pEpping_ctx, cookie); + if (status != QDF_STATUS_E_RESOURCES) { + printk("%s() -TX ERROR, status: 0x%x\n", + __func__, status); + } + } else { + EPPING_LOG(QDF_TRACE_LEVEL_INFO, "%s: OK\n", __func__); + flushing = false; } + epping_free_cookie(pAdapter->pEpping_ctx, cookie); qdf_spin_unlock_bh(&pAdapter->data_lock); + /* free all skbs in our local list */ while (qdf_nbuf_queue_len(&skb_queue)) { /* use non-lock version */ diff --git a/core/utils/epping/src/epping_txrx.c b/core/utils/epping/src/epping_txrx.c index 9d554f5eec3d..9cde661a4edc 100644 --- a/core/utils/epping/src/epping_txrx.c +++ b/core/utils/epping/src/epping_txrx.c @@ -410,10 +410,10 @@ int epping_connect_service(epping_context_t *pEpping_ctx) /* these fields are the same for all service endpoints */ connect.EpCallbacks.pContext = pEpping_ctx; - connect.EpCallbacks.EpTxCompleteMultiple = epping_tx_complete_multiple; + connect.EpCallbacks.EpTxCompleteMultiple = NULL; connect.EpCallbacks.EpRecv = epping_rx; /* epping_tx_complete use Multiple version */ - connect.EpCallbacks.EpTxComplete = NULL; + connect.EpCallbacks.EpTxComplete = epping_tx_complete; connect.MaxSendQueueDepth = 64; #ifdef HIF_SDIO |
