summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpeter <peter@FreeBSD.org>1997-10-18 13:23:35 +0000
committerpeter <peter@FreeBSD.org>1997-10-18 13:23:35 +0000
commitd3c47076ad15754ed2b2f28cee5070517f734f46 (patch)
tree7accefb8838ab4d25b6dc42d5891d2fb2e9ba033
parent174eba148a48a2103531fdddcf5d5a593278ec33 (diff)
downloadFreeBSD-src-d3c47076ad15754ed2b2f28cee5070517f734f46.zip
FreeBSD-src-d3c47076ad15754ed2b2f28cee5070517f734f46.tar.gz
Import Matt's current de driver... He appears to be maintaining it in
the NetBSD source tree now. This is slightly newer than the updated .tar.gz on the 3am-software web site.
-rw-r--r--sys/pci/dc21040reg.h34
-rw-r--r--sys/pci/if_de.c219
-rw-r--r--sys/pci/if_devar.h18
3 files changed, 219 insertions, 52 deletions
diff --git a/sys/pci/dc21040reg.h b/sys/pci/dc21040reg.h
index ec27470..8ac2761 100644
--- a/sys/pci/dc21040reg.h
+++ b/sys/pci/dc21040reg.h
@@ -1,3 +1,5 @@
+/* $NetBSD: dc21040reg.h,v 1.13 1997/10/17 09:26:58 matt Exp $ */
+
/*-
* Copyright (c) 1994, 1995, 1996 Matt Thomas <matt@3am-software.com>
* All rights reserved.
@@ -21,7 +23,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: dc21040reg.h,v 1.24 1997/05/16 19:47:09 thomas Exp $
+ * Id: dc21040reg.h,v 1.24 1997/05/16 19:47:09 thomas Exp
*/
#if !defined(_DC21040_H)
@@ -199,6 +201,7 @@ typedef struct {
#define TULIP_SIASTS_OTHERRXACTIVITY 0x00000200L
#define TULIP_SIASTS_RXACTIVITY 0x00000100L
#define TULIP_SIASTS_LINKFAIL 0x00000004L
+#define TULIP_SIASTS_LINK100FAIL 0x00000002L
#define TULIP_SIACONN_RESET 0x00000000L
/*
@@ -271,19 +274,19 @@ typedef struct {
#define TULIP_21142_PROBE_AUIBNC_TIMEOUT 300
#define TULIP_21142_SIACONN_10BASET 0x00000001L
-#define TULIP_21142_SIATXRX_10BASET 0x0000F3FFL
-#define TULIP_21142_SIAGEN_10BASET 0x00000000L
+#define TULIP_21142_SIATXRX_10BASET 0x00007F3FL
+#define TULIP_21142_SIAGEN_10BASET 0x00000008L
#define TULIP_21142_SIACONN_10BASET_FD 0x00000001L
-#define TULIP_21142_SIATXRX_10BASET_FD 0x0000F3FDL
-#define TULIP_21142_SIAGEN_10BASET_FD 0x00000000L
+#define TULIP_21142_SIATXRX_10BASET_FD 0x00007F3DL
+#define TULIP_21142_SIAGEN_10BASET_FD 0x00000008L
#define TULIP_21142_SIACONN_AUI 0x00000009L
-#define TULIP_21142_SIATXRX_AUI 0x0000F3FDL
+#define TULIP_21142_SIATXRX_AUI 0x00000705L
#define TULIP_21142_SIAGEN_AUI 0x0000000EL
#define TULIP_21142_SIACONN_BNC 0x00000009L
-#define TULIP_21142_SIATXRX_BNC 0x0000F3FDL
+#define TULIP_21142_SIATXRX_BNC 0x00000705L
#define TULIP_21142_SIAGEN_BNC 0x00000006L
@@ -433,6 +436,23 @@ typedef struct {
#define TULIP_GP_ASANTE_PHYRESET 0x00000008 /* Reset PHY */
/*
+ * ACCTON EN1207 specialties
+ */
+
+#define TULIP_OUI_EN1207_0 0x00
+#define TULIP_OUI_EN1207_1 0x00
+#define TULIP_OUI_EN1207_2 0xE8
+
+#define TULIP_CSR8_EN1207 0x08
+#define TULIP_CSR9_EN1207 0x00
+#define TULIP_CSR10_EN1207 0x03
+#define TULIP_CSR11_EN1207 0x1F
+
+#define TULIP_GP_EN1207_BNC_INIT 0x0000011B
+#define TULIP_GP_EN1207_UTP_INIT 0x9E00000B
+#define TULIP_GP_EN1207_100_INIT 0x6D00031B
+
+/*
* SROM definitions for the 21140 and 21041.
*/
#define SROMXREG 0x0400
diff --git a/sys/pci/if_de.c b/sys/pci/if_de.c
index 239febcc..86dc829 100644
--- a/sys/pci/if_de.c
+++ b/sys/pci/if_de.c
@@ -1,3 +1,5 @@
+/* $NetBSD: if_de.c,v 1.55 1997/10/16 22:02:27 matt Exp $ */
+
/*-
* Copyright (c) 1994-1997 Matt Thomas (matt@3am-software.com)
* All rights reserved.
@@ -21,7 +23,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: if_de.c,v 1.94 1997/07/03 16:55:07 thomas Exp $
+ * Id: if_de.c,v 1.94 1997/07/03 16:55:07 thomas Exp
*
*/
@@ -52,6 +54,13 @@
#include <sys/device.h>
#endif
+#if defined(__NetBSD__)
+#include "rnd.h"
+#if NRND > 0
+#include <sys/rnd.h>
+#endif
+#endif
+
#include <net/if.h>
#if defined(SIOCSIFMEDIA) && !defined(TULIP_NOIFMEDIA)
#include <net/if_media.h>
@@ -304,6 +313,7 @@ tulip_media_set(
TULIP_CSR_WRITE(sc, csr_sia_tx_rx, mi->mi_sia_tx_rx);
if (sc->tulip_features & TULIP_HAVE_SIAGP) {
TULIP_CSR_WRITE(sc, csr_sia_general, mi->mi_sia_gp_control|mi->mi_sia_general|TULIP_SIAGEN_WATCHDOG);
+ DELAY(50);
TULIP_CSR_WRITE(sc, csr_sia_general, mi->mi_sia_gp_data|mi->mi_sia_general|TULIP_SIAGEN_WATCHDOG);
} else {
TULIP_CSR_WRITE(sc, csr_sia_general, mi->mi_sia_general|TULIP_SIAGEN_WATCHDOG);
@@ -422,7 +432,10 @@ tulip_linkup(
sc->tulip_flags &= ~(TULIP_TXPROBE_ACTIVE|TULIP_TRYNWAY);
if (sc->tulip_flags & TULIP_INRESET) {
tulip_media_set(sc, sc->tulip_media);
- } else {
+ } else if (sc->tulip_probe_media != sc->tulip_media) {
+ /*
+ * No reason to change media if we have the right media.
+ */
tulip_reset(sc);
tulip_init(sc);
}
@@ -591,6 +604,10 @@ tulip_media_link_monitor(
return TULIP_LINK_UNKNOWN;
if ((TULIP_CSR_READ(sc, csr_sia_status) & TULIP_SIASTS_LINKFAIL) == 0)
linkup = TULIP_LINK_UP;
+#if defined(TULIP_DEBUG)
+ if (sc->tulip_probe_timeout <= 0)
+ printf(TULIP_PRINTF_FMT ": sia status = 0x%08x\n", TULIP_PRINTF_ARGS, TULIP_CSR_READ(sc, csr_sia_status));
+#endif
} else if (mi->mi_type == TULIP_MEDIAINFO_SYM) {
return TULIP_LINK_UNKNOWN;
}
@@ -888,6 +905,7 @@ tulip_media_poll(
}
case TULIP_MEDIAINFO_RESET:
case TULIP_MEDIAINFO_SYM:
+ case TULIP_MEDIAINFO_NONE:
case TULIP_MEDIAINFO_GPR: {
break;
}
@@ -1477,7 +1495,7 @@ tulip_2114x_media_preset(
sc->tulip_cmdmode &= ~TULIP_CMD_PORTSELECT;
sc->tulip_flags &= ~TULIP_SQETEST;
- if (media != TULIP_MEDIA_UNKNOWN) {
+ if (media != TULIP_MEDIA_UNKNOWN && media != TULIP_MEDIA_MAX) {
#if defined(TULIP_DEBUG)
if (media < TULIP_MEDIA_MAX && sc->tulip_mediums[media] != NULL) {
#endif
@@ -1614,6 +1632,60 @@ static const tulip_boardsw_t tulip_21140_eb_boardsw = {
};
static void
+tulip_21140_accton_media_probe(
+ tulip_softc_t * const sc)
+{
+ tulip_media_info_t *mip = sc->tulip_mediainfo;
+ unsigned gpdata;
+
+ sc->tulip_gpinit = TULIP_GP_EB_PINS;
+ sc->tulip_gpdata = TULIP_GP_EB_INIT;
+ TULIP_CSR_WRITE(sc, csr_gp, TULIP_GP_EB_PINS);
+ TULIP_CSR_WRITE(sc, csr_gp, TULIP_GP_EB_INIT);
+ TULIP_CSR_WRITE(sc, csr_command,
+ TULIP_CSR_READ(sc, csr_command) | TULIP_CMD_PORTSELECT |
+ TULIP_CMD_PCSFUNCTION | TULIP_CMD_SCRAMBLER | TULIP_CMD_MUSTBEONE);
+ TULIP_CSR_WRITE(sc, csr_command,
+ TULIP_CSR_READ(sc, csr_command) & ~TULIP_CMD_TXTHRSHLDCTL);
+ DELAY(1000000);
+ gpdata = TULIP_CSR_READ(sc, csr_gp);
+ if ((gpdata & TULIP_GP_EN1207_UTP_INIT) == 0) {
+ sc->tulip_media = TULIP_MEDIA_10BASET;
+ } else {
+ if ((gpdata & TULIP_GP_EN1207_BNC_INIT) == 0) {
+ sc->tulip_media = TULIP_MEDIA_BNC;
+ } else {
+ sc->tulip_media = TULIP_MEDIA_100BASETX;
+ }
+ }
+ tulip_21140_mediainit(sc, mip++, TULIP_MEDIA_BNC,
+ TULIP_GP_EN1207_BNC_INIT,
+ TULIP_CMD_TXTHRSHLDCTL);
+ tulip_21140_mediainit(sc, mip++, TULIP_MEDIA_10BASET,
+ TULIP_GP_EN1207_UTP_INIT,
+ TULIP_CMD_TXTHRSHLDCTL);
+ tulip_21140_mediainit(sc, mip++, TULIP_MEDIA_10BASET_FD,
+ TULIP_GP_EN1207_UTP_INIT,
+ TULIP_CMD_TXTHRSHLDCTL|TULIP_CMD_FULLDUPLEX);
+ tulip_21140_mediainit(sc, mip++, TULIP_MEDIA_100BASETX,
+ TULIP_GP_EN1207_100_INIT,
+ TULIP_CMD_PORTSELECT|TULIP_CMD_PCSFUNCTION
+ |TULIP_CMD_SCRAMBLER);
+ tulip_21140_mediainit(sc, mip++, TULIP_MEDIA_100BASETX_FD,
+ TULIP_GP_EN1207_100_INIT,
+ TULIP_CMD_PORTSELECT|TULIP_CMD_PCSFUNCTION
+ |TULIP_CMD_SCRAMBLER|TULIP_CMD_FULLDUPLEX);
+}
+
+static const tulip_boardsw_t tulip_21140_accton_boardsw = {
+ TULIP_21140_EN1207,
+ tulip_21140_accton_media_probe,
+ tulip_media_select,
+ tulip_null_media_poll,
+ tulip_2114x_media_preset,
+};
+
+static void
tulip_21140_smc9332_media_probe(
tulip_softc_t * const sc)
{
@@ -2195,6 +2267,34 @@ tulip_identify_cogent_nic(
}
static void
+tulip_identify_accton_nic(
+ tulip_softc_t * const sc)
+{
+ strcpy(sc->tulip_boardid, "ACCTON ");
+ switch (sc->tulip_chipid) {
+ case TULIP_21140A:
+ strcat(sc->tulip_boardid, "EN1207 ");
+ sc->tulip_boardsw = &tulip_21140_accton_boardsw;
+ break;
+ case TULIP_21140:
+ strcat(sc->tulip_boardid, "EN1207TX ");
+ sc->tulip_boardsw = &tulip_21140_eb_boardsw;
+ break;
+ case TULIP_21040:
+ strcat(sc->tulip_boardid, "EN1203 ");
+ sc->tulip_boardsw = &tulip_21040_boardsw;
+ break;
+ case TULIP_21041:
+ strcat(sc->tulip_boardid, "EN1203 ");
+ sc->tulip_boardsw = &tulip_21041_boardsw;
+ break;
+ default:
+ sc->tulip_boardsw = &tulip_2114x_isv_boardsw;
+ break;
+ }
+}
+
+static void
tulip_identify_asante_nic(
tulip_softc_t * const sc)
{
@@ -2615,6 +2715,7 @@ static const struct {
{ tulip_identify_znyx_nic, { 0x00, 0xC0, 0x95 } },
{ tulip_identify_cogent_nic, { 0x00, 0x00, 0x92 } },
{ tulip_identify_asante_nic, { 0x00, 0x00, 0x94 } },
+ { tulip_identify_accton_nic, { 0x00, 0x00, 0xE8 } },
{ NULL }
};
@@ -3469,11 +3570,17 @@ tulip_tx_intr(
} else {
const u_int32_t d_status = ri->ri_nextin->d_status;
IF_DEQUEUE(&sc->tulip_txq, m);
+ if (m != NULL) {
#if NBPFILTER > 0
- if (sc->tulip_bpf != NULL)
- TULIP_BPF_MTAP(sc, m);
+ if (sc->tulip_bpf != NULL)
+ TULIP_BPF_MTAP(sc, m);
#endif
- m_freem(m);
+ m_freem(m);
+#if defined(TULIP_DEBUG)
+ } else {
+ printf(TULIP_PRINTF_FMT ": tx_intr: failed to dequeue mbuf?!?\n", TULIP_PRINTF_ARGS);
+#endif
+ }
if (sc->tulip_flags & TULIP_TXPROBE_ACTIVE) {
tulip_mediapoll_event_t event = TULIP_MEDIAPOLL_TXPROBE_OK;
if (d_status & (TULIP_DSTS_TxNOCARR|TULIP_DSTS_TxEXCCOLL)) {
@@ -3588,8 +3695,22 @@ tulip_intr_handler(
{
TULIP_PERFSTART(intr)
u_int32_t csr;
+#if defined(__NetBSD__) && !defined(TULIP_USE_SOFTINTR)
+ int only_once;
+
+ only_once = 1;
+#endif
while ((csr = TULIP_CSR_READ(sc, csr_status)) & sc->tulip_intrmask) {
+#if defined(__NetBSD__) && !defined(TULIP_USE_SOFTINTR)
+ if (only_once == 1) {
+#if NRND > 0
+ rnd_add_uint32(&sc->tulip_rndsource, csr);
+#endif
+ only_once = 0;
+ }
+#endif
+
*progress_p = 1;
TULIP_CSR_WRITE(sc, csr_status, csr);
@@ -3712,6 +3833,15 @@ tulip_hardintr_handler(
* mark it as needing a software interrupt
*/
tulip_softintr_mask |= (1U << sc->tulip_unit);
+
+#if defined(__NetBSD__) && NRND > 0
+ /*
+ * This isn't all that random (the value we feed in) but it is
+ * better than a constant probably. It isn't used in entropy
+ * calculation anyway, just to add something to the pool.
+ */
+ rnd_add_uint32(&sc->tulip_rndsource, sc->tulip_flags);
+#endif
}
static void
@@ -3781,10 +3911,10 @@ static tulip_intrfunc_t
tulip_intr_shared(
void *arg)
{
- tulip_softc_t * sc;
+ tulip_softc_t * sc = arg;
int progress = 0;
- for (sc = (tulip_softc_t *) arg; sc != NULL; sc = sc->tulip_slaves) {
+ for (; sc != NULL; sc = sc->tulip_slaves) {
#if defined(TULIP_DEBUG)
sc->tulip_dbg.dbg_intrs++;
#endif
@@ -4579,6 +4709,11 @@ tulip_attach(
#if NBPFILTER > 0
TULIP_BPF_ATTACH(sc);
#endif
+
+#if defined(__NetBSD__) && NRND > 0
+ rnd_attach_source(&sc->tulip_rndsource, sc->tulip_dev.dv_xname,
+ RND_TYPE_NET);
+#endif
}
static void
@@ -4934,6 +5069,9 @@ tulip_pci_attach(
(sc)->tulip_pci_devno = pa->pa_device; \
} while (0)
#endif /* __NetBSD__ */
+#if defined(__alpha__)
+ tulip_media_t media = TULIP_MEDIA_UNKNOWN;
+#endif
int retval, idx;
u_int32_t revinfo, cfdainfo, id;
#if !defined(TULIP_IOMAPPED) && defined(__FreeBSD__)
@@ -5026,6 +5164,8 @@ tulip_pci_attach(
sc->tulip_features |= TULIP_HAVE_SIANWAY;
if (chipid != TULIP_21041)
sc->tulip_features |= TULIP_HAVE_SIAGP|TULIP_HAVE_RXBADOVRFLW|TULIP_HAVE_STOREFWD;
+ if (chipid != TULIP_21041 && sc->tulip_revinfo >= 0x20)
+ sc->tulip_features |= TULIP_HAVE_SIA100;
}
if (sc->tulip_features & TULIP_HAVE_POWERMGMT
@@ -5034,7 +5174,7 @@ tulip_pci_attach(
PCI_CONF_WRITE(PCI_CFDA, cfdainfo);
DELAY(11*1000);
}
-#if defined(__alpha__)
+#if defined(__alpha__) && defined(__NetBSD__)
/*
* The Alpha SRM console encodes a console set media in the driver
* part of the CFDA register. Note that the Multia presents a
@@ -5042,12 +5182,14 @@ tulip_pci_attach(
* force a probe.
*/
switch ((cfdainfo >> 8) & 0xff) {
- case 1: sc->tulip_media = chipid > TULIP_DE425 ? TULIP_MEDIA_AUI : TULIP_MEDIA_AUIBNC;
- case 2: sc->tulip_media = chipid > TULIP_DE425 ? TULIP_MEDIA_BNC : TULIP_MEDIA_UNKNOWN;
- case 3: sc->tulip_media = TULIP_MEDIA_10BASET;
- case 4: sc->tulip_media = TULIP_MEDIA_10BASET_FD;
- case 5: sc->tulip_media = TULIP_MEDIA_100BASETX;
- case 6: sc->tulip_media = TULIP_MEDIA_100BASETX_FD;
+ case 1: media = chipid > TULIP_DE425 ?
+ TULIP_MEDIA_AUI : TULIP_MEDIA_AUIBNC; break;
+ case 2: media = chipid > TULIP_DE425 ?
+ TULIP_MEDIA_BNC : TULIP_MEDIA_UNKNOWN; break;
+ case 3: media = TULIP_MEDIA_10BASET; break;
+ case 4: media = TULIP_MEDIA_10BASET_FD; break;
+ case 5: media = TULIP_MEDIA_100BASETX; break;
+ case 6: media = TULIP_MEDIA_100BASETX_FD; break;
}
#endif
@@ -5090,37 +5232,24 @@ tulip_pci_attach(
{
bus_space_tag_t iot, memt;
bus_space_handle_t ioh, memh;
- u_int32_t cfcs = PCI_CONF_READ(PCI_CFCS);
-
- cfcs &= ~(PCI_COMMAND_IO_ENABLE||PCI_COMMAND_IO_ENABLE);
- if (!pci_mapreg_map(pa, PCI_CBIO, PCI_MAPREG_TYPE_IO, 0,
- &iot, &ioh, NULL, NULL)) {
- cfcs |= PCI_COMMAND_IO_ENABLE;
- }
- if (!pci_mapreg_map(pa, PCI_CBMA,
- PCI_MAPREG_TYPE_MEM | PCI_MAPREG_MEM_TYPE_32BIT,
- 0, &memt, &memh, NULL, NULL) == 0) {
- cfcs |= PCI_COMMAND_MEM_ENABLE;
- }
- if ((cfcs & (PCI_COMMAND_IO_ENABLE||PCI_COMMAND_IO_ENABLE)) == 0) {
+ int ioh_valid, memh_valid;
+
+ ioh_valid = (pci_mapreg_map(pa, PCI_CBIO, PCI_MAPREG_TYPE_IO, 0,
+ &iot, &ioh, NULL, NULL) == 0);
+ memh_valid = (pci_mapreg_map(pa, PCI_CBMA,
+ PCI_MAPREG_TYPE_MEM |
+ PCI_MAPREG_MEM_TYPE_32BIT,
+ 0, &memt, &memh, NULL, NULL) == 0);
+ if (memh_valid) {
+ sc->tulip_bustag = memt;
+ sc->tulip_bushandle = memh;
+ } else if (ioh_valid) {
+ sc->tulip_bustag = iot;
+ sc->tulip_bushandle = ioh;
+ } else {
printf(": unable to map device registers\n");
return;
}
- cfcs |= PCI_COMMAND_MASTER_ENABLE;
- PCI_CONF_WRITE(PCI_CFCS, cfcs);
-#if defined(PCI_PREFER_IOSPACE)
- if (cfcs & PCI_COMMAND_IO_ENABLE) {
- sc->tulip_bustag = iot, sc->tulip_bushandle = ioh;
- } else {
- sc->tulip_bustag = memt, sc->tulip_bushandle = memh;
- }
-#else
- if (cfcs & PCI_COMMAND_MEM_ENABLE) {
- sc->tulip_bustag = memt, sc->tulip_bushandle = memh;
- } else {
- sc->tulip_bustag = iot, sc->tulip_bushandle = ioh;
- }
-#endif /* PCI_PREFER_IOSPACE */
}
#endif /* __NetBSD__ */
@@ -5215,6 +5344,10 @@ tulip_pci_attach(
s = TULIP_RAISESPL();
tulip_reset(sc);
tulip_attach(sc);
+#if defined(__alpha__) && defined(__NetBSD__)
+ if (media != TULIP_MEDIA_UNKNOWN)
+ tulip_linkup(sc, media);
+#endif
TULIP_RESTORESPL(s);
}
}
diff --git a/sys/pci/if_devar.h b/sys/pci/if_devar.h
index 68fbc7b..84cd82a 100644
--- a/sys/pci/if_devar.h
+++ b/sys/pci/if_devar.h
@@ -1,3 +1,5 @@
+/* $NetBSD: if_devar.h,v 1.21 1997/10/16 22:02:32 matt Exp $ */
+
/*-
* Copyright (c) 1994-1997 Matt Thomas (matt@3am-software.com)
* All rights reserved.
@@ -21,13 +23,19 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: if_devar.h,v 1.28 1997/07/03 16:55:07 thomas Exp $
+ * Id: if_devar.h,v 1.28 1997/07/03 16:55:07 thomas Exp
*/
#if !defined(_DEVAR_H)
#define _DEVAR_H
#if defined(__NetBSD__)
+
+#include "rnd.h"
+#if NRND > 0
+#include <sys/rnd.h>
+#endif
+
typedef bus_addr_t tulip_csrptr_t;
#define TULIP_CSR_READ(sc, csr) \
@@ -158,7 +166,7 @@ typedef struct {
#define TULIP_TXTIMER 4
#define TULIP_RXDESCS 48
-#define TULIP_TXDESCS 128
+#define TULIP_TXDESCS 32
#define TULIP_RXQ_TARGET 32
#if TULIP_RXQ_TARGET >= TULIP_RXDESCS
#error TULIP_RXQ_TARGET must be less than TULIP_RXDESCS
@@ -233,6 +241,7 @@ typedef enum {
typedef struct {
enum {
+ TULIP_MEDIAINFO_NONE,
TULIP_MEDIAINFO_SIA,
TULIP_MEDIAINFO_GPR,
TULIP_MEDIAINFO_MII,
@@ -332,6 +341,7 @@ typedef enum {
TULIP_21140_COGENT_EM100, /* Cogent EM100 100 only */
TULIP_21140_ZNYX_ZX34X, /* ZNYX ZX342 10/100 */
TULIP_21140_ASANTE, /* AsanteFast 10/100 */
+ TULIP_21140_EN1207, /* Accton EN2107 10/100 BNC */
TULIP_21041_GENERIC /* Generic 21041 card */
} tulip_board_t;
@@ -540,6 +550,7 @@ struct _tulip_softc_t {
#define TULIP_HAVE_OKROM 0x00002000 /* ROM was recognized */
#define TULIP_HAVE_NOMEDIA 0x00004000 /* did not detect any media */
#define TULIP_HAVE_STOREFWD 0x00008000 /* have CMD_STOREFWD */
+#define TULIP_HAVE_SIA100 0x00010000 /* has LS100 in SIA status */
u_int32_t tulip_intrmask; /* our copy of csr_intr */
u_int32_t tulip_cmdmode; /* our copy of csr_cmdmode */
u_int32_t tulip_last_system_error : 3; /* last system error (only value is TULIP_SYSTEMERROR is also set) */
@@ -657,6 +668,9 @@ struct _tulip_softc_t {
tulip_srom_connection_t tulip_conntype;
tulip_desc_t tulip_rxdescs[TULIP_RXDESCS];
tulip_desc_t tulip_txdescs[TULIP_TXDESCS];
+#if defined(__NetBSD__) && NRND > 0
+ rndsource_element_t tulip_rndsource;
+#endif
};
#if defined(IFM_ETHER)
OpenPOWER on IntegriCloud