summaryrefslogtreecommitdiff
path: root/sys/dev/mii
diff options
context:
space:
mode:
authormsaitoh <msaitoh@NetBSD.org>2014-06-16 16:48:16 +0000
committermsaitoh <msaitoh@NetBSD.org>2014-06-16 16:48:16 +0000
commita7fbee7bb47f2af94d3c652e1b2cf1d8df2a8a8e (patch)
treedb3988c3c2c4f4f44cad36db138948d028e65fb5 /sys/dev/mii
parenta9d0691a48d599ae8413256b03c9d7cdde8f9a9b (diff)
IFM_FDX and IFM_HDX use different bit, so set IFM_HDX bit if it's not full
duplex. For many drivers, it recognize half duplex if IFM_FDX isn't set, but not for others. Same as {Free|Open}BSD.
Diffstat (limited to 'sys/dev/mii')
-rw-r--r--sys/dev/mii/acphy.c7
-rw-r--r--sys/dev/mii/amhphy.c6
-rw-r--r--sys/dev/mii/brgphy.c12
-rw-r--r--sys/dev/mii/ciphy.c6
-rw-r--r--sys/dev/mii/dmphy.c8
-rw-r--r--sys/dev/mii/gentbi.c6
-rw-r--r--sys/dev/mii/glxtphy.c6
-rw-r--r--sys/dev/mii/gphyter.c6
-rw-r--r--sys/dev/mii/icsphy.c7
-rw-r--r--sys/dev/mii/igphy.c6
-rw-r--r--sys/dev/mii/ihphy.c9
-rw-r--r--sys/dev/mii/ikphy.c6
-rw-r--r--sys/dev/mii/inphy.c7
-rw-r--r--sys/dev/mii/iophy.c6
-rw-r--r--sys/dev/mii/lxtphy.c7
-rw-r--r--sys/dev/mii/makphy.c6
-rw-r--r--sys/dev/mii/mvphy.c6
-rw-r--r--sys/dev/mii/nsphy.c15
-rw-r--r--sys/dev/mii/nsphyter.c7
-rw-r--r--sys/dev/mii/qsphy.c10
-rw-r--r--sys/dev/mii/rlphy.c12
-rw-r--r--sys/dev/mii/sqphy.c6
-rw-r--r--sys/dev/mii/tlphy.c6
-rw-r--r--sys/dev/mii/tqphy.c7
-rw-r--r--sys/dev/mii/ukphy_subr.c12
-rw-r--r--sys/dev/mii/urlphy.c7
26 files changed, 121 insertions, 78 deletions
diff --git a/sys/dev/mii/acphy.c b/sys/dev/mii/acphy.c
index ca0ee0b2f29..0dc3c359b95 100644
--- a/sys/dev/mii/acphy.c
+++ b/sys/dev/mii/acphy.c
@@ -1,4 +1,4 @@
-/* $NetBSD: acphy.c,v 1.23 2008/11/17 03:04:27 dyoung Exp $ */
+/* $NetBSD: acphy.c,v 1.24 2014/06/16 16:48:16 msaitoh Exp $ */
/*
* Copyright 2001 Wasabi Systems, Inc.
@@ -40,7 +40,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: acphy.c,v 1.23 2008/11/17 03:04:27 dyoung Exp $");
+__KERNEL_RCSID(0, "$NetBSD: acphy.c,v 1.24 2014/06/16 16:48:16 msaitoh Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -248,8 +248,11 @@ acphy_status(struct mii_softc *sc)
mii->mii_media_active |= IFM_100_TX;
else
mii->mii_media_active |= IFM_10_T;
+
if (dr & DR_DPLX)
mii->mii_media_active |= IFM_FDX;
+ else
+ mii->mii_media_active |= IFM_HDX;
} else
mii->mii_media_active = ife->ifm_media;
}
diff --git a/sys/dev/mii/amhphy.c b/sys/dev/mii/amhphy.c
index f69bac97b24..a2e4d958d7a 100644
--- a/sys/dev/mii/amhphy.c
+++ b/sys/dev/mii/amhphy.c
@@ -1,4 +1,4 @@
-/* $NetBSD: amhphy.c,v 1.19 2008/11/17 03:04:27 dyoung Exp $ */
+/* $NetBSD: amhphy.c,v 1.20 2014/06/16 16:48:16 msaitoh Exp $ */
/*
* Copyright 2001 Wasabi Systems, Inc.
@@ -40,7 +40,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: amhphy.c,v 1.19 2008/11/17 03:04:27 dyoung Exp $");
+__KERNEL_RCSID(0, "$NetBSD: amhphy.c,v 1.20 2014/06/16 16:48:16 msaitoh Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -230,6 +230,8 @@ amhphy_status(struct mii_softc *sc)
mii->mii_media_active |= IFM_10_T;
if (ssr & SSR_FD)
mii->mii_media_active |= IFM_FDX;
+ else
+ mii->mii_media_active |= IFM_HDX;
} else
mii->mii_media_active = ife->ifm_media;
}
diff --git a/sys/dev/mii/brgphy.c b/sys/dev/mii/brgphy.c
index 7867e73e19a..479b1455845 100644
--- a/sys/dev/mii/brgphy.c
+++ b/sys/dev/mii/brgphy.c
@@ -1,4 +1,4 @@
-/* $NetBSD: brgphy.c,v 1.69 2014/06/12 12:09:47 msaitoh Exp $ */
+/* $NetBSD: brgphy.c,v 1.70 2014/06/16 16:48:16 msaitoh Exp $ */
/*-
* Copyright (c) 1998, 1999, 2000, 2001 The NetBSD Foundation, Inc.
@@ -62,7 +62,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: brgphy.c,v 1.69 2014/06/12 12:09:47 msaitoh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: brgphy.c,v 1.70 2014/06/16 16:48:16 msaitoh Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -575,7 +575,7 @@ brgphy_status(struct mii_softc *sc)
break;
case BRGPHY_RES_1000HD:
- mii->mii_media_active |= IFM_1000_T;
+ mii->mii_media_active |= IFM_1000_T | IFM_HDX;
gtsr = PHY_READ(sc, MII_100T2SR);
if (gtsr & GTSR_MS_RES)
mii->mii_media_active |= IFM_ETH_MASTER;
@@ -586,11 +586,11 @@ brgphy_status(struct mii_softc *sc)
break;
case BRGPHY_RES_100T4:
- mii->mii_media_active |= IFM_100_T4;
+ mii->mii_media_active |= IFM_100_T4 | IFM_HDX;
break;
case BRGPHY_RES_100HD:
- mii->mii_media_active |= IFM_100_TX;
+ mii->mii_media_active |= IFM_100_TX | IFM_HDX;
break;
case BRGPHY_RES_10FD:
@@ -598,7 +598,7 @@ brgphy_status(struct mii_softc *sc)
break;
case BRGPHY_RES_10HD:
- mii->mii_media_active |= IFM_10_T;
+ mii->mii_media_active |= IFM_10_T | IFM_HDX;
break;
default:
diff --git a/sys/dev/mii/ciphy.c b/sys/dev/mii/ciphy.c
index fcc7362d509..1d37ea68333 100644
--- a/sys/dev/mii/ciphy.c
+++ b/sys/dev/mii/ciphy.c
@@ -1,4 +1,4 @@
-/* $NetBSD: ciphy.c,v 1.24 2013/06/11 07:22:08 msaitoh Exp $ */
+/* $NetBSD: ciphy.c,v 1.25 2014/06/16 16:48:16 msaitoh Exp $ */
/*-
* Copyright (c) 2004
@@ -35,7 +35,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ciphy.c,v 1.24 2013/06/11 07:22:08 msaitoh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ciphy.c,v 1.25 2014/06/16 16:48:16 msaitoh Exp $");
/*
* Driver for the Cicada CS8201 10/100/1000 copper PHY.
@@ -363,6 +363,8 @@ ciphy_status(struct mii_softc *sc)
if (bmsr & CIPHY_AUXCSR_FDX)
mii->mii_media_active |= IFM_FDX;
+ else
+ mii->mii_media_active |= IFM_HDX;
return;
}
diff --git a/sys/dev/mii/dmphy.c b/sys/dev/mii/dmphy.c
index 5347f9929ba..8aae3e04c76 100644
--- a/sys/dev/mii/dmphy.c
+++ b/sys/dev/mii/dmphy.c
@@ -1,4 +1,4 @@
-/* $NetBSD: dmphy.c,v 1.34 2009/10/19 18:41:13 bouyer Exp $ */
+/* $NetBSD: dmphy.c,v 1.35 2014/06/16 16:48:16 msaitoh Exp $ */
/*-
* Copyright (c) 1998, 1999, 2000 The NetBSD Foundation, Inc.
@@ -60,7 +60,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: dmphy.c,v 1.34 2009/10/19 18:41:13 bouyer Exp $");
+__KERNEL_RCSID(0, "$NetBSD: dmphy.c,v 1.35 2014/06/16 16:48:16 msaitoh Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -247,11 +247,11 @@ dmphy_status(struct mii_softc *sc)
if (dscsr & DSCSR_100FDX)
mii->mii_media_active |= IFM_100_TX|IFM_FDX;
else if (dscsr & DSCSR_100HDX)
- mii->mii_media_active |= IFM_100_TX;
+ mii->mii_media_active |= IFM_100_TX|IFM_HDX;
else if (dscsr & DSCSR_10FDX)
mii->mii_media_active |= IFM_10_T|IFM_FDX;
else if (dscsr & DSCSR_10HDX)
- mii->mii_media_active |= IFM_10_T;
+ mii->mii_media_active |= IFM_10_T|IFM_HDX;
else
mii->mii_media_active |= IFM_NONE;
} else
diff --git a/sys/dev/mii/gentbi.c b/sys/dev/mii/gentbi.c
index 59828dd6ab7..799ebcf2732 100644
--- a/sys/dev/mii/gentbi.c
+++ b/sys/dev/mii/gentbi.c
@@ -1,4 +1,4 @@
-/* $NetBSD: gentbi.c,v 1.26 2014/06/16 14:43:22 msaitoh Exp $ */
+/* $NetBSD: gentbi.c,v 1.27 2014/06/16 16:48:16 msaitoh Exp $ */
/*-
* Copyright (c) 1998, 1999, 2000, 2001 The NetBSD Foundation, Inc.
@@ -62,7 +62,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: gentbi.c,v 1.26 2014/06/16 14:43:22 msaitoh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: gentbi.c,v 1.27 2014/06/16 16:48:16 msaitoh Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -281,6 +281,8 @@ gentbi_status(struct mii_softc *sc)
(anlpar & ANLPAR_X_FD) != 0)
mii->mii_media_active |=
IFM_FDX | mii_phy_flowstatus(sc);
+ else
+ mii->mii_media_active |= IFM_HDX;
} else
mii->mii_media_active = ife->ifm_media;
}
diff --git a/sys/dev/mii/glxtphy.c b/sys/dev/mii/glxtphy.c
index f80bad263d5..7811293576f 100644
--- a/sys/dev/mii/glxtphy.c
+++ b/sys/dev/mii/glxtphy.c
@@ -1,4 +1,4 @@
-/* $NetBSD: glxtphy.c,v 1.23 2009/10/19 18:41:13 bouyer Exp $ */
+/* $NetBSD: glxtphy.c,v 1.24 2014/06/16 16:48:16 msaitoh Exp $ */
/*-
* Copyright (c) 1998, 1999, 2000, 2001 The NetBSD Foundation, Inc.
@@ -59,7 +59,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: glxtphy.c,v 1.23 2009/10/19 18:41:13 bouyer Exp $");
+__KERNEL_RCSID(0, "$NetBSD: glxtphy.c,v 1.24 2014/06/16 16:48:16 msaitoh Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -265,6 +265,8 @@ glxtphy_status(struct mii_softc *sc)
if (qsr & QSR_DUPLEX)
mii->mii_media_active |=
IFM_FDX | mii_phy_flowstatus(sc);
+ else
+ mii->mii_media_active |= IFM_HDX;
} else
mii->mii_media_active = ife->ifm_media;
}
diff --git a/sys/dev/mii/gphyter.c b/sys/dev/mii/gphyter.c
index fc8c57a23f9..f9ed7004d98 100644
--- a/sys/dev/mii/gphyter.c
+++ b/sys/dev/mii/gphyter.c
@@ -1,4 +1,4 @@
-/* $NetBSD: gphyter.c,v 1.28 2010/01/07 09:30:28 jdc Exp $ */
+/* $NetBSD: gphyter.c,v 1.29 2014/06/16 16:48:16 msaitoh Exp $ */
/*-
* Copyright (c) 1998, 1999, 2000, 2001 The NetBSD Foundation, Inc.
@@ -66,7 +66,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: gphyter.c,v 1.28 2010/01/07 09:30:28 jdc Exp $");
+__KERNEL_RCSID(0, "$NetBSD: gphyter.c,v 1.29 2014/06/16 16:48:16 msaitoh Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -300,6 +300,8 @@ gphyter_status(struct mii_softc *sc)
if (physup & PHY_SUP_DUPLEX)
mii->mii_media_active |=
IFM_FDX | mii_phy_flowstatus(sc);
+ else
+ mii->mii_media_active |= IFM_HDX;
} else
mii->mii_media_active = ife->ifm_media;
}
diff --git a/sys/dev/mii/icsphy.c b/sys/dev/mii/icsphy.c
index ea1c7bd574c..dfddaf858c3 100644
--- a/sys/dev/mii/icsphy.c
+++ b/sys/dev/mii/icsphy.c
@@ -1,4 +1,4 @@
-/* $NetBSD: icsphy.c,v 1.48 2009/10/19 18:41:14 bouyer Exp $ */
+/* $NetBSD: icsphy.c,v 1.49 2014/06/16 16:48:16 msaitoh Exp $ */
/*-
* Copyright (c) 1998, 1999, 2000 The NetBSD Foundation, Inc.
@@ -60,7 +60,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: icsphy.c,v 1.48 2009/10/19 18:41:14 bouyer Exp $");
+__KERNEL_RCSID(0, "$NetBSD: icsphy.c,v 1.49 2014/06/16 16:48:16 msaitoh Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -252,8 +252,11 @@ icsphy_status(struct mii_softc *sc)
mii->mii_media_active |= IFM_100_TX;
else
mii->mii_media_active |= IFM_10_T;
+
if (qpr & QPR_FDX)
mii->mii_media_active |= IFM_FDX;
+ else
+ mii->mii_media_active |= IFM_HDX;
} else
mii->mii_media_active = ife->ifm_media;
}
diff --git a/sys/dev/mii/igphy.c b/sys/dev/mii/igphy.c
index 683b9430fc9..890dc641b01 100644
--- a/sys/dev/mii/igphy.c
+++ b/sys/dev/mii/igphy.c
@@ -1,4 +1,4 @@
-/* $NetBSD: igphy.c,v 1.22 2012/10/18 08:22:37 msaitoh Exp $ */
+/* $NetBSD: igphy.c,v 1.23 2014/06/16 16:48:16 msaitoh Exp $ */
/*
* The Intel copyright applies to the analog register setup, and the
@@ -70,7 +70,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: igphy.c,v 1.22 2012/10/18 08:22:37 msaitoh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: igphy.c,v 1.23 2014/06/16 16:48:16 msaitoh Exp $");
#include "opt_mii.h"
@@ -482,6 +482,8 @@ igphy_status(struct mii_softc *sc)
if (pssr & PSSR_FULL_DUPLEX)
mii->mii_media_active |=
IFM_FDX | mii_phy_flowstatus(sc);
+ else
+ mii->mii_media_active |= IFM_HDX;
} else
mii->mii_media_active = ife->ifm_media;
}
diff --git a/sys/dev/mii/ihphy.c b/sys/dev/mii/ihphy.c
index 74010da0bf3..6a68b3e482a 100644
--- a/sys/dev/mii/ihphy.c
+++ b/sys/dev/mii/ihphy.c
@@ -1,4 +1,4 @@
-/* $NetBSD: ihphy.c,v 1.7 2013/06/19 15:30:25 msaitoh Exp $ */
+/* $NetBSD: ihphy.c,v 1.8 2014/06/16 16:48:16 msaitoh Exp $ */
/*-
* Copyright (c) 1998, 1999, 2000 The NetBSD Foundation, Inc.
@@ -60,7 +60,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ihphy.c,v 1.7 2013/06/19 15:30:25 msaitoh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ihphy.c,v 1.8 2014/06/16 16:48:16 msaitoh Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -290,8 +290,9 @@ ihphy_status(struct mii_softc *sc)
}
if (esr & IHPHY_ESR_DUPLEX)
- mii->mii_media_active |=
- IFM_FDX | mii_phy_flowstatus(sc);
+ mii->mii_media_active |= IFM_FDX | mii_phy_flowstatus(sc);
+ else
+ mii->mii_media_active |= IFM_HDX;
}
static void
diff --git a/sys/dev/mii/ikphy.c b/sys/dev/mii/ikphy.c
index d8b7dfd39c1..778a54cb2b8 100644
--- a/sys/dev/mii/ikphy.c
+++ b/sys/dev/mii/ikphy.c
@@ -1,4 +1,4 @@
-/* $NetBSD: ikphy.c,v 1.9 2009/10/19 18:41:14 bouyer Exp $ */
+/* $NetBSD: ikphy.c,v 1.10 2014/06/16 16:48:16 msaitoh Exp $ */
/*******************************************************************************
Copyright (c) 2001-2005, Intel Corporation
@@ -59,7 +59,7 @@ POSSIBILITY OF SUCH DAMAGE.
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ikphy.c,v 1.9 2009/10/19 18:41:14 bouyer Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ikphy.c,v 1.10 2014/06/16 16:48:16 msaitoh Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -342,6 +342,8 @@ ikphy_status(struct mii_softc *sc)
if (pssr & GG82563_PSSR_DUPLEX)
mii->mii_media_active |=
IFM_FDX | mii_phy_flowstatus(sc);
+ else
+ mii->mii_media_active |= IFM_HDX;
} else
mii->mii_media_active = ife->ifm_media;
kmrn = PHY_READ(sc, GG82563_PHY_KMRN_MODE_CTRL);
diff --git a/sys/dev/mii/inphy.c b/sys/dev/mii/inphy.c
index 9f226bafcd0..637b4346405 100644
--- a/sys/dev/mii/inphy.c
+++ b/sys/dev/mii/inphy.c
@@ -1,4 +1,4 @@
-/* $NetBSD: inphy.c,v 1.52 2009/10/19 18:41:14 bouyer Exp $ */
+/* $NetBSD: inphy.c,v 1.53 2014/06/16 16:48:16 msaitoh Exp $ */
/*-
* Copyright (c) 1998, 1999, 2000 The NetBSD Foundation, Inc.
@@ -60,7 +60,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: inphy.c,v 1.52 2009/10/19 18:41:14 bouyer Exp $");
+__KERNEL_RCSID(0, "$NetBSD: inphy.c,v 1.53 2014/06/16 16:48:16 msaitoh Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -252,8 +252,11 @@ inphy_status(struct mii_softc *sc)
mii->mii_media_active |= IFM_100_T4;
else
mii->mii_media_active |= IFM_10_T;
+
if (scr & SCR_FDX)
mii->mii_media_active |= IFM_FDX;
+ else
+ mii->mii_media_active |= IFM_HDX;
if (mii->mii_media_active & IFM_FDX)
mii->mii_media_active |= mii_phy_flowstatus(sc);
diff --git a/sys/dev/mii/iophy.c b/sys/dev/mii/iophy.c
index 1ac02bcc8dc..8d61294ef5d 100644
--- a/sys/dev/mii/iophy.c
+++ b/sys/dev/mii/iophy.c
@@ -1,4 +1,4 @@
-/* $NetBSD: iophy.c,v 1.36 2009/10/19 18:41:14 bouyer Exp $ */
+/* $NetBSD: iophy.c,v 1.37 2014/06/16 16:48:16 msaitoh Exp $ */
/*
* Copyright (c) 1998, 1999, 2000 The NetBSD Foundation, Inc.
@@ -59,7 +59,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: iophy.c,v 1.36 2009/10/19 18:41:14 bouyer Exp $");
+__KERNEL_RCSID(0, "$NetBSD: iophy.c,v 1.37 2014/06/16 16:48:16 msaitoh Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -246,6 +246,8 @@ iophy_status(struct mii_softc *sc)
if (ext0 & EXT0_DUPLEX)
mii->mii_media_active |= IFM_FDX;
+ else
+ mii->mii_media_active |= IFM_HDX;
} else
mii->mii_media_active = ife->ifm_media;
}
diff --git a/sys/dev/mii/lxtphy.c b/sys/dev/mii/lxtphy.c
index 71152abd3bb..c34e99a1295 100644
--- a/sys/dev/mii/lxtphy.c
+++ b/sys/dev/mii/lxtphy.c
@@ -1,4 +1,4 @@
-/* $NetBSD: lxtphy.c,v 1.48 2009/10/19 18:41:14 bouyer Exp $ */
+/* $NetBSD: lxtphy.c,v 1.49 2014/06/16 16:48:16 msaitoh Exp $ */
/*-
* Copyright (c) 1998, 1999, 2000 The NetBSD Foundation, Inc.
@@ -60,7 +60,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: lxtphy.c,v 1.48 2009/10/19 18:41:14 bouyer Exp $");
+__KERNEL_RCSID(0, "$NetBSD: lxtphy.c,v 1.49 2014/06/16 16:48:16 msaitoh Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -272,8 +272,11 @@ lxtphy_status(struct mii_softc *sc)
mii->mii_media_active |= IFM_100_TX;
else
mii->mii_media_active |= IFM_10_T;
+
if (csr & CSR_DUPLEX)
mii->mii_media_active |= IFM_FDX;
+ else
+ mii->mii_media_active |= IFM_HDX;
} else
mii->mii_media_active = ife->ifm_media;
}
diff --git a/sys/dev/mii/makphy.c b/sys/dev/mii/makphy.c
index 487f592807c..4dcd6ddd8cd 100644
--- a/sys/dev/mii/makphy.c
+++ b/sys/dev/mii/makphy.c
@@ -1,4 +1,4 @@
-/* $NetBSD: makphy.c,v 1.39 2014/05/13 02:11:26 christos Exp $ */
+/* $NetBSD: makphy.c,v 1.40 2014/06/16 16:48:16 msaitoh Exp $ */
/*-
* Copyright (c) 1998, 1999, 2000, 2001 The NetBSD Foundation, Inc.
@@ -59,7 +59,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: makphy.c,v 1.39 2014/05/13 02:11:26 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: makphy.c,v 1.40 2014/06/16 16:48:16 msaitoh Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -344,6 +344,8 @@ makphy_status(struct mii_softc *sc)
if (pssr & PSSR_DUPLEX)
mii->mii_media_active |=
IFM_FDX | mii_phy_flowstatus(sc);
+ else
+ mii->mii_media_active |= IFM_HDX;
} else
mii->mii_media_active = ife->ifm_media;
}
diff --git a/sys/dev/mii/mvphy.c b/sys/dev/mii/mvphy.c
index 7ef704615f7..f24c9e902dd 100644
--- a/sys/dev/mii/mvphy.c
+++ b/sys/dev/mii/mvphy.c
@@ -1,4 +1,4 @@
-/* $NetBSD: mvphy.c,v 1.9 2009/06/18 08:40:26 rjs Exp $ */
+/* $NetBSD: mvphy.c,v 1.10 2014/06/16 16:48:16 msaitoh Exp $ */
/*-
* Copyright (c) 2006 Sam Leffler, Errno Consulting
@@ -31,7 +31,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: mvphy.c,v 1.9 2009/06/18 08:40:26 rjs Exp $");
+__KERNEL_RCSID(0, "$NetBSD: mvphy.c,v 1.10 2014/06/16 16:48:16 msaitoh Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -290,6 +290,8 @@ mvphy_status(struct mii_softc *sc)
mii->mii_media_active |= IFM_10_T;
if (hwstatus & MV_STATUS_RESOLVED_DUPLEX_FULL)
mii->mii_media_active |= IFM_FDX;
+ else
+ mii->mii_media_active |= IFM_HDX;
} else {
mii->mii_media_active |= IFM_NONE;
/* XXX flush ATU only on link down transition */
diff --git a/sys/dev/mii/nsphy.c b/sys/dev/mii/nsphy.c
index e8fbdb132d8..769c5a13180 100644
--- a/sys/dev/mii/nsphy.c
+++ b/sys/dev/mii/nsphy.c
@@ -1,4 +1,4 @@
-/* $NetBSD: nsphy.c,v 1.58 2014/06/16 14:43:22 msaitoh Exp $ */
+/* $NetBSD: nsphy.c,v 1.59 2014/06/16 16:48:16 msaitoh Exp $ */
/*-
* Copyright (c) 1998, 1999, 2000 The NetBSD Foundation, Inc.
@@ -60,7 +60,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nsphy.c,v 1.58 2014/06/16 14:43:22 msaitoh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nsphy.c,v 1.59 2014/06/16 16:48:16 msaitoh Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -284,13 +284,13 @@ nsphy_status(struct mii_softc *sc)
if (anlpar & ANLPAR_TX_FD)
mii->mii_media_active |= IFM_100_TX|IFM_FDX;
else if (anlpar & ANLPAR_T4)
- mii->mii_media_active |= IFM_100_T4;
+ mii->mii_media_active |= IFM_100_T4|IFM_HDX;
else if (anlpar & ANLPAR_TX)
- mii->mii_media_active |= IFM_100_TX;
+ mii->mii_media_active |= IFM_100_TX|IFM_HDX;
else if (anlpar & ANLPAR_10_FD)
mii->mii_media_active |= IFM_10_T|IFM_FDX;
else if (anlpar & ANLPAR_10)
- mii->mii_media_active |= IFM_10_T;
+ mii->mii_media_active |= IFM_10_T|IFM_HDX;
else
mii->mii_media_active |= IFM_NONE;
return;
@@ -306,10 +306,7 @@ nsphy_status(struct mii_softc *sc)
mii->mii_media_active |= IFM_10_T;
else
mii->mii_media_active |= IFM_100_TX;
-#if 0
- if (par & PAR_FDX)
- mii->mii_media_active |= IFM_FDX;
-#endif
+ mii->mii_media_active |= IFM_HDX;
} else
mii->mii_media_active = ife->ifm_media;
}
diff --git a/sys/dev/mii/nsphyter.c b/sys/dev/mii/nsphyter.c
index 91c2debd398..b2b995ad7d8 100644
--- a/sys/dev/mii/nsphyter.c
+++ b/sys/dev/mii/nsphyter.c
@@ -1,4 +1,4 @@
-/* $NetBSD: nsphyter.c,v 1.37 2012/08/24 09:01:22 msaitoh Exp $ */
+/* $NetBSD: nsphyter.c,v 1.38 2014/06/16 16:48:16 msaitoh Exp $ */
/*-
* Copyright (c) 1998, 1999, 2000, 2001 The NetBSD Foundation, Inc.
@@ -63,7 +63,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nsphyter.c,v 1.37 2012/08/24 09:01:22 msaitoh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nsphyter.c,v 1.38 2014/06/16 16:48:16 msaitoh Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -256,9 +256,12 @@ nsphyter_status(struct mii_softc *sc)
mii->mii_media_active |= IFM_10_T;
else
mii->mii_media_active |= IFM_100_TX;
+
if (physts & PHYSTS_DUPLEX)
mii->mii_media_active |=
IFM_FDX | mii_phy_flowstatus(sc);
+ else
+ mii->mii_media_active |= IFM_HDX;
} else
mii->mii_media_active = ife->ifm_media;
}
diff --git a/sys/dev/mii/qsphy.c b/sys/dev/mii/qsphy.c
index 32104b978ab..27172a61383 100644
--- a/sys/dev/mii/qsphy.c
+++ b/sys/dev/mii/qsphy.c
@@ -1,4 +1,4 @@
-/* $NetBSD: qsphy.c,v 1.47 2009/10/19 18:41:14 bouyer Exp $ */
+/* $NetBSD: qsphy.c,v 1.48 2014/06/16 16:48:16 msaitoh Exp $ */
/*-
* Copyright (c) 1998, 1999, 2000 The NetBSD Foundation, Inc.
@@ -60,7 +60,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: qsphy.c,v 1.47 2009/10/19 18:41:14 bouyer Exp $");
+__KERNEL_RCSID(0, "$NetBSD: qsphy.c,v 1.48 2014/06/16 16:48:16 msaitoh Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -236,19 +236,19 @@ qsphy_status(struct mii_softc *sc)
PHY_READ(sc, MII_QSPHY_PCTL);
switch (pctl & PCTL_OPMASK) {
case PCTL_10_T:
- mii->mii_media_active |= IFM_10_T;
+ mii->mii_media_active |= IFM_10_T|IFM_HDX;
break;
case PCTL_10_T_FDX:
mii->mii_media_active |= IFM_10_T|IFM_FDX;
break;
case PCTL_100_TX:
- mii->mii_media_active |= IFM_100_TX;
+ mii->mii_media_active |= IFM_100_TX|IFM_HDX;
break;
case PCTL_100_TX_FDX:
mii->mii_media_active |= IFM_100_TX|IFM_FDX;
break;
case PCTL_100_T4:
- mii->mii_media_active |= IFM_100_T4;
+ mii->mii_media_active |= IFM_100_T4|IFM_HDX;
break;
default:
/* Erg... this shouldn't happen. */
diff --git a/sys/dev/mii/rlphy.c b/sys/dev/mii/rlphy.c
index 3c20faa31d2..928d508192e 100644
--- a/sys/dev/mii/rlphy.c
+++ b/sys/dev/mii/rlphy.c
@@ -1,4 +1,4 @@
-/* $NetBSD: rlphy.c,v 1.28 2014/06/16 14:43:22 msaitoh Exp $ */
+/* $NetBSD: rlphy.c,v 1.29 2014/06/16 16:48:16 msaitoh Exp $ */
/* $OpenBSD: rlphy.c,v 1.20 2005/07/31 05:27:30 pvalchev Exp $ */
/*
@@ -38,7 +38,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rlphy.c,v 1.28 2014/06/16 14:43:22 msaitoh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rlphy.c,v 1.29 2014/06/16 16:48:16 msaitoh Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -246,13 +246,13 @@ rlphy_status(struct mii_softc *sc)
if (anlpar & ANLPAR_TX_FD)
mii->mii_media_active |= IFM_100_TX|IFM_FDX;
else if (anlpar & ANLPAR_T4)
- mii->mii_media_active |= IFM_100_T4;
+ mii->mii_media_active |= IFM_100_T4|IFM_HDX;
else if (anlpar & ANLPAR_TX)
- mii->mii_media_active |= IFM_100_TX;
+ mii->mii_media_active |= IFM_100_TX|IFM_HDX;
else if (anlpar & ANLPAR_10_FD)
mii->mii_media_active |= IFM_10_T|IFM_FDX;
else if (anlpar & ANLPAR_10)
- mii->mii_media_active |= IFM_10_T;
+ mii->mii_media_active |= IFM_10_T|IFM_HDX;
else
mii->mii_media_active |= IFM_NONE;
return;
@@ -296,7 +296,7 @@ rlphy_status(struct mii_softc *sc)
else
mii->mii_media_active |= IFM_100_TX;
}
-
+ mii->mii_media_active |= IFM_HDX;
} else
mii->mii_media_active = ife->ifm_media;
}
diff --git a/sys/dev/mii/sqphy.c b/sys/dev/mii/sqphy.c
index 8ae00ff8a0e..d9d7f00d33d 100644
--- a/sys/dev/mii/sqphy.c
+++ b/sys/dev/mii/sqphy.c
@@ -1,4 +1,4 @@
-/* $NetBSD: sqphy.c,v 1.49 2009/10/19 18:41:14 bouyer Exp $ */
+/* $NetBSD: sqphy.c,v 1.50 2014/06/16 16:48:16 msaitoh Exp $ */
/*-
* Copyright (c) 1998, 1999, 2000, 2001 The NetBSD Foundation, Inc.
@@ -60,7 +60,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: sqphy.c,v 1.49 2009/10/19 18:41:14 bouyer Exp $");
+__KERNEL_RCSID(0, "$NetBSD: sqphy.c,v 1.50 2014/06/16 16:48:16 msaitoh Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -264,6 +264,8 @@ sqphy_status(struct mii_softc *sc)
mii->mii_media_active |= IFM_10_T;
if (status & STATUS_DPLX_DET)
mii->mii_media_active |= IFM_FDX;
+ else
+ mii->mii_media_active |= IFM_HDX;
} else
mii->mii_media_active = ife->ifm_media;
}
diff --git a/sys/dev/mii/tlphy.c b/sys/dev/mii/tlphy.c
index 15f36eb6b81..0c2c86b3753 100644
--- a/sys/dev/mii/tlphy.c
+++ b/sys/dev/mii/tlphy.c
@@ -1,4 +1,4 @@
-/* $NetBSD: tlphy.c,v 1.61 2013/06/11 07:22:08 msaitoh Exp $ */
+/* $NetBSD: tlphy.c,v 1.62 2014/06/16 16:48:16 msaitoh Exp $ */
/*-
* Copyright (c) 1998, 1999, 2000 The NetBSD Foundation, Inc.
@@ -59,7 +59,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: tlphy.c,v 1.61 2013/06/11 07:22:08 msaitoh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tlphy.c,v 1.62 2014/06/16 16:48:16 msaitoh Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -327,6 +327,8 @@ tlphy_status(struct mii_softc *sc)
*/
if (bmcr & BMCR_FDX)
mii->mii_media_active |= IFM_FDX;
+ else
+ mii->mii_media_active |= IFM_HDX;
mii->mii_media_active |= IFM_10_T;
}
diff --git a/sys/dev/mii/tqphy.c b/sys/dev/mii/tqphy.c
index d6519e173c2..c2405820bf7 100644
--- a/sys/dev/mii/tqphy.c
+++ b/sys/dev/mii/tqphy.c
@@ -1,4 +1,4 @@
-/* $NetBSD: tqphy.c,v 1.38 2009/10/19 18:41:14 bouyer Exp $ */
+/* $NetBSD: tqphy.c,v 1.39 2014/06/16 16:48:16 msaitoh Exp $ */
/*
* Copyright (c) 1998, 1999, 2000 The NetBSD Foundation, Inc.
@@ -61,7 +61,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: tqphy.c,v 1.38 2009/10/19 18:41:14 bouyer Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tqphy.c,v 1.39 2014/06/16 16:48:16 msaitoh Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -250,8 +250,11 @@ tqphy_status(struct mii_softc *sc)
mii->mii_media_active |= IFM_100_TX;
else
mii->mii_media_active |= IFM_10_T;
+
if (diag & DIAG_DPLX)
mii->mii_media_active |= IFM_FDX;
+ else
+ mii->mii_media_active |= IFM_HDX;
} else
mii->mii_media_active = ife->ifm_media;
}
diff --git a/sys/dev/mii/ukphy_subr.c b/sys/dev/mii/ukphy_subr.c
index 1c082aeb545..69e5afc3b3f 100644
--- a/sys/dev/mii/ukphy_subr.c
+++ b/sys/dev/mii/ukphy_subr.c
@@ -1,4 +1,4 @@
-/* $NetBSD: ukphy_subr.c,v 1.12 2014/06/16 14:43:22 msaitoh Exp $ */
+/* $NetBSD: ukphy_subr.c,v 1.13 2014/06/16 16:48:16 msaitoh Exp $ */
/*-
* Copyright (c) 1998 The NetBSD Foundation, Inc.
@@ -35,7 +35,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ukphy_subr.c,v 1.12 2014/06/16 14:43:22 msaitoh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ukphy_subr.c,v 1.13 2014/06/16 16:48:16 msaitoh Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -102,17 +102,17 @@ ukphy_status(struct mii_softc *phy)
mii->mii_media_active |= IFM_1000_T|IFM_FDX;
else if ((gtcr & GTCR_ADV_1000THDX) &&
(gtsr & GTSR_LP_1000THDX))
- mii->mii_media_active |= IFM_1000_T;
+ mii->mii_media_active |= IFM_1000_T|IFM_HDX;
else if (anlpar & ANLPAR_TX_FD)
mii->mii_media_active |= IFM_100_TX|IFM_FDX;
else if (anlpar & ANLPAR_T4)
- mii->mii_media_active |= IFM_100_T4;
+ mii->mii_media_active |= IFM_100_T4|IFM_HDX;
else if (anlpar & ANLPAR_TX)
- mii->mii_media_active |= IFM_100_TX;
+ mii->mii_media_active |= IFM_100_TX|IFM_HDX;
else if (anlpar & ANLPAR_10_FD)
mii->mii_media_active |= IFM_10_T|IFM_FDX;
else if (anlpar & ANLPAR_10)
- mii->mii_media_active |= IFM_10_T;
+ mii->mii_media_active |= IFM_10_T|IFM_HDX;
else
mii->mii_media_active |= IFM_NONE;
diff --git a/sys/dev/mii/urlphy.c b/sys/dev/mii/urlphy.c
index 06679114e00..fcb206f8068 100644
--- a/sys/dev/mii/urlphy.c
+++ b/sys/dev/mii/urlphy.c
@@ -1,4 +1,4 @@
-/* $NetBSD: urlphy.c,v 1.29 2013/06/09 09:56:17 msaitoh Exp $ */
+/* $NetBSD: urlphy.c,v 1.30 2014/06/16 16:48:16 msaitoh Exp $ */
/*
* Copyright (c) 2001, 2002
* Shingo WATANABE <nabe@nabechan.org>. All rights reserved.
@@ -34,7 +34,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: urlphy.c,v 1.29 2013/06/09 09:56:17 msaitoh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: urlphy.c,v 1.30 2014/06/16 16:48:16 msaitoh Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -268,8 +268,11 @@ urlphy_status(struct mii_softc *sc)
mii->mii_media_active |= IFM_100_TX;
else
mii->mii_media_active |= IFM_10_T;
+
if (msr & URLPHY_MSR_DUPLEX)
mii->mii_media_active |= IFM_FDX;
+ else
+ mii->mii_media_active |= IFM_HDX;
} else
mii->mii_media_active = ife->ifm_media;
}