david/ipxe
david
/
ipxe
Archived
1
0
Fork 0

[mii] Remove unused functionality

Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
Michael Brown 2012-04-18 15:29:48 +01:00
parent eadb6bc3fe
commit 2f3f0ca953
2 changed files with 0 additions and 206 deletions

View File

@ -157,63 +157,4 @@ struct mii_if_info {
void (*mdio_write) (struct net_device *dev, int phy_id, int location, int val);
};
extern int mii_link_ok (struct mii_if_info *mii);
extern void mii_check_link (struct mii_if_info *mii);
extern unsigned int mii_check_media (struct mii_if_info *mii,
unsigned int ok_to_print,
unsigned int init_media);
/**
* mii_nway_result
* @negotiated: value of MII ANAR and'd with ANLPAR
*
* Given a set of MII abilities, check each bit and returns the
* currently supported media, in the priority order defined by
* IEEE 802.3u. We use LPA_xxx constants but note this is not the
* value of LPA solely, as described above.
*
* The one exception to IEEE 802.3u is that 100baseT4 is placed
* between 100T-full and 100T-half. If your phy does not support
* 100T4 this is fine. If your phy places 100T4 elsewhere in the
* priority order, you will need to roll your own function.
*/
static inline unsigned int mii_nway_result (unsigned int negotiated)
{
unsigned int ret;
if (negotiated & LPA_100FULL)
ret = LPA_100FULL;
else if (negotiated & LPA_100BASE4)
ret = LPA_100BASE4;
else if (negotiated & LPA_100HALF)
ret = LPA_100HALF;
else if (negotiated & LPA_10FULL)
ret = LPA_10FULL;
else
ret = LPA_10HALF;
return ret;
}
/**
* mii_duplex
* @duplex_lock: Non-zero if duplex is locked at full
* @negotiated: value of MII ANAR and'd with ANLPAR
*
* A small helper function for a common case. Returns one
* if the media is operating or locked at full duplex, and
* returns zero otherwise.
*/
static inline unsigned int mii_duplex (unsigned int duplex_lock,
unsigned int negotiated)
{
if (duplex_lock)
return 1;
if (mii_nway_result(negotiated) & LPA_DUPLEX)
return 1;
return 0;
}
#endif

View File

@ -1,147 +0,0 @@
/*
mii.c: MII interface library
Ported to iPXE by Daniel Verkamp <daniel@drv.nu>
from Linux drivers/net/mii.c
Maintained by Jeff Garzik <jgarzik@pobox.com>
Copyright 2001,2002 Jeff Garzik
Various code came from myson803.c and other files by
Donald Becker. Copyright:
Written 1998-2002 by Donald Becker.
This software may be used and distributed according
to the terms of the GNU General Public License (GPL),
incorporated herein by reference. Drivers based on
or derived from this code fall under the GPL and must
retain the authorship, copyright and license notice.
This file is not a complete program and may only be
used when the entire operating system is licensed
under the GPL.
The author may be reached as becker@scyld.com, or C/O
Scyld Computing Corporation
410 Severn Ave., Suite 210
Annapolis MD 21403
*/
#include <mii.h>
/**
* mii_link_ok - is link status up/ok
* @mii: the MII interface
*
* Returns 1 if the MII reports link status up/ok, 0 otherwise.
*/
int
mii_link_ok ( struct mii_if_info *mii )
{
/* first, a dummy read, needed to latch some MII phys */
mii->mdio_read ( mii->dev, mii->phy_id, MII_BMSR );
if ( mii->mdio_read ( mii->dev, mii->phy_id, MII_BMSR ) & BMSR_LSTATUS )
return 1;
return 0;
}
/**
* mii_check_link - check MII link status
* @mii: MII interface
*
* If the link status changed (previous != current), call
* netif_carrier_on() if current link status is Up or call
* netif_carrier_off() if current link status is Down.
*/
void
mii_check_link ( struct mii_if_info *mii )
{
int cur_link = mii_link_ok ( mii );
int prev_link = netdev_link_ok ( mii->dev );
if ( cur_link && !prev_link )
netdev_link_up ( mii->dev );
else if (prev_link && !cur_link)
netdev_link_down ( mii->dev );
}
/**
* mii_check_media - check the MII interface for a duplex change
* @mii: the MII interface
* @ok_to_print: OK to print link up/down messages
* @init_media: OK to save duplex mode in @mii
*
* Returns 1 if the duplex mode changed, 0 if not.
* If the media type is forced, always returns 0.
*/
unsigned int
mii_check_media ( struct mii_if_info *mii,
unsigned int ok_to_print,
unsigned int init_media )
{
unsigned int old_carrier, new_carrier;
int advertise, lpa, media, duplex;
int lpa2 = 0;
/* if forced media, go no further */
if (mii->force_media)
return 0; /* duplex did not change */
/* check current and old link status */
old_carrier = netdev_link_ok ( mii->dev ) ? 1 : 0;
new_carrier = (unsigned int) mii_link_ok ( mii );
/* if carrier state did not change, this is a "bounce",
* just exit as everything is already set correctly
*/
if ( ( ! init_media ) && ( old_carrier == new_carrier ) )
return 0; /* duplex did not change */
/* no carrier, nothing much to do */
if ( ! new_carrier ) {
netdev_link_down ( mii->dev );
if ( ok_to_print )
DBG ( "%s: link down\n", mii->dev->name);
return 0; /* duplex did not change */
}
/*
* we have carrier, see who's on the other end
*/
netdev_link_up ( mii->dev );
/* get MII advertise and LPA values */
if ( ( ! init_media ) && ( mii->advertising ) ) {
advertise = mii->advertising;
} else {
advertise = mii->mdio_read ( mii->dev, mii->phy_id, MII_ADVERTISE );
mii->advertising = advertise;
}
lpa = mii->mdio_read ( mii->dev, mii->phy_id, MII_LPA );
if ( mii->supports_gmii )
lpa2 = mii->mdio_read ( mii->dev, mii->phy_id, MII_STAT1000 );
/* figure out media and duplex from advertise and LPA values */
media = mii_nway_result ( lpa & advertise );
duplex = ( media & ADVERTISE_FULL ) ? 1 : 0;
if ( lpa2 & LPA_1000FULL )
duplex = 1;
if ( ok_to_print )
DBG ( "%s: link up, %sMbps, %s-duplex, lpa 0x%04X\n",
mii->dev->name,
lpa2 & ( LPA_1000FULL | LPA_1000HALF ) ? "1000" :
media & ( ADVERTISE_100FULL | ADVERTISE_100HALF ) ? "100" : "10",
duplex ? "full" : "half",
lpa);
if ( ( init_media ) || ( mii->full_duplex != duplex ) ) {
mii->full_duplex = duplex;
return 1; /* duplex changed */
}
return 0; /* duplex did not change */
}