]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
dpdk: split out the configure function into smaller ones
authorLukas Sismis <lsismis@oisf.net>
Sun, 11 Feb 2024 16:18:13 +0000 (17:18 +0100)
committerVictor Julien <victor@inliniac.net>
Wed, 21 Feb 2024 06:29:34 +0000 (07:29 +0100)
src/runmode-dpdk.c

index d448659da12754a96bba57aa2f17be5d31c11a42..190dba5a2167a7bfbfab201d0de785236ba27df9 100644 (file)
@@ -1123,27 +1123,17 @@ static int32_t DeviceSetSocketID(uint16_t port_id, int32_t *socket_id)
     return retval;
 }
 
-static void DeviceInitPortConf(const DPDKIfaceConfig *iconf,
-        const struct rte_eth_dev_info *dev_info, struct rte_eth_conf *port_conf)
+static void PortConfSetInterruptMode(const DPDKIfaceConfig *iconf, struct rte_eth_conf *port_conf)
 {
-    DumpRXOffloadCapabilities(dev_info->rx_offload_capa);
-    *port_conf = (struct rte_eth_conf){
-            .rxmode = {
-                    .mq_mode = RTE_ETH_MQ_RX_NONE,
-                    .offloads = 0, // turn every offload off to prevent any packet modification
-            },
-            .txmode = {
-                    .mq_mode = RTE_ETH_MQ_TX_NONE,
-                    .offloads = 0,
-            },
-    };
-
     SCLogConfig("%s: interrupt mode is %s", iconf->iface,
             iconf->flags & DPDK_IRQ_MODE ? "enabled" : "disabled");
     if (iconf->flags & DPDK_IRQ_MODE)
         port_conf->intr_conf.rxq = 1;
+}
 
-    // configure RX offloads
+static void PortConfSetRSSConf(const DPDKIfaceConfig *iconf,
+        const struct rte_eth_dev_info *dev_info, struct rte_eth_conf *port_conf)
+{
     if (dev_info->rx_offload_capa & RTE_ETH_RX_OFFLOAD_RSS_HASH) {
         if (iconf->nb_rx_queues > 1) {
             SCLogConfig("%s: RSS enabled for %d queues", iconf->iface, iconf->nb_rx_queues);
@@ -1179,7 +1169,11 @@ static void DeviceInitPortConf(const DPDKIfaceConfig *iconf,
     } else {
         SCLogConfig("%s: RSS not supported", iconf->iface);
     }
+}
 
+static void PortConfSetChsumOffload(const DPDKIfaceConfig *iconf,
+        const struct rte_eth_dev_info *dev_info, struct rte_eth_conf *port_conf)
+{
     if (iconf->checksum_mode == CHECKSUM_VALIDATION_DISABLE) {
         SCLogConfig("%s: checksum validation disabled", iconf->iface);
     } else if ((dev_info->rx_offload_capa & RTE_ETH_RX_OFFLOAD_CHECKSUM) ==
@@ -1193,7 +1187,28 @@ static void DeviceInitPortConf(const DPDKIfaceConfig *iconf,
             SCLogConfig("%s: checksum validation enabled (but can be offloaded)", iconf->iface);
         }
     }
+}
 
+static void DeviceInitPortConf(const DPDKIfaceConfig *iconf,
+        const struct rte_eth_dev_info *dev_info, struct rte_eth_conf *port_conf)
+{
+    DumpRXOffloadCapabilities(dev_info->rx_offload_capa);
+    *port_conf = (struct rte_eth_conf){
+            .rxmode = {
+                    .mq_mode = RTE_ETH_MQ_RX_NONE,
+                    .offloads = 0, // turn every offload off to prevent any packet modification
+            },
+            .txmode = {
+                    .mq_mode = RTE_ETH_MQ_TX_NONE,
+                    .offloads = 0,
+            },
+    };
+
+    PortConfSetInterruptMode(iconf, port_conf);
+
+    // configure RX offloads
+    PortConfSetRSSConf(iconf, dev_info, port_conf);
+    PortConfSetChsumOffload(iconf, dev_info, port_conf);
     DeviceSetMTU(port_conf, iconf->mtu);
 
     if (dev_info->tx_offload_capa & RTE_ETH_TX_OFFLOAD_MBUF_FAST_FREE) {