From: Sepherosa Ziehau Date: Tue, 14 Aug 2012 08:48:41 +0000 (+0800) Subject: emx: Pack boolean fields into flags X-Git-Tag: v3.2.0~402 X-Git-Url: https://gitweb.dragonflybsd.org/dragonfly.git/commitdiff_plain/de0836d42039401c09d30086dbf51fa5c642d3ee?ds=sidebyside emx: Pack boolean fields into flags --- diff --git a/sys/dev/netif/emx/if_emx.c b/sys/dev/netif/emx/if_emx.c index 1a56c4bb7e..5d254b18a5 100644 --- a/sys/dev/netif/emx/if_emx.c +++ b/sys/dev/netif/emx/if_emx.c @@ -624,7 +624,8 @@ emx_attach(device_t dev) } /* Determine if we have to control management hardware */ - sc->has_manage = e1000_enable_mng_pass_thru(&sc->hw); + if (e1000_enable_mng_pass_thru(&sc->hw)) + sc->flags |= EMX_FLAG_HAS_MGMT; /* * Setup Wake-on-Lan @@ -633,7 +634,7 @@ emx_attach(device_t dev) eeprom_data = 0; switch (sc->hw.mac.type) { case e1000_82573: - sc->has_amt = 1; + sc->flags |= EMX_FLAG_HAS_AMT; /* FALL THROUGH */ case e1000_82571: @@ -726,7 +727,8 @@ emx_attach(device_t dev) sc->tx_int_nsegs = sc->oact_tx_desc; /* Non-AMT based hardware can now take control from firmware */ - if (sc->has_manage && !sc->has_amt) + if ((sc->flags & (EMX_FLAG_HAS_MGMT | EMX_FLAG_HAS_AMT)) == + EMX_FLAG_HAS_MGMT) emx_get_hw_control(sc); /* @@ -1232,7 +1234,8 @@ emx_init(void *xsc) emx_enable_intr(sc); /* AMT based hardware can now take control from firmware */ - if (sc->has_manage && sc->has_amt) + if ((sc->flags & (EMX_FLAG_HAS_MGMT | EMX_FLAG_HAS_AMT)) == + (EMX_FLAG_HAS_MGMT | EMX_FLAG_HAS_AMT)) emx_get_hw_control(sc); /* Don't reset the phy next time init gets called */ @@ -2979,7 +2982,7 @@ static void emx_get_mgmt(struct emx_softc *sc) { /* A shared code workaround */ - if (sc->has_manage) { + if (sc->flags & EMX_FLAG_HAS_MGMT) { int manc2h = E1000_READ_REG(&sc->hw, E1000_MANC2H); int manc = E1000_READ_REG(&sc->hw, E1000_MANC); @@ -3005,7 +3008,7 @@ emx_get_mgmt(struct emx_softc *sc) static void emx_rel_mgmt(struct emx_softc *sc) { - if (sc->has_manage) { + if (sc->flags & EMX_FLAG_HAS_MGMT) { int manc = E1000_READ_REG(&sc->hw, E1000_MANC); /* re-enable hardware interception of ARP */ @@ -3039,7 +3042,7 @@ emx_get_hw_control(struct emx_softc *sc) E1000_WRITE_REG(&sc->hw, E1000_CTRL_EXT, ctrl_ext | E1000_CTRL_EXT_DRV_LOAD); } - sc->control_hw = 1; + sc->flags |= EMX_FLAG_HW_CTRL; } /* @@ -3051,9 +3054,9 @@ emx_get_hw_control(struct emx_softc *sc) static void emx_rel_hw_control(struct emx_softc *sc) { - if (!sc->control_hw) + if ((sc->flags & EMX_FLAG_HW_CTRL) == 0) return; - sc->control_hw = 0; + sc->flags &= ~EMX_FLAG_HW_CTRL; /* Let firmware taken over control of h/w */ if (sc->hw.mac.type == e1000_82573) { diff --git a/sys/dev/netif/emx/if_emx.h b/sys/dev/netif/emx/if_emx.h index b94013e400..d57e4c928e 100644 --- a/sys/dev/netif/emx/if_emx.h +++ b/sys/dev/netif/emx/if_emx.h @@ -233,8 +233,11 @@ struct emx_softc { struct arpcom arpcom; struct e1000_hw hw; int flags; -#define EMX_FLAG_SHARED_INTR 0x1 -#define EMX_FLAG_TSO_PULLEX 0x2 +#define EMX_FLAG_SHARED_INTR 0x0001 +#define EMX_FLAG_TSO_PULLEX 0x0002 +#define EMX_FLAG_HAS_MGMT 0x0004 +#define EMX_FLAG_HAS_AMT 0x0008 +#define EMX_FLAG_HW_CTRL 0x0010 /* DragonFly operating-system-specific structures. */ struct e1000_osdep osdep; @@ -260,11 +263,8 @@ struct emx_softc { int max_frame_size; int min_frame_size; - /* Management and WOL features */ + /* WOL register value */ int wol; - int has_manage; - int has_amt; - int control_hw; /* Multicast array memory */ uint8_t *mta;