Commit Graph

41 Commits

Author SHA1 Message Date
wiz
c5670263e0 Fix some typos. From Tom Cosgrove via jmc@openbsd. 2003-11-02 11:07:44 +00:00
briggs
1d2bfa591d Implement a separate nsphy_reset(). There are two reasons for this:
1) This PHY can take an inordinate amount of time to reset if
	   media is attached.  Under fairly normal circumstances, up
	   to near one second.  This is because it appears to go through
	   an implicit autonegotiation cycle as part of the reset.

	2) During reset and autonegotiation, the BMCR will clear the reset
	   bit before the process is complete.  It will return 0 until the
	   process is complete and it's safe to access the PHY again.

This gets the on-board pcnet + nsphy ethernet working properly for me on
an IBM PC Server/325.  Fixes PR/16346.
2003-11-02 01:42:28 +00:00
thorpej
c31f87a5cb Use aprint*(). 2003-04-29 01:49:33 +00:00
thorpej
c9b3657ce9 Add trailing ; to CFATTACH_DECL. 2002-10-02 16:33:28 +00:00
thorpej
71adb76f75 Use CFATTACH_DECL(). 2002-09-30 21:57:46 +00:00
thorpej
f818766afe Declare all cfattach structures const. 2002-09-27 20:31:45 +00:00
simonb
c19a094675 Don't include <malloc.h> - no memory management style functions are use
in any of the MII drivers.
2002-07-03 06:25:49 +00:00
thorpej
b017898534 Get flags passed down to PHY drivers correctly. This was done on
an adhoc basis in a couple of PHY drivers, this fixes it more generally.

Per a discussion w/ Cliff Neighbors <cliff@allegronetworks.com>.
2002-03-25 20:51:24 +00:00
lukem
8b7bb91219 add RCSID 2001-11-13 07:38:28 +00:00
thorpej
89893e42b7 ANSI'ify. 2001-08-25 18:04:01 +00:00
thorpej
424f7a1e65 Make PHY matching all table-driven. 2001-06-02 21:39:38 +00:00
thorpej
ea1aed7db2 Make the number of ticks between auto-negotiation tries PHY-specific,
and default every PHY to 5 seconds (what we used before).  If we find
Gig-E media on a PHY, bump it to 10 seconds, since it can take 5
seconds just to negotiate a Gig-E link.
2001-05-31 16:02:29 +00:00
drochner
adf9edcd41 update for miidevs changes 2001-03-28 14:16:49 +00:00
martin
10debdeb9c Fix to autonegotiation problem with some fxp cards. Fix found and reported
by Erich T. Enke et al. on current-users. This fixes PR 10550.
2000-07-27 22:14:48 +00:00
thorpej
49014bf59f Restructure the PHY entry points to use a structure of entry points
instead of discrete function pointers, and extend this to include
a "reset" entry point.  Make sure any PHY-specific reset routine is
always used, and provide one for the LXT-970 which disables MII
interrupts (as is done for a few other PHYs we have drivers for).
2000-07-04 03:28:59 +00:00
thorpej
ad61d101be Factor out the tick handling code into a common function, and send
rt_ifmsg's when the link speed or link status changes.
2000-03-06 20:56:56 +00:00
thorpej
22fe15d7b4 Let mii_phy_setmedia() handle the IFM_AUTO case, too. 2000-02-02 23:34:56 +00:00
thorpej
8923ca0b00 Make PHY drivers provide a pointer to their status routine, and add
a generic mii_phy_status() that calls back into the PHY.  It doesn't
do anything interesting yet, but it will soon.
2000-02-02 17:50:43 +00:00
thorpej
eed75dbc26 Don't dry to diving MIIF_NOISOLATE in the PHY drivers. Instead, pass
flags down from the parent to child vi mii_attach().
2000-02-02 17:09:38 +00:00
thorpej
84dc99fdea Bring some order to the chaos which was the MII code function naming
"conventions".
2000-02-02 08:05:26 +00:00
thorpej
c74e0a8db2 Add detachment support to the MII layer. 2000-01-27 16:44:30 +00:00
thorpej
bca88a28c8 Add mii_down(), which is used by MAC drivers to inform PHYs that the
interface is now down.  PHYs use this to cancel pending asynchronous
operations.
1999-11-12 18:12:59 +00:00
thorpej
8fc600c3b1 Clean up the code that adds media a little, and make media selection
table-driven in preparation for some other changes to be made.
1999-11-03 22:30:32 +00:00
thorpej
e314d1d844 Correct the sense of the PCR_FLINK100 bit. From Dave Sainty, PR #7832. 1999-07-14 23:57:36 +00:00
thorpej
83f9ab3c87 Implement asynchronous autonegotiation when driven by the MII tick
(one-second clock).  Prevents .5s delays every 5 seconds when the interface
is up but there is no link.  Fixes PR 7361.
1999-04-23 04:24:32 +00:00
thorpej
2b695df1dc Common code for media-from-bmcr. 1998-11-05 04:08:01 +00:00
thorpej
2a17544c19 Place the essentially common "ticks" and "active" members into the
mii_softc (generic phy goo), and just switch all of the PHY drivers
(except tlphy, which really does have special stuff) to use an mii_softc
instead of a private one.
1998-11-05 00:19:32 +00:00
thorpej
ad8b66c7c8 Return a higher-priority match than 1. These are specific drivers. This
allows for a "generic unknown PHY" driver to be implemented.
1998-11-04 23:44:09 +00:00
thorpej
51da8fc39f Factor out the common reset code. Use the NOISOLATE flags as appropriate
to prevent a PHY from being isolated in the event the MAC can't deal with
this.  (3Com 3c905B-TX, and Intel i82557).
1998-11-04 23:28:15 +00:00
thorpej
b097394468 Factor out some common code from all the PHY drivers (autonegotiation, for
now.)
1998-11-04 23:07:15 +00:00
thorpej
844622de9c Define and use generic PHY read/write reg macros. 1998-11-04 22:15:40 +00:00
thorpej
1f074c785d When doing a media change service request, use the media word from the
current ifmedia_entry, not from the user-supplied media word.  The
user supplied media word may not necessarily match e.g. instance (if
the parent MAC driver is intentionally ignoring instance if its expecting
multiple PHYs with non-overlapping media, e.g. TI ThunderLAN) the media
word we are actually switching to.

Since PHY drivers use `instance' to determine if they should isolate
themselves, the ThunderLAN PHY was sometimes being incorrectly isolated
when in fact the user attempted to select that PHY (for e.g. BNC operation).
1998-11-02 22:31:36 +00:00
thorpej
ae8bdb1e72 Make sure CIMDIS is set and FLINK is clear in the PCR. 1998-08-14 00:23:26 +00:00
thorpej
94e489e277 If the autonegotiation is enabled, the PAR doesn't indicate duplex mode
properly!  Work around this by determing current active media by taking
the highest-order common bit of our advertised capabilites and the link
partner's.

If the link partner doens't do autonegotiation, then parallel detection will
pick up the media type, which will never be full-duplex, so reading the PAR
is ok in this case.

Bug pointed out by Matthias Drochner, work-around inspired by reading
the dp83840 manual, section 3.9 (IEEE 802.3u auto-negotiation).
1998-08-12 22:41:21 +00:00
thorpej
981f0cd0d0 If autonegotiation is enabled in the BMSR, and the BMCR doens't claim
that it has completed, report "none" as the active media type.
1998-08-12 20:56:34 +00:00
thorpej
a24f6f77bf Ugh, don't print out "autonegotiation failed to complete" if it did.
We get these once a second if we're in auto mode, the interface is up,
and there's no carrier.
1998-08-12 20:46:47 +00:00
thorpej
f66f3b1ba9 Adapt to the new MII layer. This PHY driver now properly supports
802.3u autonegotiation, and will report the precise media selected
by autonegotiation by reading PHY-specific registers.
1998-08-10 23:58:39 +00:00
thorpej
5bc2217a49 Nuke __BROKEN_INDIRECT_CONFIG. 1998-06-09 07:24:55 +00:00
thorpej
095c4c092d Adjust for config changes. 1998-01-12 09:23:08 +00:00
thorpej
1413de77e0 KNF. 1997-11-17 09:02:27 +00:00
bouyer
10fcf021a5 Generic functions for the MII layer. mii attaches to mii-capable network
adapters, and provide media-selections and status to the parent.
This includes drivers for the Thunderland integrated PHY, and
National Semiconductor's DP83840A.
Note: The interface betweeen network controller and mii is not complete yet,
and will need some minors tweaks to support media auto-selection.
1997-10-17 17:33:45 +00:00