]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
dpdk/ice: setup RSS for Intel ICE PMD
authorLukas Sismis <lukas.sismis@gmail.com>
Mon, 29 Nov 2021 21:17:58 +0000 (22:17 +0100)
committerVictor Julien <vjulien@oisf.net>
Tue, 14 Dec 2021 11:41:16 +0000 (12:41 +0100)
Set RSS hash function according to Intel ICE PMD available hash functions

Set hash functions according to the support by the ICE PMD, so that no warning
regarding RSS setting is issued.

src/Makefile.am
src/runmode-dpdk.c
src/util-dpdk-ice.c [new file with mode: 0644]
src/util-dpdk-ice.h [new file with mode: 0644]

index e4bdb2c6492bc2d4ff162bec82f0b2eebfa21c3a..e186b5a8548277eaf008fd07e336640e9315cc59 100755 (executable)
@@ -509,6 +509,7 @@ noinst_HEADERS = \
        util-device.h \
        util-dpdk.h \
        util-dpdk-i40e.h \
+       util-dpdk-ice.h \
        util-dpdk-ixgbe.h \
        util-ebpf.h \
        util-enum.h \
@@ -1076,6 +1077,7 @@ libsuricata_c_a_SOURCES = \
        util-device.c \
        util-dpdk.c \
        util-dpdk-i40e.c \
+       util-dpdk-ice.c \
        util-dpdk-ixgbe.c \
        util-ebpf.c \
        util-enum.c \
index 6dff8b6d833c18f0e3c86dbbe43abbccbcfa13ea..64053e2026245111a7081d4fa066517851d783f1 100644 (file)
@@ -39,6 +39,7 @@
 #include "util-cpu.h"
 #include "util-dpdk.h"
 #include "util-dpdk-i40e.h"
+#include "util-dpdk-ice.h"
 #include "util-dpdk-ixgbe.h"
 
 #ifdef HAVE_DPDK
@@ -747,6 +748,8 @@ static void DeviceSetPMDSpecificRSS(struct rte_eth_rss_conf *rss_conf, const cha
     // RSS is configured in a specific way for a driver i40e and DPDK version <= 19.xx
     if (strcmp(driver_name, "net_i40e") == 0)
         i40eDeviceSetRSSHashFunction(&rss_conf->rss_hf);
+    if (strcmp(driver_name, "net_ice") == 0)
+        iceDeviceSetRSSHashFunction(&rss_conf->rss_hf);
     if (strcmp(driver_name, "net_ixgbe") == 0)
         ixgbeDeviceSetRSSHashFunction(&rss_conf->rss_hf);
 }
diff --git a/src/util-dpdk-ice.c b/src/util-dpdk-ice.c
new file mode 100644 (file)
index 0000000..736361b
--- /dev/null
@@ -0,0 +1,50 @@
+/* Copyright (C) 2021 Open Information Security Foundation
+ *
+ * You can copy, redistribute or modify this Program under the terms of
+ * the GNU General Public License version 2 as published by the Free
+ * Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * version 2 along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301, USA.
+ */
+
+/**
+ *  \defgroup dpdk DPDK Intel ICE driver helpers functions
+ *
+ *  @{
+ */
+
+/**
+ * \file
+ *
+ * \author Lukas Sismis <lukas.sismis@gmail.com>
+ *
+ * DPDK driver's helper functions
+ *
+ */
+
+#include "util-dpdk-ice.h"
+
+#ifdef HAVE_DPDK
+
+void iceDeviceSetRSSHashFunction(uint64_t *rss_hf)
+{
+    if (RTE_VER_YEAR <= 19)
+        *rss_hf = ETH_RSS_FRAG_IPV4 | ETH_RSS_NONFRAG_IPV4_OTHER | ETH_RSS_FRAG_IPV6 |
+                  ETH_RSS_NONFRAG_IPV6_OTHER;
+    else
+        *rss_hf = ETH_RSS_IPV4 | ETH_RSS_FRAG_IPV4 | ETH_RSS_NONFRAG_IPV4_OTHER | ETH_RSS_IPV6 |
+                  ETH_RSS_FRAG_IPV6 | ETH_RSS_NONFRAG_IPV6_OTHER;
+}
+
+#endif /* HAVE_DPDK */
+/**
+ * @}
+ */
diff --git a/src/util-dpdk-ice.h b/src/util-dpdk-ice.h
new file mode 100644 (file)
index 0000000..0049dbc
--- /dev/null
@@ -0,0 +1,36 @@
+/* Copyright (C) 2021 Open Information Security Foundation
+ *
+ * You can copy, redistribute or modify this Program under the terms of
+ * the GNU General Public License version 2 as published by the Free
+ * Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * version 2 along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301, USA.
+ */
+
+/**
+ * \file
+ *
+ * \author Lukas Sismis <lukas.sismis@gmail.com>
+ */
+
+#ifndef UTIL_DPDK_ICE_H
+#define UTIL_DPDK_ICE_H
+
+#include "suricata-common.h"
+#include "util-dpdk.h"
+
+#ifdef HAVE_DPDK
+
+void iceDeviceSetRSSHashFunction(uint64_t *rss_conf);
+
+#endif /* HAVE_DPDK */
+
+#endif /* UTIL_DPDK_ICE_H */