summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
Diffstat (limited to 'sys')
-rw-r--r--sys/dev/pci/if_sk.c78
1 files changed, 77 insertions, 1 deletions
diff --git a/sys/dev/pci/if_sk.c b/sys/dev/pci/if_sk.c
index 781d2a75b5c..b6c4b8289ee 100644
--- a/sys/dev/pci/if_sk.c
+++ b/sys/dev/pci/if_sk.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: if_sk.c,v 1.94 2006/02/09 11:19:32 brad Exp $ */
+/* $OpenBSD: if_sk.c,v 1.95 2006/02/13 01:23:05 brad Exp $ */
/*
* Copyright (c) 1997, 1998, 1999, 2000
@@ -487,6 +487,10 @@ sk_setmulti(struct sk_if_softc *sc_if)
case SK_YUKON:
case SK_YUKON_LITE:
case SK_YUKON_LP:
+ case SK_YUKON_XL:
+ case SK_YUKON_EC_U:
+ case SK_YUKON_EC:
+ case SK_YUKON_FE:
SK_YU_WRITE_2(sc_if, YUKON_MCAH1, 0);
SK_YU_WRITE_2(sc_if, YUKON_MCAH2, 0);
SK_YU_WRITE_2(sc_if, YUKON_MCAH3, 0);
@@ -527,6 +531,10 @@ allmulti:
case SK_YUKON:
case SK_YUKON_LITE:
case SK_YUKON_LP:
+ case SK_YUKON_XL:
+ case SK_YUKON_EC_U:
+ case SK_YUKON_EC:
+ case SK_YUKON_FE:
h = sk_yukon_hash(enm->enm_addrlo);
break;
}
@@ -550,6 +558,10 @@ allmulti:
case SK_YUKON:
case SK_YUKON_LITE:
case SK_YUKON_LP:
+ case SK_YUKON_XL:
+ case SK_YUKON_EC_U:
+ case SK_YUKON_EC:
+ case SK_YUKON_FE:
SK_YU_WRITE_2(sc_if, YUKON_MCAH1, hashes[0] & 0xffff);
SK_YU_WRITE_2(sc_if, YUKON_MCAH2, (hashes[0] >> 16) & 0xffff);
SK_YU_WRITE_2(sc_if, YUKON_MCAH3, hashes[1] & 0xffff);
@@ -921,6 +933,10 @@ sk_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
case SK_YUKON:
case SK_YUKON_LITE:
case SK_YUKON_LP:
+ case SK_YUKON_XL:
+ case SK_YUKON_EC_U:
+ case SK_YUKON_EC:
+ case SK_YUKON_FE:
SK_YU_CLRBIT_2(sc_if, YUKON_RCR,
YU_RCR_UFLEN | YU_RCR_MUFLEN);
break;
@@ -937,6 +953,10 @@ sk_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
case SK_YUKON:
case SK_YUKON_LITE:
case SK_YUKON_LP:
+ case SK_YUKON_XL:
+ case SK_YUKON_EC_U:
+ case SK_YUKON_EC:
+ case SK_YUKON_FE:
SK_YU_SETBIT_2(sc_if, YUKON_RCR,
YU_RCR_UFLEN | YU_RCR_MUFLEN);
break;
@@ -1554,6 +1574,54 @@ skc_attach(struct device *parent, struct device *self, void *aux)
}
}
+ if (sc->sk_type == SK_YUKON_XL) {
+ switch (sc->sk_rev) {
+ case SK_YUKON_XL_REV_A0:
+ revstr = "A0";
+ break;
+ case SK_YUKON_XL_REV_A1:
+ revstr = "A1";
+ break;
+ case SK_YUKON_XL_REV_A2:
+ revstr = "A2";
+ break;
+ case SK_YUKON_XL_REV_A3:
+ revstr = "A3";
+ break;
+ default:
+ ;
+ }
+ }
+
+ if (sc->sk_type == SK_YUKON_EC) {
+ switch (sc->sk_rev) {
+ case SK_YUKON_EC_REV_A1:
+ revstr = "A1";
+ break;
+ case SK_YUKON_EC_REV_A2:
+ revstr = "A2";
+ break;
+ case SK_YUKON_EC_REV_A3:
+ revstr = "A3";
+ break;
+ default:
+ ;
+ }
+ }
+
+ if (sc->sk_type == SK_YUKON_EC_U) {
+ switch (sc->sk_rev) {
+ case SK_YUKON_EC_U_REV_A0:
+ revstr = "A0";
+ break;
+ case SK_YUKON_EC_U_REV_A1:
+ revstr = "A1";
+ break;
+ default:
+ ;
+ }
+ }
+
/* Announce the product name. */
printf(", %s", sc->sk_name);
if (revstr != NULL)
@@ -2565,6 +2633,10 @@ sk_init(void *xsc_if)
case SK_YUKON:
case SK_YUKON_LITE:
case SK_YUKON_LP:
+ case SK_YUKON_XL:
+ case SK_YUKON_EC_U:
+ case SK_YUKON_EC:
+ case SK_YUKON_FE:
sk_init_yukon(sc_if);
break;
}
@@ -2704,6 +2776,10 @@ sk_stop(struct sk_if_softc *sc_if)
case SK_YUKON:
case SK_YUKON_LITE:
case SK_YUKON_LP:
+ case SK_YUKON_XL:
+ case SK_YUKON_EC_U:
+ case SK_YUKON_EC:
+ case SK_YUKON_FE:
SK_IF_WRITE_1(sc_if,0, SK_RXMF1_CTRL_TEST, SK_RFCTL_RESET_SET);
SK_IF_WRITE_1(sc_if,0, SK_TXMF1_CTRL_TEST, SK_TFCTL_RESET_SET);
break;