Module Name:    src
Committed By:   knakahara
Date:           Tue Oct 13 07:47:45 UTC 2015

Modified Files:
        src/sys/dev/pci: if_wm.c

Log Message:
refactor: change some macros to functions

change below macros to functions
    - WM_CDTXSYNC
    - WM_CDRXSYNC
    - WM_INIT_RXDESC


To generate a diff of this commit:
cvs rdiff -u -r1.351 -r1.352 src/sys/dev/pci/if_wm.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/dev/pci/if_wm.c
diff -u src/sys/dev/pci/if_wm.c:1.351 src/sys/dev/pci/if_wm.c:1.352
--- src/sys/dev/pci/if_wm.c:1.351	Thu Oct  8 09:28:13 2015
+++ src/sys/dev/pci/if_wm.c	Tue Oct 13 07:47:45 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_wm.c,v 1.351 2015/10/08 09:28:13 msaitoh Exp $	*/
+/*	$NetBSD: if_wm.c,v 1.352 2015/10/13 07:47:45 knakahara Exp $	*/
 
 /*
  * Copyright (c) 2001, 2002, 2003, 2004 Wasabi Systems, Inc.
@@ -83,7 +83,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_wm.c,v 1.351 2015/10/08 09:28:13 msaitoh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_wm.c,v 1.352 2015/10/13 07:47:45 knakahara Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_net_mpsafe.h"
@@ -506,67 +506,6 @@ do {									\
 	(sizeof(bus_addr_t) == 8 ?					\
 	 (uint64_t)WM_CDRXADDR((sc), (x)) >> 32 : 0)
 
-#define	WM_CDTXSYNC(sc, x, n, ops)					\
-do {									\
-	int __x, __n;							\
-									\
-	__x = (x);							\
-	__n = (n);							\
-									\
-	/* If it will wrap around, sync to the end of the ring. */	\
-	if ((__x + __n) > WM_NTXDESC(sc)) {				\
-		bus_dmamap_sync((sc)->sc_dmat, (sc)->sc_cddmamap,	\
-		    WM_CDTXOFF(__x), sizeof(wiseman_txdesc_t) *		\
-		    (WM_NTXDESC(sc) - __x), (ops));			\
-		__n -= (WM_NTXDESC(sc) - __x);				\
-		__x = 0;						\
-	}								\
-									\
-	/* Now sync whatever is left. */				\
-	bus_dmamap_sync((sc)->sc_dmat, (sc)->sc_cddmamap,		\
-	    WM_CDTXOFF(__x), sizeof(wiseman_txdesc_t) * __n, (ops));	\
-} while (/*CONSTCOND*/0)
-
-#define	WM_CDRXSYNC(sc, x, ops)						\
-do {									\
-	bus_dmamap_sync((sc)->sc_dmat, (sc)->sc_cddmamap,		\
-	   WM_CDRXOFF((x)), sizeof(wiseman_rxdesc_t), (ops));		\
-} while (/*CONSTCOND*/0)
-
-#define	WM_INIT_RXDESC(sc, x)						\
-do {									\
-	struct wm_rxsoft *__rxs = &(sc)->sc_rxsoft[(x)];		\
-	wiseman_rxdesc_t *__rxd = &(sc)->sc_rxdescs[(x)];		\
-	struct mbuf *__m = __rxs->rxs_mbuf;				\
-									\
-	/*								\
-	 * Note: We scoot the packet forward 2 bytes in the buffer	\
-	 * so that the payload after the Ethernet header is aligned	\
-	 * to a 4-byte boundary.					\
-	 *								\
-	 * XXX BRAINDAMAGE ALERT!					\
-	 * The stupid chip uses the same size for every buffer, which	\
-	 * is set in the Receive Control register.  We are using the 2K	\
-	 * size option, but what we REALLY want is (2K - 2)!  For this	\
-	 * reason, we can't "scoot" packets longer than the standard	\
-	 * Ethernet MTU.  On strict-alignment platforms, if the total	\
-	 * size exceeds (2K - 2) we set align_tweak to 0 and let	\
-	 * the upper layer copy the headers.				\
-	 */								\
-	__m->m_data = __m->m_ext.ext_buf + (sc)->sc_align_tweak;	\
-									\
-	wm_set_dma_addr(&__rxd->wrx_addr,				\
-	    __rxs->rxs_dmamap->dm_segs[0].ds_addr + (sc)->sc_align_tweak); \
-	__rxd->wrx_len = 0;						\
-	__rxd->wrx_cksum = 0;						\
-	__rxd->wrx_status = 0;						\
-	__rxd->wrx_errors = 0;						\
-	__rxd->wrx_special = 0;						\
-	WM_CDRXSYNC((sc), (x), BUS_DMASYNC_PREREAD|BUS_DMASYNC_PREWRITE); \
-									\
-	CSR_WRITE((sc), (sc)->sc_rdt_reg, (x));				\
-} while (/*CONSTCOND*/0)
-
 /*
  * Register read/write functions.
  * Other than CSR_{READ|WRITE}().
@@ -580,6 +519,13 @@ static inline void wm_82575_write_8bit_c
 static inline void wm_set_dma_addr(volatile wiseman_addr_t *, bus_addr_t);
 
 /*
+ * Descriptor sync/init functions.
+ */
+static inline void wm_cdtxsync(struct wm_softc *, int, int, int);
+static inline void wm_cdrxsync(struct wm_softc *, int, int);
+static inline void wm_init_rxdesc(struct wm_softc *, int);
+
+/*
  * Device driver interface functions and commonly used functions.
  * match, attach, detach, init, start, stop, ioctl, watchdog and so on.
  */
@@ -1383,6 +1329,70 @@ wm_set_dma_addr(volatile wiseman_addr_t 
 }
 
 /*
+ * Descriptor sync/init functions.
+ */
+static inline void
+wm_cdtxsync(struct wm_softc *sc, int start, int num, int ops)
+{
+
+	/* If it will wrap around, sync to the end of the ring. */
+	if ((start + num) > WM_NTXDESC(sc)) {
+		bus_dmamap_sync(sc->sc_dmat, sc->sc_cddmamap,
+		    WM_CDTXOFF(start), sizeof(wiseman_txdesc_t) *
+		    (WM_NTXDESC(sc) - start), ops);
+		num -= (WM_NTXDESC(sc) - start);
+		start = 0;
+	}
+
+	/* Now sync whatever is left. */
+	bus_dmamap_sync(sc->sc_dmat, sc->sc_cddmamap,
+	    WM_CDTXOFF(start), sizeof(wiseman_txdesc_t) * num, ops);
+}
+
+static inline void
+wm_cdrxsync(struct wm_softc *sc, int start, int ops)
+{
+
+	bus_dmamap_sync(sc->sc_dmat, sc->sc_cddmamap,
+	    WM_CDRXOFF(start), sizeof(wiseman_rxdesc_t), ops);
+}
+
+static inline void
+wm_init_rxdesc(struct wm_softc *sc, int start)
+{
+	struct wm_rxsoft *rxs = &sc->sc_rxsoft[start];
+	wiseman_rxdesc_t *rxd = &sc->sc_rxdescs[start];
+	struct mbuf *m = rxs->rxs_mbuf;
+
+	/*
+	 * Note: We scoot the packet forward 2 bytes in the buffer
+	 * so that the payload after the Ethernet header is aligned
+	 * to a 4-byte boundary.
+
+	 * XXX BRAINDAMAGE ALERT!
+	 * The stupid chip uses the same size for every buffer, which
+	 * is set in the Receive Control register.  We are using the 2K
+	 * size option, but what we REALLY want is (2K - 2)!  For this
+	 * reason, we can't "scoot" packets longer than the standard
+	 * Ethernet MTU.  On strict-alignment platforms, if the total
+	 * size exceeds (2K - 2) we set align_tweak to 0 and let
+	 * the upper layer copy the headers.
+	 */
+	m->m_data = m->m_ext.ext_buf + sc->sc_align_tweak;
+
+	wm_set_dma_addr(&rxd->wrx_addr,
+	    rxs->rxs_dmamap->dm_segs[0].ds_addr + sc->sc_align_tweak);
+	rxd->wrx_len = 0;
+	rxd->wrx_cksum = 0;
+	rxd->wrx_status = 0;
+	rxd->wrx_errors = 0;
+	rxd->wrx_special = 0;
+	wm_cdrxsync(sc, start, BUS_DMASYNC_PREREAD|BUS_DMASYNC_PREWRITE);
+
+	CSR_WRITE(sc, sc->sc_rdt_reg, start);
+}
+
+/*
  * Device driver interface functions and commonly used functions.
  * match, attach, detach, init, start, stop, ioctl, watchdog and so on.
  */
@@ -4148,9 +4158,9 @@ wm_add_rxbuf(struct wm_softc *sc, int id
 
 	if ((sc->sc_flags & WM_F_NEWQUEUE) != 0) {
 		if ((sc->sc_rctl & RCTL_EN) != 0)
-			WM_INIT_RXDESC(sc, idx);
+			wm_init_rxdesc(sc, idx);
 	} else
-		WM_INIT_RXDESC(sc, idx);
+		wm_init_rxdesc(sc, idx);
 
 	return 0;
 }
@@ -4290,7 +4300,7 @@ wm_init_locked(struct ifnet *ifp)
 
 	/* Initialize the transmit descriptor ring. */
 	memset(sc->sc_txdescs, 0, WM_TXDESCSIZE(sc));
-	WM_CDTXSYNC(sc, 0, WM_NTXDESC(sc),
+	wm_cdtxsync(sc, 0, WM_NTXDESC(sc),
 	    BUS_DMASYNC_PREREAD|BUS_DMASYNC_PREWRITE);
 	sc->sc_txfree = WM_NTXDESC(sc);
 	sc->sc_txnext = 0;
@@ -4395,7 +4405,7 @@ wm_init_locked(struct ifnet *ifp)
 			}
 		} else {
 			if ((sc->sc_flags & WM_F_NEWQUEUE) == 0)
-				WM_INIT_RXDESC(sc, i);
+				wm_init_rxdesc(sc, i);
 			/*
 			 * For 82575 and newer device, the RX descriptors
 			 * must be initialized after the setting of RCTL.EN in
@@ -4770,7 +4780,7 @@ wm_init_locked(struct ifnet *ifp)
 	/* On 575 and later set RDT only if RX enabled */
 	if ((sc->sc_flags & WM_F_NEWQUEUE) != 0)
 		for (i = 0; i < WM_NRXDESC; i++)
-			WM_INIT_RXDESC(sc, i);
+			wm_init_rxdesc(sc, i);
 
 	sc->sc_stopping = false;
 
@@ -5060,7 +5070,7 @@ wm_tx_offload(struct wm_softc *sc, struc
 	t->tcpip_tucs = htole32(tucs);
 	t->tcpip_cmdlen = htole32(cmdlen);
 	t->tcpip_seg = htole32(seg);
-	WM_CDTXSYNC(sc, sc->sc_txnext, 1, BUS_DMASYNC_PREWRITE);
+	wm_cdtxsync(sc, sc->sc_txnext, 1, BUS_DMASYNC_PREWRITE);
 
 	sc->sc_txnext = WM_NEXTTX(sc, sc->sc_txnext);
 	txs->txs_ndesc++;
@@ -5463,7 +5473,7 @@ wm_start_locked(struct ifnet *ifp)
 		    lasttx, le32toh(sc->sc_txdescs[lasttx].wtx_cmdlen)));
 
 		/* Sync the descriptors we're using. */
-		WM_CDTXSYNC(sc, sc->sc_txnext, txs->txs_ndesc,
+		wm_cdtxsync(sc, sc->sc_txnext, txs->txs_ndesc,
 		    BUS_DMASYNC_PREREAD|BUS_DMASYNC_PREWRITE);
 
 		/* Give the packet to the chip. */
@@ -5693,7 +5703,7 @@ wm_nq_tx_offload(struct wm_softc *sc, st
 	    htole32(cmdc);
 	sc->sc_nq_txdescs[sc->sc_txnext].nqrx_ctx.nqtxc_mssidx =
 	    htole32(mssidx);
-	WM_CDTXSYNC(sc, sc->sc_txnext, 1, BUS_DMASYNC_PREWRITE);
+	wm_cdtxsync(sc, sc->sc_txnext, 1, BUS_DMASYNC_PREWRITE);
 	DPRINTF(WM_DEBUG_TX,
 	    ("%s: TX: context desc %d 0x%08x%08x\n", device_xname(sc->sc_dev),
 	    sc->sc_txnext, 0, vl_len));
@@ -5950,7 +5960,7 @@ wm_nq_start_locked(struct ifnet *ifp)
 		    lasttx, le32toh(sc->sc_txdescs[lasttx].wtx_cmdlen)));
 
 		/* Sync the descriptors we're using. */
-		WM_CDTXSYNC(sc, sc->sc_txnext, txs->txs_ndesc,
+		wm_cdtxsync(sc, sc->sc_txnext, txs->txs_ndesc,
 		    BUS_DMASYNC_PREREAD|BUS_DMASYNC_PREWRITE);
 
 		/* Give the packet to the chip. */
@@ -6026,13 +6036,13 @@ wm_txeof(struct wm_softc *sc)
 		DPRINTF(WM_DEBUG_TX,
 		    ("%s: TX: checking job %d\n", device_xname(sc->sc_dev), i));
 
-		WM_CDTXSYNC(sc, txs->txs_firstdesc, txs->txs_ndesc,
+		wm_cdtxsync(sc, txs->txs_firstdesc, txs->txs_ndesc,
 		    BUS_DMASYNC_POSTREAD|BUS_DMASYNC_POSTWRITE);
 
 		status =
 		    sc->sc_txdescs[txs->txs_lastdesc].wtx_fields.wtxu_status;
 		if ((status & WTX_ST_DD) == 0) {
-			WM_CDTXSYNC(sc, txs->txs_lastdesc, 1,
+			wm_cdtxsync(sc, txs->txs_lastdesc, 1,
 			    BUS_DMASYNC_PREREAD);
 			break;
 		}
@@ -6117,7 +6127,7 @@ wm_rxeof(struct wm_softc *sc)
 		    ("%s: RX: checking descriptor %d\n",
 		    device_xname(sc->sc_dev), i));
 
-		WM_CDRXSYNC(sc, i, BUS_DMASYNC_POSTREAD|BUS_DMASYNC_POSTWRITE);
+		wm_cdrxsync(sc, i, BUS_DMASYNC_POSTREAD|BUS_DMASYNC_POSTWRITE);
 
 		status = sc->sc_rxdescs[i].wrx_status;
 		errors = sc->sc_rxdescs[i].wrx_errors;
@@ -6126,7 +6136,7 @@ wm_rxeof(struct wm_softc *sc)
 
 		if ((status & WRX_ST_DD) == 0) {
 			/* We have processed all of the receive descriptors. */
-			WM_CDRXSYNC(sc, i, BUS_DMASYNC_PREREAD);
+			wm_cdrxsync(sc, i, BUS_DMASYNC_PREREAD);
 			break;
 		}
 
@@ -6135,7 +6145,7 @@ wm_rxeof(struct wm_softc *sc)
 			DPRINTF(WM_DEBUG_RX,
 			    ("%s: RX: discarding contents of descriptor %d\n",
 			    device_xname(sc->sc_dev), i));
-			WM_INIT_RXDESC(sc, i);
+			wm_init_rxdesc(sc, i);
 			if (status & WRX_ST_EOP) {
 				/* Reset our state. */
 				DPRINTF(WM_DEBUG_RX,
@@ -6164,7 +6174,7 @@ wm_rxeof(struct wm_softc *sc)
 			ifp->if_ierrors++;
 			bus_dmamap_sync(sc->sc_dmat, rxs->rxs_dmamap, 0,
 			    rxs->rxs_dmamap->dm_mapsize, BUS_DMASYNC_PREREAD);
-			WM_INIT_RXDESC(sc, i);
+			wm_init_rxdesc(sc, i);
 			if ((status & WRX_ST_EOP) == 0)
 				sc->sc_rxdiscard = 1;
 			if (sc->sc_rxhead != NULL)

Reply via email to