Source-Changes-HG archive

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

[src/trunk]: src/sys/dev/ic Always call device dependent functions via pointe...



details:   https://anonhg.NetBSD.org/src/rev/d4c1f4b8e407
branches:  trunk
changeset: 752468:d4c1f4b8e407
user:      tsutsui <tsutsui%NetBSD.org@localhost>
date:      Sat Feb 27 04:40:11 2010 +0000

description:
Always call device dependent functions via pointers rather than
using conditionals to switch inline functions for modern processors.

diffstat:

 sys/dev/ic/dp8390.c |  51 +++++++++++++++++++++++----------------------------
 1 files changed, 23 insertions(+), 28 deletions(-)

diffs (142 lines):

diff -r 892e096c81f1 -r d4c1f4b8e407 sys/dev/ic/dp8390.c
--- a/sys/dev/ic/dp8390.c       Sat Feb 27 04:36:56 2010 +0000
+++ b/sys/dev/ic/dp8390.c       Sat Feb 27 04:40:11 2010 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: dp8390.c,v 1.75 2010/02/27 04:36:56 tsutsui Exp $      */
+/*     $NetBSD: dp8390.c,v 1.76 2010/02/27 04:40:11 tsutsui Exp $      */
 
 /*
  * Device driver for National Semiconductor DS8390/WD83C690 based ethernet
@@ -14,7 +14,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: dp8390.c,v 1.75 2010/02/27 04:36:56 tsutsui Exp $");
+__KERNEL_RCSID(0, "$NetBSD: dp8390.c,v 1.76 2010/02/27 04:40:11 tsutsui Exp $");
 
 #include "opt_ipkdb.h"
 #include "opt_inet.h"
@@ -61,17 +61,16 @@
 #include <dev/ic/dp8390var.h>
 
 #ifdef DEBUG
-#define inline /* XXX for debugging porpoises */
 int    dp8390_debug = 0;
 #endif
 
-static inline void     dp8390_xmit(struct dp8390_softc *);
+static void            dp8390_xmit(struct dp8390_softc *);
 
-static inline void     dp8390_read_hdr(struct dp8390_softc *,
+static void            dp8390_read_hdr(struct dp8390_softc *,
                            int, struct dp8390_ring *);
-static inline int      dp8390_ring_copy(struct dp8390_softc *,
+static int             dp8390_ring_copy(struct dp8390_softc *,
                            int, void *, u_short);
-static inline int      dp8390_write_mbuf(struct dp8390_softc *,
+static int             dp8390_write_mbuf(struct dp8390_softc *,
                            struct mbuf *, int);
 
 static int             dp8390_test_mem(struct dp8390_softc *);
@@ -99,8 +98,16 @@
 
        rv = 1;
 
-       if (!sc->test_mem)
+       if (sc->test_mem == NULL)
                sc->test_mem = dp8390_test_mem;
+       if (sc->read_hdr == NULL)
+               sc->read_hdr = dp8390_read_hdr;
+       if (sc->recv_int == NULL)
+               sc->recv_int = dp8390_rint;
+       if (sc->ring_copy == NULL)
+               sc->ring_copy = dp8390_ring_copy;
+       if (sc->write_mbuf == NULL)
+               sc->write_mbuf = dp8390_write_mbuf;
 
        /* Allocate one xmit buffer if < 16k, two buffers otherwise. */
        if ((sc->mem_size < 16384) ||
@@ -394,7 +401,7 @@
 /*
  * This routine actually starts the transmission on the interface.
  */
-static inline void
+static void
 dp8390_xmit(struct dp8390_softc *sc)
 {
        bus_space_tag_t regt = sc->sc_regt;
@@ -483,10 +490,7 @@
        buffer = sc->mem_start +
            ((sc->txb_new * ED_TXBUF_SIZE) << ED_PAGE_SHIFT);
 
-       if (sc->write_mbuf)
-               len = (*sc->write_mbuf)(sc, m0, buffer);
-       else
-               len = dp8390_write_mbuf(sc, m0, buffer);
+       len = (*sc->write_mbuf)(sc, m0, buffer);
 
        m_freem(m0);
        sc->txb_len[sc->txb_new] = len;
@@ -547,10 +551,7 @@
                packet_ptr = sc->mem_ring +
                    ((sc->next_packet - sc->rec_page_start) << ED_PAGE_SHIFT);
 
-               if (sc->read_hdr)
-                       (*sc->read_hdr)(sc, packet_ptr, &packet_hdr);
-               else
-                       dp8390_read_hdr(sc, packet_ptr, &packet_hdr);
+               (*sc->read_hdr)(sc, packet_ptr, &packet_hdr);
                len = packet_hdr.count;
 
                /*
@@ -791,10 +792,7 @@
                                 * (we've configured the interface to not
                                 * accept packets with errors).
                                 */
-                               if (sc->recv_int)
-                                       (*sc->recv_int)(sc);
-                               else
-                                       dp8390_rint(sc);
+                               (*sc->recv_int)(sc);
                        }
                }
 
@@ -1077,10 +1075,7 @@
                }
 
                m->m_len = len = min(total_len, len);
-               if (sc->ring_copy)
-                       src = (*sc->ring_copy)(sc, src, mtod(m, void *), len);
-               else
-                       src = dp8390_ring_copy(sc, src, mtod(m, void *), len);
+               src = (*sc->ring_copy)(sc, src, mtod(m, void *), len);
 
                total_len -= len;
                if (total_len > 0) {
@@ -1131,7 +1126,7 @@
 /*
  * Read a packet header from the ring, given the source offset.
  */
-static inline void
+static void
 dp8390_read_hdr(struct dp8390_softc *sc, int src, struct dp8390_ring *hdrp)
 {
        bus_space_tag_t buft = sc->sc_buft;
@@ -1152,7 +1147,7 @@
  * destination buffer, given a source offset and destination address.
  * Takes into account ring-wrap.
  */
-static inline int
+static int
 dp8390_ring_copy(struct dp8390_softc *sc, int src, void *dst, u_short amount)
 {
        bus_space_tag_t buft = sc->sc_buft;
@@ -1181,7 +1176,7 @@
  * Currently uses an extra buffer/extra memory copy, unless the whole
  * packet fits in one mbuf.
  */
-static inline int
+static int
 dp8390_write_mbuf(struct dp8390_softc *sc, struct mbuf *m, int buf)
 {
        bus_space_tag_t buft = sc->sc_buft;



Home | Main Index | Thread Index | Old Index