[PATCH 2/5] ath10k: dont reset the chip on hif_stop

Michal Kazior michal.kazior at tieto.com
Fri Aug 8 02:14:29 PDT 2014


On 7 August 2014 11:05, Michal Kazior <michal.kazior at tieto.com> wrote:
> The copy engine structures are never changed until
> driver unregisters the device so it is not
> necessary to reset the device chip anymore when
> stopping.
>
> This reduces driver register time approx. by 200ms.
>
> Signed-off-by: Michal Kazior <michal.kazior at tieto.com>
> ---
>  drivers/net/wireless/ath/ath10k/pci.c | 7 -------
>  1 file changed, 7 deletions(-)
>
> diff --git a/drivers/net/wireless/ath/ath10k/pci.c b/drivers/net/wireless/ath/ath10k/pci.c
> index 7efcf8e..6a5ca9e 100644
> --- a/drivers/net/wireless/ath/ath10k/pci.c
> +++ b/drivers/net/wireless/ath/ath10k/pci.c
> @@ -1192,13 +1192,6 @@ static void ath10k_pci_hif_stop(struct ath10k *ar)
>
>         ath10k_pci_buffer_cleanup(ar);
>
> -       /* Make the sure the device won't access any structures on the host by
> -        * resetting it. The device was fed with PCI CE ringbuffer
> -        * configuration during init. If ringbuffers are freed and the device
> -        * were to access them this could lead to memory corruption on the
> -        * host. */
> -       ath10k_pci_warm_reset(ar);
> -
>         ar_pci->started = 0;

If firmware crashes it doesn't necessarily mean hardware has crashed
as well. Since htt rx ring dma buffer is fed directly to hardware it
can still be accessed even after firmware has crashed (e.g. receive
beacons in station mode). This means calling hif_stop must guarantee
to stop hardware completely or else it might corrupt host memory
(notably sk_buffs; pretty badly - I've been hitting general protection
faults randomly and was puzzled at first).

Thus this patch has to be dropped (I'll probably replace it with a
patch to update the comment only).


Michał



More information about the ath10k mailing list