diff options
author | Thadeu Lima de Souza Cascardo <cascardo@linux.vnet.ibm.com> | 2014-07-01 10:11:50 -0300 |
---|---|---|
committer | Kay Sievers <kay@vrfy.org> | 2014-07-01 15:19:20 +0200 |
commit | 3058e017fced6d5c8712e10c8c1477421bc1e960 (patch) | |
tree | e39960d6b2158c1749bb74ce56753310e80d398a | |
parent | 2834ffe78d7fd8be118429aa1449ac72641638c2 (diff) |
Use dev_port for the ID of a network device.
For network devices on the same PCI function, dev_id should not be used,
since its purpose is for IPv6 support on interfaces with the same MAC
address.
The new dev_port sysfs attribute should be used instead of dev_id.
-rw-r--r-- | NEWS | 6 | ||||
-rw-r--r-- | src/udev/udev-builtin-net_id.c | 18 |
2 files changed, 15 insertions, 9 deletions
@@ -189,6 +189,12 @@ CHANGES WITH 215: path for the primary architecture of the system), and a couple of drop-in directories. + * udev's predictable network interface names now use the dev_port + sysfs attribute, introduced in linux 3.15 instead of dev_id to + distinguish between ports of the same PCI function. dev_id should + only be used for ports using the same HW address, hence the need + for dev_port. + CHANGES WITH 214: * As an experimental feature, udev now tries to lock the diff --git a/src/udev/udev-builtin-net_id.c b/src/udev/udev-builtin-net_id.c index c80c30ac77..96ac21c167 100644 --- a/src/udev/udev-builtin-net_id.c +++ b/src/udev/udev-builtin-net_id.c @@ -36,9 +36,9 @@ * b<number> -- BCMA bus core number * ccw<name> -- CCW bus group name * o<index> -- on-board device index number - * s<slot>[f<function>][d<dev_id>] -- hotplug slot index number + * s<slot>[f<function>][d<dev_port>] -- hotplug slot index number * x<MAC> -- MAC address - * [P<domain>]p<bus>s<slot>[f<function>][d<dev_id>] + * [P<domain>]p<bus>s<slot>[f<function>][d<dev_port>] * -- PCI geographical location * [P<domain>]p<bus>s<slot>[f<function>][u<port>][..][c<config>][i<interface>] * -- USB port number chain @@ -172,7 +172,7 @@ out: static int dev_pci_slot(struct udev_device *dev, struct netnames *names) { struct udev *udev = udev_device_get_udev(names->pcidev); - unsigned domain, bus, slot, func, dev_id = 0; + unsigned domain, bus, slot, func, dev_port = 0; size_t l; char *s; const char *attr; @@ -186,9 +186,9 @@ static int dev_pci_slot(struct udev_device *dev, struct netnames *names) { return -ENOENT; /* kernel provided multi-device index */ - attr = udev_device_get_sysattr_value(dev, "dev_id"); + attr = udev_device_get_sysattr_value(dev, "dev_port"); if (attr) - dev_id = strtol(attr, NULL, 16); + dev_port = strtol(attr, NULL, 10); /* compose a name based on the raw kernel's PCI bus, slot numbers */ s = names->pci_path; @@ -198,8 +198,8 @@ static int dev_pci_slot(struct udev_device *dev, struct netnames *names) { l = strpcpyf(&s, l, "p%ds%d", bus, slot); if (func > 0 || is_pci_multifunction(names->pcidev)) l = strpcpyf(&s, l, "f%d", func); - if (dev_id > 0) - l = strpcpyf(&s, l, "d%d", dev_id); + if (dev_port > 0) + l = strpcpyf(&s, l, "d%d", dev_port); if (l == 0) names->pci_path[0] = '\0'; @@ -248,8 +248,8 @@ static int dev_pci_slot(struct udev_device *dev, struct netnames *names) { l = strpcpyf(&s, l, "s%d", hotplug_slot); if (func > 0 || is_pci_multifunction(names->pcidev)) l = strpcpyf(&s, l, "f%d", func); - if (dev_id > 0) - l = strpcpyf(&s, l, "d%d", dev_id); + if (dev_port > 0) + l = strpcpyf(&s, l, "d%d", dev_port); if (l == 0) names->pci_path[0] = '\0'; } |