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_ */