Loading drivers/platform/msm/ipa/ipa_v3/ipa_dp.c +9 −2 Original line number Diff line number Diff line Loading @@ -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, Loading Loading @@ -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 { Loading Loading @@ -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; } Loading Loading
drivers/platform/msm/ipa/ipa_v3/ipa_dp.c +9 −2 Original line number Diff line number Diff line Loading @@ -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, Loading Loading @@ -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 { Loading Loading @@ -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; } Loading