On 4/26/19 6:44 AM, Michał Kazior wrote:
On Fri, 26 Apr 2019 at 14:58, Venkateswara Naralasetty
<vnara...@codeaurora.org> wrote:

ath10k_dbg() is called in ath10k_process_rx() with huge set of arguments
which is causing CPU overhead even when debug_mask is not set.
Good improvement was observed in the receive side performance when call
to ath10k_dbg() is avoided in the RX path.
[...]

+/* Avoid calling __ath10k_dbg() if debug_mask is not set and tracing
+ * disabled.
+ */
+#define ath10k_dbg(ar, dbg_mask, fmt, ...)                     \
+do {                                                           \
+       if ((ath10k_debug_mask & dbg_mask) ||                   \
+           trace_ath10k_log_dbg_enabled())                     \
+               __ath10k_dbg(ar, dbg_mask, fmt, ##__VA_ARGS__); \
+} while (0)

Did you consider using jump labels (see include/linux/jump_label.h)?
It's what tracing uses under the hood. I wonder if you could squeeze
out a bit more performance with that? I guess you'd need to add
`struct static_key ath10k_dbg_mask_keys[ATH10K_DBG_MAX]` and re-do
ath10k_debug_mask enum a bit.

Maybe first test with debugging just compiled out to see if there is still
any significant overhead with this new patch applied?

Thanks,
Ben

--
Ben Greear <gree...@candelatech.com>
Candela Technologies Inc  http://www.candelatech.com


_______________________________________________
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k

Reply via email to