Re: [PATCH 2/3] wifi: ath12k: Optimize the lock contention of used list in Rx data path

Kalle Valo
2024-03-19T16:44:14Z

Karthikeyan Periyasamy <quic_periyasa@quicinc.com> writes:

> On 3/18/2024 11:39 PM, Kalle Valo wrote:
>
>> Karthikeyan Periyasamy <quic_periyasa@quicinc.com> writes:
>>
>>> On 3/11/2024 6:35 PM, Kalle Valo wrote:
>>>> Karthikeyan Periyasamy <quic_periyasa@quicinc.com> writes:
>>>>
>>>>> When a packet arrives in Rx rings, the RX descriptor moves from the used
>>>>> list to the free list. Then, the rxdma ring gets replenished, where the Rx
>>>>> descriptor again moves from the free list to the used list. At the end, the
>>>>> descriptor came to the used list with unnecessary list movement. The
>>>>> descriptor used list is maintained in the Rxdma ring structure, which
>>>>> creates lock contention for the list operations (add, delete) in the Rx
>>>>> data path. Optimize the Rx data path by removing the used list from the
>>>>> common Rxdma ring and maintain as a local variable in the Rx ring handler
>>>>> itself, which avoid lock contention. Now, to find the used list descriptor
>>>>> during descriptor cleanup, we need to check the in_use flag for each Rx
>>>>> descriptor.
>>>>>
>>>>> Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.0.1-00029-QCAHKSWPL_SILICONZ-1
>>>>>
>>>>> Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
>>>> Before looking at this in detail: When optimising something it would be
>>>> good to have before and after numbers showing the improvement. Otherwise
>>>> it's just wishful thinking.
>>> I don't have numbers. Like you said, Its just a wishful think.
>> So do you still want us to take this?
>>
>> In the future please do provide numbers to show that the optimisation
>> really helps as intended. Otherwise we might even go backwards.
>
> This is a simple UDP UL throughput test case results on x86+NUC device
> with QCN9274 card
>
> Before:
> Average:     CPU    %usr   %nice    %sys %iowait    %irq   %soft
> %steal  %guest  %gnice   %idle
> Average:     all    0.24    0.00   12.54    0.08    0.00 23.33
> 0.00    0.00    0.00   63.81
>
> After:
> Average:     CPU    %usr   %nice    %sys %iowait    %irq   %soft
> %steal  %guest  %gnice   %idle
> Average:     all    0.34    0.00    4.60    0.00    0.00 19.59
> 0.00    0.00    0.00   75.47
>
> is it fine to capture in the commit log ?

Thanks, exactly something like that helps to show that the optimisation
is helping. Please also include your analysis of the results in the
commit message.

--