summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLu Qiuwen <[email protected]>2023-08-02 20:29:53 +0800
committerLu Qiuwen <[email protected]>2023-08-02 20:29:53 +0800
commitb8efac5f6f76699a9a08269db3d670fde16b49dc (patch)
tree0e3613523e5de9bc37a70edd8c0e655d2cf555ce
parentfcf0ba2b8862814acc8552fc6b019be5674d33a6 (diff)
默认关闭delay_drop功能,通过开关启用;rss使用全field。v4.6.39-20230720
-rw-r--r--infra/src/ldbc.c24
-rw-r--r--service/src/devmgr.c25
2 files changed, 38 insertions, 11 deletions
diff --git a/infra/src/ldbc.c b/infra/src/ldbc.c
index 433dc73..5de7e32 100644
--- a/infra/src/ldbc.c
+++ b/infra/src/ldbc.c
@@ -813,7 +813,11 @@ static int distributer_outer_most_tuple2_batch(struct distributer * dist_object,
rte_prefetch_non_temporal(rte_pktmbuf_mtod(mbufs[j], char *));
}
- mbufs[i]->hash.usr = distributer_outer_most_tuple2(dist_object, mbufs[i], parser_results[i]);
+ uint32_t hash = distributer_outer_most_tuple2(dist_object, mbufs[i], parser_results[i]);
+ if(likely(hash != 0))
+ {
+ mbufs[i]->hash.usr = hash;
+ }
}
return 0;
@@ -833,7 +837,11 @@ static int distributer_outer_most_tuple4_batch(struct distributer * dist_object,
rte_prefetch_non_temporal(rte_pktmbuf_mtod(mbufs[j], char *));
}
- mbufs[i]->hash.usr = distributer_outer_most_tuple4(dist_object, mbufs[i], parser_results[i]);
+ uint32_t hash = distributer_outer_most_tuple4(dist_object, mbufs[i], parser_results[i]);
+ if (likely(hash != 0))
+ {
+ mbufs[i]->hash.usr = hash;
+ }
}
return 0;
@@ -857,7 +865,11 @@ static int distributer_inner_most_tuple2_batch(struct distributer * dist_object,
rte_prefetch_non_temporal(rte_pktmbuf_mtod_offset(mbufs[j], char *, RTE_CACHE_LINE_SIZE));
}
- mbufs[i]->hash.usr = distributer_inner_most_tuple2(dist_object, mbufs[i], parser_results[i]);
+ uint32_t hash = distributer_inner_most_tuple2(dist_object, mbufs[i], parser_results[i]);
+ if (likely(hash != 0))
+ {
+ mbufs[i]->hash.usr = hash;
+ }
}
return 0;
@@ -881,7 +893,11 @@ int distributer_inner_most_tuple4_batch(struct distributer * dist_object, struct
rte_prefetch_non_temporal(rte_pktmbuf_mtod_offset(mbufs[j], char *, RTE_CACHE_LINE_SIZE));
}
- mbufs[i]->hash.usr = distributer_inner_most_tuple4(dist_object, mbufs[i], parser_results[i]);
+ uint32_t hash = distributer_inner_most_tuple4(dist_object, mbufs[i], parser_results[i]);
+ if (likely(hash != 0))
+ {
+ mbufs[i]->hash.usr = hash;
+ }
}
return 0;
diff --git a/service/src/devmgr.c b/service/src/devmgr.c
index 91230bc..4712661 100644
--- a/service/src/devmgr.c
+++ b/service/src/devmgr.c
@@ -610,6 +610,11 @@ int vhost_dev_setup(const char * virtio_sym)
return RT_SUCCESS;
}
+static uint64_t rss_hf_all_field = RTE_ETH_RSS_ETH | RTE_ETH_RSS_VLAN | RTE_ETH_RSS_IP | RTE_ETH_RSS_TCP |
+ RTE_ETH_RSS_UDP | RTE_ETH_RSS_SCTP | RTE_ETH_RSS_L2_PAYLOAD |
+ RTE_ETH_RSS_L2TPV3 | RTE_ETH_RSS_ESP | RTE_ETH_RSS_AH | RTE_ETH_RSS_PFCP |
+ RTE_ETH_RSS_GTPU | RTE_ETH_RSS_ECPRI | RTE_ETH_RSS_MPLS;
+
/* 用户参数解析:网卡参数设置 */
static int gen_dpdk_dev_ethconf(struct dpdk_dev * dev, unsigned nr_rxq_use, struct rte_eth_conf * out_eth_conf)
{
@@ -631,13 +636,13 @@ static int gen_dpdk_dev_ethconf(struct dpdk_dev * dev, unsigned nr_rxq_use, stru
}
else if (dev->rssmode == MR_DEV_RSSMODE_4TUPLE_SYM)
{
- eth_conf.rx_adv_conf.rss_conf.rss_hf = RTE_ETH_RSS_IP | RTE_ETH_RSS_TCP | RTE_ETH_RSS_UDP;
+ eth_conf.rx_adv_conf.rss_conf.rss_hf = rss_hf_all_field;
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->rssmode == MR_DEV_RSSMODE_4TUPLE_ASYM)
{
- eth_conf.rx_adv_conf.rss_conf.rss_hf = RTE_ETH_RSS_IP | RTE_ETH_RSS_TCP | RTE_ETH_RSS_UDP;
+ eth_conf.rx_adv_conf.rss_conf.rss_hf = rss_hf_all_field;
eth_conf.rx_adv_conf.rss_conf.rss_key = NULL;
}
@@ -1853,6 +1858,12 @@ void devmgr_eal_args_generate(struct devmgr_main * devmgr_main, char * eal_argv[
unsigned int max_argc)
{
struct dpdk_dev_candidate * dev_can = NULL;
+ char * local_cfgfile = devmgr_main->sc->local_cfgfile;
+
+ /* generate the mlx5 parameters */
+ unsigned int mlx5_en_delay_drop = 0;
+ MESA_load_profile_uint_def(local_cfgfile, "eal", "mlx5_en_delay_drop", &mlx5_en_delay_drop, 0);
+
TAILQ_FOREACH(dev_can, &devmgr_main->dpdk_dev_candidate_list, next)
{
/* for now, all the candidate devices are PCI devices,
@@ -1869,12 +1880,12 @@ void devmgr_eal_args_generate(struct devmgr_main * devmgr_main, char * eal_argv[
if (strcasecmp(dev_can->driver, "mlx5_core") == 0)
{
asprintf(&str_dev_option, "%s,%s", str_dev_option,
+ "rxq_cqe_comp_en=4,rxq_pkt_pad_en=1,txq_inline_max=128,txq_inline_mpw=128,allow_duplicate_pattern=0");
-#if 0
- "mprq_en=1,rxqs_min_mprq=1,mprq_log_stride_num=9,txq_inline_mpw=128,allow_duplicate_pattern=0");
-#endif
-
- "rxq_pkt_pad_en=1,txq_inline_mpw=128,delay_drop=0x1,allow_duplicate_pattern=0");
+ if (mlx5_en_delay_drop > 0)
+ {
+ asprintf(&str_dev_option, "%s,%s", str_dev_option, "delay_drop=0x1");
+ }
}
eal_argv[(*eal_argc)++] = str_dev_option;