On 7 August 2014 11:05, Michal Kazior <[email protected]> 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 <[email protected]>
> ---
>  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Ƃ

_______________________________________________
ath10k mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/ath10k

Reply via email to