mbox series

[v3,00/12] ath11k: optimizations in data path

Message ID 1630560820-21905-1-git-send-email-ppranees@codeaurora.org (mailing list archive)
Headers show
Series ath11k: optimizations in data path | expand

Message

P Praneesh Sept. 2, 2021, 5:33 a.m. UTC
This patchset covers optimizations in rx (first 7 patches)
and tx (remaining 5 patches) data path.

Running UDP DL/UL traffic on IPQ8074 5G radio showed an average 5-10%
improvement on a 4 core platform
---
v3:
	- Changed rcu_dereference to rcu_access_pointer in
	  [PATCH 07/12] ath11k: add branch predictors in process_rx
	  [PATCH 11/12] ath11k: add branch predictors in dp_tx path.
	  removed redundant check in
	  [PATCH 02/12] ath11k: allocate dst ring descriptors from
	  cacheable memory.
v2:
        - Addressed internal developer reported segfault and avoid lookup twice
          by utilizing idr_remove (patch 12/12 and patch 2/12).
---
P Praneesh (12):
  ath11k: disable unused CE8 interrupts for ipq8074
  ath11k: allocate dst ring descriptors from cacheable memory
  ath11k: modify dp_rx desc access wrapper calls inline
  ath11k: avoid additional access to ath11k_hal_srng_dst_num_free
  ath11k: avoid active pdev check for each msdu
  ath11k: remove usage quota while processing rx packets
  ath11k: add branch predictors in process_rx
  ath11k: allocate HAL_WBM2SW_RELEASE ring from cacheable  memory
  ath11k: remove mod operator in dst ring processing
  ath11k: avoid while loop in ring selection of tx completion interrupt
  ath11k: add branch predictors in dp_tx path
  ath11k: avoid unnecessary lock contention in tx_completion path

 drivers/net/wireless/ath/ath11k/ce.c    |   2 +-
 drivers/net/wireless/ath/ath11k/core.c  |   5 +
 drivers/net/wireless/ath/ath11k/dp.c    |  48 ++++++--
 drivers/net/wireless/ath/ath11k/dp.h    |   1 +
 drivers/net/wireless/ath/ath11k/dp_rx.c | 207 ++++++++++++++++----------------
 drivers/net/wireless/ath/ath11k/dp_tx.c |  86 ++++++-------
 drivers/net/wireless/ath/ath11k/hal.c   |  35 +++++-
 drivers/net/wireless/ath/ath11k/hal.h   |   1 +
 drivers/net/wireless/ath/ath11k/hw.h    |   1 +
 drivers/net/wireless/ath/ath11k/mac.c   |   2 +-
 10 files changed, 220 insertions(+), 168 deletions(-)

Comments

Kalle Valo Nov. 12, 2021, 1:07 p.m. UTC | #1
P Praneesh <ppranees@codeaurora.org> writes:

> This patchset covers optimizations in rx (first 7 patches)
> and tx (remaining 5 patches) data path.
>
> Running UDP DL/UL traffic on IPQ8074 5G radio showed an average 5-10%
> improvement on a 4 core platform

These had multiple conflicts but luckily they were relatively easy to
fix. But please do check my changes in the pending branch:

https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git/log/?h=pending

Here's where I had conflicts:

Applying: ath11k: allocate dst ring descriptors from cacheable memory
Using index info to reconstruct a base tree...
M	drivers/net/wireless/ath/ath11k/core.c
M	drivers/net/wireless/ath/ath11k/dp.c
M	drivers/net/wireless/ath/ath11k/dp.h
M	drivers/net/wireless/ath/ath11k/hw.h
Falling back to patching base and 3-way merge...
Auto-merging drivers/net/wireless/ath/ath11k/hw.h
CONFLICT (content): Merge conflict in drivers/net/wireless/ath/ath11k/hw.h
Auto-merging drivers/net/wireless/ath/ath11k/dp.h
Auto-merging drivers/net/wireless/ath/ath11k/dp.c
Auto-merging drivers/net/wireless/ath/ath11k/core.c
CONFLICT (content): Merge conflict in drivers/net/wireless/ath/ath11k/core.c
Recorded preimage for 'drivers/net/wireless/ath/ath11k/core.c'
Recorded preimage for 'drivers/net/wireless/ath/ath11k/hw.h'
error: Failed to merge in the changes.
Patch failed at 0002 ath11k: allocate dst ring descriptors from cacheable memory


Applying: ath11k: modify dp_rx desc access wrapper calls inline
Using index info to reconstruct a base tree...
M	drivers/net/wireless/ath/ath11k/dp_rx.c
Falling back to patching base and 3-way merge...
Auto-merging drivers/net/wireless/ath/ath11k/dp_rx.c
CONFLICT (content): Merge conflict in drivers/net/wireless/ath/ath11k/dp_rx.c
Recorded preimage for 'drivers/net/wireless/ath/ath11k/dp_rx.c'
error: Failed to merge in the changes.
Patch failed at 0003 ath11k: modify dp_rx desc access wrapper calls inline

Applying: ath11k: avoid additional access to ath11k_hal_srng_dst_num_free
Using index info to reconstruct a base tree...
M	drivers/net/wireless/ath/ath11k/dp_rx.c
Falling back to patching base and 3-way merge...
Auto-merging drivers/net/wireless/ath/ath11k/dp_rx.c
Applying: ath11k: avoid active pdev check for each msdu
Using index info to reconstruct a base tree...
M	drivers/net/wireless/ath/ath11k/dp_rx.c
Falling back to patching base and 3-way merge...
Auto-merging drivers/net/wireless/ath/ath11k/dp_rx.c
CONFLICT (content): Merge conflict in drivers/net/wireless/ath/ath11k/dp_rx.c
Recorded preimage for 'drivers/net/wireless/ath/ath11k/dp_rx.c'
error: Failed to merge in the changes.
Patch failed at 0005 ath11k: avoid active pdev check for each msdu

Applying: ath11k: remove usage quota while processing rx packets
Using index info to reconstruct a base tree...
M	drivers/net/wireless/ath/ath11k/dp_rx.c
Falling back to patching base and 3-way merge...
Auto-merging drivers/net/wireless/ath/ath11k/dp_rx.c
CONFLICT (content): Merge conflict in drivers/net/wireless/ath/ath11k/dp_rx.c
Recorded preimage for 'drivers/net/wireless/ath/ath11k/dp_rx.c'
error: Failed to merge in the changes.
Patch failed at 0006 ath11k: remove usage quota while processing rx packets

Applying: ath11k: add branch predictors in process_rx
Using index info to reconstruct a base tree...
M	drivers/net/wireless/ath/ath11k/dp_rx.c
Falling back to patching base and 3-way merge...
Auto-merging drivers/net/wireless/ath/ath11k/dp_rx.c
CONFLICT (content): Merge conflict in drivers/net/wireless/ath/ath11k/dp_rx.c
Recorded preimage for 'drivers/net/wireless/ath/ath11k/dp_rx.c'
error: Failed to merge in the changes.
Patch failed at 0007 ath11k: add branch predictors in process_rx

Applying: ath11k: avoid while loop in ring selection of tx completion interrupt
error: sha1 information is lacking or useless (drivers/net/wireless/ath/ath11k/dp.c).
error: could not build fake ancestor
Patch failed at 0010 ath11k: avoid while loop in ring selection of tx completion interrupt

Applying: ath11k: add branch predictors in dp_tx path
Using index info to reconstruct a base tree...
M	drivers/net/wireless/ath/ath11k/dp_tx.c
M	drivers/net/wireless/ath/ath11k/mac.c
Falling back to patching base and 3-way merge...
Auto-merging drivers/net/wireless/ath/ath11k/mac.c
CONFLICT (content): Merge conflict in drivers/net/wireless/ath/ath11k/mac.c
Auto-merging drivers/net/wireless/ath/ath11k/dp_tx.c
CONFLICT (content): Merge conflict in drivers/net/wireless/ath/ath11k/dp_tx.c
Recorded preimage for 'drivers/net/wireless/ath/ath11k/dp_tx.c'
Recorded preimage for 'drivers/net/wireless/ath/ath11k/mac.c'
error: Failed to merge in the changes.
Patch failed at 0011 ath11k: add branch predictors in dp_tx path