<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=gb2312">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:宋体;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:等线;
        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:"\@等线";
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:"\@宋体";
        panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        text-align:justify;
        text-justify:inter-ideograph;
        font-size:10.5pt;
        font-family:等线;}
span.EmailStyle19
        {mso-style-type:personal-reply;
        font-family:等线;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 90.0pt 72.0pt 90.0pt;}
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="ZH-CN" link="#0563C1" vlink="#954F72" style="word-wrap:break-word;text-justify-trim:punctuation">
<div class="WordSection1">
<p class="MsoNormal"><span lang="EN-US">Hi,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">It seems the vlan id is in rx descriptor, but somehow not copied to vlan_tci<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">I tried to gdb on _iavf_recv_raw_pkts_vec_avx2<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:10.5pt;mso-para-margin-left:1.0gd"><span lang="EN-US">(gdb) p* rxdp<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:10.5pt;mso-para-margin-left:1.0gd"><span lang="EN-US">$6 = {read = {pkt_addr = 16888770190601355264, hdr_addr = 16517370491403, rsvd1 = 628252148018184193, rsvd2 = 0}, wb = {<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:10.5pt;mso-para-margin-left:1.0gd"><span lang="EN-US">    qword0 = {lo_dword = {mirr_fcoe = {mirroring_status = 0, fcoe_ctx_id = 0}, l2tag1 = 0}, hi_dword = {rss = 3932223234,<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:10.5pt;mso-para-margin-left:1.0gd"><span lang="EN-US">        fcoe_param = 3932223234, fd_id = 3932223234}}, qword1 = {status_error_len = 16517370491403}, qword2 = {<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:10.5pt;mso-para-margin-left:1.0gd"><span lang="EN-US">      ext_status = 1, rsvd = 0, l2tag2_1 = 0,<b> l2tag2_2 = 2232</b>}, qword3 = {lo_dword = {flex_bytes_lo = 0, pe_status = 0},<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:10.5pt;mso-para-margin-left:1.0gd"><span lang="EN-US">      hi_dword = {flex_bytes_hi = 0, fd_id = 0}}}}<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">But when dpdk-testpmd received it, there is no vtan_tci<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:10.5pt;mso-para-margin-left:1.0gd"><span lang="EN-US">(gdb) p *pkts_burst[0]<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:10.5pt;mso-para-margin-left:1.0gd"><span lang="EN-US">$17 = {cacheline0 = 0x177657700, buf_addr = 0x177657780, buf_iova = 6298105728, rearm_data = 0x177657710, data_off = 256,<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:10.5pt;mso-para-margin-left:1.0gd"><span lang="EN-US">  refcnt = 1, nb_segs = 1, port = 0, ol_flags = 386, rx_descriptor_fields1 = 0x177657720, {packet_type = 1681, {<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:10.5pt;mso-para-margin-left:1.0gd"><span lang="EN-US">      l2_type = 1 '\001', l3_type = 9 '\t', l4_type = 6 '\006', tun_type = 0 '\000', {inner_esp_next_proto = 0 '\000', {<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:10.5pt;mso-para-margin-left:1.0gd"><span lang="EN-US">          inner_l2_type = 0 '\000', inner_l3_type = 0 '\000'}}, inner_l4_type = 0 '\000'}}, pkt_len = 60, data_len = 60,<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:10.5pt;mso-para-margin-left:1.0gd"><span lang="EN-US">  vlan_tci = 0, {hash = {rss = 3932223234, fdir = {{{hash = 63234, id = 60000}, lo = 3932223234}, hi = 0}, sched = {<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:10.5pt;mso-para-margin-left:1.0gd"><span lang="EN-US">        queue_id = 3932223234, traffic_class = 0 '\000', color = 0 '\000', reserved = 0}, txadapter = {<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:10.5pt;mso-para-margin-left:1.0gd"><span lang="EN-US">        reserved1 = 3932223234, reserved2 = 0, txq = 0}, usr = 3932223234}}, vlan_tci_outer = 0, buf_len = 2304,<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:10.5pt;mso-para-margin-left:1.0gd"><span lang="EN-US">  pool = 0x23b1e98c0, cacheline1 = 0x177657740, next = 0x0, {tx_offload = 0, {l2_len = 0, l3_len = 0, l4_len = 0,<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:10.5pt;mso-para-margin-left:1.0gd"><span lang="EN-US">      tso_segsz = 0, outer_l3_len = 0, outer_l2_len = 0}}, shinfo = 0x0, priv_size = 0, timesync = 0, dynfield1 = {0, 0, 0,<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:10.5pt;mso-para-margin-left:1.0gd"><span lang="EN-US">    0, 0, 0, 0, 0, 0}}<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:10.5pt;mso-para-margin-left:1.0gd"><span lang="EN-US">(gdb) bt<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:10.5pt;mso-para-margin-left:1.0gd"><span lang="EN-US">#0  pkt_burst_receive (fs=0x176d96a40) at ../dpdk-21.11/app/test-pmd/rxonly.c:61<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:10.5pt;mso-para-margin-left:1.0gd"><span lang="EN-US">#1  0x00000000016501e9 in run_pkt_fwd_on_lcore (fc=0x23b4f2a40, pkt_fwd=0x164c8c0 <pkt_burst_receive>)<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:10.5pt;mso-para-margin-left:1.0gd"><span lang="EN-US">    at ../dpdk-21.11/app/test-pmd/testpmd.c:2200<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:10.5pt;mso-para-margin-left:1.0gd"><span lang="EN-US">#2  0x00000000016502d4 in start_pkt_forward_on_core (fwd_arg=<optimized out>) at ../dpdk-21.11/app/test-pmd/testpmd.c:2226<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:10.5pt;mso-para-margin-left:1.0gd"><span lang="EN-US">#3  0x000000000059abac in eal_thread_loop (arg=<optimized out>) at ../dpdk-21.11/lib/eal/linux/eal_thread.c:146<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:10.5pt;mso-para-margin-left:1.0gd"><span lang="EN-US">#4  0x00007ffff5233812 in start_thread () from /usr/lib64/libc.so.6<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left:10.5pt;mso-para-margin-left:1.0gd"><span lang="EN-US">#5  0x00007ffff51d3314 in clone () from /usr/lib64/libc.so.6<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal" align="left" style="text-align:left"><b><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif">From:</span></b><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif"> Yan, Xiaoping (NSB - CN/Hangzhou)
<br>
<b>Sent:</b> 2022</span><span style="font-size:11.0pt;font-family:宋体">年</span><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif">9</span><span style="font-size:11.0pt;font-family:宋体">月</span><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif">27</span><span style="font-size:11.0pt;font-family:宋体">日</span><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif">
 22:29<br>
<b>To:</b> users@dpdk.org; 'jingjing.wu@intel.com' <jingjing.wu@intel.com>; beilei.xing@intel.com<br>
<b>Subject:</b> rx packet vlan_tci is not set in iavf driver<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal" align="left" style="text-align:left"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Hi,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">I have a dpdk application sending broadcast packet in vlan 0x248. and I started dpdk-testpmd on rx only mode.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">The dpdk-testpmd received the packet with vlan header (as expected) as below from gdb output:<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">(gdb) x/100xb (pkts_burst[4]->buf_addr+pkts_burst[4]->data_off)<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">0x17787c8c0:    0xff    0xff    0xff    0xff    0xff    0xff    0xfe    0x1a<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">0x17787c8c8:    0xcc    0x2e    0x6e    0x78   
<b>0x81    0x00    0x02    0x48</b><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">0x17787c8d0:    0x89    0x51    0x40    0x00    0x00    0x00    0x00    0x00<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">...<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Then I enable vlan strip via below command<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">testpmd> vlan set strip on 0<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Now the vlan is stripped (as expected) as below:<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">(gdb) x/100xb (pkts_burst[0]->buf_addr+pkts_burst[0]->data_off)<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">0x1775b8a80:    0xff    0xff    0xff    0xff    0xff    0xff    0xfe    0x1a<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">0x1775b8a88:    0xcc    0x2e    0x6e    0x78   
<b>0x89    0x51</b>    0x40    0x00<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">0x1775b8a90:    0x00    0x00    0x00    0x00    0x00    0x00    0x03    0x00<o:p></o:p></span></p>
<p class="MsoNormal">…<span lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">But (what is not expected) the mbuf vlan_tci is not filled, as below:<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">gdb) p *pkts_burst[4]<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">$8 = {cacheline0 = 0x17787c740, buf_addr = 0x17787c7c0, buf_iova = 6300354496,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">  rearm_data = 0x17787c750, data_off = 256, refcnt = 1, nb_segs = 1, port = 0,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">  <b>ol_flags = 384</b>, rx_descriptor_fields1 = 0x17787c760, {packet_type = 1, {<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">      l2_type = 1 '\001', l3_type = 0 '\000', l4_type = 0 '\000',<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">      tun_type = 0 '\000', {inner_esp_next_proto = 0 '\000', {<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">          inner_l2_type = 0 '\000', inner_l3_type = 0 '\000'}},<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">      inner_l4_type = 0 '\000'}}, pkt_len = 60, data_len = 60,
<b>vlan_tci = 0</b>, {<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">    hash = {rss = 0, fdir = {{{hash = 0, id = 0}, lo = 0}, hi = 0}, sched = {<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">        queue_id = 0, traffic_class = 0 '\000', color = 0 '\000', reserved = 0},<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">      txadapter = {reserved1 = 0, reserved2 = 0, txq = 0}, usr = 0}},<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">  vlan_tci_outer = 0, buf_len = 2304, pool = 0x23b1e98c0, cacheline1 = 0x17787c780,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">  next = 0x0, {tx_offload = 0, {l2_len = 0, l3_len = 0, l4_len = 0, tso_segsz = 0,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">      outer_l3_len = 0, outer_l2_len = 0}}, shinfo = 0x0, priv_size = 0,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">  timesync = 0, dynfield1 = {0, 0, 0, 0, 0, 0, 0, 0, 0}}
<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Is there something wrong in the iavf pmd driver?<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">dpdk version: 21.11-0 (iavf pmd driver, and rx burst function is iavf_recv_pkts_vec_avx2)<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">hw: intel E810 SRIOV VF<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">PF driver and firmware in use:<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">[cranuser2@hzdc-ecp-10-110-8-222 ~]$ ethtool -i ens43f2<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">driver: ice<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">version: 4.18.0-372.26.1.el8_6.x86_64<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">firmware-version: 3.10 0x8000ad3d 1.3106.0<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">expansion-rom-version:<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">bus-info: 0000:8a:00.2<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">supports-statistics: yes<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">supports-test: yes<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">supports-eeprom-access: yes<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">supports-register-dump: yes<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">supports-priv-flags: yes<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Thank you.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
</div>
</body>
</html>