Subversion Repositories HelenOS

Compare Revisions

Ignore whitespace Rev 4162 → Rev 4163

/branches/network/uspace/srv/net/nil/eth/eth.c
157,14 → 157,14
// an existing device?
device = eth_devices_find( & eth_globals.devices, device_id );
if( device ){
if( device->service == service ){
if( device->service != service ){
printf( "\nDevice %d already exists", device->device_id );
rwlock_write_unlock( & eth_globals.devices_lock );
return EEXIST;
}else{
// update mtu
device->mtu = mtu;
rwlock_write_unlock( & eth_globals.devices_lock );
return EOK;
}else{
rwlock_write_unlock( & eth_globals.devices_lock );
return EEXIST;
printf( "\nDevice %d already exists:\tMTU\t= %d", device->device_id, device->mtu );
}
}else{
// create a new device
172,11 → 172,16
if( ! device ) return ENOMEM;
device->device_id = device_id;
device->service = service;
device->mtu = mtu;
device->mtu = ( mtu > 0 ) ? mtu : ETH_MAX_CONTENT;
// TODO get dummy setting
device->dummy = 0;
// bind the device driver
device->phone = bind_service( device->service, device->device_id, SERVICE_ETHERNET, 0, eth_receiver );
if( device->phone < 0 ){
rwlock_write_unlock( & eth_globals.devices_lock );
free( device );
return device->phone;
}
// get hardware address
message = async_send_1( device->phone, NET_NETIF_GET_ADDR, device->device_id, & answer );
if( ERROR_OCCURRED( measured_strings_return( device->phone, & device->addr, & device->addr_data, 1 ))){
201,6 → 206,7
free( device );
return ERROR_CODE;
}
printf( "\nNew device registered:\n\tid\t= %d\n\tservice\t= %d\n\tMTU\t= %d\n\taddress\t= %X:%X:%X:%X:%X:%X", device->device_id, device->service, device->mtu, device->addr_data[ 0 ], device->addr_data[ 1 ], device->addr_data[ 2 ], device->addr_data[ 3 ], device->addr_data[ 4 ], device->addr_data[ 5 ] );
}
rwlock_write_unlock( & eth_globals.devices_lock );
return EOK;
303,7 → 309,7
rwlock_write_unlock( & eth_globals.devices_lock );
return ENOENT;
}
* content = ( ETH_MAX_CONTENT > device->mtu ) ? device->mtu : ETH_MAX_CONTENT;
* content = ( ETH_MAX_CONTENT > device->mtu ) ? device->mtu : ETH_MAX_CONTENT;
rwlock_write_unlock( & eth_globals.devices_lock );
* addr_len = ETH_ADDR;
* prefix = ETH_PREFIX;
359,6 → 365,7
return ERROR_CODE;
}
}
printf( "\nNew protocol registered:\n\tprotocol\t= %d\n\tservice\t= %d\n\tphone\t= %d", proto->protocol, proto->service, proto->phone );
rwlock_write_unlock( & eth_globals.protos_lock );
return EOK;
}