[PATCH 2/2] ath10k: make core registering async

Michal Kazior michal.kazior at tieto.com
Fri May 23 00:13:09 PDT 2014


On 22 May 2014 18:42, Kalle Valo <kvalo at qca.qualcomm.com> wrote:
> Michal Kazior <michal.kazior at tieto.com> writes:
>
>> If ath10k was built into the kernel it could stall
>> booting for 120 seconds by default (60 seconds for
>> each firmware API variant) waiting for firmware
>> files before userspace was ready or filesystems
>> mounted.
>>
>> Fix this by making the core registering
>> asynchronous.
>>
>> This also shoves off about 1 second from boot time
>> on most systems since the driver is now mostly
>> initialized in a worker and modprobe takes very
>> little time to complete.
>>
>> As a side effect there's no way to propagate
>> registering errors to the pci subsystem but this
>> probably isn't really necessary.
>>
>> Signed-off-by: Michal Kazior <michal.kazior at tieto.com>
>
> [...]
>
>> --- a/drivers/net/wireless/ath/ath10k/pci.c
>> +++ b/drivers/net/wireless/ath/ath10k/pci.c
>> @@ -2758,8 +2758,6 @@ static void ath10k_pci_remove(struct pci_dev *pdev)
>>       if (!ar_pci)
>>               return;
>>
>> -     tasklet_kill(&ar_pci->msi_fw_err);
>
> Why this? That's not obvious to me.

It might end up not being initialized: If you, say, quickly insert and
eject a device you might not even initialize the tasklet (it's done
elsewhere; I suppose we could move it too) before ath10k_pci_remove()
is called. Also the tasklet is already killed elsewhere on the
teardown code path.

I'll split it into a separate patch that simply removes this line as
it's meaningless to call it here in the first place.


Michał



More information about the ath10k mailing list