[PATCH 1/3] ath11k: Enable threaded NAPI on WCN6750

Manikanta Pubbisetty quic_mpubbise at quicinc.com
Fri Sep 2 06:42:22 PDT 2022


On 9/2/2022 6:50 PM, Robert Marko wrote:
> On Fri, Sep 2, 2022 at 3:18 PM Manikanta Pubbisetty
> <quic_mpubbise at quicinc.com> wrote:
>>
>> On 9/2/2022 6:18 PM, Kalle Valo wrote:
>>> Manikanta Pubbisetty <quic_mpubbise at quicinc.com> writes:
>>>
>>>> Enable threaded NAPI on WCN6750. Unlike traditional NAPI poll which
>>>> runs in softirq context and on the core which scheduled the NAPI,
>>>> threaded NAPI makes use of kernel threads which are under direct
>>>> control of the scheduler and helps in balancing the NAPI processing
>>>> load across multiple CPUs thereby improving throughput.
>>>>
>>>> In the case of WCN6750, enabling threaded NAPI has improved
>>>> 160 MHz RX throughput by nearly 400 Mbps. This should give similar
>>>> gains for other ath11k devices as well, therefore enable threaded
>>>> NAPI on all other devices.
>>>>
>>>> Tested-on: WCN6750 hw1.0 AHB WLAN.MSL.1.0.1-00887-QCAMSLSWPLZ-1
>>>>
>>>> Signed-off-by: Manikanta Pubbisetty <quic_mpubbise at quicinc.com>
>>>> ---
>>>>    drivers/net/wireless/ath/ath11k/ahb.c  | 1 +
>>>>    drivers/net/wireless/ath/ath11k/pcic.c | 1 +
>>>>    2 files changed, 2 insertions(+)
>>>>
>>>> diff --git a/drivers/net/wireless/ath/ath11k/ahb.c b/drivers/net/wireless/ath/ath11k/ahb.c
>>>> index d7d33d5cdfc5..e44e2f29a88f 100644
>>>> --- a/drivers/net/wireless/ath/ath11k/ahb.c
>>>> +++ b/drivers/net/wireless/ath/ath11k/ahb.c
>>>> @@ -314,6 +314,7 @@ static void ath11k_ahb_ext_irq_enable(struct ath11k_base *ab)
>>>>               struct ath11k_ext_irq_grp *irq_grp = &ab->ext_irq_grp[i];
>>>>
>>>>               if (!irq_grp->napi_enabled) {
>>>> +                    dev_set_threaded(&irq_grp->napi_ndev, true);
>>>>                       napi_enable(&irq_grp->napi);
>>>>                       irq_grp->napi_enabled = true;
>>>>               }
>>>> diff --git a/drivers/net/wireless/ath/ath11k/pcic.c b/drivers/net/wireless/ath/ath11k/pcic.c
>>>> index cf12b98c480d..c703db19de51 100644
>>>> --- a/drivers/net/wireless/ath/ath11k/pcic.c
>>>> +++ b/drivers/net/wireless/ath/ath11k/pcic.c
>>>> @@ -440,6 +440,7 @@ void ath11k_pcic_ext_irq_enable(struct ath11k_base *ab)
>>>>               struct ath11k_ext_irq_grp *irq_grp = &ab->ext_irq_grp[i];
>>>>
>>>>               if (!irq_grp->napi_enabled) {
>>>> +                    dev_set_threaded(&irq_grp->napi_ndev, true);
>>>>                       napi_enable(&irq_grp->napi);
>>>>                       irq_grp->napi_enabled = true;
>>>>               }
>>>
>>> The commit log claims that this enabled _only_ on WCN6750 but aren't we
>>> enabling it on all ath11k hardware, or am I missing something? I admit I
>>> didn't check this very carefully.
>>>
>>> (reads the commit log one more time)
>>>
>>> Ah, in the last sentence you mention that it's enabled on all hardware.
>>> That's quite easy to miss and the commit log is quite misleading, please
>>> emphasise already in the title and the first sentence that this is for
>>> all hardware.
>>
>> My Bad, yes you right. The patch was made initially only for WCN6750 and
>> was enabled later for all devices.
>>
>>>
>>> Also more testing would be nice. Enabling something like this with
>>> testing only on one hardware family (WCN7850) can be risky. I always get
>>> warm fuzzy feelings if a patch is tested with all three hardware
>>> families we currently support:
>>>
>>> * IPQ8074 etc
>>> * QCA6390 etc
>>> * WCN7850
>>>
>>
>> WCN7850 should be an ath12k device If I'm correct.
>>
>> Regardless of the chip family, even I feel that the tput changes like
>> these should be tested on all the chipsets. Availability of the hardware
>> and time are something which are stopping me in testing the changes on
>> all supported targets.
>>
>> As I said, I had made the changes only to WCN6750 initially (using a
>> hw_param). Can we take that approach for now and enable this for other
>> targets only if required & upon thorough testing?
> 
> I can tell you that on IPQ8074 threaded NAPI really improves perfromance.
> 

Great. Do you have any test results on IPQ8074?

Thanks,
Manikanta



More information about the ath11k mailing list