Commit Graph

43 Commits

Author SHA1 Message Date
thorpej 1efb3da0fb Make use of static. 2004-08-23 06:16:06 +00:00
thorpej a85c2a8f12 mii_phy_flowstatus(): short-circuit processing if both sides advertise
symmetric pause capability.  From HITOSHI Osada.
2004-04-11 15:47:33 +00:00
thorpej ad35f1d6fa Add a comment describing why we force renegotiation when PAUSE is being
used.  From HITOSHI Osada.
2004-04-11 15:42:48 +00:00
thorpej 08645d15fe gmii_phy_getflowcontrol() -> mii_phy_flowstatus(). From HITOSHI Osada. 2004-04-11 15:40:56 +00:00
thorpej a6d603afd1 gmii_phy_getflowcontrol(): Bail out early if the MAC didn't tell us to
do flow control processing.
2004-04-10 18:54:46 +00:00
thorpej 44ec17557f Flow-control advertisement and parsing support. From HITOSHI Osada.
Slightly modified by me.
2004-04-10 02:32:10 +00:00
briggs 7f9445d14a It is best to allow a little time for the reset to settle in before
we start polling the BMCR again.  Greg Woods noted on tech-net@
that the DP83840A manual states that there should be a 500us delay
between asserting software reset and attempting MII serial operations.

I've also noted that a DP83815 can get into a bad state on cable
removal and reinsertion if we do not delay here.

This may well address PR/16346, and I seem to recall occasional
reports of auto-negotiation and flaky kinds of errors that this
might also alleviate.
2003-09-10 05:25:22 +00:00
thorpej c31f87a5cb Use aprint*(). 2003-04-29 01:49:33 +00:00
matt 4630a8e7f3 Add a MIIF_FORCEANEG flag to be passed to mii_attach. This forces an
autonegotiation to take place if IFM_AUTO is selected in mii_media_set.
Make the gem driver use it.  (XXX hme probably should use it but I can't
test that).
2003-02-20 00:55:21 +00:00
thorpej 499a491929 Fix signed/unsigned comparison warnings. 2002-11-07 07:41:22 +00:00
thorpej c1f51e00c0 Back out change accidentally committed. 2002-05-12 21:39:46 +00:00
thorpej 0cc96b0fbe Make sure ifp->if_baudrate is valid when the parent's statchg
callback is made.

Pointed out by Matt Thomas.
2002-05-10 20:45:05 +00:00
uwe 41e6fbc398 Delint somewhat. 2002-05-07 04:52:49 +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 9fe2378664 For HomePNA PHYs, don't register it w/ ifmedia as 10BASE-T, but
rather as HomePNA1.
2001-08-25 01:57:56 +00:00
thorpej 7459c35d44 Clean up 1000BASE-SX autonegotiation, and add a way to advertise
PAUSE capability.
2001-07-27 22:44:59 +00:00
thorpej 4a416b823f Fix 1000BASE-X duplex negotiation. That'll teach me to read the
manual more carefully next time.
2001-07-25 22:00:43 +00:00
bjh21 8d829065a6 IFM_1000_TX -> IFM_1000_T, as (breifly) discussed on tech-net. 2001-06-30 17:53:58 +00:00
thorpej 424f7a1e65 Make PHY matching all table-driven. 2001-06-02 21:39:38 +00:00
thorpej 2128d9199a Enable frobbing the 1000baseT control register on Gig-E PHYs,
used for hard-wiring master mode, and for advertising the 1000baseT
media options during autonegotiation.
2001-05-31 18:44:48 +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
thorpej d3a64bd0d8 Add code to recognize and set media on GMII (Gigabit MII) PHYs.
802.3 doens't specify ANAR or ANLPAR bits for GMII.  Need to
use PHY-specific registers for this, for now, which means we
need specific drivers for the Gigabit-capable PHYs (I think the
most common is the BCM5400).
2001-04-30 19:49:08 +00:00
thorpej bf2dcec4f5 Remove the use of splimp() from the NetBSD kernel. splnet()
and only splnet() is allowed for the protection of data structures
used by network devices.
2001-04-13 23:29:55 +00:00
augustss 205b10ed17 Add a flag to mii_flags which will cause autonegotiation to use tsleep()
instead of callout.  This way adapters which need a process context for
PHY register access (e.g. USB adapters) have a chance.
2001-04-13 11:12:36 +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 fc96443d15 New callout mechanism with two major improvements over the old
timeout()/untimeout() API:
- Clients supply callout handle storage, thus eliminating problems of
  resource allocation.
- Insertion and removal of callouts is constant time, important as
  this facility is used quite a lot in the kernel.

The old timeout()/untimeout() API has been removed from the kernel.
2000-03-23 07:01:25 +00:00
thorpej 411a31adb2 - Go to splimp() when sending the rtsock message regarding link status.
- Would like to notify protocols if a link goes up or down, to e.g.
  restart Duplicate Address Detection, etc.  Add a comment to this
  effect.
2000-03-15 20:34:43 +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 a084fd2f81 Some PHYs go off into left field for a few seconds if you attempt to kick
autonegotiation while it's already enabled.
2000-02-03 06:11:13 +00:00
thorpej 9ff57fe506 Oops, missing return; 2000-02-03 05:38:57 +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 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 bc82bff1dc Don't add any loopback versions of media, for now. 1999-11-03 22:32:45 +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
drochner f04cb4036f move common support functions for phy drivers from mii.c to mii_physubr.c,
so that they are not includes if no PHY is configured
(avoids code bloat if an interface driver has the "mii" attribute but
mii is not used by the particular version)
1999-08-03 19:41:49 +00:00
kleink 5ea46286eb mii_phy_auto(): don't rely on an implicit declaration of the waitfor argument. 1999-04-26 14:48:57 +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 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