On Mon, Apr 01, 2019 at 11:40:51AM +0200, Klemens Nanni wrote:
> As promised in my earlier mail, here's a diff that fixes seemless
> operation with the hardware kill switch on resume after suspend.
> 
> Like the interrupt handler, the resume path needs to check the register
> to update flags in order to propagate the hardware kill switch state,
> otherwise the driver would still consider the switch to be off after
> resume even though it may have changed while in S3.
> 
> The same idiom can be found in iwm_start_hw() already; it's pretty
> obvious by now.
> 
> With that, the following works just fine:
> 
> UP and RUNNING
> RF switch off
> suspend
> RF switch -> on
> resume
> UP and RUNNING again
> 
> OK?

Yes, looks good.

> Index: if_iwm.c
> ===================================================================
> RCS file: /cvs/src/sys/dev/pci/if_iwm.c,v
> retrieving revision 1.237
> diff -u -p -r1.237 if_iwm.c
> --- if_iwm.c  27 Feb 2019 07:47:57 -0000      1.237
> +++ if_iwm.c  1 Apr 2019 09:20:05 -0000
> @@ -7892,6 +7889,9 @@ iwm_resume(struct iwm_softc *sc)
>       /* Clear device-specific "PCI retry timeout" register (41h). */
>       reg = pci_conf_read(sc->sc_pct, sc->sc_pcitag, 0x40);
>       pci_conf_write(sc->sc_pct, sc->sc_pcitag, 0x40, reg & ~0xff00);
> +
> +     iwm_enable_rfkill_int(sc);
> +     iwm_check_rfkill(sc);
>  
>       return iwm_prepare_card_hw(sc);
>  }
> 

Reply via email to