Module Name:    src
Committed By:   msaitoh
Date:           Thu Jan  9 10:54:16 UTC 2020

Modified Files:
        src/sys/dev/pci: if_stge.c if_stgereg.h

Log Message:
Reduce diff against OpenBSD. No functional change.

- USE CSR_{READ,WRITE}_*() macro.
- Move some macros from if_stge.c to if_stgereg.h


To generate a diff of this commit:
cvs rdiff -u -r1.75 -r1.76 src/sys/dev/pci/if_stge.c
cvs rdiff -u -r1.7 -r1.8 src/sys/dev/pci/if_stgereg.h

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_stge.c
diff -u src/sys/dev/pci/if_stge.c:1.75 src/sys/dev/pci/if_stge.c:1.76
--- src/sys/dev/pci/if_stge.c:1.75	Thu Dec 26 15:32:37 2019
+++ src/sys/dev/pci/if_stge.c	Thu Jan  9 10:54:16 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_stge.c,v 1.75 2019/12/26 15:32:37 msaitoh Exp $	*/
+/*	$NetBSD: if_stge.c,v 1.76 2020/01/09 10:54:16 msaitoh Exp $	*/
 
 /*-
  * Copyright (c) 2001 The NetBSD Foundation, Inc.
@@ -35,7 +35,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_stge.c,v 1.75 2019/12/26 15:32:37 msaitoh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_stge.c,v 1.76 2020/01/09 10:54:16 msaitoh Exp $");
 
 
 #include <sys/param.h>
@@ -76,23 +76,6 @@ __KERNEL_RCSID(0, "$NetBSD: if_stge.c,v 
 #define	STGE_VLAN_UNTAG			1
 /* #define	STGE_VLAN_CFI		1 */
 
-#define	STGE_CDOFF(x)	offsetof(struct stge_control_data, x)
-#define	STGE_CDTXOFF(x)	STGE_CDOFF(scd_txdescs[(x)])
-#define	STGE_CDRXOFF(x)	STGE_CDOFF(scd_rxdescs[(x)])
-
-#define	STGE_RXCHAIN_RESET(sc)						\
-do {									\
-	(sc)->sc_rxtailp = &(sc)->sc_rxhead;				\
-	*(sc)->sc_rxtailp = NULL;					\
-	(sc)->sc_rxlen = 0;						\
-} while (/*CONSTCOND*/0)
-
-#define	STGE_RXCHAIN_LINK(sc, m)					\
-do {									\
-	*(sc)->sc_rxtailp = (sc)->sc_rxtail = (m);			\
-	(sc)->sc_rxtailp = &(m)->m_next;				\
-} while (/*CONSTCOND*/0)
-
 #ifdef STGE_EVENT_COUNTERS
 #define	STGE_EVCNT_INCR(ev)	(ev)->ev_count++
 #else
@@ -129,8 +112,6 @@ do {									\
 	STGE_CDRXSYNC((sc), (x), BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE); \
 } while (/*CONSTCOND*/0)
 
-#define STGE_TIMEOUT 1000
-
 static void	stge_start(struct ifnet *);
 static void	stge_watchdog(struct ifnet *);
 static int	stge_ioctl(struct ifnet *, u_long, void *);
@@ -403,8 +384,7 @@ stge_attach(device_t parent, device_t se
 	 * Determine if we're copper or fiber.  It affects how we
 	 * reset the card.
 	 */
-	if (bus_space_read_4(sc->sc_st, sc->sc_sh, STGE_AsicCtrl) &
-	    AC_PhyMedia)
+	if (CSR_READ_4(sc, STGE_AsicCtrl) & AC_PhyMedia)
 		sc->sc_usefiber = 1;
 	else
 		sc->sc_usefiber = 0;
@@ -422,18 +402,12 @@ stge_attach(device_t parent, device_t se
 	 * from EEPROM.
 	 */
 	if (sp->stge_product != PCI_PRODUCT_SUNDANCETI_ST1023) {
-		enaddr[0] = bus_space_read_2(sc->sc_st, sc->sc_sh,
-		    STGE_StationAddress0) & 0xff;
-		enaddr[1] = bus_space_read_2(sc->sc_st, sc->sc_sh,
-		    STGE_StationAddress0) >> 8;
-		enaddr[2] = bus_space_read_2(sc->sc_st, sc->sc_sh,
-		    STGE_StationAddress1) & 0xff;
-		enaddr[3] = bus_space_read_2(sc->sc_st, sc->sc_sh,
-		    STGE_StationAddress1) >> 8;
-		enaddr[4] = bus_space_read_2(sc->sc_st, sc->sc_sh,
-		    STGE_StationAddress2) & 0xff;
-		enaddr[5] = bus_space_read_2(sc->sc_st, sc->sc_sh,
-		    STGE_StationAddress2) >> 8;
+		enaddr[0] = CSR_READ_2(sc, STGE_StationAddress0) & 0xff;
+		enaddr[1] = CSR_READ_2(sc, STGE_StationAddress0) >> 8;
+		enaddr[2] = CSR_READ_2(sc, STGE_StationAddress1) & 0xff;
+		enaddr[3] = CSR_READ_2(sc, STGE_StationAddress1) >> 8;
+		enaddr[4] = CSR_READ_2(sc, STGE_StationAddress2) & 0xff;
+		enaddr[5] = CSR_READ_2(sc, STGE_StationAddress2) >> 8;
 		sc->sc_stge1023 = 0;
 	} else {
 		data = prop_dictionary_get(device_properties(self),
@@ -466,8 +440,8 @@ stge_attach(device_t parent, device_t se
 	/*
 	 * Read some important bits from the PhyCtrl register.
 	 */
-	sc->sc_PhyCtrl = bus_space_read_1(sc->sc_st, sc->sc_sh,
-	    STGE_PhyCtrl) & (PC_PhyDuplexPolarity | PC_PhyLnkPolarity);
+	sc->sc_PhyCtrl = CSR_READ_1(sc, STGE_PhyCtrl) &
+	    (PC_PhyDuplexPolarity | PC_PhyLnkPolarity);
 
 	/*
 	 * Initialize our media structures and probe the MII.
@@ -643,8 +617,7 @@ stge_dma_wait(struct stge_softc *sc)
 
 	for (i = 0; i < STGE_TIMEOUT; i++) {
 		delay(2);
-		if ((bus_space_read_4(sc->sc_st, sc->sc_sh, STGE_DMACtrl) &
-		     DMAC_TxDMAInProg) == 0)
+		if ((CSR_READ_4(sc, STGE_DMACtrl) & DMAC_TxDMAInProg) == 0)
 			break;
 	}
 
@@ -836,7 +809,7 @@ stge_start(struct ifnet *ifp)
 		/*
 		 * Kick the transmit DMA logic.
 		 */
-		bus_space_write_4(sc->sc_st, sc->sc_sh, STGE_DMACtrl,
+		CSR_WRITE_4(sc, STGE_DMACtrl,
 		    sc->sc_DMACtrl | DMAC_TxDMAPollNow);
 
 		/*
@@ -946,12 +919,11 @@ stge_intr(void *arg)
 	int wantinit;
 	uint16_t isr;
 
-	if ((bus_space_read_2(sc->sc_st, sc->sc_sh, STGE_IntStatus) &
-	     IS_InterruptStatus) == 0)
+	if ((CSR_READ_2(sc, STGE_IntStatus) & IS_InterruptStatus) == 0)
 		return (0);
 
 	for (wantinit = 0; wantinit == 0;) {
-		isr = bus_space_read_2(sc->sc_st, sc->sc_sh, STGE_IntStatusAck);
+		isr = CSR_READ_2(sc, STGE_IntStatusAck);
 		if ((isr & sc->sc_IntEnable) == 0)
 			break;
 
@@ -995,8 +967,7 @@ stge_intr(void *arg)
 		if (isr & IS_TxComplete) {
 			STGE_EVCNT_INCR(&sc->sc_ev_txindintr);
 			for (;;) {
-				txstat = bus_space_read_4(sc->sc_st, sc->sc_sh,
-				    STGE_TxStatus);
+				txstat = CSR_READ_4(sc, STGE_TxStatus);
 				if ((txstat & TS_TxComplete) == 0)
 					break;
 				if (txstat & TS_TxUnderrun) {
@@ -1020,8 +991,7 @@ stge_intr(void *arg)
 	if (wantinit)
 		stge_init(ifp);
 
-	bus_space_write_2(sc->sc_st, sc->sc_sh, STGE_IntEnable,
-	    sc->sc_IntEnable);
+	CSR_WRITE_2(sc, STGE_IntEnable, sc->sc_IntEnable);
 
 	/* Try to get more packets going. */
 	if_schedule_deferred_start(ifp);
@@ -1291,29 +1261,27 @@ static void
 stge_stats_update(struct stge_softc *sc)
 {
 	struct ifnet *ifp = &sc->sc_ethercom.ec_if;
-	bus_space_tag_t st = sc->sc_st;
-	bus_space_handle_t sh = sc->sc_sh;
 
-	(void) bus_space_read_4(st, sh, STGE_OctetRcvOk);
+	(void) CSR_READ_4(sc, STGE_OctetRcvOk);
 
-	(void) bus_space_read_4(st, sh, STGE_FramesRcvdOk);
+	(void) CSR_READ_4(sc, STGE_FramesRcvdOk);
 
 	ifp->if_ierrors +=
-	    (u_int) bus_space_read_2(st, sh, STGE_FramesLostRxErrors);
+	    (u_int) CSR_READ_2(sc, STGE_FramesLostRxErrors);
 
-	(void) bus_space_read_4(st, sh, STGE_OctetXmtdOk);
+	(void) CSR_READ_4(sc, STGE_OctetXmtdOk);
 
 	ifp->if_opackets +=
-	    bus_space_read_4(st, sh, STGE_FramesXmtdOk);
+	    CSR_READ_4(sc, STGE_FramesXmtdOk);
 
 	ifp->if_collisions +=
-	    bus_space_read_4(st, sh, STGE_LateCollisions) +
-	    bus_space_read_4(st, sh, STGE_MultiColFrames) +
-	    bus_space_read_4(st, sh, STGE_SingleColFrames);
+	    CSR_READ_4(sc, STGE_LateCollisions) +
+	    CSR_READ_4(sc, STGE_MultiColFrames) +
+	    CSR_READ_4(sc, STGE_SingleColFrames);
 
 	ifp->if_oerrors +=
-	    (u_int) bus_space_read_2(st, sh, STGE_FramesAbortXSColls) +
-	    (u_int) bus_space_read_2(st, sh, STGE_FramesWEXDeferal);
+	    (u_int) CSR_READ_2(sc, STGE_FramesAbortXSColls) +
+	    (u_int) CSR_READ_2(sc, STGE_FramesWEXDeferal);
 }
 
 /*
@@ -1327,14 +1295,14 @@ stge_reset(struct stge_softc *sc)
 	uint32_t ac;
 	int i;
 
-	ac = bus_space_read_4(sc->sc_st, sc->sc_sh, STGE_AsicCtrl);
+	ac = CSR_READ_4(sc, STGE_AsicCtrl);
 
 	/*
 	 * Only assert RstOut if we're fiber.  We need GMII clocks
 	 * to be present in order for the reset to complete on fiber
 	 * cards.
 	 */
-	bus_space_write_4(sc->sc_st, sc->sc_sh, STGE_AsicCtrl,
+	CSR_WRITE_4(sc, STGE_AsicCtrl,
 	    ac | AC_GlobalReset | AC_RxReset | AC_TxReset |
 	    AC_DMA | AC_FIFO | AC_Network | AC_Host | AC_AutoInit |
 	    (sc->sc_usefiber ? AC_RstOut : 0));
@@ -1343,8 +1311,7 @@ stge_reset(struct stge_softc *sc)
 
 	for (i = 0; i < STGE_TIMEOUT; i++) {
 		delay(5000);
-		if ((bus_space_read_4(sc->sc_st, sc->sc_sh, STGE_AsicCtrl) &
-		     AC_ResetBusy) == 0)
+		if ((CSR_READ_4(sc, STGE_AsicCtrl) & AC_ResetBusy) == 0)
 			break;
 	}
 
@@ -1364,8 +1331,6 @@ static int
 stge_init(struct ifnet *ifp)
 {
 	struct stge_softc *sc = ifp->if_softc;
-	bus_space_tag_t st = sc->sc_st;
-	bus_space_handle_t sh = sc->sc_sh;
 	struct stge_descsoft *ds;
 	int i, error = 0;
 
@@ -1419,15 +1384,15 @@ stge_init(struct ifnet *ifp)
 
 	/* Set the station address. */
 	for (i = 0; i < 6; i++)
-		bus_space_write_1(st, sh, STGE_StationAddress0 + i,
+		CSR_WRITE_1(sc, STGE_StationAddress0 + i,
 		    CLLADDR(ifp->if_sadl)[i]);
 
 	/*
 	 * Set the statistics masks.  Disable all the RMON stats,
 	 * and disable selected stats in the non-RMON stats registers.
 	 */
-	bus_space_write_4(st, sh, STGE_RMONStatisticsMask, 0xffffffff);
-	bus_space_write_4(st, sh, STGE_StatisticsMask,
+	CSR_WRITE_4(sc, STGE_RMONStatisticsMask, 0xffffffff);
+	CSR_WRITE_4(sc, STGE_StatisticsMask,
 	    (1U << 1) | (1U << 2) | (1U << 3) | (1U << 4) | (1U << 5) |
 	    (1U << 6) | (1U << 7) | (1U << 8) | (1U << 9) | (1U << 10) |
 	    (1U << 13) | (1U << 14) | (1U << 15) | (1U << 19) | (1U << 20) |
@@ -1439,12 +1404,12 @@ stge_init(struct ifnet *ifp)
 	/*
 	 * Give the transmit and receive ring to the chip.
 	 */
-	bus_space_write_4(st, sh, STGE_TFDListPtrHi, 0); /* NOTE: 32-bit DMA */
-	bus_space_write_4(st, sh, STGE_TFDListPtrLo,
+	CSR_WRITE_4(sc, STGE_TFDListPtrHi, 0); /* NOTE: 32-bit DMA */
+	CSR_WRITE_4(sc, STGE_TFDListPtrLo,
 	    STGE_CDTXADDR(sc, sc->sc_txdirty));
 
-	bus_space_write_4(st, sh, STGE_RFDListPtrHi, 0); /* NOTE: 32-bit DMA */
-	bus_space_write_4(st, sh, STGE_RFDListPtrLo,
+	CSR_WRITE_4(sc, STGE_RFDListPtrHi, 0); /* NOTE: 32-bit DMA */
+	CSR_WRITE_4(sc, STGE_RFDListPtrLo,
 	    STGE_CDRXADDR(sc, sc->sc_rxptr));
 
 	/*
@@ -1452,24 +1417,24 @@ stge_init(struct ifnet *ifp)
 	 * large (255 is the max, but we use 127) -- we explicitly kick the
 	 * transmit engine when there's actually a packet.
 	 */
-	bus_space_write_1(st, sh, STGE_TxDMAPollPeriod, 127);
+	CSR_WRITE_1(sc, STGE_TxDMAPollPeriod, 127);
 
 	/* ..and the Rx auto-poll period. */
-	bus_space_write_1(st, sh, STGE_RxDMAPollPeriod, 64);
+	CSR_WRITE_1(sc, STGE_RxDMAPollPeriod, 64);
 
 	/* Initialize the Tx start threshold. */
-	bus_space_write_2(st, sh, STGE_TxStartThresh, sc->sc_txthresh);
+	CSR_WRITE_2(sc, STGE_TxStartThresh, sc->sc_txthresh);
 
 	/* RX DMA thresholds, from linux */
-	bus_space_write_1(st, sh, STGE_RxDMABurstThresh, 0x30);
-	bus_space_write_1(st, sh, STGE_RxDMAUrgentThresh, 0x30);
+	CSR_WRITE_1(sc, STGE_RxDMABurstThresh, 0x30);
+	CSR_WRITE_1(sc, STGE_RxDMAUrgentThresh, 0x30);
 
 	/* Rx early threhold, from Linux */
-	bus_space_write_2(st, sh, STGE_RxEarlyThresh, 0x7ff);
+	CSR_WRITE_2(sc, STGE_RxEarlyThresh, 0x7ff);
 
 	/* Tx DMA thresholds, from Linux */
-	bus_space_write_1(st, sh, STGE_TxDMABurstThresh, 0x30);
-	bus_space_write_1(st, sh, STGE_TxDMAUrgentThresh, 0x04);
+	CSR_WRITE_1(sc, STGE_TxDMABurstThresh, 0x30);
+	CSR_WRITE_1(sc, STGE_TxDMAUrgentThresh, 0x04);
 
 	/*
 	 * Initialize the Rx DMA interrupt control register.  We
@@ -1478,7 +1443,7 @@ stge_init(struct ifnet *ifp)
 	 * interrupts pending reaches 8, we stop deferring the
 	 * interrupt, and signal it immediately.
 	 */
-	bus_space_write_4(st, sh, STGE_RxDMAIntCtrl,
+	CSR_WRITE_4(sc, STGE_RxDMAIntCtrl,
 	    RDIC_RxFrameCount(8) | RDIC_RxDMAWaitTime(512));
 
 	/*
@@ -1486,14 +1451,14 @@ stge_init(struct ifnet *ifp)
 	 */
 	sc->sc_IntEnable = IS_HostError | IS_TxComplete | IS_UpdateStats |
 	    IS_TxDMAComplete | IS_RxDMAComplete | IS_RFDListEnd;
-	bus_space_write_2(st, sh, STGE_IntStatus, 0xffff);
-	bus_space_write_2(st, sh, STGE_IntEnable, sc->sc_IntEnable);
+	CSR_WRITE_2(sc, STGE_IntStatus, 0xffff);
+	CSR_WRITE_2(sc, STGE_IntEnable, sc->sc_IntEnable);
 
 	/*
 	 * Configure the DMA engine.
 	 * XXX Should auto-tune TxBurstLimit.
 	 */
-	bus_space_write_4(st, sh, STGE_DMACtrl, sc->sc_DMACtrl |
+	CSR_WRITE_4(sc, STGE_DMACtrl, sc->sc_DMACtrl |
 	    DMAC_TxBurstLimit(3));
 
 	/*
@@ -1501,13 +1466,13 @@ stge_init(struct ifnet *ifp)
 	 * FIFO, and send an un-PAUSE frame when we reach 3056 bytes
 	 * in the Rx FIFO.
 	 */
-	bus_space_write_2(st, sh, STGE_FlowOnTresh, 29696 / 16);
-	bus_space_write_2(st, sh, STGE_FlowOffThresh, 3056 / 16);
+	CSR_WRITE_2(sc, STGE_FlowOnTresh, 29696 / 16);
+	CSR_WRITE_2(sc, STGE_FlowOffThresh, 3056 / 16);
 
 	/*
 	 * Set the maximum frame size.
 	 */
-	bus_space_write_2(st, sh, STGE_MaxFrameSize,
+	CSR_WRITE_2(sc, STGE_MaxFrameSize,
 	    ifp->if_mtu + ETHER_HDR_LEN + ETHER_CRC_LEN +
 	    ((sc->sc_ethercom.ec_capenable & ETHERCAP_VLAN_MTU) ?
 	     ETHER_VLAN_ENCAP_LEN : 0));
@@ -1520,7 +1485,7 @@ stge_init(struct ifnet *ifp)
 	 * anything else.
 	 */
 	sc->sc_MACCtrl = MC_IFSSelect(0);
-	bus_space_write_4(st, sh, STGE_MACCtrl, sc->sc_MACCtrl);
+	CSR_WRITE_4(sc, STGE_MACCtrl, sc->sc_MACCtrl);
 	sc->sc_MACCtrl |= MC_StatisticsEnable | MC_TxEnable | MC_RxEnable;
 #ifdef	STGE_VLAN_UNTAG
 	sc->sc_MACCtrl |= MC_AutoVLANuntagging;
@@ -1528,15 +1493,15 @@ stge_init(struct ifnet *ifp)
 
 	if (sc->sc_rev >= 6) {		/* >= B.2 */
 		/* Multi-frag frame bug work-around. */
-		bus_space_write_2(st, sh, STGE_DebugCtrl,
-		    bus_space_read_2(st, sh, STGE_DebugCtrl) | 0x0200);
+		CSR_WRITE_2(sc, STGE_DebugCtrl,
+		    CSR_READ_2(sc, STGE_DebugCtrl) | 0x0200);
 
 		/* Tx Poll Now bug work-around. */
-		bus_space_write_2(st, sh, STGE_DebugCtrl,
-		    bus_space_read_2(st, sh, STGE_DebugCtrl) | 0x0010);
+		CSR_WRITE_2(sc, STGE_DebugCtrl,
+		    CSR_READ_2(sc, STGE_DebugCtrl) | 0x0010);
 		/* XXX ? from linux */
-		bus_space_write_2(st, sh, STGE_DebugCtrl,
-		    bus_space_read_2(st, sh, STGE_DebugCtrl) | 0x0020);
+		CSR_WRITE_2(sc, STGE_DebugCtrl,
+		    CSR_READ_2(sc, STGE_DebugCtrl) | 0x0020);
 	}
 
 	/*
@@ -1607,22 +1572,22 @@ stge_stop(struct ifnet *ifp, int disable
 	/*
 	 * Disable interrupts.
 	 */
-	bus_space_write_2(sc->sc_st, sc->sc_sh, STGE_IntEnable, 0);
+	CSR_WRITE_2(sc, STGE_IntEnable, 0);
 
 	/*
 	 * Stop receiver, transmitter, and stats update.
 	 */
-	bus_space_write_4(sc->sc_st, sc->sc_sh, STGE_MACCtrl,
+	CSR_WRITE_4(sc, STGE_MACCtrl,
 	    MC_StatisticsDisable | MC_TxDisable | MC_RxDisable);
 
 	/*
 	 * Stop the transmit and receive DMA.
 	 */
 	stge_dma_wait(sc);
-	bus_space_write_4(sc->sc_st, sc->sc_sh, STGE_TFDListPtrHi, 0);
-	bus_space_write_4(sc->sc_st, sc->sc_sh, STGE_TFDListPtrLo, 0);
-	bus_space_write_4(sc->sc_st, sc->sc_sh, STGE_RFDListPtrHi, 0);
-	bus_space_write_4(sc->sc_st, sc->sc_sh, STGE_RFDListPtrLo, 0);
+	CSR_WRITE_4(sc, STGE_TFDListPtrHi, 0);
+	CSR_WRITE_4(sc, STGE_TFDListPtrLo, 0);
+	CSR_WRITE_4(sc, STGE_RFDListPtrHi, 0);
+	CSR_WRITE_4(sc, STGE_RFDListPtrLo, 0);
 
 	/*
 	 * Release any queued transmit buffers.
@@ -1653,8 +1618,7 @@ stge_eeprom_wait(struct stge_softc *sc)
 
 	for (i = 0; i < STGE_TIMEOUT; i++) {
 		delay(1000);
-		if ((bus_space_read_2(sc->sc_st, sc->sc_sh, STGE_EepromCtrl) &
-		     EC_EepromBusy) == 0)
+		if ((CSR_READ_2(sc, STGE_EepromCtrl) & EC_EepromBusy) == 0)
 			return (0);
 	}
 	return (1);
@@ -1673,12 +1637,12 @@ stge_read_eeprom(struct stge_softc *sc, 
 		printf("%s: EEPROM failed to come ready\n",
 		    device_xname(sc->sc_dev));
 
-	bus_space_write_2(sc->sc_st, sc->sc_sh, STGE_EepromCtrl,
+	CSR_WRITE_2(sc, STGE_EepromCtrl,
 	    EC_EepromAddress(offset) | EC_EepromOpcode(EC_OP_RR));
 	if (stge_eeprom_wait(sc))
 		printf("%s: EEPROM read timed out\n",
 		    device_xname(sc->sc_dev));
-	*data = bus_space_read_2(sc->sc_st, sc->sc_sh, STGE_EepromData);
+	*data = CSR_READ_2(sc, STGE_EepromData);
 }
 
 /*
@@ -1812,14 +1776,11 @@ stge_set_filter(struct stge_softc *sc)
 		/*
 		 * Program the multicast hash table.
 		 */
-		bus_space_write_4(sc->sc_st, sc->sc_sh, STGE_HashTable0,
-		    mchash[0]);
-		bus_space_write_4(sc->sc_st, sc->sc_sh, STGE_HashTable1,
-		    mchash[1]);
+		CSR_WRITE_4(sc, STGE_HashTable0, mchash[0]);
+		CSR_WRITE_4(sc, STGE_HashTable1, mchash[1]);
 	}
 
-	bus_space_write_2(sc->sc_st, sc->sc_sh, STGE_ReceiveMode,
-	    sc->sc_ReceiveMode);
+	CSR_WRITE_2(sc, STGE_ReceiveMode, sc->sc_ReceiveMode);
 }
 
 /*
@@ -1867,7 +1828,7 @@ stge_mii_statchg(struct ifnet *ifp)
 	if ((sc->sc_mii.mii_media_active & IFM_ETH_TXPAUSE) != 0)
 		sc->sc_MACCtrl |= MC_TxFlowControlEnable;
 
-	bus_space_write_4(sc->sc_st, sc->sc_sh, STGE_MACCtrl, sc->sc_MACCtrl);
+	CSR_WRITE_4(sc, STGE_MACCtrl, sc->sc_MACCtrl);
 }
 
 /*
@@ -1880,7 +1841,7 @@ stge_mii_bitbang_read(device_t self)
 {
 	struct stge_softc *sc = device_private(self);
 
-	return (bus_space_read_1(sc->sc_st, sc->sc_sh, STGE_PhyCtrl));
+	return (CSR_READ_1(sc, STGE_PhyCtrl));
 }
 
 /*
@@ -1893,6 +1854,5 @@ stge_mii_bitbang_write(device_t self, ui
 {
 	struct stge_softc *sc = device_private(self);
 
-	bus_space_write_1(sc->sc_st, sc->sc_sh, STGE_PhyCtrl,
-	    val | sc->sc_PhyCtrl);
+	CSR_WRITE_1(sc, STGE_PhyCtrl, val | sc->sc_PhyCtrl);
 }

Index: src/sys/dev/pci/if_stgereg.h
diff -u src/sys/dev/pci/if_stgereg.h:1.7 src/sys/dev/pci/if_stgereg.h:1.8
--- src/sys/dev/pci/if_stgereg.h:1.7	Thu Dec 26 15:23:11 2019
+++ src/sys/dev/pci/if_stgereg.h	Thu Jan  9 10:54:16 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_stgereg.h,v 1.7 2019/12/26 15:23:11 msaitoh Exp $	*/
+/*	$NetBSD: if_stgereg.h,v 1.8 2020/01/09 10:54:16 msaitoh Exp $	*/
 
 /*-
  * Copyright (c) 2001 The NetBSD Foundation, Inc.
@@ -45,6 +45,23 @@
  */
 
 /*
+ * Register access macros
+ */
+#define CSR_WRITE_4(_sc, reg, val)	\
+	bus_space_write_4((_sc)->sc_st, (_sc)->sc_sh, (reg), (val))
+#define CSR_WRITE_2(_sc, reg, val)	\
+	bus_space_write_2((_sc)->sc_st, (_sc)->sc_sh, (reg), (val))
+#define CSR_WRITE_1(_sc, reg, val)	\
+	bus_space_write_1((_sc)->sc_st, (_sc)->sc_sh, (reg), (val))
+
+#define CSR_READ_4(_sc, reg)		\
+	bus_space_read_4((_sc)->sc_st, (_sc)->sc_sh, (reg))
+#define CSR_READ_2(_sc, reg)		\
+	bus_space_read_2((_sc)->sc_st, (_sc)->sc_sh, (reg))
+#define CSR_READ_1(_sc, reg)		\
+	bus_space_read_1((_sc)->sc_st, (_sc)->sc_sh, (reg))
+
+/*
  * TC9021 buffer fragment descriptor.
  */
 struct stge_frag {
@@ -490,6 +507,10 @@ struct stge_control_data {
 	struct stge_rfd scd_rxdescs[STGE_NRXDESC];
 };
 
+#define	STGE_CDOFF(x)	offsetof(struct stge_control_data, x)
+#define	STGE_CDTXOFF(x)	STGE_CDOFF(scd_txdescs[(x)])
+#define	STGE_CDRXOFF(x)	STGE_CDOFF(scd_rxdescs[(x)])
+
 /*
  * Software state for transmit and receive jobs.
  */
@@ -578,4 +599,19 @@ struct stge_softc {
 	uint8_t sc_PhyCtrl;		/* prototype PhyCtrl register */
 };
 
+#define	STGE_RXCHAIN_RESET(sc)						\
+do {									\
+	(sc)->sc_rxtailp = &(sc)->sc_rxhead;				\
+	*(sc)->sc_rxtailp = NULL;					\
+	(sc)->sc_rxlen = 0;						\
+} while (/*CONSTCOND*/0)
+
+#define	STGE_RXCHAIN_LINK(sc, m)					\
+do {									\
+	*(sc)->sc_rxtailp = (sc)->sc_rxtail = (m);			\
+	(sc)->sc_rxtailp = &(m)->m_next;				\
+} while (/*CONSTCOND*/0)
+
+#define STGE_TIMEOUT	1000
+
 #endif /* _DEV_PCI_IF_STGEREG_H_ */

Reply via email to