diff options
| author | Lu Qiuwen <[email protected]> | 2021-05-11 09:56:09 +0800 |
|---|---|---|
| committer | Lu Qiuwen <[email protected]> | 2021-05-11 09:56:09 +0800 |
| commit | b2b9b27262292d60a726da68a81c0bbe8aa42a33 (patch) | |
| tree | db3d72d30adf792d08c04d59129517477eb5751a | |
| parent | dd626f381f590e27394030150af6a761092eb620 (diff) | |
适配DPDK 20.11并降级指令集拓展以适应E5-2650v2等处理器。
| -rw-r--r-- | CMakeLists.txt | 6 | ||||
| -rw-r--r-- | cmake/FindDPDK.cmake | 2 | ||||
| -rw-r--r-- | service/src/core.c | 2 | ||||
| -rw-r--r-- | service/src/phydev.c | 13 | ||||
| -rw-r--r-- | tools/systemd/mrenv-script | 12 |
5 files changed, 19 insertions, 16 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index f328800..a3070ad 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,8 +15,8 @@ option(ENABLE_SANITIZE_ADDRESS "Enable AddressSanitizer" FALSE) option(ENABLE_SANITIZE_THREAD "Enable ThreadSanitizer" FALSE) option(ENABLE_VNODE_CHECK_THREAD_SAFE "Enable concurrent write thread-safe check for VNODE." FALSE) -set(CMAKE_C_FLAGS "-std=gnu99 -m64 -march=native") -set(CMAKE_CXX_FLAGS "-std=gnu++11 -m64 -march=native" ) +set(CMAKE_C_FLAGS "-std=gnu99 -m64 -march=corei7-avx") +set(CMAKE_CXX_FLAGS "-std=gnu++11 -m64 -march=corei7-avx" ) if(ENABLE_WARNING_ALL) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -fPIC") @@ -82,4 +82,4 @@ message(STATUS "Packet I/O Middleware based on DPDK(Marsio), Version: ${MARSIO_V # packed include(Package) -include(InstallDPDK)
\ No newline at end of file +include(InstallDPDK) diff --git a/cmake/FindDPDK.cmake b/cmake/FindDPDK.cmake index 6a7c3aa..c45b8d7 100644 --- a/cmake/FindDPDK.cmake +++ b/cmake/FindDPDK.cmake @@ -22,7 +22,7 @@ include(FindPackageHandleStandardArgs) find_package_handle_standard_args(DPDK DEFAULT_MSG DPDK_ROOT_DIR DPDK_INCLUDE_DIR DPDK_LIBRARY) if(NOT RTE_MARCH) - set(RTE_MARCH "native") + set(RTE_MARCH "core-avx2") endif() # DPDK CPU Flags diff --git a/service/src/core.c b/service/src/core.c index e40a905..abce8f3 100644 --- a/service/src/core.c +++ b/service/src/core.c @@ -367,6 +367,8 @@ static void sc_eal_init(struct sc_main * sc, const char * cmd) WRITE_ARG("--single-file-segments"); } + WRITE_ARG("--legacy-mem"); + // DPDK和SYSTEMD的日志级别差1 unsigned int loglevel = g_logger_level + 1; MESA_load_profile_uint_def(sc->local_cfgfile, "eal", "loglevel", &loglevel, loglevel); diff --git a/service/src/phydev.c b/service/src/phydev.c index 5381495..c328efa 100644 --- a/service/src/phydev.c +++ b/service/src/phydev.c @@ -26,6 +26,7 @@ static struct rte_eth_conf eth_conf_default = { .rxmode = { + .mq_mode = ETH_MQ_RX_RSS, .split_hdr_size = 0, }, .txmode = { @@ -139,6 +140,7 @@ static int gen_phydev_qconf(struct phydev * dev, struct rte_eth_rxconf * rxconf, *nr_rxdesc = dev->info.nr_rx_desc; *nr_txdesc = dev->info.nr_tx_desc; + return 0; } @@ -156,16 +158,23 @@ static int gen_phydev_ethconf(struct phydev * dev, struct rte_eth_conf * out_eth } else if (dev->info.rssmode == MR_DEV_RSSMODE_4TUPLE_SYM) { - eth_conf.rx_adv_conf.rss_conf.rss_hf = ETH_RSS_PROTO_MASK; + eth_conf.rx_adv_conf.rss_conf.rss_hf = ETH_RSS_NONFRAG_IPV4_TCP | ETH_RSS_NONFRAG_IPV6_TCP + | ETH_RSS_NONFRAG_IPV4_UDP | ETH_RSS_NONFRAG_IPV6_UDP; eth_conf.rx_adv_conf.rss_conf.rss_key = default_sym_rss_key; eth_conf.rx_adv_conf.rss_conf.rss_key_len = sizeof(default_sym_rss_key); } else if (dev->info.rssmode == MR_DEV_RSSMODE_4TUPLE_ASYM) { - eth_conf.rx_adv_conf.rss_conf.rss_hf = ETH_RSS_PROTO_MASK; + eth_conf.rx_adv_conf.rss_conf.rss_hf = ETH_RSS_NONFRAG_IPV4_TCP | ETH_RSS_NONFRAG_IPV6_TCP + | ETH_RSS_NONFRAG_IPV4_UDP | ETH_RSS_NONFRAG_IPV6_UDP; eth_conf.rx_adv_conf.rss_conf.rss_key = NULL; } + if(dev->info.en_vlan_strip) + { + eth_conf.txmode.offloads |= DEV_TX_OFFLOAD_VLAN_INSERT; + } + *out_eth_conf = eth_conf; return 0; } diff --git a/tools/systemd/mrenv-script b/tools/systemd/mrenv-script index 1879c6c..e64d2f4 100644 --- a/tools/systemd/mrenv-script +++ b/tools/systemd/mrenv-script @@ -78,16 +78,8 @@ function module_unload_igb_uio() function module_load_igb_uio() { - if [ ! -e $MODULE_PATH/$UIO_MODULE_FILENAME ]; then - echo -n "$MODULE_PATH/$UIO_MODULE_FILENAME does not existed. Check DPDK is installed or not. " - return 1 - fi - - module_unload_igb_uio - modprobe uio &> /dev/null - insmod $MODULE_PATH/$UIO_MODULE_FILENAME - [ ! $? -eq 0 ] && echo -n "$MODULE_PATH/$UIO_MODULE_FILENAME load failure." && return 1 - return 0 + modprobe igb_uio + return $? } function module_load_uio_pci_generic() |
