ath10k: optimize ce_lock on post rx buffer processing
authorRajkumar Manoharan <rmanohar@qti.qualcomm.com>
Tue, 6 Oct 2015 12:19:33 +0000 (15:19 +0300)
committerKalle Valo <kvalo@qca.qualcomm.com>
Fri, 9 Oct 2015 08:35:47 +0000 (11:35 +0300)
commitab4e3db043589204041c00272f751d05b4e52c50
tree6829c58ebb20981027d19a7a1c3e4d6f33a9370c
parent39b91b8144e028cbe383548f76c1f8cdb7977532
ath10k: optimize ce_lock on post rx buffer processing

After processing received packets from copy engine, host will allocate
new buffer and queue them back to copy engine ring for further
packet reception. On post rx processing path, skb allocation and
dma mapping are unnecessarily handled within ce_lock. This is affecting
peak throughput and also causing more CPU consumption. Optimize this
by acquiring ce_lock only when accessing copy engine ring and moving
skb allocation out of ce_lock.

In AP148 platform with QCA99x0 in conducted environment, UDP uplink peak
throughput is improved from ~1320 Mbps to ~1450 Mbps and TCP uplink peak
throughput is increased from ~1240 Mbps (70% host CPU load) to ~1300 Mbps
(71% CPU load). Similarly ~40Mbps improvement is observed in downlink
path.

Signed-off-by: Rajkumar Manoharan <rmanohar@qti.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
drivers/net/wireless/ath/ath10k/ce.c
drivers/net/wireless/ath/ath10k/pci.c