<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:DengXian;
panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
{font-family:Aptos;}
@font-face
{font-family:"\@DengXian";
panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
font-size:12.0pt;
font-family:"Aptos",sans-serif;
mso-ligatures:standardcontextual;}
span.EmailStyle17
{mso-style-type:personal-compose;
font-family:"Aptos",sans-serif;
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="#467886" vlink="#96607D" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt">Hi<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">My application developed with the DPDK, we found out one error message when my application run in the VMware platform.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">[2025-04-15 03:01:09]:: --[vmxnet3_dev_start:961] hw->version: 6, rss_hf: 3380 --^M^M<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">[2025-04-15 03:01:09]:: --[vmxnet3_rss_configure:1434] rss_hf: 3380 --^M^M<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">[2025-04-15 03:01:09]:: --[vmxnet3_v4_rss_configure:1381] rss_hf: 3380 --^M^M<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">[2025-04-15 03:01:09]:: vmxnet3_v4_rss_configure(): Set RSS fields (v4) failed: 1^M^M<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">[2025-04-15 03:01:09]:: vmxnet3_dev_start(): Failed to configure v4 RSS^M^M<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">From the debug logs, it seems that the vmxnet3 device failed to configure the v4 RSS.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">We can found these informations from the DPDK’s code snippet:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">rss_hf = 3380 = 0xd34<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">So the RSS configure is this:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">#define VMXNET3_RSS_OFFLOAD_ALL ( \<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> RTE_ETH_RSS_IPV4 | \<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> RTE_ETH_RSS_NONFRAG_IPV4_TCP | \<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> RTE_ETH_RSS_IPV6 | \<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> RTE_ETH_RSS_NONFRAG_IPV6_TCP)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">#define VMXNET3_V4_RSS_MASK ( \<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> RTE_ETH_RSS_NONFRAG_IPV4_UDP | \<o:p></o:p></span></p>
<p class="MsoNormal" style="text-indent:9.0pt"><span style="font-size:11.0pt">RTE_ETH_RSS_NONFRAG_IPV6_UDP)<o:p></o:p></span></p>
<p class="MsoNormal" style="text-indent:9.0pt"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">The function call vmxnet3_rss_configure() is works fine but the function call vmxnet3_v4_rss_configure() failed:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> if (VMXNET3_VERSION_GE_4(hw) &&<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> dev->data->dev_conf.rxmode.mq_mode == RTE_ETH_MQ_RX_RSS) {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> /* Check for additional RSS */<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> ret = vmxnet3_v4_rss_configure(dev);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> if (ret != VMXNET3_SUCCESS) {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> PMD_INIT_LOG(ERR, "<span style="color:red">Failed to configure v4 RSS</span>");<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> return ret;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> }<o:p></o:p></span></p>
<p class="MsoNormal" style="text-indent:9.0pt"><span style="font-size:11.0pt">}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">/*<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">* Additional RSS configurations based on vmxnet v4+ APIs<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">*/<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">int<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">vmxnet3_v4_rss_configure(struct rte_eth_dev *dev)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">{<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> struct vmxnet3_hw *hw = dev->data->dev_private;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> Vmxnet3_DriverShared *shared = hw->shared;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> Vmxnet3_CmdInfo *cmdInfo = &shared->cu.cmdInfo;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> struct rte_eth_rss_conf *port_rss_conf;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> uint64_t rss_hf;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> uint32_t ret;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> PMD_INIT_FUNC_TRACE();<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> cmdInfo->setRSSFields = 0;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> port_rss_conf = &dev->data->dev_conf.rx_adv_conf.rss_conf;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> printf("--[%s:%d] rss_hf: %llu --\n", __FUNCTION__, __LINE__, port_rss_conf->rss_hf);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> if ((port_rss_conf->rss_hf & VMXNET3_MANDATORY_V4_RSS) !=<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> VMXNET3_MANDATORY_V4_RSS) {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> PMD_INIT_LOG(WARNING, "RSS: IPv4/6 TCP is required for vmxnet3 v4 RSS,"<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> "automatically setting it");<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> port_rss_conf->rss_hf |= VMXNET3_MANDATORY_V4_RSS;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> rss_hf = port_rss_conf->rss_hf &<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> (VMXNET3_V4_RSS_MASK | VMXNET3_RSS_OFFLOAD_ALL);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> if (rss_hf & RTE_ETH_RSS_NONFRAG_IPV4_TCP)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> cmdInfo->setRSSFields |= VMXNET3_RSS_FIELDS_TCPIP4;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> if (rss_hf & RTE_ETH_RSS_NONFRAG_IPV6_TCP)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> cmdInfo->setRSSFields |= VMXNET3_RSS_FIELDS_TCPIP6;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> if (rss_hf & RTE_ETH_RSS_NONFRAG_IPV4_UDP)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> cmdInfo->setRSSFields |= VMXNET3_RSS_FIELDS_UDPIP4;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> if (rss_hf & RTE_ETH_RSS_NONFRAG_IPV6_UDP)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> cmdInfo->setRSSFields |= VMXNET3_RSS_FIELDS_UDPIP6;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> <span style="color:red">VMXNET3_WRITE_BAR1_REG</span>(hw, VMXNET3_REG_CMD,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> VMXNET3_CMD_SET_RSS_FIELDS);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> ret = VMXNET3_READ_BAR1_REG(hw, VMXNET3_REG_CMD);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> if (ret != VMXNET3_SUCCESS) {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> PMD_DRV_LOG(ERR, "<span style="color:red">Set RSS fields (v4) failed: %d</span>", ret);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-indent:9.0pt"><span style="font-size:11.0pt">return ret;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">It seems like the VMXNET3_WRITE_BAR1_REG failed, but don’t know why this happened.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">My DPDK version is 22.11.1 and the vmxnet3 driver version is 1.6.0.0-k-NAPI<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">BTW we just upgraded VM compatibility to
<b>ESXi 8.0 U2 and later (VM version 21), </b>then our application run with this error logs.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">The previous VM compatibility is
<b>ESXi 6.5 and later (VM version 13),</b> and our application works fine. It is because the vmxnet3 hw version is 3, so it will not trigger to call the V4 RSS configure.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">Could someone help to check this issue? Or maybe I missed something?<o:p></o:p></span></p>
</div>
</body>
</html>