Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
[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>
  • Loading branch information
rvka authored and mcb30 committed Jul 7, 2018
1 parent 88ac1d3 commit 16d7495
Showing 1 changed file with 9 additions and 9 deletions.
18 changes: 9 additions & 9 deletions src/net/rndis.c
Expand Up @@ -973,13 +973,6 @@ int register_rndis ( struct rndis_device *rndis ) {
/* Assign device name (for debugging) */
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 */
if ( ( rc = rndis->op->open ( rndis ) ) != 0 ) {
DBGC ( rndis, "RNDIS %s could not open: %s\n",
Expand Down Expand Up @@ -1012,17 +1005,24 @@ int register_rndis ( struct rndis_device *rndis ) {
/* Close RNDIS device */
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;

unregister_netdev ( netdev );
err_register:
err_query_link:
err_query_current:
err_query_permanent:
rndis_halt ( rndis );
err_initialise:
rndis->op->close ( rndis );
err_open:
unregister_netdev ( netdev );
err_register:
return rc;
}

Expand Down

0 comments on commit 16d7495

Please sign in to comment.