<div dir="ltr">EDIT : The tutorial that I followed to test SoftNIC (<a href="https://doc.dpdk.org/guides-19.02/nics/softnic.html" target="_blank">https://doc.dpdk.org/guides-19.02/nics/softnic.html</a>) is appropriate for DPDK 19.02 but not for the newer versions like 19.11.12, the one I use.<div>We found out something :</div><div><br></div><div>" sudo ./dpdk-testpmd --vdev 'net_softnic0,firmware=./firmware.cli,cpu_id=0,conn_port=8086,sc=0' -- -i --portmask=0x2".
We didn't really understand the impact of "sc=0" by the way.
</div><div>First line of firmware.cli file : "link LINK0 dev net_softnic0" instead of "link LINK0 dev 0000:19:00.0". <br>Then, we switched the forwarding mode to Input/Output with the CLI. With all of that, it looked like it worked. We didn't have any error messages like before.<br><br>If someone is comfortable with test pmd / softnic versions, help should be quite welcome.<br><br>Then, can anyone help us on the pipeline we wanna design (first e-mail) ? </div><div><br></div><div>Regards,</div><div><br></div><div>Max.</div><div><br></div><div><br></div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Le mar. 3 mai 2022 à 11:33, Maxime Ramiara <<a href="mailto:max1mo.ram8@gmail.com" target="_blank">max1mo.ram8@gmail.com</a>> a écrit :<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Hi all,<br><br>I'm a beginner with dpdk. With my team, we developed a dpdk app with the following pipeline:<br><br>NIC RX -> RX Thread -> Worker Thread -> TX Thread -> NIC TX.<br><br>Within the RX Thread, we parse some headers. Within the worker thread, we're using the hierarchical scheduler. To sum up, we want to replace the HS with the traffic manager.<br>However, it seems the TM can only be set up on a NIC. This is not what we want because we're doing some packet processing stuff within the TX Thread.<br><br><br>Thus, we thought about the SoftNIC as a solution for our problem. Would it be possible to develop a pipeline like this ?<br><br>NIC RX -> RX Thread -> SoftNIC with TM -> Worker Thread -> TX Thread -> NIC TX.<br><br>It looks like the "firmware.cli" script and the packet framework offer us some freedom to make our pipeline. <br>First and foremost, I tried to test the SoftNIC with the following command in the doc : <br><br>./testpmd -c 0x3 --vdev 'net_softnic0,firmware=<script path>/firmware.cli,cpu_id=0,conn_port=8086' -- -i<br> --forward-mode=softnic --portmask=0x2<br><br>Below are my network devices with the command log: <br><br>./usertools/dpdk-devbind.py --status<br><br>Network devices using DPDK-compatible driver<br>============================================<br>0000:19:00.0 'Ethernet Controller X710 for 10GbE SFP+ 1572' drv=vfio-pci unused=i40e<br>0000:19:00.1 'Ethernet Controller X710 for 10GbE SFP+ 1572' drv=vfio-pci unused=i40e<br><br>Network devices using kernel driver<br>===================================<br>0000:01:00.0 'I350 Gigabit Network Connection 1521' if=eno3 drv=igb unused=vfio-pci *Active*<br><br>Other Network devices<br>=====================<br>0000:01:00.1 'I350 Gigabit Network Connection 1521' unused=igb,vfio-pci<br><br>Then, the command log of test-pmd: <br><br>sudo ./dpdk-testpmd --vdev 'net_softnic0,firmware=./firmware.cli,cpu_id=0,conn_port=8087' -- -i --forward-mode=softnic --portmask=0x2<br>[sudo] password for user: <br>EAL: Detected CPU lcores: 32<br>EAL: Detected NUMA nodes: 2<br>EAL: Detected static linkage of DPDK<br>EAL: Multi-process socket /var/run/dpdk/rte/mp_socket<br>EAL: Selected IOVA mode 'PA'<br>EAL: VFIO support initialized<br>EAL: Using IOMMU type 8 (No-IOMMU)<br>EAL: Probe PCI driver: net_i40e (8086:1572) device: 0000:19:00.0 (socket 0)<br>EAL: Probe PCI driver: net_i40e (8086:1572) device: 0000:19:00.1 (socket 0)<br>TELEMETRY: No legacy callbacks, legacy socket not created<br>Interactive-mode selected<br>Invalid softnic packet forwarding mode<br>previous number of forwarding ports 3 - changed to number of configured ports 1<br>testpmd: create a new mbuf pool <mb_pool_0>: n=395456, size=2176, socket=0<br>testpmd: preferred mempool ops selected: ring_mp_mc<br>testpmd: create a new mbuf pool <mb_pool_1>: n=395456, size=2176, socket=1<br>testpmd: preferred mempool ops selected: ring_mp_mc<br><br>Warning! port-topology=paired and odd forward ports number, the last port will pair with itself.<br><br>Configuring Port 0 (socket 0)<br>Port 0: E4:43:4B:04:D1:4E<br>Configuring Port 1 (socket 0)<br>Port 1: E4:43:4B:04:D1:50<br>Configuring Port 2 (socket 0)<br>; SPDX-License-Identifier: BSD-3-Clause<br>; Copyright(c) 2018 Intel Corporation<br><br>link LINK0 dev 0000:19:00.0<br><br>pipeline RX period 10 offset_port_id 0<br>pipeline RX port in bsz 32 link LINK0 rxq 0<br>pipeline RX port out bsz 32 swq RXQ0<br>pipeline RX table match stub<br>pipeline RX port in 0 table 0<br>pipeline RX table 0 rule add match default action fwd port 0<br><br>pipeline TX period 10 offset_port_id 0<br>pipeline TX port in bsz 32 swq TXQ0<br>pipeline TX port out bsz 32 link LINK0 txq 0<br>pipeline TX table match stub<br>pipeline TX port in 0 table 0<br>pipeline TX table 0 rule add match default action fwd port 0<br><br>thread 1 pipeline RX enable<br>Command "thread pipeline enable" failed.<br>thread 1 pipeline TX enable<br>Command "thread pipeline enable" failed.<br>Port 2: 00:00:00:00:00:00<br>Checking link statuses...<br>Done<br>testpmd> <br>Port 0: link state change event<br><br>Port 1: link state change event<br><br><br>Can anyone please help us on this ?<br><br>Regards,<br><br>Max.<br></div>
</blockquote></div>