mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-11 07:03:09 -04:00
qcacmn: Avoid logging in packet transmission path
Currently if the driver is in runtime suspend/suspending state, any packet transmission will request for resume via hif_pm_runtime_get. Unfortunately there is a logging in the above API which will lead to more time consumption in the NET_TX softirq context. This can lead to other delay in processing other softirqs in the system. Fix this by skipping the logging in the packet transmission path. Change-Id: Icc9f5b67794f7666243eb059f2e07a06a987002e CRs-Fixed: 2844126
This commit is contained in:
parent
ec258e718b
commit
459c7976f0
8 changed files with 28 additions and 20 deletions
|
|
@ -1364,7 +1364,7 @@ dp_tx_ring_access_end_wrapper(struct dp_soc *soc,
|
|||
int ret;
|
||||
|
||||
ret = hif_pm_runtime_get(soc->hif_handle,
|
||||
RTPM_ID_DW_TX_HW_ENQUEUE);
|
||||
RTPM_ID_DW_TX_HW_ENQUEUE, true);
|
||||
switch (ret) {
|
||||
case 0:
|
||||
dp_tx_ring_access_end(soc, hal_ring_hdl, coalesce);
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2016-2020 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2016-2021 The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for
|
||||
* any purpose with or without fee is hereby granted, provided that the
|
||||
|
|
@ -455,7 +455,7 @@ inline int hal_reo_cmd_queue_stats(hal_ring_handle_t hal_ring_hdl,
|
|||
cmd->u.stats_params.clear);
|
||||
|
||||
if (hif_pm_runtime_get(hal_soc->hif_handle,
|
||||
RTPM_ID_HAL_REO_CMD) == 0) {
|
||||
RTPM_ID_HAL_REO_CMD, false) == 0) {
|
||||
hal_srng_access_end(hal_soc_hdl, hal_ring_hdl);
|
||||
hif_pm_runtime_put(hal_soc->hif_handle,
|
||||
RTPM_ID_HAL_REO_CMD);
|
||||
|
|
@ -592,7 +592,7 @@ inline int hal_reo_cmd_flush_cache(hal_ring_handle_t hal_ring_hdl,
|
|||
cp->flush_all);
|
||||
|
||||
if (hif_pm_runtime_get(hal_soc->hif_handle,
|
||||
RTPM_ID_HAL_REO_CMD) == 0) {
|
||||
RTPM_ID_HAL_REO_CMD, false) == 0) {
|
||||
hal_srng_access_end(hal_soc_hdl, hal_ring_hdl);
|
||||
hif_pm_runtime_put(hal_soc->hif_handle,
|
||||
RTPM_ID_HAL_REO_CMD);
|
||||
|
|
@ -916,7 +916,7 @@ inline int hal_reo_cmd_update_rx_queue(hal_ring_handle_t hal_ring_hdl,
|
|||
PN_127_96, p->pn_127_96);
|
||||
|
||||
if (hif_pm_runtime_get(hal_soc->hif_handle,
|
||||
RTPM_ID_HAL_REO_CMD) == 0) {
|
||||
RTPM_ID_HAL_REO_CMD, false) == 0) {
|
||||
hal_srng_access_end(hal_soc_hdl, hal_ring_hdl);
|
||||
hif_pm_runtime_put(hal_soc->hif_handle,
|
||||
RTPM_ID_HAL_REO_CMD);
|
||||
|
|
|
|||
|
|
@ -1042,7 +1042,8 @@ int hif_pm_runtime_put_sync_suspend(struct hif_opaque_softc *hif_ctx,
|
|||
wlan_rtpm_dbgid rtpm_dbgid);
|
||||
int hif_pm_runtime_request_resume(struct hif_opaque_softc *hif_ctx);
|
||||
int hif_pm_runtime_get(struct hif_opaque_softc *hif_ctx,
|
||||
wlan_rtpm_dbgid rtpm_dbgid);
|
||||
wlan_rtpm_dbgid rtpm_dbgid,
|
||||
bool is_critical_ctx);
|
||||
void hif_pm_runtime_get_noresume(struct hif_opaque_softc *hif_ctx,
|
||||
wlan_rtpm_dbgid rtpm_dbgid);
|
||||
int hif_pm_runtime_put(struct hif_opaque_softc *hif_ctx,
|
||||
|
|
@ -1106,7 +1107,8 @@ hif_pm_runtime_get_noresume(struct hif_opaque_softc *hif_ctx,
|
|||
{}
|
||||
|
||||
static inline int
|
||||
hif_pm_runtime_get(struct hif_opaque_softc *hif_ctx, wlan_rtpm_dbgid rtpm_dbgid)
|
||||
hif_pm_runtime_get(struct hif_opaque_softc *hif_ctx, wlan_rtpm_dbgid rtpm_dbgid,
|
||||
bool is_critical_ctx)
|
||||
{ return 0; }
|
||||
static inline int
|
||||
hif_pm_runtime_put(struct hif_opaque_softc *hif_ctx, wlan_rtpm_dbgid rtpm_dbgid)
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2013-2020 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2013-2021 The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for
|
||||
* any purpose with or without fee is hereby granted, provided that the
|
||||
|
|
@ -148,7 +148,7 @@ int ce_send_fast(struct CE_handle *copyeng, qdf_nbuf_t msdu,
|
|||
* sure there is no PCIe link access.
|
||||
*/
|
||||
if (hif_pm_runtime_get(hif_hdl,
|
||||
RTPM_ID_CE_SEND_FAST) != 0)
|
||||
RTPM_ID_CE_SEND_FAST, false) != 0)
|
||||
ok_to_send = false;
|
||||
|
||||
if (ok_to_send) {
|
||||
|
|
|
|||
|
|
@ -1150,6 +1150,8 @@ void hif_pm_runtime_get_noresume(struct hif_opaque_softc *hif_ctx,
|
|||
* hif_pm_runtime_get() - do a get opperation on the device
|
||||
* @hif_ctx: pointer of HIF context
|
||||
* @rtpm_dbgid: dbgid to trace who use it
|
||||
* @is_critical_ctx: Indication if this function called via a
|
||||
* critical context
|
||||
*
|
||||
* A get opperation will prevent a runtime suspend until a
|
||||
* corresponding put is done. This api should be used when sending
|
||||
|
|
@ -1162,7 +1164,8 @@ void hif_pm_runtime_get_noresume(struct hif_opaque_softc *hif_ctx,
|
|||
* otherwise an error code.
|
||||
*/
|
||||
int hif_pm_runtime_get(struct hif_opaque_softc *hif_ctx,
|
||||
wlan_rtpm_dbgid rtpm_dbgid)
|
||||
wlan_rtpm_dbgid rtpm_dbgid,
|
||||
bool is_critical_ctx)
|
||||
{
|
||||
struct hif_softc *scn = HIF_GET_SOFTC(hif_ctx);
|
||||
struct hif_runtime_pm_ctx *rpm_ctx;
|
||||
|
|
@ -1207,8 +1210,11 @@ int hif_pm_runtime_get(struct hif_opaque_softc *hif_ctx,
|
|||
|
||||
if (pm_state == HIF_PM_RUNTIME_STATE_SUSPENDED ||
|
||||
pm_state == HIF_PM_RUNTIME_STATE_SUSPENDING) {
|
||||
hif_info_high("Runtime PM resume is requested by %ps",
|
||||
(void *)_RET_IP_);
|
||||
/* Do not log in performance path */
|
||||
if (!is_critical_ctx) {
|
||||
hif_info_high("Runtime PM resume is requested by %ps",
|
||||
(void *)_RET_IP_);
|
||||
}
|
||||
ret = -EAGAIN;
|
||||
} else {
|
||||
ret = -EBUSY;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2013-2020 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2013-2021 The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for
|
||||
* any purpose with or without fee is hereby granted, provided that the
|
||||
|
|
@ -1174,7 +1174,7 @@ int htc_pm_runtime_get(HTC_HANDLE htc_handle)
|
|||
HTC_TARGET *target = GET_HTC_TARGET_FROM_HANDLE(htc_handle);
|
||||
|
||||
return hif_pm_runtime_get(target->hif_dev,
|
||||
RTPM_ID_HTC);
|
||||
RTPM_ID_HTC, false);
|
||||
}
|
||||
|
||||
int htc_pm_runtime_put(HTC_HANDLE htc_handle)
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2013-2020 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2013-2021 The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for
|
||||
* any purpose with or without fee is hereby granted, provided that the
|
||||
|
|
@ -1102,7 +1102,7 @@ static void get_htc_send_packets_credit_based(HTC_TARGET *target,
|
|||
htc_send_pkts_rtpm_dbgid_get(
|
||||
pEndpoint->service_id);
|
||||
ret = hif_pm_runtime_get(target->hif_dev,
|
||||
rtpm_dbgid);
|
||||
rtpm_dbgid, false);
|
||||
if (ret) {
|
||||
/* bus suspended, runtime resume issued */
|
||||
QDF_ASSERT(HTC_PACKET_QUEUE_DEPTH(pQueue) == 0);
|
||||
|
|
@ -1251,7 +1251,7 @@ static void get_htc_send_packets(HTC_TARGET *target,
|
|||
htc_send_pkts_rtpm_dbgid_get(
|
||||
pEndpoint->service_id);
|
||||
ret = hif_pm_runtime_get(target->hif_dev,
|
||||
rtpm_dbgid);
|
||||
rtpm_dbgid, false);
|
||||
if (ret) {
|
||||
/* bus suspended, runtime resume issued */
|
||||
QDF_ASSERT(HTC_PACKET_QUEUE_DEPTH(pQueue) == 0);
|
||||
|
|
@ -1930,7 +1930,7 @@ QDF_STATUS htc_send_data_pkt(HTC_HANDLE htc_hdl, qdf_nbuf_t netbuf, int ep_id,
|
|||
|
||||
rtpm_dbgid =
|
||||
htc_send_pkts_rtpm_dbgid_get(pEndpoint->service_id);
|
||||
if (hif_pm_runtime_get(target->hif_dev, rtpm_dbgid))
|
||||
if (hif_pm_runtime_get(target->hif_dev, rtpm_dbgid, false))
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
|
||||
p_htc_hdr = (HTC_FRAME_HDR *)qdf_nbuf_get_frag_vaddr(netbuf, 0);
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2014-2020 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2014-2021 The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for
|
||||
* any purpose with or without fee is hereby granted, provided that the
|
||||
|
|
@ -499,7 +499,7 @@ QDF_STATUS qdf_runtime_pm_get(void)
|
|||
return QDF_STATUS_E_INVAL;
|
||||
}
|
||||
|
||||
ret = hif_pm_runtime_get(ol_sc, RTPM_ID_RESVERD);
|
||||
ret = hif_pm_runtime_get(ol_sc, RTPM_ID_RESVERD, false);
|
||||
|
||||
if (ret)
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
|
|
|
|||
Loading…
Reference in a new issue