Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 25 Apr 2016 23:21:45 -0600
From:      Warner Losh <imp@bsdimp.com>
To:        Ravi Pokala <rpokala@mac.com>
Cc:        Adrian Chadd <adrian@freebsd.org>, src-committers <src-committers@freebsd.org>,  "svn-src-all@freebsd.org" <svn-src-all@freebsd.org>,  "svn-src-head@freebsd.org" <svn-src-head@freebsd.org>
Subject:   Re: svn commit: r298612 - head/sys/dev/iwm
Message-ID:  <CANCZdfohyc=D_ByGgxCfKAaHiGr2OKTvKaB3D0nS8juakzbqPg@mail.gmail.com>
In-Reply-To: <CF29216E-35B0-491D-B08B-DEE825D7A628@panasas.com>
References:  <201604260440.u3Q4exZD045896@repo.freebsd.org> <CF29216E-35B0-491D-B08B-DEE825D7A628@panasas.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, Apr 25, 2016 at 10:45 PM, Ravi Pokala <rpokala@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@freebsd.org> on behalf of Adrian Chadd
> <adrian@FreeBSD.org>
> Date: 2016-04-25, Monday at 21:40
> To: <src-committers@freebsd.org>, <svn-src-all@freebsd.org>, <
> svn-src-head@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;
> >
>
>
>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CANCZdfohyc=D_ByGgxCfKAaHiGr2OKTvKaB3D0nS8juakzbqPg>