|
@@ -444,20 +444,22 @@ static void ipa3_send_nop_desc(struct work_struct *work)
|
|
|
return;
|
|
|
}
|
|
|
list_add_tail(&tx_pkt->link, &sys->head_desc_list);
|
|
|
- sys->len++;
|
|
|
- sys->nop_pending = false;
|
|
|
|
|
|
memset(&nop_xfer, 0, sizeof(nop_xfer));
|
|
|
nop_xfer.type = GSI_XFER_ELEM_NOP;
|
|
|
nop_xfer.flags = GSI_XFER_FLAG_EOT;
|
|
|
nop_xfer.xfer_user_data = tx_pkt;
|
|
|
if (gsi_queue_xfer(sys->ep->gsi_chan_hdl, 1, &nop_xfer, true)) {
|
|
|
+ list_del(&tx_pkt->link);
|
|
|
+ kmem_cache_free(ipa3_ctx->tx_pkt_wrapper_cache, tx_pkt);
|
|
|
spin_unlock_bh(&sys->spinlock);
|
|
|
IPAERR("gsi_queue_xfer for ch:%lu failed\n",
|
|
|
sys->ep->gsi_chan_hdl);
|
|
|
queue_work(sys->wq, &sys->work);
|
|
|
return;
|
|
|
}
|
|
|
+ sys->len++;
|
|
|
+ sys->nop_pending = false;
|
|
|
spin_unlock_bh(&sys->spinlock);
|
|
|
|
|
|
/* make sure TAG process is sent before clocks are gated */
|