Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 71ddfd53 authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: ipa3: Fix to hold the clock until replenish the descriptors"

parents 71771225 0a056f4c
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -2019,7 +2019,6 @@ static void ipa3_replenish_rx_page_recycle(struct ipa3_sys_context *sys)
			rx_pkt = sys->repl->cache[curr_wq];
			curr_wq = (++curr_wq == sys->repl->capacity) ?
								 0 : curr_wq;
			atomic_set(&sys->repl->head_idx, curr_wq);
		}

		dma_sync_single_for_device(ipa3_ctx->pdev,
@@ -2057,6 +2056,7 @@ static void ipa3_replenish_rx_page_recycle(struct ipa3_sys_context *sys)
	if (likely(ret == GSI_STATUS_SUCCESS)) {
		/* ensure write is done before setting head index */
		mb();
		atomic_set(&sys->repl->head_idx, curr_wq);
		atomic_set(&sys->page_recycle_repl->head_idx, curr);
		sys->len = rx_len_cached;
	} else {
@@ -4976,13 +4976,20 @@ int ipa3_rx_poll(u32 clnt_hdl, int weight)
	/* call repl_hdlr before napi_reschedule / napi_complete */
	if (cnt)
		ep->sys->repl_hdlr(ep->sys);
	if (cnt < weight) {
	/* When not able to replenish enough descriptors pipe wait
	 * until minimum number descripotrs to replish.
	 */
	if (cnt < weight && ep->sys->len > IPA_DEFAULT_SYS_YELLOW_WM) {
		napi_complete(ep->sys->napi_obj);
		ret = ipa3_rx_switch_to_intr_mode(ep->sys);
		if (ret == -GSI_STATUS_PENDING_IRQ &&
				napi_reschedule(ep->sys->napi_obj))
			goto start_poll;
		ipa_pm_deferred_deactivate(ep->sys->pm_hdl);
	} else {
		cnt = weight;
		IPADBG("Client = %d not replenished free descripotrs\n",
				ep->client);
	}
	return cnt;
}