diff -ruN systemd-228/src/udev/udev-builtin-net_id.c systemd-228-new/src/udev/udev-builtin-net_id.c --- systemd-228/src/udev/udev-builtin-net_id.c 2015-11-17 23:59:06.000000000 -0800 +++ systemd-228-new/src/udev/udev-builtin-net_id.c 2015-12-11 18:22:07.910440956 -0800 @@ -149,6 +149,21 @@ if (idx <= 0) return -EINVAL; + if (idx >> 24) { + unsigned domain, bus, slot, func; + /* + * VMware acpi_index format: + * |31 instance 24|23 16|15 8|7 3|2 0| + * | number | domain? | bus | slot | func | + * + * Let's use instance number to get enoX human readable + */ + if (sscanf(udev_device_get_sysname(names->pcidev), "%x:%x:%x.%u", &domain, &bus, &slot, &func) != 4) + return -ENOENT; + if ((idx & 0xffff) == ((bus << 8) | (slot << 3) | func)) + idx >>= 24; + } + /* kernel provided port index for multiple ports on a single PCI function */ attr = udev_device_get_sysattr_value(dev, "dev_port"); if (attr)