Browse Source

[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>
tags/v1.20.1
Roman Kagan 6 years ago
parent
commit
16d7495308
1 changed files with 9 additions and 9 deletions
  1. 9
    9
      src/net/rndis.c

+ 9
- 9
src/net/rndis.c View File

973
 	/* Assign device name (for debugging) */
973
 	/* Assign device name (for debugging) */
974
 	rndis->name = netdev->dev->name;
974
 	rndis->name = netdev->dev->name;
975
 
975
 
976
-	/* Register network device */
977
-	if ( ( rc = register_netdev ( netdev ) ) != 0 ) {
978
-		DBGC ( rndis, "RNDIS %s could not register: %s\n",
979
-		       rndis->name, strerror ( rc ) );
980
-		goto err_register;
981
-	}
982
-
983
 	/* Open RNDIS device to read MAC addresses */
976
 	/* Open RNDIS device to read MAC addresses */
984
 	if ( ( rc = rndis->op->open ( rndis ) ) != 0 ) {
977
 	if ( ( rc = rndis->op->open ( rndis ) ) != 0 ) {
985
 		DBGC ( rndis, "RNDIS %s could not open: %s\n",
978
 		DBGC ( rndis, "RNDIS %s could not open: %s\n",
1012
 	/* Close RNDIS device */
1005
 	/* Close RNDIS device */
1013
 	rndis->op->close ( rndis );
1006
 	rndis->op->close ( rndis );
1014
 
1007
 
1008
+	/* Register network device */
1009
+	if ( ( rc = register_netdev ( netdev ) ) != 0 ) {
1010
+		DBGC ( rndis, "RNDIS %s could not register: %s\n",
1011
+		       rndis->name, strerror ( rc ) );
1012
+		goto err_register;
1013
+	}
1014
+
1015
 	return 0;
1015
 	return 0;
1016
 
1016
 
1017
+	unregister_netdev ( netdev );
1018
+ err_register:
1017
  err_query_link:
1019
  err_query_link:
1018
  err_query_current:
1020
  err_query_current:
1019
  err_query_permanent:
1021
  err_query_permanent:
1021
  err_initialise:
1023
  err_initialise:
1022
 	rndis->op->close ( rndis );
1024
 	rndis->op->close ( rndis );
1023
  err_open:
1025
  err_open:
1024
-	unregister_netdev ( netdev );
1025
- err_register:
1026
 	return rc;
1026
 	return rc;
1027
 }
1027
 }
1028
 
1028
 

Loading…
Cancel
Save