@ -127,7 +127,6 @@ struct eth_device *eth_get_dev_by_name(const char *devname)
struct eth_device * eth_get_dev_by_index ( int index )
{
struct eth_device * dev , * target_dev ;
int idx = 0 ;
if ( ! eth_devices )
return NULL ;
@ -135,12 +134,11 @@ struct eth_device *eth_get_dev_by_index(int index)
dev = eth_devices ;
target_dev = NULL ;
do {
if ( idx = = index ) {
if ( dev - > in de x = = index ) {
target_dev = dev ;
break ;
}
dev = dev - > next ;
idx + + ;
} while ( dev ! = eth_devices ) ;
return target_dev ;
@ -148,24 +146,11 @@ struct eth_device *eth_get_dev_by_index(int index)
int eth_get_dev_index ( void )
{
struct eth_device * dev ;
int num = 0 ;
if ( ! eth_devices ) {
return ( - 1 ) ;
}
for ( dev = eth_devices ; dev ; dev = dev - > next ) {
if ( dev = = eth_current )
break ;
+ + num ;
}
if ( dev ) {
return ( num ) ;
if ( ! eth_current ) {
return - 1 ;
}
return ( 0 ) ;
return eth_current - > index ;
}
static void eth_current_changed ( void )
@ -219,6 +204,7 @@ int eth_write_hwaddr(struct eth_device *dev, const char *base_name,
int eth_register ( struct eth_device * dev )
{
struct eth_device * d ;
static int index = 0 ;
assert ( strlen ( dev - > name ) < NAMESIZE ) ;
@ -233,14 +219,14 @@ int eth_register(struct eth_device *dev)
dev - > state = ETH_STATE_INIT ;
dev - > next = eth_devices ;
dev - > index = index + + ;
return 0 ;
}
int eth_initialize ( bd_t * bis )
{
int eth_number = 0 ;
int num_devices = 0 ;
eth_devices = NULL ;
eth_current = NULL ;
@ -281,7 +267,7 @@ int eth_initialize(bd_t *bis)
show_boot_progress ( 65 ) ;
do {
if ( eth_number )
if ( dev - > index )
puts ( " , " ) ;
printf ( " %s " , dev - > name ) ;
@ -294,18 +280,18 @@ int eth_initialize(bd_t *bis)
if ( strchr ( dev - > name , ' ' ) )
puts ( " \n Warning: eth device name has a space! \n " ) ;
if ( eth_write_hwaddr ( dev , " eth " , eth_number ) )
if ( eth_write_hwaddr ( dev , " eth " , dev - > index ) )
puts ( " \n Warning: failed to set MAC address \n " ) ;
eth_number + + ;
dev = dev - > next ;
num_devices + + ;
} while ( dev ! = eth_devices ) ;
eth_current_changed ( ) ;
putc ( ' \n ' ) ;
}
return eth_number ;
return num_devices ;
}
# ifdef CONFIG_MCAST_TFTP
@ -356,7 +342,6 @@ u32 ether_crc (size_t len, unsigned char const *p)
int eth_init ( bd_t * bis )
{
int eth_number ;
struct eth_device * old_current , * dev ;
if ( ! eth_current ) {
@ -365,16 +350,14 @@ int eth_init(bd_t *bis)
}
/* Sync environment with network devices */
eth_number = 0 ;
dev = eth_devices ;
do {
uchar env_enetaddr [ 6 ] ;
if ( eth_getenv_enetaddr_by_index ( " eth " , eth_number ,
if ( eth_getenv_enetaddr_by_index ( " eth " , dev - > index ,
env_enetaddr ) )
memcpy ( dev - > enetaddr , env_enetaddr , 6 ) ;
+ + eth_number ;
dev = dev - > next ;
} while ( dev ! = eth_devices ) ;