[RFC] ath10k: change to do napi_enable and napi_disable when insmod and rmmod for sdio

Wen Gong wgong at codeaurora.org
Thu Aug 20 06:20:46 EDT 2020


On 2020-08-20 17:26, Krishna Chaitanya wrote:
> On Thu, Aug 20, 2020 at 2:49 PM Krishna Chaitanya
> <chaitanya.mgit at gmail.com> wrote:
>> 
>> On Thu, Aug 20, 2020 at 2:03 PM Kalle Valo <kvalo at codeaurora.org> 
>> wrote:
>> >
>> > Wen Gong <wgong at codeaurora.org> writes:
>> >
...
>> > I'm not really convinced that this is the right fix, but I'm no NAPI
>> > expert. Can anyone else help?
>> Calling napi_disable() twice can lead to hangs, but moving NAPI from
>> start/stop to
>> the probe isn't the right approach as the datapath is tied to 
>> start/stop.
>> 
>> Maybe check the state of NAPI before disable?
>> 
>>  if (test_bit(NAPI_STATE_SCHED, &ar->napi.napi.state))
>>   napi_disable(&ar->napi)
>> 
>> or maintain napi_state like this 
>> https://patchwork.kernel.org/patch/10249365/
>> 
>> Also, the most common cause for such issues (1st
>> napi_synchronize/napi_disable hang)
>> is that napi_poll is being scheduled, so, you might want to check that
>> napi_schedule isn't
>> called after stop.
>> 
>> cd ath10k; git log --grep=napi shows plenty of such issues. the one
>> that matches closest is
>> c2cac2f74ab4bcf0db0dcf3a612f1e5b52d145c8, so, it could just be a 
>> regression.
> Also, I see that napi_schedule() is being called from work_queue 
> async_work_rx
> so we should cancel that work in hif_stop before calling 
> napi_synchronize.
Yes, I will do that in a new patch.



More information about the ath10k mailing list