<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=iso-8859-1">
<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:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
span.EmailStyle17
{mso-style-type:personal-compose;
font-family:"Calibri",sans-serif;
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;
font-family:"Calibri",sans-serif;}
@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">Hello!<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">My name is Kyle Gagnon and I work at General Dynamics Mission Systems. We are evaluating DPDK and its use. I am currently trying to get DPDK to work on a Xilinx ZCU102 evaluation board. The problem is that the NIC is an onboard ethernet
interface so it does not go through any PCI. I won’t be able to use an external NIC card so I have to work with what I have. I understand that I can use the PCAP library PMD. Here is my question if you don’t mind helping me out!<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I am compiling DPDK through meson and then in a custom application I am writing myself I have to use Makefiles. I need to statically link all of the libraries. So I did that and wrote an extremely basic program that doesn’t do much at all.
Here it is (I am copying from another computer. This is a C++ application and I am building it for ARM on an x86_64 Ubuntu WSL machine)<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">DpdkEntry.cpp<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">#include <iostream><o:p></o:p></p>
<p class="MsoNormal">#include <string><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">#include <rte_eal.h><o:p></o:p></p>
<p class="MsoNormal">#include <rte_ethdev.h><o:p></o:p></p>
<p class="MsoNormal">#include <rte_cycles.h><o:p></o:p></p>
<p class="MsoNormal">#include <rte_lcore.h><o:p></o:p></p>
<p class="MsoNormal">#include <rte_mbuf.h><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Int main(int argc, char **argv) {<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"> int returnVal;<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"> std::cout << “Setting up EAL environment\n”;<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"> returnVal = rte_eal_init(argc, argv);<o:p></o:p></p>
<p class="MsoNormal"> if (returnVal < 0) {<o:p></o:p></p>
<p class="MsoNormal"> rte_exit(EXIT_FAILURE, “Error with initializing EAL\n”);<o:p></o:p></p>
<p class="MsoNormal"> }<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"> rte_eal_cleanup();<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"> return 0;<o:p></o:p></p>
<p class="MsoNormal">}<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">When I run this application through a QEMU emulation of the ZCU102 board I use the following command<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">dpdk-test -l 0-3 -n 4 –vdev ‘net_pcap0,iface=eth0’<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I have built librte_net_pcap and linked it in so it is in the application. When I run the above command (using the above source code) I get the following:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">EAL: Detected CPU lcores: 4<o:p></o:p></p>
<p class="MsoNormal">EALL Detected NUMA nodes: 1<o:p></o:p></p>
<p class="MsoNormal">EAL: Detected static linkage of DPDK<o:p></o:p></p>
<p class="MsoNormal">EAL: failed to parse device “net_pcap0”<o:p></o:p></p>
<p class="MsoNormal">EAL: Unable to parse device ‘net_pcap0,iface=eth0’<o:p></o:p></p>
<p class="MsoNormal">EAL: Error – exiting with code: 1<o:p></o:p></p>
<p class="MsoNormal"> Cause: Error with initializing EAL<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">When I run a testpmd with the same parameters on the same emulated board I am able to use the ethernet port so what am I doing wrong with my custom code? I am going to forward this to my personal email in case I need to follow up with more
information (the source code and building is on my personal computer rather than my work computer).<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Thank you!<o:p></o:p></p>
<p class="MsoNormal"><span style="color:#4472C4">Kyle Gagnon<o:p></o:p></span></p>
<p class="MsoNormal"><b><span style="color:#4472C4">General Dynamics Mission Systems<o:p></o:p></span></b></p>
<p class="MsoNormal"><span style="color:#4472C4">150 Rustcraft Rd | Dedham, MA 02026<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#4472C4">(781) 410 - 3820 | Kyle.Gagnon@gd-ms.com<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</body>
</html>