Author: yongari
Date: Sun Nov 28 01:43:28 2010
New Revision: 215968
URL: http://svn.freebsd.org/changeset/base/215968

Log:
  Introduce new macro AXE_IS_178_FAMILY and AXE_IS_772. Include
  AX88772A and AX88772B for future extension. While here add TX
  buffer size for 178 family controllers.

Modified:
  head/sys/dev/usb/net/if_axe.c
  head/sys/dev/usb/net/if_axereg.h

Modified: head/sys/dev/usb/net/if_axe.c
==============================================================================
--- head/sys/dev/usb/net/if_axe.c       Sun Nov 28 01:18:11 2010        
(r215967)
+++ head/sys/dev/usb/net/if_axe.c       Sun Nov 28 01:43:28 2010        
(r215968)
@@ -302,7 +302,7 @@ axe_miibus_readreg(device_t dev, int phy
        axe_cmd(sc, AXE_CMD_MII_OPMODE_HW, 0, 0, NULL);
 
        val = le16toh(val);
-       if ((sc->sc_flags & AXE_FLAG_772) != 0 && reg == MII_BMSR) {
+       if (AXE_IS_772(sc) && reg == MII_BMSR) {
                /*
                 * BMSR of AX88772 indicates that it supports extended
                 * capability but the extended status register is
@@ -384,7 +384,7 @@ axe_miibus_statchg(device_t dev)
        val = 0;
        if ((IFM_OPTIONS(mii->mii_media_active) & IFM_FDX) != 0)
                val |= AXE_MEDIA_FULL_DUPLEX;
-       if (sc->sc_flags & (AXE_FLAG_178 | AXE_FLAG_772)) {
+       if (AXE_IS_178_FAMILY(sc)) {
                val |= AXE_178_MEDIA_RX_EN | AXE_178_MEDIA_MAGIC;
                if ((sc->sc_flags & AXE_FLAG_178) != 0)
                        val |= AXE_178_MEDIA_ENCK;
@@ -700,15 +700,18 @@ axe_attach_post(struct usb_ether *ue)
                sc->sc_phyno = 0;
        }
 
-       if (sc->sc_flags & AXE_FLAG_178)
+       if (sc->sc_flags & AXE_FLAG_178) {
                axe_ax88178_init(sc);
-       else if (sc->sc_flags & AXE_FLAG_772)
+               sc->sc_tx_bufsz = 16 * 1024;
+       } else if (sc->sc_flags & AXE_FLAG_772) {
                axe_ax88772_init(sc);
+               sc->sc_tx_bufsz = 8 * 1024;
+       }
 
        /*
         * Get station address.
         */
-       if (sc->sc_flags & (AXE_FLAG_178 | AXE_FLAG_772))
+       if (AXE_IS_178_FAMILY(sc))
                axe_cmd(sc, AXE_178_CMD_READ_NODEID, 0, 0, ue->ue_eaddr);
        else
                axe_cmd(sc, AXE_172_CMD_READ_NODEID, 0, 0, ue->ue_eaddr);
@@ -819,7 +822,7 @@ axe_bulk_read_callback(struct usb_xfer *
                err = 0;
 
                pc = usbd_xfer_get_frame(xfer, 0);
-               if (sc->sc_flags & (AXE_FLAG_772 | AXE_FLAG_178)) {
+               if (AXE_IS_178_FAMILY(sc)) {
                        while (pos < actlen) {
                                if ((pos + sizeof(hdr)) > actlen) {
                                        /* too little data */
@@ -916,7 +919,7 @@ tr_setup:
                        if (m->m_pkthdr.len > MCLBYTES) {
                                m->m_pkthdr.len = MCLBYTES;
                        }
-                       if (sc->sc_flags & (AXE_FLAG_772 | AXE_FLAG_178)) {
+                       if (AXE_IS_178_FAMILY(sc)) {
 
                                hdr.len = htole16(m->m_pkthdr.len);
                                hdr.ilen = ~hdr.len;
@@ -955,7 +958,7 @@ tr_setup:
 
                        m_freem(m);
 
-                       if (sc->sc_flags & (AXE_FLAG_772 | AXE_FLAG_178)) {
+                       if (AXE_IS_178_FAMILY(sc)) {
                                if (pos > (AXE_BULK_BUF_SIZE - MCLBYTES - 
sizeof(hdr))) {
                                        /* send out frame(s) */
                                        break;
@@ -1034,16 +1037,16 @@ axe_init(struct usb_ether *ue)
        axe_reset(sc);
 
        /* Set MAC address. */
-       if (sc->sc_flags & (AXE_FLAG_178 | AXE_FLAG_772))
+       if (AXE_IS_178_FAMILY(sc))
                axe_cmd(sc, AXE_178_CMD_WRITE_NODEID, 0, 0, IF_LLADDR(ifp));
        else
                axe_cmd(sc, AXE_172_CMD_WRITE_NODEID, 0, 0, IF_LLADDR(ifp));
 
        /* Set transmitter IPG values */
-       if (sc->sc_flags & (AXE_FLAG_178 | AXE_FLAG_772)) {
+       if (AXE_IS_178_FAMILY(sc))
                axe_cmd(sc, AXE_178_CMD_WRITE_IPG012, sc->sc_ipgs[2],
                    (sc->sc_ipgs[1] << 8) | (sc->sc_ipgs[0]), NULL);
-       } else {
+       else {
                axe_cmd(sc, AXE_172_CMD_WRITE_IPG0, 0, sc->sc_ipgs[0], NULL);
                axe_cmd(sc, AXE_172_CMD_WRITE_IPG1, 0, sc->sc_ipgs[1], NULL);
                axe_cmd(sc, AXE_172_CMD_WRITE_IPG2, 0, sc->sc_ipgs[2], NULL);
@@ -1051,7 +1054,7 @@ axe_init(struct usb_ether *ue)
 
        /* Enable receiver, set RX mode */
        rxmode = (AXE_RXCMD_MULTICAST | AXE_RXCMD_ENABLE);
-       if (sc->sc_flags & (AXE_FLAG_178 | AXE_FLAG_772)) {
+       if (AXE_IS_178_FAMILY(sc)) {
 #if 0
                rxmode |= AXE_178_RXCMD_MFB_2048;       /* chip default */
 #else

Modified: head/sys/dev/usb/net/if_axereg.h
==============================================================================
--- head/sys/dev/usb/net/if_axereg.h    Sun Nov 28 01:18:11 2010        
(r215967)
+++ head/sys/dev/usb/net/if_axereg.h    Sun Nov 28 01:43:28 2010        
(r215968)
@@ -203,12 +203,22 @@ struct axe_softc {
        int                     sc_flags;
 #define        AXE_FLAG_LINK           0x0001
 #define        AXE_FLAG_772            0x1000  /* AX88772 */
-#define        AXE_FLAG_178            0x2000  /* AX88178 */
+#define        AXE_FLAG_772A           0x2000  /* AX88772A */
+#define        AXE_FLAG_772B           0x4000  /* AX88772B */
+#define        AXE_FLAG_178            0x8000  /* AX88178 */
 
        uint8_t                 sc_ipgs[3];
        uint8_t                 sc_phyaddrs[2];
+       int                     sc_tx_bufsz;
 };
 
+#define        AXE_IS_178_FAMILY(sc)                                           
  \
+       ((sc)->sc_flags & (AXE_FLAG_772 | AXE_FLAG_772A | AXE_FLAG_772B | \
+       AXE_FLAG_178))
+
+#define        AXE_IS_772(sc)                                                  
  \
+       ((sc)->sc_flags & (AXE_FLAG_772 | AXE_FLAG_772A | AXE_FLAG_772B))
+
 #define        AXE_LOCK(_sc)           mtx_lock(&(_sc)->sc_mtx)
 #define        AXE_UNLOCK(_sc)         mtx_unlock(&(_sc)->sc_mtx)
 #define        AXE_LOCK_ASSERT(_sc, t) mtx_assert(&(_sc)->sc_mtx, t)
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to