NetBSD Problem Report #9183

Received: (qmail 9394 invoked from network); 13 Jan 2000 18:39:48 -0000
Message-Id: <200001131839.TAA19057@horn.ics.muni.cz>
Date: Thu, 13 Jan 2000 19:39:47 +0100 (MET)
From: salvet@ics.muni.cz
Reply-To: salvet@ics.muni.cz
To: gnats-bugs@gnats.netbsd.org
Subject: 100baseFX (fiber) support for SMC 9432FTX
X-Send-Pr-Version: 3.95

>Number:         9183
>Category:       kern
>Synopsis:       100baseFX (fiber) support for SMC 9432FTX
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    kern-bug-people
>State:          open
>Class:          change-request
>Submitter-Id:   net
>Arrival-Date:   Thu Jan 13 10:42:00 +0000 2000
>Closed-Date:    
>Last-Modified:  Sun Apr 29 07:57:15 +0000 2018
>Originator:     Zdenek Salvet
>Release:        1.4.1
>Organization:
Institute of Computer Science of Masaryk University, Brno, Czech Republic
>Environment:
	also applies to -current of Thu Jan 13 2000
>Description:
With change to lxtphy driver, SMC 9432FTX ethernet card with 100baseFX
interface could be supported. Resulting behaviour is not perfect unfortunately,
because there is no way to detect in PHY driver whether fiber interface
is physically available, so I had to hardwire 100baseFX-FDX as always
available. 

>How-To-Repeat:
>Fix:
Separate patches for 1.4.1 and -current follow:

========= PATCH FOR 1.4.1 ===================================
--- lxtphy.c.1.4.1	Thu Jan 13 17:20:31 2000
+++ lxtphy.c.new	Thu Jan 13 19:34:42 2000
@@ -143,10 +143,18 @@
 	    PHY_READ(sc, MII_BMSR) & ma->mii_capmask;
 	printf("%s: ", sc->mii_dev.dv_xname);
 	if ((sc->mii_capabilities & BMSR_MEDIAMASK) == 0)
-		printf("no media present");
+		/* printf("no media present") */ ;
 	else
 		mii_add_media(mii, sc->mii_capabilities,
 		    sc->mii_inst);
+
+	/* XXX
+	 * no way to detect the presence of a fiber interface
+         */
+	ADD(IFM_MAKEWORD(IFM_ETHER, IFM_100_FX, IFM_FDX, sc->mii_inst),
+	    BMCR_S100|BMCR_FDX);
+	printf(", 100baseFX-FDX");
+
 	printf("\n");
 #undef ADD
 }
@@ -200,13 +208,25 @@
 			 * XXX Not supported as a manual setting right now.
 			 */
 			return (EINVAL);
+		case IFM_100_FX:
+			/*
+			 * XXX
+			 * CONFIG_LEDC0 | CONFIG_LEDC1 part may be
+			 * specific to SMC9432FTX
+			 */
+			PHY_WRITE(sc, MII_LXTPHY_CONFIG,
+			   CONFIG_100BASEFX | CONFIG_LEDC0 | CONFIG_LEDC1);
+			PHY_WRITE(sc, MII_BMCR, BMCR_S100 | BMCR_FDX );
+			break;
 		default:
+			PHY_WRITE(sc, MII_LXTPHY_CONFIG, 0);
+
 			/*
 			 * BMCR data is stored in the ifmedia entry.
 			 */
-			PHY_WRITE(sc, MII_ANAR,
-			    mii_anar(ife->ifm_media));
+			PHY_WRITE(sc, MII_ANAR, mii_anar(ife->ifm_media));
 			PHY_WRITE(sc, MII_BMCR, ife->ifm_data);
+			break;
 		}
 		break;

@@ -269,7 +289,7 @@
 	struct mii_softc *sc;
 {
 	struct mii_data *mii = sc->mii_pdata;
-	int bmcr, csr;
+	int bmcr, csr, configreg;

 	mii->mii_media_status = IFM_AVALID;
 	mii->mii_media_active = IFM_ETHER;
@@ -292,6 +312,14 @@

 	if (bmcr & BMCR_LOOP)
 		mii->mii_media_active |= IFM_LOOP;
+
+	configreg = PHY_READ(sc, MII_LXTPHY_CONFIG);
+	if (configreg & CONFIG_100BASEFX) {
+		mii->mii_media_active |= IFM_100_FX;
+		if (csr & CSR_DUPLEX)
+			mii->mii_media_active |= IFM_FDX;
+		return;
+	}

 	if (bmcr & BMCR_AUTOEN) {
 		if ((csr & CSR_ACOMP) == 0) {
============== PATCH FOR -current of Thu Jan 13 2000 ====================
--- lxtphy.c.orig	Thu Jan 13 18:36:59 2000
+++ lxtphy.c	Thu Jan 13 19:01:46 2000
@@ -136,9 +136,20 @@
 	    PHY_READ(sc, MII_BMSR) & ma->mii_capmask;
 	printf("%s: ", sc->mii_dev.dv_xname);
 	if ((sc->mii_capabilities & BMSR_MEDIAMASK) == 0)
-		printf("no media present");
+		/* printf("no media present") */ ;
 	else
 		mii_add_media(sc);
+
+#define ADD(m, c)       ifmedia_add(&mii->mii_media, (m), (c), NULL)
+
+	/* XXX
+	 * no way to detect the presence of a fiber interface
+	 */
+	ADD(IFM_MAKEWORD(IFM_ETHER, IFM_100_FX, IFM_FDX, sc->mii_inst),
+		MII_MEDIA_100_TX_FDX);
+	printf(", 100baseFX-FDX");
+#undef ADD
+
 	printf("\n");
 }

@@ -186,8 +197,21 @@
 				return (0);
 			(void) mii_phy_auto(sc, 1);
 			break;
+		case IFM_100_FX:
+			/*
+			 * XXX
+			 * CONFIG_LEDC0 | CONFIG_LEDC1 part may be
+			 * specific to SMC9432FTX
+			 */
+			PHY_WRITE(sc, MII_LXTPHY_CONFIG,
+			    CONFIG_100BASEFX | CONFIG_LEDC0 | CONFIG_LEDC1);
+			PHY_WRITE(sc, MII_BMCR, BMCR_S100 | BMCR_FDX );
+			break;
+
 		default:
+			PHY_WRITE(sc, MII_LXTPHY_CONFIG, 0);
 			mii_phy_setmedia(sc);
+			break;
 		}
 		break;

@@ -255,7 +279,7 @@
 {
 	struct mii_data *mii = sc->mii_pdata;
 	struct ifmedia_entry *ife = mii->mii_media.ifm_cur;
-	int bmcr, bmsr, csr;
+	int bmcr, bmsr, csr, configreg;

 	mii->mii_media_status = IFM_AVALID;
 	mii->mii_media_active = IFM_ETHER;
@@ -278,6 +302,14 @@

 	if (bmcr & BMCR_LOOP)
 		mii->mii_media_active |= IFM_LOOP;
+
+	configreg = PHY_READ(sc, MII_LXTPHY_CONFIG);
+	if (configreg & CONFIG_100BASEFX) {
+		 mii->mii_media_active |= IFM_100_FX;
+		 if (csr & CSR_DUPLEX)
+			 mii->mii_media_active |= IFM_FDX;
+		 return;
+	}

 	if (bmcr & BMCR_AUTOEN) {
 		bmsr = PHY_READ(sc, MII_BMSR) | PHY_READ(sc, MII_BMSR);
>Release-Note:
>Audit-Trail:
Responsible-Changed-From-To: kern-bug-people->thorpej 
Responsible-Changed-By: thorpej 
Responsible-Changed-When: Mon Jan 24 14:06:23 PST 2000 
Responsible-Changed-Why:  
I am reposible for PHY and tlp drivers. 

From: Jason Thorpe <thorpej@nas.nasa.gov>
To: salvet@ics.muni.cz
Cc: gnats-bugs@netbsd.org
Subject: Re: kern/9183
Date: Mon, 24 Jan 2000 14:09:05 -0800

 Is it safe to assume that you are using the tlp+lxtphy driver with
 your SMC 9432FTX?

         -- Jason R. Thorpe <thorpej@nas.nasa.gov>


From: Jason Thorpe <thorpej@nas.nasa.gov>
To: salvet@ics.muni.cz
Cc: gnats-bugs@netbsd.org
Subject: Re: kern/9183 
Date: Tue, 25 Jan 2000 07:49:30 -0800

 On Tue, 25 Jan 2000 09:48:27 +0100 (MET) 
  Zdenek Salvet <salvet@ics.muni.cz> wrote:

  > epic+lxtphy
  > 
  > Unfortunately I can determine the availability of fiber interface only
  > by reading "SMC9432FTX" from card's EEPROM; we may need some extension
  > space in struct mii_data to communicate the card-specific information
  > to the PHY driver.
  > 
  > Thanks for your time,

 Ah, okay.

 I'll take a peek at this.  I have some ideas.

         -- Jason R. Thorpe <thorpej@nas.nasa.gov>

Responsible-Changed-From-To: thorpej->drochner
Responsible-Changed-By: thorpej@netbsd.org
Responsible-Changed-When: Mon, 27 Jun 2005 03:13:38 +0000
Responsible-Changed-Why:
Matthias Drochner made similar changes to the epic driver.  He should
review.


Responsible-Changed-From-To: drochner->kern-bug-people
Responsible-Changed-By: spz@NetBSD.org
Responsible-Changed-When: Sun, 29 Apr 2018 07:57:15 +0000
Responsible-Changed-Why:
drochner is inactive


>Unformatted:

NetBSD Home
NetBSD PR Database Search

(Contact us) $NetBSD: query-full-pr,v 1.43 2018/01/16 07:36:43 maya Exp $
$NetBSD: gnats_config.sh,v 1.9 2014/08/02 14:16:04 spz Exp $
Copyright © 1994-2017 The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.