From: Lukas Sismis Date: Sun, 11 Feb 2024 16:18:13 +0000 (+0100) Subject: dpdk: split out the configure function into smaller ones X-Git-Tag: suricata-8.0.0-beta1~1726 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=63016aaa7b74b8e143a0b17b5516ddfa6664aef0;p=thirdparty%2Fsuricata.git dpdk: split out the configure function into smaller ones --- diff --git a/src/runmode-dpdk.c b/src/runmode-dpdk.c index d448659da1..190dba5a21 100644 --- a/src/runmode-dpdk.c +++ b/src/runmode-dpdk.c @@ -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) {