On Tue, Oct 20, 2015 at 10:04 PM, Jordan Hargrave <[email protected]> wrote:
> On Tue, Oct 20, 2015 at 3:02 PM, Andrei Borzenkov <[email protected]> > wrote: > > 20.10.2015 17:30, Jordan Hargrave пишет: > > > >> On Tue, Oct 20, 2015 at 1:15 AM, Andrei Borzenkov <[email protected]> > >> wrote: > >>> > >>> On Tue, Oct 20, 2015 at 7:46 AM, Jordan Hargrave <[email protected]> > >>> wrote: > >>>> > >>>> On Mon, Mar 2, 2015 at 1:17 PM, Tom Gundersen <[email protected]> wrote: > >>>>> > >>>>> Hi Jordan, > >>>>> > >>>>> On Mon, Mar 2, 2015 at 4:45 PM, Jordan Hargrave <[email protected]> > >>>>> wrote: > >>>>>> > >>>>>> There are currently two competing naming mechanisms for network > cards, > >>>>>> biosdevname and systemd. Systemd currently has some limitations on > >>>>>> naming > >>>>>> cards that use network partitioning or support SR-IOV. > >>>>> > >>>>> > >>>>> Could you point to an example so we can fix it? I thought all bug > >>>>> reports had been handled, but maybe I lost track of something. > >>>>> > >>>> > >>>> I have a quad-port NIC: > >>>> 0000:40:00.0 = PCIE bridge (SMBIOS Slot 2) > >>>> 0000:41:00.0 = Ethernet Device (port1) > >>>> 0000:41:00.1 = Ethernet Device (port2) > >>>> 0000:42:00.0 = Ethernet Device (port3) > >>>> 0000:42:00.1 = Ethernet Device (port4) > >>>> > >>>> biosdevname would name these p2p1, p2p2, p2p3, p2p4 respectively. > >>>> > >>> > >>> How does it determine that 41 and 42 are the same device? I.e. how > >>> does it differ from real bridge with two independent two-port cards > >>> behind? Could you explain what information it is using? Is it exported > >>> in sysfs? > >>> > >>> ... > >> > >> > >> It knows they are on the same slot as the parent device has SMBIOS > >> Slot#2 (Type 9). So all child devices of a physical slot are on the > >> same card. I'm currently using a patch to systemd that reads SMBIOS > >> type 9. There isn't a kernel sysfs variable that displays this. > >> > > > > This gives us slot ID, but how do we know which of function 0 on this > slot > > ID is port 0 and which is port 2? There is nothing in SMBIOS description > of > > Type 9 that answers it. > > Looking for a resolution for this.. adding port numbers to systemd enumeration of devices in PCI slots. Systemd still doesn't have the concept of a 'Port' number, so multi-port NICs get named with enp<BUS>s<DEV>f<FUNC> instead of ens<SLOT>p<PORT>. There needs to be a way to generate systemd names that have the following variables for add-in cards: Slot Number Port Number Instance Number (for SR-IOV or Network Partitioned devices) It is possible to calculate the port number without any knowledge of sibling devices. Requires knowledge of device PCI ID, parent tree and 'dev_port' attribute (for mellanox cards). Then the devices could be named ensSLOTpPORT Network cards I've noticed have the following PCI bus topology: dual port cards: bus:00.0 = port 1 bus:00.1 = port 2 quad port cards have two different layouts: top level bus (upstream port) with two downstream ports, or all devices as multifunction Broadcom cards seem to follow this style bus:00.0 = port 1 bus:00.1 = port 2 bus:00.2 = port 3 bus:00.3 = port 4 Intel cards seem to follow this style bus:00.0 = upstream port. sbus is secondary bus sbus:xx.y = bridge 1 sbus:xx.z = bridge 2 sbus+1:00.0 = port 1 sbus+1:00.1 = port 2 sbus+2:00.0 = port 3 sbus+2:00.1 = port 4 Walking up the /sys/bus/pci/devices heirarchy from the network 'device' link until the 'acpi_index' field is found/ Then read sysfs 'label' field. On Dell systems this is the form "SLOT x" so the slot ID can be determined.
_______________________________________________ systemd-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/systemd-devel
