From 2feece601a3de142f94bdf3e1616c56700d1af74 Mon Sep 17 00:00:00 2001 From: Lukas Sismis Date: Thu, 25 May 2023 13:59:44 +0200 Subject: [PATCH] dpdk: add debug dump of RX offload capabilities --- src/runmode-dpdk.c | 47 ++++++++++++++++++++++++++++++++++++++++++++++ src/util-dpdk.h | 18 ++++++++++++++++++ 2 files changed, 65 insertions(+) diff --git a/src/runmode-dpdk.c b/src/runmode-dpdk.c index d1c22105cc..395839bf88 100644 --- a/src/runmode-dpdk.c +++ b/src/runmode-dpdk.c @@ -921,6 +921,52 @@ static void DumpRSSFlags(const uint64_t requested, const uint64_t actual) SCLogConfig("RTE_ETH_RSS_L4_DST_ONLY %sset", (actual & RTE_ETH_RSS_L4_DST_ONLY) ? "" : "NOT "); } +static void DumpRXOffloadCapabilities(const uint64_t rx_offld_capa) +{ + SCLogConfig("RTE_ETH_RX_OFFLOAD_VLAN_STRIP - %savailable", + rx_offld_capa & RTE_ETH_RX_OFFLOAD_VLAN_STRIP ? "" : "NOT "); + SCLogConfig("RTE_ETH_RX_OFFLOAD_IPV4_CKSUM - %savailable", + rx_offld_capa & RTE_ETH_RX_OFFLOAD_IPV4_CKSUM ? "" : "NOT "); + SCLogConfig("RTE_ETH_RX_OFFLOAD_UDP_CKSUM - %savailable", + rx_offld_capa & RTE_ETH_RX_OFFLOAD_UDP_CKSUM ? "" : "NOT "); + SCLogConfig("RTE_ETH_RX_OFFLOAD_TCP_CKSUM - %savailable", + rx_offld_capa & RTE_ETH_RX_OFFLOAD_TCP_CKSUM ? "" : "NOT "); + SCLogConfig("RTE_ETH_RX_OFFLOAD_TCP_LRO - %savailable", + rx_offld_capa & RTE_ETH_RX_OFFLOAD_TCP_LRO ? "" : "NOT "); + SCLogConfig("RTE_ETH_RX_OFFLOAD_QINQ_STRIP - %savailable", + rx_offld_capa & RTE_ETH_RX_OFFLOAD_QINQ_STRIP ? "" : "NOT "); + SCLogConfig("RTE_ETH_RX_OFFLOAD_OUTER_IPV4_CKSUM - %savailable", + rx_offld_capa & RTE_ETH_RX_OFFLOAD_OUTER_IPV4_CKSUM ? "" : "NOT "); + SCLogConfig("RTE_ETH_RX_OFFLOAD_MACSEC_STRIP - %savailable", + rx_offld_capa & RTE_ETH_RX_OFFLOAD_MACSEC_STRIP ? "" : "NOT "); +#if RTE_VERSION < RTE_VERSION_NUM(22, 11, 0, 0) + SCLogConfig("RTE_ETH_RX_OFFLOAD_HEADER_SPLIT - %savailable", + rx_offld_capa & RTE_ETH_RX_OFFLOAD_HEADER_SPLIT ? "" : "NOT "); +#endif + SCLogConfig("RTE_ETH_RX_OFFLOAD_VLAN_FILTER - %savailable", + rx_offld_capa & RTE_ETH_RX_OFFLOAD_VLAN_FILTER ? "" : "NOT "); + SCLogConfig("RTE_ETH_RX_OFFLOAD_VLAN_EXTEND - %savailable", + rx_offld_capa & RTE_ETH_RX_OFFLOAD_VLAN_EXTEND ? "" : "NOT "); + SCLogConfig("RTE_ETH_RX_OFFLOAD_SCATTER - %savailable", + rx_offld_capa & RTE_ETH_RX_OFFLOAD_SCATTER ? "" : "NOT "); + SCLogConfig("RTE_ETH_RX_OFFLOAD_TIMESTAMP - %savailable", + rx_offld_capa & RTE_ETH_RX_OFFLOAD_TIMESTAMP ? "" : "NOT "); + SCLogConfig("RTE_ETH_RX_OFFLOAD_SECURITY - %savailable", + rx_offld_capa & RTE_ETH_RX_OFFLOAD_SECURITY ? "" : "NOT "); + SCLogConfig("RTE_ETH_RX_OFFLOAD_KEEP_CRC - %savailable", + rx_offld_capa & RTE_ETH_RX_OFFLOAD_KEEP_CRC ? "" : "NOT "); + SCLogConfig("RTE_ETH_RX_OFFLOAD_SCTP_CKSUM - %savailable", + rx_offld_capa & RTE_ETH_RX_OFFLOAD_SCTP_CKSUM ? "" : "NOT "); + SCLogConfig("RTE_ETH_RX_OFFLOAD_OUTER_UDP_CKSUM - %savailable", + rx_offld_capa & RTE_ETH_RX_OFFLOAD_OUTER_UDP_CKSUM ? "" : "NOT "); + SCLogConfig("RTE_ETH_RX_OFFLOAD_RSS_HASH - %savailable", + rx_offld_capa & RTE_ETH_RX_OFFLOAD_RSS_HASH ? "" : "NOT "); +#if RTE_VERSION >= RTE_VERSION_NUM(20, 11, 0, 0) + SCLogConfig("RTE_ETH_RX_OFFLOAD_BUFFER_SPLIT - %savailable", + rx_offld_capa & RTE_ETH_RX_OFFLOAD_BUFFER_SPLIT ? "" : "NOT "); +#endif +} + static int DeviceValidateMTU(const DPDKIfaceConfig *iconf, const struct rte_eth_dev_info *dev_info) { if (iconf->mtu > dev_info->max_mtu || iconf->mtu < dev_info->min_mtu) { @@ -975,6 +1021,7 @@ static int32_t DeviceSetSocketID(uint16_t port_id, int32_t *socket_id) 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, diff --git a/src/util-dpdk.h b/src/util-dpdk.h index e711eaf6ce..5c793d9921 100644 --- a/src/util-dpdk.h +++ b/src/util-dpdk.h @@ -44,6 +44,24 @@ #define RTE_ETH_TX_OFFLOAD_MBUF_FAST_FREE DEV_TX_OFFLOAD_MBUF_FAST_FREE #define RTE_ETH_RX_OFFLOAD_CHECKSUM DEV_RX_OFFLOAD_CHECKSUM + +#define RTE_ETH_RX_OFFLOAD_VLAN_STRIP DEV_RX_OFFLOAD_VLAN_STRIP +#define RTE_ETH_RX_OFFLOAD_IPV4_CKSUM DEV_RX_OFFLOAD_IPV4_CKSUM +#define RTE_ETH_RX_OFFLOAD_UDP_CKSUM DEV_RX_OFFLOAD_UDP_CKSUM +#define RTE_ETH_RX_OFFLOAD_TCP_CKSUM DEV_RX_OFFLOAD_TCP_CKSUM +#define RTE_ETH_RX_OFFLOAD_TCP_LRO DEV_RX_OFFLOAD_TCP_LRO +#define RTE_ETH_RX_OFFLOAD_QINQ_STRIP DEV_RX_OFFLOAD_QINQ_STRIP +#define RTE_ETH_RX_OFFLOAD_OUTER_IPV4_CKSUM DEV_RX_OFFLOAD_OUTER_IPV4_CKSUM +#define RTE_ETH_RX_OFFLOAD_MACSEC_STRIP DEV_RX_OFFLOAD_MACSEC_STRIP +#define RTE_ETH_RX_OFFLOAD_HEADER_SPLIT DEV_RX_OFFLOAD_HEADER_SPLIT +#define RTE_ETH_RX_OFFLOAD_VLAN_FILTER DEV_RX_OFFLOAD_VLAN_FILTER +#define RTE_ETH_RX_OFFLOAD_VLAN_EXTEND DEV_RX_OFFLOAD_VLAN_EXTEND +#define RTE_ETH_RX_OFFLOAD_SCATTER DEV_RX_OFFLOAD_SCATTER +#define RTE_ETH_RX_OFFLOAD_TIMESTAMP DEV_RX_OFFLOAD_TIMESTAMP +#define RTE_ETH_RX_OFFLOAD_SECURITY DEV_RX_OFFLOAD_SECURITY +#define RTE_ETH_RX_OFFLOAD_KEEP_CRC DEV_RX_OFFLOAD_KEEP_CRC +#define RTE_ETH_RX_OFFLOAD_SCTP_CKSUM DEV_RX_OFFLOAD_SCTP_CKSUM +#define RTE_ETH_RX_OFFLOAD_OUTER_UDP_CKSUM DEV_RX_OFFLOAD_OUTER_UDP_CKSUM #define RTE_ETH_RX_OFFLOAD_RSS_HASH DEV_RX_OFFLOAD_RSS_HASH #define RTE_ETH_MQ_TX_NONE ETH_MQ_TX_NONE