From fefc4bc15fe28d8f7def8bd75ada13ede21663cb Mon Sep 17 00:00:00 2001
From: Jan Macku <jamacku@redhat.com>
Date: Thu, 8 Aug 2024 13:12:58 +0200
Subject: [PATCH] netif-naming-scheme: add rhel-9.5 scheme

rhel-only: policy

Resolves: RHEL-44416
---
 man/systemd.net-naming-scheme.xml | 15 +++++++++++++++
 src/shared/netif-naming-scheme.c  |  1 +
 src/shared/netif-naming-scheme.h  |  1 +
 3 files changed, 17 insertions(+)

diff --git a/man/systemd.net-naming-scheme.xml b/man/systemd.net-naming-scheme.xml
index 690e3d2c27..b2d78c95ab 100644
--- a/man/systemd.net-naming-scheme.xml
+++ b/man/systemd.net-naming-scheme.xml
@@ -592,6 +592,21 @@
           <xi:include href="version-info.xml" xpointer="rhel-9.4"/>
           </listitem>
         </varlistentry>
+
+        <varlistentry>
+            <term><constant>rhel-9.5</constant></term>
+
+          <listitem><para>Never generate a slot name when a PCI bridge is detected.</para>
+
+          <para>Since version <constant>"rhel-9.0"</constant>, we have generated slot-based names
+          for PCI multifunction devices, because we assumed that it is enough to use function numbers
+          to distinguish between devices. However, name conflict can occur if these devices are not
+          children of the same PCI bridge, e.g. there are multiple PCI bridges in the same slot.
+          </para>
+
+          <xi:include href="version-info.xml" xpointer="rhel-9.5"/>
+          </listitem>
+        </varlistentry>
       </variablelist>
       </refsect2>
 
diff --git a/src/shared/netif-naming-scheme.c b/src/shared/netif-naming-scheme.c
index e4d4c0ba88..149794e926 100644
--- a/src/shared/netif-naming-scheme.c
+++ b/src/shared/netif-naming-scheme.c
@@ -40,6 +40,7 @@ static const NamingScheme naming_schemes[] = {
         { "rhel-9.2", NAMING_RHEL_9_2 },
         { "rhel-9.3", NAMING_RHEL_9_3 },
         { "rhel-9.4", NAMING_RHEL_9_4 },
+        { "rhel-9.5", NAMING_RHEL_9_5 },
         { "rhel-10.0", NAMING_RHEL_10_0 },
         /* … add more schemes here, as the logic to name devices is updated … */
 
diff --git a/src/shared/netif-naming-scheme.h b/src/shared/netif-naming-scheme.h
index b0697c141e..a55bb0b1cb 100644
--- a/src/shared/netif-naming-scheme.h
+++ b/src/shared/netif-naming-scheme.h
@@ -80,6 +80,7 @@ typedef enum NamingSchemeFlags {
         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_9_5 = NAMING_RHEL_9_4 & ~NAMING_BRIDGE_MULTIFUNCTION_SLOT,
 
         NAMING_RHEL_10_0 = NAMING_V255,