Last active
March 28, 2024 06:11
-
-
Save garyachy/5d893f541b5ed391fa9424aa54cd541e to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
struct rte_eth_conf port_conf = { | |
.rxmode = { | |
.mq_mode = ETH_MQ_RX_RSS, | |
}, | |
.rx_adv_conf = { | |
.rss_conf = { | |
.rss_hf = ETH_RSS_IP | | |
ETH_RSS_TCP | | |
ETH_RSS_UDP | | |
ETH_RSS_SCTP, | |
} | |
}, | |
}; | |
rte_eth_dev_configure(port_id, rx_queue_num, tx_queue_num, &port_conf); | |
int sym_hash_enable(int port_id, uint32_t ftype, enum rte_eth_hash_function function) | |
{ | |
struct rte_eth_hash_filter_info info; | |
int ret = 0; | |
uint32_t idx = 0; | |
uint32_t offset = 0; | |
memset(&info, 0, sizeof(info)); | |
ret = rte_eth_dev_filter_supported(port_id, RTE_ETH_FILTER_HASH); | |
if (ret < 0) { | |
DPDK_ERROR("RTE_ETH_FILTER_HASH not supported on port: %d", | |
port_id); | |
return ret; | |
} | |
info.info_type = RTE_ETH_HASH_FILTER_GLOBAL_CONFIG; | |
info.info.global_conf.hash_func = function; | |
idx = ftype / UINT64_BIT; | |
offset = ftype % UINT64_BIT; | |
info.info.global_conf.valid_bit_mask[idx] |= (1ULL << offset); | |
info.info.global_conf.sym_hash_enable_mask[idx] |= | |
(1ULL << offset); | |
ret = rte_eth_dev_filter_ctrl(port_id, RTE_ETH_FILTER_HASH, | |
RTE_ETH_FILTER_SET, &info); | |
if (ret < 0) | |
{ | |
DPDK_ERROR("Cannot set global hash configurations" | |
"on port %u", port_id); | |
return ret; | |
} | |
return 0; | |
} | |
int sym_hash_set(int port_id, int enable) | |
{ | |
int ret = 0; | |
struct rte_eth_hash_filter_info info; | |
memset(&info, 0, sizeof(info)); | |
ret = rte_eth_dev_filter_supported(port_id, RTE_ETH_FILTER_HASH); | |
if (ret < 0) { | |
DPDK_ERROR("RTE_ETH_FILTER_HASH not supported on port: %d", | |
port_id); | |
return ret; | |
} | |
info.info_type = RTE_ETH_HASH_FILTER_SYM_HASH_ENA_PER_PORT; | |
info.info.enable = enable; | |
ret = rte_eth_dev_filter_ctrl(port_id, RTE_ETH_FILTER_HASH, | |
RTE_ETH_FILTER_SET, &info); | |
if (ret < 0) | |
{ | |
DPDK_ERROR("Cannot set symmetric hash enable per port " | |
"on port %u", port_id); | |
return ret; | |
} | |
return 0; | |
} | |
sym_hash_enable(port_id, RTE_ETH_FLOW_NONFRAG_IPV4_TCP, RTE_ETH_HASH_FUNCTION_TOEPLITZ); | |
sym_hash_enable(port_id, RTE_ETH_FLOW_NONFRAG_IPV4_UDP, RTE_ETH_HASH_FUNCTION_TOEPLITZ); | |
sym_hash_enable(port_id, RTE_ETH_FLOW_FRAG_IPV4, RTE_ETH_HASH_FUNCTION_TOEPLITZ); | |
sym_hash_enable(port_id, RTE_ETH_FLOW_NONFRAG_IPV4_SCTP, RTE_ETH_HASH_FUNCTION_TOEPLITZ); | |
sym_hash_enable(port_id, RTE_ETH_FLOW_NONFRAG_IPV4_OTHER, RTE_ETH_HASH_FUNCTION_TOEPLITZ); | |
sym_hash_set(port_id, 1); |
hi,
does this work ok?with witch dpdk version
He used DPDK 18.05.1
hi, what should we do in 21.11?
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
hi,
does this work ok?with witch dpdk version