<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=utf-8">
<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:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Verdana;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@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:11.0pt;
        font-family:"Calibri",sans-serif;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;
        mso-ligatures:none;}
@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="#0563C1" vlink="#954F72" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal">IIRC, the “VIRTIO_NET_F_RSS” is some capability reported and decided during the driver setup/communication stage. It is mostly like that your libs/drivers running on the host for the VM does not support this feature.<o:p></o:p></p>
<p class="MsoNormal">Have you tried to update the versions of VM or the package/lib of VirtIO for this VM?<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div style="border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt">
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b>From:</b> shiv chittora <shiv.chittora@gmail.com> <br>
<b>Sent:</b> Wednesday, July 26, 2023 1:05 PM<br>
<b>To:</b> users@dpdk.org<br>
<b>Subject:</b> Enable RSS for virtio application ( dpdk version 21.11)<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<table class="MsoNormalTable" border="1" cellpadding="0" style="background:#FFEB9C">
<tbody>
<tr>
<td style="padding:.75pt .75pt .75pt .75pt">
<p class="MsoNormal"><b><span style="font-size:7.5pt;font-family:"Verdana",sans-serif;color:black">External email: Use caution opening links or attachments</span></b><span style="font-size:7.5pt;font-family:"Verdana",sans-serif;color:black">
</span><o:p></o:p></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal">I'm using a Nutanix virtual machine to run a DPDK(Version 21.11)-based application.
<br>
Application is failing during rte_eth_dev_configure . For our application, RSS support is required.
<br>
<br>
eth_config.rxmode.mq_mode = ETH_MQ_RX_RSS;<br>
static uint8_t hashKey[] = {<br>
            0x6D, 0x5A, 0x6D, 0x5A, 0x6D, 0x5A, 0x6D, 0x5A,<br>
            0x6D, 0x5A, 0x6D, 0x5A, 0x6D, 0x5A, 0x6D, 0x5A,<br>
            0x6D, 0x5A, 0x6D, 0x5A, 0x6D, 0x5A, 0x6D, 0x5A,<br>
            0x6D, 0x5A, 0x6D, 0x5A, 0x6D, 0x5A, 0x6D, 0x5A,<br>
            0x6D, 0x5A, 0x6D, 0x5A, 0x6D, 0x5A, 0x6D, 0x5A,<br>
        };<br>
<br>
        eth_config.rx_adv_conf.rss_conf.rss_key = hashKey;<br>
        eth_config.rx_adv_conf.rss_conf.rss_key_len = sizeof(hashKey);<br>
eth_config.rx_adv_conf.rss_conf.rss_hf = 260 <br>
<br>
<br>
<br>
With the aforementioned RSS configuration, the application is not coming up. The same application runs without any issues on a VMware virtual machine.  <br>
<br>
When I set <br>
<br>
    eth_config.rxmode.mq_mode = ETH_MQ_RX_NONE<br>
eth_config.rx_adv_conf.rss_conf.rss_hf = 0<br>
<br>
Application starts working fine. Since we need RSS support for our application I cannot set eth_config.rxmode.mq_mode = ETH_MQ_RX_NONE.
<br>
<br>
I looked at the DPDK 21.11 release notes, and it mentions that virtio_net supports RSS support.
<br>
<br>
<br>
In this application traffic is tapped to capture port. I have also created two queues using ACLI comments.  <br>
<br>
<acropolis> vm.nic_create nutms1-ms type=kNetworkFunctionNic network_function_nic_type=kTap queues=2<br>
<br>
<acropolis> vm.nic_get testvm<br>
xx:xx:xx:xx:xx:xx {<br>
  mac_addr: "xx:xx:xx:xx:xx:xx"<br>
  network_function_nic_type: "kTap"<br>
  network_type: "kNativeNetwork"<br>
  queues: 2<br>
  type: "kNetworkFunctionNic"<br>
  uuid: "9c26c704-bcb3-4483-bdaf-4b64bb9233ef"<br>
} <br>
<br>
<br>
Additionally, I've turned on dpdk logging. PFB the dpdk log's output. <br>
<br>
EAL: PCI device 0000:00:05.0 on NUMA socket 0<br>
EAL:   probe driver: 1af4:1000 net_virtio<br>
EAL: Probe PCI driver: net_virtio (1af4:1000) device: 0000:00:05.0 (socket 0)<br>
EAL:   PCI memory mapped at 0x940000000<br>
EAL:   PCI memory mapped at 0x940001000<br>
virtio_read_caps(): [98] skipping non VNDR cap id: 11<br>
virtio_read_caps(): [84] cfg type: 5, bar: 0, offset: 0000, len: 0<br>
virtio_read_caps(): [70] cfg type: 2, bar: 4, offset: 3000, len: 4096<br>
virtio_read_caps(): [60] cfg type: 4, bar: 4, offset: 2000, len: 4096<br>
virtio_read_caps(): [50] cfg type: 3, bar: 4, offset: 1000, len: 4096<br>
virtio_read_caps(): [40] cfg type: 1, bar: 4, offset: 0000, len: 4096<br>
virtio_read_caps(): found modern virtio pci device.<br>
virtio_read_caps(): common cfg mapped at: 0x940001000<br>
virtio_read_caps(): device cfg mapped at: 0x940003000<br>
virtio_read_caps(): isr cfg mapped at: 0x940002000<br>
virtio_read_caps(): notify base: 0x940004000, notify off multiplier: 4<br>
vtpci_init(): modern virtio pci detected.<br>
virtio_ethdev_negotiate_features(): guest_features before negotiate = 8000005f10ef8028<br>
virtio_ethdev_negotiate_features(): host_features before negotiate = 130ffffa7<br>
virtio_ethdev_negotiate_features(): features after negotiate = 110ef8020<br>
virtio_init_device(): PORT MAC: 50:6B:8D:A9:09:62<br>
virtio_init_device(): link speed = -1, duplex = 1<br>
virtio_init_device(): config->max_virtqueue_pairs=2<br>
virtio_init_device(): config->status=1<br>
virtio_init_device(): PORT MAC: 50:6B:8D:A9:09:62<br>
virtio_init_queue(): setting up queue: 0 on NUMA node 0<br>
virtio_init_queue(): vq_size: 256<br>
virtio_init_queue(): vring_size: 10244, rounded_vring_size: 12288<br>
virtio_init_queue(): vq->vq_ring_mem: 0x7fffab000<br>
virtio_init_queue(): vq->vq_ring_virt_mem: 0x17ffab000<br>
virtio_init_vring():  >><br>
modern_setup_queue(): queue 0 addresses:<br>
modern_setup_queue():    desc_addr: 7fffab000<br>
modern_setup_queue():    aval_addr: 7fffac000<br>
modern_setup_queue():    used_addr: 7fffad000<br>
modern_setup_queue():    notify addr: 0x940004000 (notify offset: 0)<br>
virtio_init_queue(): setting up queue: 1 on NUMA node 0<br>
virtio_init_queue(): vq_size: 256<br>
virtio_init_queue(): vring_size: 10244, rounded_vring_size: 12288<br>
virtio_init_queue(): vq->vq_ring_mem: 0x7fffa6000<br>
virtio_init_queue(): vq->vq_ring_virt_mem: 0x17ffa6000<br>
virtio_init_vring():  >><br>
modern_setup_queue(): queue 1 addresses:<br>
modern_setup_queue():    desc_addr: 7fffa6000<br>
modern_setup_queue():    aval_addr: 7fffa7000<br>
modern_setup_queue():    used_addr: 7fffa8000<br>
modern_setup_queue():    notify addr: 0x940004004 (notify offset: 1)<br>
virtio_init_queue(): setting up queue: 2 on NUMA node 0<br>
virtio_init_queue(): vq_size: 256<br>
virtio_init_queue(): vring_size: 10244, rounded_vring_size: 12288<br>
virtio_init_queue(): vq->vq_ring_mem: 0x7fff98000<br>
virtio_init_queue(): vq->vq_ring_virt_mem: 0x17ff98000<br>
virtio_init_vring():  >><br>
modern_setup_queue(): queue 2 addresses:<br>
modern_setup_queue():    desc_addr: 7fff98000<br>
modern_setup_queue():    aval_addr: 7fff99000<br>
modern_setup_queue():    used_addr: 7fff9a000<br>
modern_setup_queue():    notify addr: 0x940004008 (notify offset: 2)<br>
virtio_init_queue(): setting up queue: 3 on NUMA node 0<br>
virtio_init_queue(): vq_size: 256<br>
virtio_init_queue(): vring_size: 10244, rounded_vring_size: 12288<br>
virtio_init_queue(): vq->vq_ring_mem: 0x7fff93000<br>
virtio_init_queue(): vq->vq_ring_virt_mem: 0x17ff93000<br>
virtio_init_vring():  >><br>
modern_setup_queue(): queue 3 addresses:<br>
modern_setup_queue():    desc_addr: 7fff93000<br>
modern_setup_queue():    aval_addr: 7fff94000<br>
modern_setup_queue():    used_addr: 7fff95000<br>
modern_setup_queue():    notify addr: 0x94000400c (notify offset: 3)<br>
virtio_init_queue(): setting up queue: 4 on NUMA node 0<br>
virtio_init_queue(): vq_size: 64<br>
virtio_init_queue(): vring_size: 4612, rounded_vring_size: 8192<br>
virtio_init_queue(): vq->vq_ring_mem: 0x7fff87000<br>
virtio_init_queue(): vq->vq_ring_virt_mem: 0x17ff87000<br>
virtio_init_vring():  >><br>
modern_setup_queue(): queue 4 addresses:<br>
modern_setup_queue():    desc_addr: 7fff87000<br>
modern_setup_queue():    aval_addr: 7fff87400<br>
modern_setup_queue():    used_addr: 7fff88000<br>
modern_setup_queue():    notify addr: 0x940004010 (notify offset: 4)<br>
eth_virtio_pci_init(): port 0 vendorID=0x1af4 deviceID=0x1000<br>
EAL: Module /sys/module/vfio not found! error 2 (No such file or directory)<br>
EAL: lib.telemetry log level changed from disabled to debug<br>
TELEMETRY: Attempting socket bind to path '/var/run/dpdk/rte/dpdk_telemetry.v2'<br>
TELEMETRY: Initial bind to socket '/var/run/dpdk/rte/dpdk_telemetry.v2' failed.<br>
TELEMETRY: Attempting unlink and retrying bind<br>
TELEMETRY: Socket creation and binding ok<br>
TELEMETRY: Telemetry initialized ok<br>
TELEMETRY: No legacy callbacks, legacy socket not created<br>
[Wed Jul 26 04:44:42 2023][ms_dpi: 28098] DPDK Initialised<br>
[Wed Jul 26 04:44:42 2023][ms_dpi: 28098] Finished DPDK logging session<br>
<br>
<br>
The following result is produced when testpmd runs the RSS configuration command.
<br>
<br>
testpmd> port config all rss all<br>
Port 0 modified RSS hash function based on hardware support,requested:0x17f83fffc configured:0<br>
Multi-queue RSS mode isn't enabled.<br>
Configuration of RSS hash at ethernet port 0 failed with error (95): Operation not supported.<br>
<br>
<br>
Any suggestions on how to enable RSS support in this situation would be greatly appreciated.
<br>
<br>
Thank you for your assistance. <o:p></o:p></p>
</div>
</div>
</div>
</div>
</body>
</html>