diff --git a/SOURCES/1019-initrd-generate-infiniband-connections-rh1883173.patch b/SOURCES/1019-initrd-generate-infiniband-connections-rh1883173.patch
new file mode 100644
index 0000000..19396e8
--- /dev/null
+++ b/SOURCES/1019-initrd-generate-infiniband-connections-rh1883173.patch
@@ -0,0 +1,148 @@
+From 566ef706015f01481f9e559c74ea89fc47d9cb6e Mon Sep 17 00:00:00 2001
+From: Beniamino Galvani <bgalvani@redhat.com>
+Date: Thu, 15 Oct 2020 09:44:52 +0200
+Subject: [PATCH] initrd: generate infiniband connections
+
+Generate infiniband connections based on the interface name or MAC
+address length.
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1883173
+(cherry picked from commit 317171ed6ed4560bb54191a13f71e1daec7f1ea4)
+(cherry picked from commit f091730ebc98342036615176738030cbcd4b3d73)
+(cherry picked from commit 7665d9b29e1d977e23d3f9b5016cb385938592f2)
+---
+ src/initrd/nmi-cmdline-reader.c        | 30 ++++++++++----
+ src/initrd/tests/test-cmdline-reader.c | 54 ++++++++++++++++++++++++++
+ 2 files changed, 76 insertions(+), 8 deletions(-)
+
+diff --git a/src/initrd/nmi-cmdline-reader.c b/src/initrd/nmi-cmdline-reader.c
+index ee3dab2574..257ba3d7ae 100644
+--- a/src/initrd/nmi-cmdline-reader.c
++++ b/src/initrd/nmi-cmdline-reader.c
+@@ -121,12 +121,21 @@ reader_create_connection (Reader *reader,
+ 	              NM_SETTING_CONNECTION_MULTI_CONNECT, multi_connect,
+ 	              NULL);
+
+-	if (mac) {
+-		setting = nm_setting_wired_new ();
++	if (nm_streq0 (type_name, NM_SETTING_INFINIBAND_SETTING_NAME)) {
++		setting = nm_setting_infiniband_new ();
+ 		nm_connection_add_setting (connection, setting);
+-		g_object_set (setting,
+-		              NM_SETTING_WIRED_MAC_ADDRESS, mac,
+-		              NULL);
++		g_object_set (setting, NM_SETTING_INFINIBAND_TRANSPORT_MODE, "datagram", NULL);
++	}
++
++	if (mac) {
++		if (nm_streq0 (type_name, NM_SETTING_INFINIBAND_SETTING_NAME)) {
++			setting = (NMSetting *) nm_connection_get_setting_infiniband (connection);
++			g_object_set (setting, NM_SETTING_INFINIBAND_MAC_ADDRESS, mac, NULL);
++		} else {
++			setting = nm_setting_wired_new ();
++			nm_connection_add_setting (connection, setting);
++			g_object_set (setting, NM_SETTING_WIRED_MAC_ADDRESS, mac, NULL);
++		}
+ 	}
+
+ 	return connection;
+@@ -166,7 +175,7 @@ reader_get_connection (Reader *reader,
+ 		if (nm_utils_is_valid_iface_name (iface_spec, NULL))
+ 			ifname = iface_spec;
+ 		else {
+-			mac = nm_utils_hwaddr_canonical (iface_spec, ETH_ALEN);
++			mac = nm_utils_hwaddr_canonical (iface_spec, -1);
+ 			if (!mac)
+ 				_LOGW (LOGD_CORE, "invalid interface '%s'", iface_spec);
+ 		}
+@@ -206,8 +215,13 @@ reader_get_connection (Reader *reader,
+ 		if (!create_if_missing)
+ 			return NULL;
+
+-		if (!type_name)
+-			type_name = NM_SETTING_WIRED_SETTING_NAME;
++		if (!type_name) {
++			if (   NM_STR_HAS_PREFIX (ifname, "ib")
++			    || (mac && nm_utils_hwaddr_valid (mac, INFINIBAND_ALEN)))
++				type_name = NM_SETTING_INFINIBAND_SETTING_NAME;
++			else
++				type_name = NM_SETTING_WIRED_SETTING_NAME;
++		}
+
+ 		connection = reader_create_connection (reader, ifname ?: mac,
+ 		                                       ifname ?: (mac ?: "Wired Connection"),
+diff --git a/src/initrd/tests/test-cmdline-reader.c b/src/initrd/tests/test-cmdline-reader.c
+index d67f599337..d6966023a9 100644
+--- a/src/initrd/tests/test-cmdline-reader.c
++++ b/src/initrd/tests/test-cmdline-reader.c
+@@ -1600,6 +1600,58 @@ test_dhcp_vendor_class_id (void)
+ 	g_assert (nm_setting_ip4_config_get_dhcp_vendor_class_identifier (s_ip4) == NULL);
+ }
+
++static void
++test_infiniband_iface (void)
++{
++	gs_unref_hashtable GHashTable *connections = NULL;
++	const char *const *ARGV = NM_MAKE_STRV ("ip=ib1:dhcp");
++	NMConnection *connection;
++	NMSettingInfiniband *s_ib;
++	gs_free char *hostname = NULL;
++
++	connections = nmi_cmdline_reader_parse (TEST_INITRD_DIR "/sysfs", ARGV, &hostname);
++	g_assert (connections);
++	g_assert_cmpint (g_hash_table_size (connections), ==, 1);
++	g_assert_cmpstr (hostname, ==, NULL);
++
++	connection = g_hash_table_lookup (connections, "ib1");
++	g_assert (connection);
++	nmtst_assert_connection_verifies_without_normalization (connection);
++	g_assert_cmpstr (nm_connection_get_connection_type (connection),
++	                 ==,
++	                 NM_SETTING_INFINIBAND_SETTING_NAME);
++	s_ib = nm_connection_get_setting_infiniband (connection);
++	g_assert (s_ib);
++}
++
++static void
++test_infiniband_mac (void)
++{
++	gs_unref_hashtable GHashTable *connections = NULL;
++	const char *const *ARGV = NM_MAKE_STRV("ip=00-11-22-33-44-55-66-77-88-99-aa-bb-cc-dd-ee-ff-00-11-22-33:dhcp");
++	NMConnection *connection;
++	NMSettingInfiniband *s_ib;
++	gs_free char *hostname = NULL;
++
++	connections = nmi_cmdline_reader_parse (TEST_INITRD_DIR "/sysfs", ARGV, &hostname);
++	g_assert (connections);
++	g_assert_cmpint (g_hash_table_size (connections), ==, 1);
++	g_assert_cmpstr (hostname, ==, NULL);
++
++	connection = g_hash_table_lookup (connections, "00:11:22:33:44:55:66:77:88:99:AA:BB:CC:DD:EE:FF:00:11:22:33");
++	g_assert (connection);
++	nmtst_assert_connection_verifies_without_normalization (connection);
++	g_assert_cmpstr (nm_connection_get_connection_type (connection),
++	                 ==,
++	                 NM_SETTING_INFINIBAND_SETTING_NAME);
++	g_assert_cmpstr (nm_connection_get_interface_name (connection), ==, NULL);
++	s_ib = nm_connection_get_setting_infiniband (connection);
++	g_assert (s_ib);
++	g_assert_cmpstr (nm_setting_infiniband_get_mac_address (s_ib),
++	                 ==,
++	                 "00:11:22:33:44:55:66:77:88:99:AA:BB:CC:DD:EE:FF:00:11:22:33");
++}
++
+ NMTST_DEFINE ();
+
+ int main (int argc, char **argv)
+@@ -1639,6 +1691,8 @@ int main (int argc, char **argv)
+ 	g_test_add_func ("/initrd/cmdline/bootif/off", test_bootif_off);
+ 	g_test_add_func ("/initrd/cmdline/neednet", test_neednet);
+ 	g_test_add_func ("/initrd/cmdline/dhcp/vendor_class_id", test_dhcp_vendor_class_id);
++	g_test_add_func("/initrd/cmdline/infiniband/iface", test_infiniband_iface);
++	g_test_add_func("/initrd/cmdline/infiniband/mac", test_infiniband_mac);
+
+ 	return g_test_run ();
+ }
+--
+2.26.2
+
diff --git a/SPECS/NetworkManager.spec b/SPECS/NetworkManager.spec
index e7da951..85d6a42 100644
--- a/SPECS/NetworkManager.spec
+++ b/SPECS/NetworkManager.spec
@@ -7,7 +7,7 @@
 %global epoch_version 1
 %global rpm_version 1.26.0
 %global real_version 1.26.0
-%global release_version 8
+%global release_version 9
 %global snapshot %{nil}
 %global git_sha %{nil}
 
@@ -168,6 +168,7 @@ Patch1015: 1015-local-route-fixes-rh1868982.patch
 Patch1016: 1016-dhcp-implement-dhcp-vendor-class-identifier-option-rh1871042.patch
 Patch1017: 1017-initrd-parse-rd.net.dhcp.vendor-class-rh1870692.patch
 Patch1018: 1018-initrd-accept-mac-ifaces-rh1879795.patch
+Patch1019: 1019-initrd-generate-infiniband-connections-rh1883173.patch
 
 # The pregenerated docs contain default values and paths that depend
 # on the configure options when creating the source tarball.
@@ -1115,6 +1116,9 @@ fi
 
 
 %changelog
+* Tue Oct 20 2020 Beniamino Galvani <bgalvani@redhat.com> - 1:1.26.0-9
+- initrd: generate infiniband connections (rh #1890262)
+
 * Thu Sep 24 2020 Beniamino Galvani <bgalvani@redhat.com> - 1:1.26.0-8
 - initrd: accept mac address as interface specifier (rh #1879795)
 - initrd: fix parsing IPv6 prefix length (rh #1879795)