svn commit: r298612 - head/sys/dev/iwm
Warner Losh
imp at bsdimp.com
Tue Apr 26 05:21:46 UTC 2016
On Mon, Apr 25, 2016 at 10:45 PM, Ravi Pokala <rpokala at mac.com> wrote:
> > do_stop = !! (sc->sc_ic.ic_nrunning > 0);
>
> Why the double-negation? Isn't
>
> do_stop = (sc->sc_ic.ic_nrunning > 0);
>
> equivalent?
>
It is. However the !! style is from Linux. It converts a bit value to a 0/1
value. Since
foo > 0 already is a Boolean, it isn't needed here.
Warner
> -Ravi (rpokala@)
>
>
>
> -----Original Message-----
> From: <owner-src-committers at freebsd.org> on behalf of Adrian Chadd
> <adrian at FreeBSD.org>
> Date: 2016-04-25, Monday at 21:40
> To: <src-committers at freebsd.org>, <svn-src-all at freebsd.org>, <
> svn-src-head at freebsd.org>
> Subject: svn commit: r298612 - head/sys/dev/iwm
>
> >Author: adrian
> >Date: Tue Apr 26 04:40:59 2016
> >New Revision: 298612
> >URL: https://svnweb.freebsd.org/changeset/base/298612
> >
> >Log:
> > [iwm] implement suspend/resume through ieee80211_{suspend,resume}_all
> >
> > This allows wifi to associate correctly after a suspend/resume cycle.
> >
> > Yes, I'm using this now day to day.
> >
> > Tested:
> >
> > * Intel 7260AC, STA mode
> >
> >Modified:
> > head/sys/dev/iwm/if_iwm.c
> > head/sys/dev/iwm/if_iwmvar.h
> >
> >Modified: head/sys/dev/iwm/if_iwm.c
>
> >==============================================================================
> >--- head/sys/dev/iwm/if_iwm.c Tue Apr 26 03:24:28 2016 (r298611)
> >+++ head/sys/dev/iwm/if_iwm.c Tue Apr 26 04:40:59 2016 (r298612)
> >@@ -4934,6 +4934,8 @@ iwm_init_task(void *arg1)
> > static int
> > iwm_resume(device_t dev)
> > {
> >+ struct iwm_softc *sc = device_get_softc(dev);
> >+ int do_reinit = 0;
> > uint16_t reg;
> >
> > /* Clear device-specific "PCI retry timeout" register (41h). */
> >@@ -4941,17 +4943,33 @@ iwm_resume(device_t dev)
> > pci_write_config(dev, 0x40, reg & ~0xff00, sizeof(reg));
> > iwm_init_task(device_get_softc(dev));
> >
> >+ IWM_LOCK(sc);
> >+ if (sc->sc_flags & IWM_FLAG_DORESUME) {
> >+ sc->sc_flags &= ~IWM_FLAG_DORESUME;
> >+ do_reinit = 1;
> >+ }
> >+ IWM_UNLOCK(sc);
> >+
> >+ if (do_reinit)
> >+ ieee80211_resume_all(&sc->sc_ic);
> >+
> > return 0;
> > }
> >
> > static int
> > iwm_suspend(device_t dev)
> > {
> >+ int do_stop = 0;
> > struct iwm_softc *sc = device_get_softc(dev);
> >
> >- if (sc->sc_ic.ic_nrunning > 0) {
> >+ do_stop = !! (sc->sc_ic.ic_nrunning > 0);
> >+
> >+ ieee80211_suspend_all(&sc->sc_ic);
> >+
> >+ if (do_stop) {
> > IWM_LOCK(sc);
> > iwm_stop(sc);
> >+ sc->sc_flags |= IWM_FLAG_DORESUME;
> > IWM_UNLOCK(sc);
> > }
> >
> >
> >Modified: head/sys/dev/iwm/if_iwmvar.h
>
> >==============================================================================
> >--- head/sys/dev/iwm/if_iwmvar.h Tue Apr 26 03:24:28 2016
> (r298611)
> >+++ head/sys/dev/iwm/if_iwmvar.h Tue Apr 26 04:40:59 2016
> (r298612)
> >@@ -405,6 +405,7 @@ struct iwm_softc {
> > #define IWM_FLAG_STOPPED (1 << 2)
> > #define IWM_FLAG_RFKILL (1 << 3)
> > #define IWM_FLAG_BUSY (1 << 4)
> >+#define IWM_FLAG_DORESUME (1 << 5)
> >
> > struct intr_config_hook sc_preinit_hook;
> > struct callout sc_watchdog_to;
> >
>
>
>
More information about the svn-src-all
mailing list