Skip to content

Commit

Permalink
net-naming-scheme: start rhel10 naming and include rhel8 and rhel9 ones
Browse files Browse the repository at this point in the history
Also add RHEL8,9,10 versions to version-info.xml file

rhel-only: feature

Resolves: RHEL-22621
  • Loading branch information
jamacku committed Jun 26, 2024
1 parent a9f0361 commit c6a6593
Show file tree
Hide file tree
Showing 4 changed files with 256 additions and 0 deletions.
186 changes: 186 additions & 0 deletions man/systemd.net-naming-scheme.xml
Original file line number Diff line number Diff line change
Expand Up @@ -525,7 +525,193 @@
</listitem>
</varlistentry>

<varlistentry>
<term><constant>rhel-10.0</constant></term>

<listitem><para>Same as naming scheme <constant>v255</constant>.</para>

<xi:include href="version-info.xml" xpointer="rhel-10.0"/>
</listitem>
</varlistentry>
</variablelist>
<para>By default <constant>rhel-10.0</constant> is used.</para>

<refsect2>
<title>RHEL-9 schemes</title>
<para>It is also possible to pick a scheme from RHEL-9</para>
<variablelist>
<varlistentry>
<term><constant>rhel-9.0</constant></term>

<listitem><para>Since version <constant>v247</constant> we no longer set
<varname>ID_NET_NAME_SLOT</varname> if we detect that a PCI device associated with a slot is a PCI
bridge as that would create naming conflict when there are more child devices on that bridge. Now,
this is relaxed and we will use slot information to generate the name based on it but only if
the PCI device has multiple functions. This is safe because distinct function number is a part of
the device name for multifunction devices.</para>

<xi:include href="version-info.xml" xpointer="rhel-9.0"/>
</listitem>
</varlistentry>

<varlistentry>
<term><constant>rhel-9.1</constant></term>

<listitem><para>Same as naming scheme <constant>rhel-9.0</constant>.</para>

<xi:include href="version-info.xml" xpointer="rhel-9.1"/>
</listitem>
</varlistentry>

<varlistentry>
<term><constant>rhel-9.2</constant></term>

<listitem><para>Same as naming scheme <constant>rhel-9.0</constant>.</para>

<xi:include href="version-info.xml" xpointer="rhel-9.2"/>
</listitem>
</varlistentry>

<varlistentry>
<term><constant>rhel-9.3</constant></term>

<listitem><para>Naming was changed for SR-IOV virtual device representors.</para>

<para>The <literal>r<replaceable>slot</replaceable></literal> suffix was added to differentiate SR-IOV
virtual device representors attached to a single physical device interface.</para>

<xi:include href="version-info.xml" xpointer="rhel-9.3"/>
</listitem>
</varlistentry>

<varlistentry>
<term><constant>rhel-9.4</constant></term>

<listitem><para>Same as naming scheme <constant>rhel-9.3</constant>.</para>

<xi:include href="version-info.xml" xpointer="rhel-9.4"/>
</listitem>
</varlistentry>
</variablelist>
</refsect2>

<refsect2>
<title>RHEL-8 schemes</title>
<para>It is also possible to pick a scheme from RHEL-8</para>
<variablelist>
<varlistentry>
<term><constant>rhel-8.0</constant></term>

<listitem><para>Same as naming scheme <constant>v239</constant>.</para>

<xi:include href="version-info.xml" xpointer="rhel-8.0"/>
</listitem>
</varlistentry>

<varlistentry>
<term><constant>rhel-8.1</constant></term>

<listitem><para>Same as naming scheme <constant>rhel-8.0</constant>.</para>

<xi:include href="version-info.xml" xpointer="rhel-8.1"/>
</listitem>
</varlistentry>

<varlistentry>
<term><constant>rhel-8.2</constant></term>

<listitem><para>Same as naming scheme <constant>rhel-8.0</constant>.</para>

<xi:include href="version-info.xml" xpointer="rhel-8.2"/>
</listitem>
</varlistentry>

<varlistentry>
<term><constant>rhel-8.3</constant></term>

<listitem><para>Same as naming scheme <constant>rhel-8.0</constant>.</para>

<xi:include href="version-info.xml" xpointer="rhel-8.3"/>
</listitem>
</varlistentry>

<varlistentry>
<term><constant>rhel-8.4</constant></term>

<listitem><para>If the PCI slot is assocated with PCI bridge and that has multiple child network
controllers then all of them might derive the same value of <varname>ID_NET_NAME_SLOT</varname>
property. That could cause naming conflict if the property is selected as a device name. Now, we detect the
situation, slot - bridge relation, and we don't produce the <varname>ID_NET_NAME_SLOT</varname> property to
avoid possible naming conflict.</para>

<xi:include href="version-info.xml" xpointer="rhel-8.4"/>
</listitem>
</varlistentry>

<varlistentry>
<term><constant>rhel-8.5</constant></term>

<listitem><para>Same as naming scheme <constant>rhel-8.4</constant>.</para>

<xi:include href="version-info.xml" xpointer="rhel-8.5"/>
</listitem>
</varlistentry>

<varlistentry>
<term><constant>rhel-8.6</constant></term>

<listitem><para>Same as naming scheme <constant>rhel-8.4</constant>.</para>

<xi:include href="version-info.xml" xpointer="rhel-8.6"/>
</listitem>
</varlistentry>

<varlistentry>
<term><constant>rhel-8.7</constant></term>

<listitem><para>PCI hotplug slot names for the s390 PCI driver are a hexadecimal representation
of the <filename>function_id</filename> device attribute. This attribute is now used to build the
<varname>ID_NET_NAME_SLOT</varname>. Before that, all slot names were parsed as decimal
numbers, which could either result in an incorrect value of the <varname>ID_NET_NAME_SLOT</varname>
property or none at all.</para>

<para>Some firmware and hypervisor implementations report unreasonable high numbers for the onboard
index. To prevent the generation of bogus onbard interface names, index numbers greater than 16381
(2^14-1) were ignored. For s390 PCI devices index values up to 65535 (2^16-1) are valid. To account
for that, the limit is increased to now 65535.</para>

<xi:include href="version-info.xml" xpointer="rhel-8.7"/>
</listitem>
</varlistentry>

<varlistentry>
<term><constant>rhel-8.8</constant></term>

<listitem><para>Same as naming scheme <constant>rhel-8.7</constant>.</para>

<xi:include href="version-info.xml" xpointer="rhel-8.8"/>
</listitem>
</varlistentry>

<varlistentry>
<term><constant>rhel-8.9</constant></term>

<listitem><para>Same as naming scheme <constant>rhel-8.7</constant>.</para>

<xi:include href="version-info.xml" xpointer="rhel-8.9"/>
</listitem>
</varlistentry>

<varlistentry>
<term><constant>rhel-8.10</constant></term>

<listitem><para>Same as naming scheme <constant>rhel-8.7</constant>.</para>

<xi:include href="version-info.xml" xpointer="rhel-8.10"/>
</listitem>
</varlistentry>
</variablelist>
</refsect2>

<para>Note that <constant>latest</constant> may be used to denote the latest scheme known (to this
particular version of systemd).</para>
Expand Down
33 changes: 33 additions & 0 deletions man/version-info.xml
Original file line number Diff line number Diff line change
Expand Up @@ -81,4 +81,37 @@
<para id="v255">Added in version 255.</para>
<para id="v256">Added in version 256.</para>
<para id="v257">Added in version 257.</para>
<para id="rhel-8.0">Added in rhel-8.0.</para>
<para id="rhel-8.1">Added in rhel-8.1.</para>
<para id="rhel-8.2">Added in rhel-8.2.</para>
<para id="rhel-8.3">Added in rhel-8.3.</para>
<para id="rhel-8.4">Added in rhel-8.4.</para>
<para id="rhel-8.5">Added in rhel-8.5.</para>
<para id="rhel-8.6">Added in rhel-8.6.</para>
<para id="rhel-8.7">Added in rhel-8.7.</para>
<para id="rhel-8.8">Added in rhel-8.8.</para>
<para id="rhel-8.9">Added in rhel-8.9.</para>
<para id="rhel-8.10">Added in rhel-8.10.</para>
<para id="rhel-9.0">Added in rhel-9.0.</para>
<para id="rhel-9.1">Added in rhel-9.1.</para>
<para id="rhel-9.2">Added in rhel-9.2.</para>
<para id="rhel-9.3">Added in rhel-9.3.</para>
<para id="rhel-9.4">Added in rhel-9.4.</para>
<para id="rhel-9.5">Added in rhel-9.5.</para>
<para id="rhel-9.6">Added in rhel-9.6.</para>
<para id="rhel-9.7">Added in rhel-9.7.</para>
<para id="rhel-9.8">Added in rhel-9.8.</para>
<para id="rhel-9.9">Added in rhel-9.9.</para>
<para id="rhel-9.10">Added in rhel-9.10.</para>
<para id="rhel-10.0">Added in rhel-10.0.</para>
<para id="rhel-10.1">Added in rhel-10.1.</para>
<para id="rhel-10.2">Added in rhel-10.2.</para>
<para id="rhel-10.3">Added in rhel-10.3.</para>
<para id="rhel-10.4">Added in rhel-10.4.</para>
<para id="rhel-10.5">Added in rhel-10.5.</para>
<para id="rhel-10.6">Added in rhel-10.6.</para>
<para id="rhel-10.7">Added in rhel-10.7.</para>
<para id="rhel-10.8">Added in rhel-10.8.</para>
<para id="rhel-10.9">Added in rhel-10.9.</para>
<para id="rhel-10.10">Added in rhel-10.10.</para>
</refsect1>
17 changes: 17 additions & 0 deletions src/shared/netif-naming-scheme.c
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,23 @@ static const NamingScheme naming_schemes[] = {
{ "v253", NAMING_V253 },
{ "v254", NAMING_V254 },
{ "v255", NAMING_V255 },
{ "rhel-8.0", NAMING_RHEL_8_0 },
{ "rhel-8.1", NAMING_RHEL_8_1 },
{ "rhel-8.2", NAMING_RHEL_8_2 },
{ "rhel-8.3", NAMING_RHEL_8_3 },
{ "rhel-8.4", NAMING_RHEL_8_4 },
{ "rhel-8.5", NAMING_RHEL_8_5 },
{ "rhel-8.6", NAMING_RHEL_8_6 },
{ "rhel-8.7", NAMING_RHEL_8_7 },
{ "rhel-8.8", NAMING_RHEL_8_8 },
{ "rhel-8.9", NAMING_RHEL_8_9 },
{ "rhel-8.10", NAMING_RHEL_8_10 },
{ "rhel-9.0", NAMING_RHEL_9_0 },
{ "rhel-9.1", NAMING_RHEL_9_1 },
{ "rhel-9.2", NAMING_RHEL_9_2 },
{ "rhel-9.3", NAMING_RHEL_9_3 },
{ "rhel-9.4", NAMING_RHEL_9_4 },
{ "rhel-10.0", NAMING_RHEL_10_0 },
/* … add more schemes here, as the logic to name devices is updated … */

EXTRA_NET_NAMING_MAP
Expand Down
20 changes: 20 additions & 0 deletions src/shared/netif-naming-scheme.h
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,26 @@ typedef enum NamingSchemeFlags {
* systemd version 255, naming scheme "v255". */
NAMING_V255 = NAMING_V254 & ~NAMING_BRIDGE_MULTIFUNCTION_SLOT,

NAMING_RHEL_8_0 = NAMING_V239,
NAMING_RHEL_8_1 = NAMING_V239,
NAMING_RHEL_8_2 = NAMING_V239,
NAMING_RHEL_8_3 = NAMING_V239,
NAMING_RHEL_8_4 = NAMING_V239 | NAMING_BRIDGE_NO_SLOT,
NAMING_RHEL_8_5 = NAMING_RHEL_8_4,
NAMING_RHEL_8_6 = NAMING_RHEL_8_4,
NAMING_RHEL_8_7 = NAMING_RHEL_8_4 | NAMING_SLOT_FUNCTION_ID | NAMING_16BIT_INDEX,
NAMING_RHEL_8_8 = NAMING_RHEL_8_7,
NAMING_RHEL_8_9 = NAMING_RHEL_8_7,
NAMING_RHEL_8_10 = NAMING_RHEL_8_7,

NAMING_RHEL_9_0 = NAMING_V250 | NAMING_BRIDGE_MULTIFUNCTION_SLOT,
NAMING_RHEL_9_1 = NAMING_RHEL_9_0,
NAMING_RHEL_9_2 = NAMING_RHEL_9_0,
NAMING_RHEL_9_3 = NAMING_RHEL_9_0 | NAMING_SR_IOV_R,
NAMING_RHEL_9_4 = NAMING_RHEL_9_3,

NAMING_RHEL_10_0 = NAMING_V255,

EXTRA_NET_NAMING_SCHEMES

_NAMING_SCHEME_FLAGS_INVALID = -EINVAL,
Expand Down

0 comments on commit c6a6593

Please sign in to comment.