diff options
| author | songyanchao <[email protected]> | 2022-12-23 07:01:21 +0000 |
|---|---|---|
| committer | songyanchao <[email protected]> | 2022-12-23 07:01:21 +0000 |
| commit | f1baf57ba01d36cd4e36aa119965bfdf540974e3 (patch) | |
| tree | d0a9c5accc72205a2152ae1be204e3f6b4322725 | |
| parent | f5612d179de2a31dd7393f7ef70c0cafbd19e02c (diff) | |
🎈 perf(TSG-13124): 根据配置的RX队列数决定是否配置网卡RSSv4.6.10-20221223
根据配置的RX队列数决定是否配置网卡RSS
| -rw-r--r-- | service/src/devmgr.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/service/src/devmgr.c b/service/src/devmgr.c index 96fc8fe..0e0f3de 100644 --- a/service/src/devmgr.c +++ b/service/src/devmgr.c @@ -32,7 +32,7 @@ static struct rte_eth_conf eth_conf_default = { .rxmode = { - .mq_mode = ETH_MQ_RX_RSS, + .mq_mode = ETH_MQ_RX_NONE, .split_hdr_size = 0, }, .txmode = @@ -414,13 +414,13 @@ int vhost_dev_setup(const char * virtio_sym) } /* 用户参数解析:网卡参数设置 */ -static int gen_dpdk_dev_ethconf(struct dpdk_dev * dev, struct rte_eth_conf * out_eth_conf) +static int gen_dpdk_dev_ethconf(struct dpdk_dev * dev, unsigned nr_rxq_use, struct rte_eth_conf * out_eth_conf) { struct mr_dev_desc * dev_desc = dev->ref_dev_desc; struct rte_eth_conf eth_conf = eth_conf_default; /* PCI devices */ - if (dev_desc->drv_type == MR_DEV_DRV_TYPE_DPDK_PCI) + if ((dev_desc->drv_type == MR_DEV_DRV_TYPE_DPDK_PCI) && (nr_rxq_use > 1)) { /* only PCI devices can run at RSS mode. */ eth_conf.rxmode.mq_mode = ETH_MQ_RX_RSS; @@ -727,10 +727,6 @@ static int dpdk_dev_setup_common(struct devmgr_main * devmgr_main, struct dpdk_d return RT_ERR; } - // 配置端口信息 - struct rte_eth_conf local_eth_conf; - gen_dpdk_dev_ethconf(dev, &local_eth_conf); - unsigned nr_rxq_use = 0; unsigned nr_txq_use = 0; @@ -765,6 +761,11 @@ static int dpdk_dev_setup_common(struct devmgr_main * devmgr_main, struct dpdk_d dev->nr_hairpin_q = dev->en_smartoffload ? 1 : 0; nr_rxq_use = dev->nr_rxq + dev->nr_ctx_rxq + dev->nr_hairpin_q; nr_txq_use = dev->nr_txq + dev->nr_ctx_txq + dev->nr_hairpin_q; + + // 配置端口信息 + struct rte_eth_conf local_eth_conf; + gen_dpdk_dev_ethconf(dev, nr_rxq_use, &local_eth_conf); + ret = rte_eth_dev_configure(dev->port_id, nr_rxq_use, nr_txq_use, &local_eth_conf); if (ret != 0) |
