summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
Diffstat (limited to 'sys')
-rw-r--r--sys/dev/usb/if_axe.c20
-rw-r--r--sys/dev/usb/if_axereg.h4
2 files changed, 18 insertions, 6 deletions
diff --git a/sys/dev/usb/if_axe.c b/sys/dev/usb/if_axe.c
index 3f4151a8ee1..1193ec012dd 100644
--- a/sys/dev/usb/if_axe.c
+++ b/sys/dev/usb/if_axe.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: if_axe.c,v 1.32 2005/08/12 11:56:16 jsg Exp $ */
+/* $OpenBSD: if_axe.c,v 1.33 2005/08/28 02:46:12 jsg Exp $ */
/*
* Copyright (c) 1997, 1998, 1999, 2000-2003
@@ -330,9 +330,21 @@ axe_miibus_statchg(device_ptr_t dev)
else
val = 0;
- if (sc->axe_flags & AX178)
- val |= (AXE_178_MEDIA_RX_EN | AXE_178_MEDIA_MAGIC |
- AXE_178_MEDIA_ENCK);
+ if (sc->axe_flags & AX178) {
+ val |= (AXE_178_MEDIA_RX_EN | AXE_178_MEDIA_MAGIC);
+
+ switch (IFM_SUBTYPE(mii->mii_media_active)) {
+ case IFM_1000_T:
+ val |= AXE_178_MEDIA_GMII | AXE_178_MEDIA_ENCK;
+ break;
+ case IFM_100_TX:
+ val |= AXE_178_MEDIA_100TX;
+ break;
+ case IFM_10_T:
+ /* doesn't need to be handled */
+ break;
+ }
+ }
DPRINTF(("axe_miibus_statchg: val=0x%x\n", val));
err = axe_cmd(sc, AXE_CMD_WRITE_MEDIA, 0, val, NULL);
diff --git a/sys/dev/usb/if_axereg.h b/sys/dev/usb/if_axereg.h
index bed21d218ed..8da5de80066 100644
--- a/sys/dev/usb/if_axereg.h
+++ b/sys/dev/usb/if_axereg.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: if_axereg.h,v 1.6 2005/08/10 23:17:46 jsg Exp $ */
+/* $OpenBSD: if_axereg.h,v 1.7 2005/08/28 02:46:13 jsg Exp $ */
/*
* Copyright (c) 1997, 1998, 1999, 2000-2003
@@ -114,7 +114,7 @@
#define AXE_178_MEDIA_JUMBO_EN 0x0040
#define AXE_178_MEDIA_LTPF_ONLY 0x0080
#define AXE_178_MEDIA_RX_EN 0x0100
-#define AXE_178_MEDIA_PORT_SPEED 0x0200
+#define AXE_178_MEDIA_100TX 0x0200
#define AXE_178_MEDIA_SBP 0x0800
#define AXE_178_MEDIA_SUPERMAC 0x1000