Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/netbsd-1-5]: src/sys/dev/ic Pull up revisions 1.12, 1.21-1.24 via patch ...



details:   https://anonhg.NetBSD.org/src/rev/173a0f2cd39e
branches:  netbsd-1-5
changeset: 490480:173a0f2cd39e
user:      jhawk <jhawk%NetBSD.org@localhost>
date:      Thu Jan 25 07:23:10 2001 +0000

description:
Pull up revisions 1.12, 1.21-1.24 via patch (requested by tsutsui):
  Clean up receive interrupt routine and fix DMA buffer handing
  for receive buffering.
  Add missed bus_dmamem_free() in rtk_detach().
  Some cosmetic fixes.

diffstat:

 sys/dev/ic/rtl81x9.c |  332 ++++++++++++++++++++++++--------------------------
 1 files changed, 162 insertions(+), 170 deletions(-)

diffs (truncated from 777 to 300 lines):

diff -r 80e7398b18fd -r 173a0f2cd39e sys/dev/ic/rtl81x9.c
--- a/sys/dev/ic/rtl81x9.c      Mon Jan 22 02:02:20 2001 +0000
+++ b/sys/dev/ic/rtl81x9.c      Thu Jan 25 07:23:10 2001 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: rtl81x9.c,v 1.11.4.1 2000/09/11 14:06:33 drochner Exp $        */
+/*     $NetBSD: rtl81x9.c,v 1.11.4.2 2001/01/25 07:23:10 jhawk Exp $   */
 
 /*
  * Copyright (c) 1997, 1998
@@ -130,7 +130,7 @@
 #include <dev/ic/rtl81x9reg.h>
 #include <dev/ic/rtl81x9var.h>
 
-#if defined DEBUG
+#if defined(DEBUG)
 #define STATIC
 #else
 #define STATIC static
@@ -192,17 +192,17 @@
        /*
         * Feed in each bit and stobe the clock.
         */
-       for (i = RTK_EECMD_LEN + addr_len - 1; i >= 0; i--) {
-               if (d & (1 << i)) {
+       for (i = RTK_EECMD_LEN + addr_len; i > 0; i--) {
+               if (d & (1 << (i - 1))) {
                        EE_SET(RTK_EE_DATAIN);
                } else {
                        EE_CLR(RTK_EE_DATAIN);
                }
-               DELAY(100);
+               DELAY(4);
                EE_SET(RTK_EE_CLK);
-               DELAY(150);
+               DELAY(4);
                EE_CLR(RTK_EE_CLK);
-               DELAY(100);
+               DELAY(4);
        }
 }
 
@@ -229,13 +229,13 @@
        /*
         * Start reading bits from EEPROM.
         */
-       for (i = 15; i >= 0; i--) {
+       for (i = 16; i > 0; i--) {
                EE_SET(RTK_EE_CLK);
-               DELAY(100);
+               DELAY(4);
                if (CSR_READ_1(sc, RTK_EECMD) & RTK_EE_DATAOUT)
-                       word |= (1 << i);
+                       word |= 1 << (i - 1);
                EE_CLR(RTK_EE_CLK);
-               DELAY(100);
+               DELAY(4);
        }
 
        /* Turn off EEPROM access mode. */
@@ -251,11 +251,11 @@
  * direct access PHY registers.
  */
 #define MII_SET(x)                                     \
-       CSR_WRITE_1(sc, RTK_MII,                                \
+       CSR_WRITE_1(sc, RTK_MII,                        \
                CSR_READ_1(sc, RTK_MII) | (x))
 
 #define MII_CLR(x)                                     \
-       CSR_WRITE_1(sc, RTK_MII,                                \
+       CSR_WRITE_1(sc, RTK_MII,                        \
                CSR_READ_1(sc, RTK_MII) & ~(x))
 
 /*
@@ -274,8 +274,6 @@
                MII_CLR(RTK_MII_CLK);
                DELAY(1);
        }
-
-       return;
 }
 
 /*
@@ -290,8 +288,8 @@
 
        MII_CLR(RTK_MII_CLK);
 
-       for (i = (0x1 << (cnt - 1)); i; i >>= 1) {
-                if (bits & i) {
+       for (i = cnt; i > 0; i--) {
+                if (bits & (1 << (i - 1))) {
                        MII_SET(RTK_MII_DATAOUT);
                 } else {
                        MII_CLR(RTK_MII_DATAOUT);
@@ -309,7 +307,6 @@
 STATIC int rtk_mii_readreg(sc, frame)
        struct rtk_softc        *sc;
        struct rtk_mii_frame    *frame;
-       
 {
        int                     i, ack, s;
 
@@ -322,7 +319,7 @@
        frame->mii_opcode = RTK_MII_READOP;
        frame->mii_turnaround = 0;
        frame->mii_data = 0;
-       
+
        CSR_WRITE_2(sc, RTK_MII, 0);
 
        /*
@@ -361,7 +358,7 @@
         * need to clock through 16 cycles to keep the PHY(s) in sync.
         */
        if (ack) {
-               for(i = 0; i < 16; i++) {
+               for (i = 0; i < 16; i++) {
                        MII_CLR(RTK_MII_CLK);
                        DELAY(1);
                        MII_SET(RTK_MII_CLK);
@@ -370,20 +367,19 @@
                goto fail;
        }
 
-       for (i = 0x8000; i; i >>= 1) {
+       for (i = 16; i > 0; i--) {
                MII_CLR(RTK_MII_CLK);
                DELAY(1);
                if (!ack) {
                        if (CSR_READ_2(sc, RTK_MII) & RTK_MII_DATAIN)
-                               frame->mii_data |= i;
+                               frame->mii_data |= 1 << (i - 1);
                        DELAY(1);
                }
                MII_SET(RTK_MII_CLK);
                DELAY(1);
        }
 
-fail:
-
+ fail:
        MII_CLR(RTK_MII_CLK);
        DELAY(1);
        MII_SET(RTK_MII_CLK);
@@ -392,8 +388,8 @@
        splx(s);
 
        if (ack)
-               return(1);
-       return(0);
+               return (1);
+       return (0);
 }
 
 /*
@@ -402,7 +398,6 @@
 STATIC int rtk_mii_writereg(sc, frame)
        struct rtk_softc        *sc;
        struct rtk_mii_frame    *frame;
-       
 {
        int                     s;
 
@@ -410,7 +405,6 @@
        /*
         * Set up frame for TX.
         */
-
        frame->mii_stdelim = RTK_MII_STARTDELIM;
        frame->mii_opcode = RTK_MII_WRITEOP;
        frame->mii_turnaround = RTK_MII_TURNAROUND;
@@ -442,7 +436,7 @@
 
        splx(s);
 
-       return(0);
+       return (0);
 }
 
 STATIC int rtk_phy_readreg(self, phy, reg)
@@ -451,8 +445,8 @@
 {
        struct rtk_softc        *sc = (void *)self;
        struct rtk_mii_frame    frame;
-       u_int16_t               rval = 0;
-       u_int16_t               rtk8139_reg = 0;
+       int                     rval = 0;
+       int                     rtk8139_reg = 0;
 
        if (sc->rtk_type == RTK_8139) {
                if (phy != 7)
@@ -478,10 +472,10 @@
 #if 0
                        printf("%s: bad phy register\n", sc->sc_dev.dv_xname);
 #endif
-                       return(0);
+                       return (0);
                }
                rval = CSR_READ_2(sc, rtk8139_reg);
-               return(rval);
+               return (rval);
        }
 
        bzero((char *)&frame, sizeof(frame));
@@ -490,7 +484,7 @@
        frame.mii_regaddr = reg;
        rtk_mii_readreg(sc, &frame);
 
-       return(frame.mii_data);
+       return (frame.mii_data);
 }
 
 STATIC void rtk_phy_writereg(self, phy, reg, data)
@@ -500,7 +494,7 @@
 {
        struct rtk_softc        *sc = (void *)self;
        struct rtk_mii_frame    frame;
-       u_int16_t               rtk8139_reg = 0;
+       int                     rtk8139_reg = 0;
 
        if (sc->rtk_type == RTK_8139) {
                if (phy != 7)
@@ -539,8 +533,6 @@
        frame.mii_data = data;
 
        rtk_mii_writereg(sc, &frame);
-
-       return;
 }
 
 STATIC void
@@ -608,8 +600,6 @@
        CSR_WRITE_4(sc, RTK_RXCFG, rxfilt);
        CSR_WRITE_4(sc, RTK_MAR0, hashes[0]);
        CSR_WRITE_4(sc, RTK_MAR4, hashes[1]);
-
-       return;
 }
 
 void rtk_reset(sc)
@@ -621,13 +611,11 @@
 
        for (i = 0; i < RTK_TIMEOUT; i++) {
                DELAY(10);
-               if (!(CSR_READ_1(sc, RTK_COMMAND) & RTK_CMD_RESET))
+               if ((CSR_READ_1(sc, RTK_COMMAND) & RTK_CMD_RESET) == 0)
                        break;
        }
        if (i == RTK_TIMEOUT)
                printf("%s: reset never completed!\n", sc->sc_dev.dv_xname);
-
-        return;
 }
 
 /*
@@ -638,12 +626,11 @@
 rtk_attach(sc)
        struct rtk_softc *sc;
 {
-
        struct ifnet *ifp;
        u_int16_t val;
        u_int8_t eaddr[ETHER_ADDR_LEN];
        int error;
-       int i,addr_len;
+       int i, addr_len;
 
        callout_init(&sc->rtk_tick_ch);
 
@@ -669,7 +656,7 @@
        eaddr[5] = val >> 8;
 
        if ((error = bus_dmamem_alloc(sc->sc_dmat,
-           RTK_RXBUFLEN + 32, NBPG, 0, &sc->sc_dmaseg, 1, &sc->sc_dmanseg,
+           RTK_RXBUFLEN + 16, NBPG, 0, &sc->sc_dmaseg, 1, &sc->sc_dmanseg,
            BUS_DMA_NOWAIT)) != 0) {
                printf("%s: can't allocate recv buffer, error = %d\n",
                       sc->sc_dev.dv_xname, error);
@@ -677,20 +664,15 @@
        }
 
        if ((error = bus_dmamem_map(sc->sc_dmat, &sc->sc_dmaseg, sc->sc_dmanseg,
-           RTK_RXBUFLEN + 32, (caddr_t *)&sc->rtk_cdata.rtk_rx_buf,
+           RTK_RXBUFLEN + 16, (caddr_t *)&sc->rtk_cdata.rtk_rx_buf,
            BUS_DMA_NOWAIT|BUS_DMA_COHERENT)) != 0) {
                printf("%s: can't map recv buffer, error = %d\n",
                       sc->sc_dev.dv_xname, error);
                goto fail_1;
        }
 
-       /* Leave a few bytes before the start of the RX ring buffer. */
-       sc->rtk_cdata.rtk_rx_buf_ptr = sc->rtk_cdata.rtk_rx_buf;
-       sc->rtk_cdata.rtk_rx_buf += sizeof(u_int64_t);
-
        if ((error = bus_dmamap_create(sc->sc_dmat,
-           RTK_RXBUFLEN + 32 - sizeof(u_int64_t), 1,
-           RTK_RXBUFLEN + 32 - sizeof(u_int64_t), 0, BUS_DMA_NOWAIT,
+           RTK_RXBUFLEN + 16, 1, RTK_RXBUFLEN + 16, 0, BUS_DMA_NOWAIT,
            &sc->recv_dmamap)) != 0) {
                printf("%s: can't create recv buffer DMA map, error = %d\n",
                       sc->sc_dev.dv_xname, error);



Home | Main Index | Thread Index | Old Index