<div dir="ltr"><div id="gmail-:uv" class="gmail-Am gmail-aO9 gmail-Al editable gmail-LW-avf gmail-tS-tW gmail-tS-tY" aria-label="Message Body" role="textbox" aria-multiline="true" tabindex="1" style="direction:ltr;min-height:85px" aria-controls=":yb">Hi Daniel,<div><br></div><div>is the container running in shared or non-shared mode ? </div><div>For shared mode, I assume the kernel sysfs counters which DPDK relies on for imissed/out_of_buffer are not exposed.</div><div><br></div><div>Best regards,</div><div>Erez</div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, 2 Jun 2023 at 18:07, Slava Ovsiienko <<a href="mailto:viacheslavo@nvidia.com">viacheslavo@nvidia.com</a>> wrote:<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 class="msg-2922114280274956019">





<div lang="EN-US" style="overflow-wrap: break-word;">
<div class="m_-2922114280274956019WordSection1">
<p class="MsoNormal">Hi, Daniel<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">I would recommend to take the following action:<br>
<br>
<u></u><u></u></p>
<p class="MsoNormal">- update the firmware, 16.33.xxxx looks to be outdated a little bit. Please, try 16.35.1012 or later.<br>
  mlx5_glue->devx_obj_create might succeed with the newer FW.<u></u><u></u></p>
<p class="MsoNormal">- try to specify dv_flow_en=0 devarg, it forces mlx5 PMD to use rdma_core library for queue management<br>
 and kernel driver will  be aware about Rx queues being created and attach them to the kernel counter set<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">With best regards,<br>
Slava<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<div style="border-top:none;border-right:none;border-bottom:none;border-left:1.5pt solid blue;padding:0cm 0cm 0cm 4pt">
<div>
<div style="border-right:none;border-bottom:none;border-left:none;border-top:1pt solid rgb(225,225,225);padding:3pt 0cm 0cm">
<p class="MsoNormal"><b>From:</b> Daniel Östman <<a href="mailto:daniel.ostman@ericsson.com" target="_blank">daniel.ostman@ericsson.com</a>> <br>
<b>Sent:</b> Friday, June 2, 2023 3:59 PM<br>
<b>To:</b> <a href="mailto:users@dpdk.org" target="_blank">users@dpdk.org</a><br>
<b>Cc:</b> Matan Azrad <<a href="mailto:matan@nvidia.com" target="_blank">matan@nvidia.com</a>>; Slava Ovsiienko <<a href="mailto:viacheslavo@nvidia.com" target="_blank">viacheslavo@nvidia.com</a>>; <a href="mailto:maxime.coquelin@redhat.com" target="_blank">maxime.coquelin@redhat.com</a>; <a href="mailto:david.marchand@redhat.com" target="_blank">david.marchand@redhat.com</a><br>
<b>Subject:</b> mlx5: imissed / out_of_buffer counter always 0<u></u><u></u></p>
</div>
</div>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Hi,<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">I’m deploying a c<span class="m_-2922114280274956019hgkelc"><span lang="EN">ontainerized
</span></span>DPDK application in an OpenShift Kubernetes environment using DPDK 21.11.3.<u></u><u></u></p>
<p class="MsoNormal">The application uses a Mellanox ConnectX-5 100G NIC through VFs.
<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">The problem I have is that the ETH stats counter imissed (which seems to be mapped to “out_of_buffer” internally in mlx5 PMD driver) is 0 when I don’t expect it to be, i.e. when the application doesn’t read the packets fast enough.<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Using GDB I can see that it tries to access the counter through /sys/class/infiniband/mlx5_99/ports/1/hw_counters/out_of_buffer but the hw_counters directory is missing so it will just return a zero value. I don’t know why it is missing.<u></u><u></u></p>
<p class="MsoNormal">When looking at mlx5_os_read_dev_stat() I can see that there is an alternative way of reading the counter, through mlx5_devx_cmd_queue_counter_query() but under the condition that priv->q_counters are set.<u></u><u></u></p>
<p class="MsoNormal">It doesn’t get set in my case because mlx5_glue->devx_obj_create() fails (errno 22) in mlx5_devx_cmd_queue_counter_alloc().<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Have I missed something?<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">NIC info:<u></u><u></u></p>
<p class="MsoNormal">Mellanox Technologies MT27800 Family [ConnectX-5] - 100Gb 2-port QSFP28 MCX516A-CCHT<br>
driver: mlx5_core<br>
version: 5.0-0<br>
firmware-version: 16.33.1048 (MT_0000000417)<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Please let me know if I need to provide more information.<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Best regards,<u></u><u></u></p>
<p class="MsoNormal">Daniel<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
</div>
</div>

</div></blockquote></div>