mirror of https://github.com/ipxe/ipxe.git
[rndis] Register netdev with MAC filled
register_netdev expects ->hw_addr and ->ll_addr to be already filled, so move it towards the end of register_rndis, after the respective fields have been successfully queried from the underlying device. Signed-off-by: Roman Kagan <rkagan@virtuozzo.com> Modified-by: Michael Brown <mcb30@ipxe.org> Signed-off-by: Michael Brown <mcb30@ipxe.org>pull/76/head
parent
88ac1d3fe4
commit
16d7495308
|
@ -973,13 +973,6 @@ int register_rndis ( struct rndis_device *rndis ) {
|
||||||
/* Assign device name (for debugging) */
|
/* Assign device name (for debugging) */
|
||||||
rndis->name = netdev->dev->name;
|
rndis->name = netdev->dev->name;
|
||||||
|
|
||||||
/* Register network device */
|
|
||||||
if ( ( rc = register_netdev ( netdev ) ) != 0 ) {
|
|
||||||
DBGC ( rndis, "RNDIS %s could not register: %s\n",
|
|
||||||
rndis->name, strerror ( rc ) );
|
|
||||||
goto err_register;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Open RNDIS device to read MAC addresses */
|
/* Open RNDIS device to read MAC addresses */
|
||||||
if ( ( rc = rndis->op->open ( rndis ) ) != 0 ) {
|
if ( ( rc = rndis->op->open ( rndis ) ) != 0 ) {
|
||||||
DBGC ( rndis, "RNDIS %s could not open: %s\n",
|
DBGC ( rndis, "RNDIS %s could not open: %s\n",
|
||||||
|
@ -1012,8 +1005,17 @@ int register_rndis ( struct rndis_device *rndis ) {
|
||||||
/* Close RNDIS device */
|
/* Close RNDIS device */
|
||||||
rndis->op->close ( rndis );
|
rndis->op->close ( rndis );
|
||||||
|
|
||||||
|
/* Register network device */
|
||||||
|
if ( ( rc = register_netdev ( netdev ) ) != 0 ) {
|
||||||
|
DBGC ( rndis, "RNDIS %s could not register: %s\n",
|
||||||
|
rndis->name, strerror ( rc ) );
|
||||||
|
goto err_register;
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
unregister_netdev ( netdev );
|
||||||
|
err_register:
|
||||||
err_query_link:
|
err_query_link:
|
||||||
err_query_current:
|
err_query_current:
|
||||||
err_query_permanent:
|
err_query_permanent:
|
||||||
|
@ -1021,8 +1023,6 @@ int register_rndis ( struct rndis_device *rndis ) {
|
||||||
err_initialise:
|
err_initialise:
|
||||||
rndis->op->close ( rndis );
|
rndis->op->close ( rndis );
|
||||||
err_open:
|
err_open:
|
||||||
unregister_netdev ( netdev );
|
|
||||||
err_register:
|
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue