ath10k: implement NAPI support
Kalle Valo
kvalo at qca.qualcomm.com
Fri Jul 8 07:29:53 PDT 2016
Rajkumar Manoharan <rmanohar at qti.qualcomm.com> wrote:
> Add NAPI support for rx and tx completion. NAPI poll is scheduled
> from interrupt handler. The design is as below
>
> - on interrupt
> - schedule napi and mask interrupts
> - on poll
> - process all pipes (no actual Tx/Rx)
> - process Rx within budget
> - if quota exceeds budget reschedule napi poll by returning budget
> - process Tx completions and update budget if necessary
> - process Tx fetch indications (pull-push)
> - push any other pending Tx (if possible)
> - before resched or napi completion replenish htt rx ring buffer
> - if work done < budget, complete napi poll and unmask interrupts
>
> This change also get rid of two tasklets (intr_tq and txrx_compl_task).
>
> Measured peak throughput with NAPI on IPQ4019 platform in controlled
> environment. No noticeable reduction in throughput is seen and also
> observed improvements in CPU usage. Approx. 15% CPU usage got reduced
> in UDP uplink case.
>
> DL: AP DUT Tx
> UL: AP DUT Rx
>
> IPQ4019 (avg. cpu usage %)
>
> ========
> TOT +NAPI
> =========== =============
> TCP DL 644 Mbps (42%) 645 Mbps (36%)
> TCP UL 673 Mbps (30%) 675 Mbps (26%)
> UDP DL 682 Mbps (49%) 680 Mbps (49%)
> UDP UL 720 Mbps (28%) 717 Mbps (11%)
>
> Signed-off-by: Rajkumar Manoharan <rmanohar at qti.qualcomm.com>
This is quite big change and I'm planning to queue this for 4.9. So I'm not
applying this quite yet.
--
Sent by pwcli
https://patchwork.kernel.org/patch/9199911/
More information about the ath10k
mailing list