emx: Pack boolean fields into flags
authorSepherosa Ziehau <sephe@dragonflybsd.org>
Tue, 14 Aug 2012 08:48:41 +0000 (16:48 +0800)
committerSepherosa Ziehau <sephe@dragonflybsd.org>
Tue, 14 Aug 2012 08:48:41 +0000 (16:48 +0800)
sys/dev/netif/emx/if_emx.c
sys/dev/netif/emx/if_emx.h

index 1a56c4b..5d254b1 100644 (file)
@@ -624,7 +624,8 @@ emx_attach(device_t dev)
        }
 
        /* Determine if we have to control management hardware */
        }
 
        /* 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
 
        /*
         * Setup Wake-on-Lan
@@ -633,7 +634,7 @@ emx_attach(device_t dev)
        eeprom_data = 0;
        switch (sc->hw.mac.type) {
        case e1000_82573:
        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:
                /* 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 */
                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);
 
        /*
                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 */
                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 */
                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 */
 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);
 
                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)
 {
 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 */
                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);
        }
                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)
 {
 static void
 emx_rel_hw_control(struct emx_softc *sc)
 {
-       if (!sc->control_hw)
+       if ((sc->flags & EMX_FLAG_HW_CTRL) == 0)
                return;
                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) {
 
        /* Let firmware taken over control of h/w */
        if (sc->hw.mac.type == e1000_82573) {
index b94013e..d57e4c9 100644 (file)
@@ -233,8 +233,11 @@ struct emx_softc {
        struct arpcom           arpcom;
        struct e1000_hw         hw;
        int                     flags;
        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;
 
        /* DragonFly operating-system-specific structures. */
        struct e1000_osdep      osdep;
@@ -260,11 +263,8 @@ struct emx_softc {
        int                     max_frame_size;
        int                     min_frame_size;
 
        int                     max_frame_size;
        int                     min_frame_size;
 
-       /* Management and WOL features */
+       /* WOL register value */
        int                     wol;
        int                     wol;
-       int                     has_manage;
-       int                     has_amt;
-       int                     control_hw;
 
        /* Multicast array memory */
        uint8_t                 *mta;
 
        /* Multicast array memory */
        uint8_t                 *mta;