From: Lukas Sismis Date: Mon, 29 Nov 2021 21:17:58 +0000 (+0100) Subject: dpdk/ice: setup RSS for Intel ICE PMD X-Git-Tag: suricata-7.0.0-beta1~1104 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=de53e0755947e4c1a2da0a2f2612bb58a922fcdc;p=thirdparty%2Fsuricata.git dpdk/ice: setup RSS for Intel ICE PMD 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. --- diff --git a/src/Makefile.am b/src/Makefile.am index e4bdb2c649..e186b5a854 100755 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -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 \ diff --git a/src/runmode-dpdk.c b/src/runmode-dpdk.c index 6dff8b6d83..64053e2026 100644 --- a/src/runmode-dpdk.c +++ b/src/runmode-dpdk.c @@ -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 index 0000000000..736361bd6c --- /dev/null +++ b/src/util-dpdk-ice.c @@ -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 + * + * 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 index 0000000000..0049dbcba5 --- /dev/null +++ b/src/util-dpdk-ice.h @@ -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 + */ + +#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 */