46
46
typedef enum NetNameType {
47
47
NET_UNDEF ,
48
48
NET_PCI ,
49
- NET_USB ,
50
49
NET_BCMA ,
51
50
} NetNameType ;
52
51
@@ -59,7 +58,6 @@ typedef struct NetNames {
59
58
char pci_onboard [ALTIFNAMSIZ ];
60
59
const char * pci_onboard_label ;
61
60
62
- char usb_ports [ALTIFNAMSIZ ];
63
61
char bcma_core [ALTIFNAMSIZ ];
64
62
} NetNames ;
65
63
@@ -958,14 +956,17 @@ static int get_usb_specifier(sd_device *dev, char **ret) {
958
956
return 0 ;
959
957
}
960
958
961
- static int names_usb (sd_device * dev , NetNames * names ) {
959
+ static int names_usb (sd_device * dev , const char * prefix , NetNames * names , bool test ) {
962
960
_cleanup_free_ char * suffix = NULL ;
963
961
sd_device * usbdev ;
964
962
int r ;
965
963
966
964
assert (dev );
965
+ assert (prefix );
967
966
assert (names );
968
967
968
+ /* USB device */
969
+
969
970
r = sd_device_get_parent_with_subsystem_devtype (dev , "usb" , "usb_interface" , & usbdev );
970
971
if (r < 0 )
971
972
return log_device_debug_errno (dev , r , "Could not find usb parent device: %m" );
@@ -974,11 +975,26 @@ static int names_usb(sd_device *dev, NetNames *names) {
974
975
if (r < 0 )
975
976
return r ;
976
977
977
- size_t l = strscpy (names -> usb_ports , sizeof (names -> usb_ports ), suffix );
978
- if (l == 0 )
979
- names -> usb_ports [0 ] = '\0' ;
980
- else
981
- names -> type = NET_USB ;
978
+ /* If the USB bus is on PCI bus, then suffix the USB specifier to the name based on the PCI bus. */
979
+ if (names ) {
980
+ char buf [ALTIFNAMSIZ ];
981
+ if (names -> pci_path [0 ] &&
982
+ snprintf_ok (buf , sizeof buf , "%s%s%s" , prefix , names -> pci_path , suffix ))
983
+ udev_builtin_add_property (dev , test , "ID_NET_NAME_PATH" , buf );
984
+
985
+ if (names -> pci_slot [0 ] &&
986
+ snprintf_ok (buf , sizeof buf , "%s%s%s" , prefix , names -> pci_slot , suffix ))
987
+ udev_builtin_add_property (dev , test , "ID_NET_NAME_SLOT" , buf );
988
+ }
989
+
990
+ if (!naming_scheme_has (NAMING_USB_HOST ))
991
+ return 0 ;
992
+
993
+ /* Otherwise, e.g. on-chip asics that have USB ports, use the USB specifier as is. */
994
+ char str [ALTIFNAMSIZ ];
995
+ if (snprintf_ok (str , sizeof str , "%s%s" , prefix , suffix ))
996
+ udev_builtin_add_property (dev , test , "ID_NET_NAME_PATH" , str );
997
+
982
998
return 0 ;
983
999
}
984
1000
@@ -1346,22 +1362,10 @@ static int builtin_net_id(UdevEvent *event, int argc, char *argv[], bool test) {
1346
1362
1347
1363
/* get PCI based path names */
1348
1364
r = names_pci (dev , & names );
1349
- if (r < 0 ) {
1350
- /*
1351
- * check for usb devices that are not off pci interfaces to
1352
- * support various on-chip asics that have usb ports
1353
- */
1354
- if (r == - ENOENT &&
1355
- naming_scheme_has (NAMING_USB_HOST ) &&
1356
- names_usb (dev , & names ) >= 0 && names .type == NET_USB ) {
1357
- char str [ALTIFNAMSIZ ];
1358
-
1359
- if (snprintf_ok (str , sizeof str , "%s%s" , prefix , names .usb_ports ))
1360
- udev_builtin_add_property (dev , test , "ID_NET_NAME_PATH" , str );
1361
- }
1362
-
1365
+ if (r == - ENOENT )
1366
+ (void ) names_usb (dev , prefix , NULL , test );
1367
+ if (r < 0 )
1363
1368
return 0 ;
1364
- }
1365
1369
1366
1370
/* plain PCI device */
1367
1371
if (names .type == NET_PCI ) {
@@ -1387,19 +1391,7 @@ static int builtin_net_id(UdevEvent *event, int argc, char *argv[], bool test) {
1387
1391
return 0 ;
1388
1392
}
1389
1393
1390
- /* USB device */
1391
- if (names_usb (dev , & names ) >= 0 && names .type == NET_USB ) {
1392
- char str [ALTIFNAMSIZ ];
1393
-
1394
- if (names .pci_path [0 ] &&
1395
- snprintf_ok (str , sizeof str , "%s%s%s" , prefix , names .pci_path , names .usb_ports ))
1396
- udev_builtin_add_property (dev , test , "ID_NET_NAME_PATH" , str );
1397
-
1398
- if (names .pci_slot [0 ] &&
1399
- snprintf_ok (str , sizeof str , "%s%s%s" , prefix , names .pci_slot , names .usb_ports ))
1400
- udev_builtin_add_property (dev , test , "ID_NET_NAME_SLOT" , str );
1401
- return 0 ;
1402
- }
1394
+ (void ) names_usb (dev , prefix , & names , test );
1403
1395
1404
1396
/* Broadcom bus */
1405
1397
if (names_bcma (dev , & names ) >= 0 && names .type == NET_BCMA ) {
0 commit comments