@@ -55,7 +55,6 @@ typedef struct NetNames {
55
55
char pci_slot [ALTIFNAMSIZ ];
56
56
char pci_path [ALTIFNAMSIZ ];
57
57
char pci_onboard [ALTIFNAMSIZ ];
58
- const char * pci_onboard_label ;
59
58
} NetNames ;
60
59
61
60
/* skip intermediate virtio devices */
@@ -263,7 +262,7 @@ static int dev_pci_onboard(sd_device *dev, NetNames *names) {
263
262
assert (dev );
264
263
assert (names );
265
264
266
- /* retrieve on-board index number and label from firmware */
265
+ /* retrieve on-board index number from firmware */
267
266
r = pci_get_onboard_index (names -> pcidev , & idx );
268
267
if (r < 0 )
269
268
return r ;
@@ -279,11 +278,28 @@ static int dev_pci_onboard(sd_device *dev, NetNames *names) {
279
278
idx , strna (port ),
280
279
special_glyph (SPECIAL_GLYPH_ARROW_RIGHT ), empty_to_na (names -> pci_onboard ));
281
280
282
- if (sd_device_get_sysattr_value (names -> pcidev , "label" , & names -> pci_onboard_label ) >= 0 )
283
- log_device_debug (dev , "Onboard label from PCI device: %s" , names -> pci_onboard_label );
284
- else
285
- names -> pci_onboard_label = NULL ;
281
+ return 0 ;
282
+ }
283
+
284
+ static int names_pci_onboard_label (sd_device * dev , sd_device * pci_dev , const char * prefix , bool test ) {
285
+ const char * label ;
286
+ int r ;
287
+
288
+ assert (dev );
289
+ assert (prefix );
290
+
291
+ /* retrieve on-board label from firmware */
292
+ r = sd_device_get_sysattr_value (pci_dev , "label" , & label );
293
+ if (r < 0 )
294
+ return r ;
295
+
296
+ char str [ALTIFNAMSIZ ];
297
+ if (snprintf_ok (str , sizeof str , "%s%s" ,
298
+ naming_scheme_has (NAMING_LABEL_NOPREFIX ) ? "" : prefix ,
299
+ label ))
300
+ udev_builtin_add_property (dev , test , "ID_NET_LABEL_ONBOARD" , str );
286
301
302
+ log_device_debug (dev , "Onboard label from PCI device: %s" , label );
287
303
return 0 ;
288
304
}
289
305
@@ -835,14 +851,15 @@ static int names_devicetree(sd_device *dev, const char *prefix, bool test) {
835
851
return - ENOENT ;
836
852
}
837
853
838
- static int names_pci (sd_device * dev , NetNames * names ) {
854
+ static int names_pci (sd_device * dev , const char * prefix , NetNames * names , bool test ) {
839
855
_cleanup_ (sd_device_unrefp ) sd_device * physfn_pcidev = NULL ;
840
856
_cleanup_free_ char * virtfn_suffix = NULL ;
841
857
sd_device * parent ;
842
858
const char * subsystem ;
843
859
int r ;
844
860
845
861
assert (dev );
862
+ assert (prefix );
846
863
assert (names );
847
864
848
865
r = sd_device_get_parent (dev , & parent );
@@ -886,11 +903,15 @@ static int names_pci(sd_device *dev, NetNames *names) {
886
903
if (strlen (vf_names .pci_path ) + strlen (virtfn_suffix ) < sizeof (names -> pci_path ))
887
904
strscpyl (names -> pci_path , sizeof (names -> pci_path ),
888
905
vf_names .pci_path , virtfn_suffix , NULL );
889
- } else {
890
- dev_pci_onboard (dev , names );
891
- dev_pci_slot (dev , names );
906
+
907
+ return 0 ;
892
908
}
893
909
910
+ if (names -> type == NET_PCI )
911
+ (void ) names_pci_onboard_label (dev , names -> pcidev , prefix , test );
912
+
913
+ dev_pci_onboard (dev , names );
914
+ dev_pci_slot (dev , names );
894
915
return 0 ;
895
916
}
896
917
@@ -1386,7 +1407,7 @@ static int builtin_net_id(UdevEvent *event, int argc, char *argv[], bool test) {
1386
1407
(void ) names_xen (dev , prefix , test );
1387
1408
1388
1409
/* get PCI based path names */
1389
- r = names_pci (dev , & names );
1410
+ r = names_pci (dev , prefix , & names , test );
1390
1411
if (r == - ENOENT )
1391
1412
(void ) names_usb (dev , prefix , NULL , test );
1392
1413
if (r < 0 )
@@ -1400,12 +1421,6 @@ static int builtin_net_id(UdevEvent *event, int argc, char *argv[], bool test) {
1400
1421
snprintf_ok (str , sizeof str , "%s%s" , prefix , names .pci_onboard ))
1401
1422
udev_builtin_add_property (dev , test , "ID_NET_NAME_ONBOARD" , str );
1402
1423
1403
- if (names .pci_onboard_label &&
1404
- snprintf_ok (str , sizeof str , "%s%s" ,
1405
- naming_scheme_has (NAMING_LABEL_NOPREFIX ) ? "" : prefix ,
1406
- names .pci_onboard_label ))
1407
- udev_builtin_add_property (dev , test , "ID_NET_LABEL_ONBOARD" , str );
1408
-
1409
1424
if (names .pci_path [0 ] &&
1410
1425
snprintf_ok (str , sizeof str , "%s%s" , prefix , names .pci_path ))
1411
1426
udev_builtin_add_property (dev , test , "ID_NET_NAME_PATH" , str );
0 commit comments