Bug 1336

Summary: Statistic counter rx_missed_errors always shows zero no matter how large the traffic was generated on Mellanox NICs
Product: DPDK Reporter: pony ma (pony.ma)
Component: ethdevAssignee: dev
Status: UNCONFIRMED ---    
Severity: critical    
Priority: High    
Version: 22.11   
Target Milestone: ---   
Hardware: x86   
OS: Linux   
Attachments: dpdk initiation log in data-plane pod
gdb dpdk debug log

Description pony ma 2023-12-19 12:09:05 CET
Created attachment 266 [details]
dpdk initiation log in data-plane pod

Our product used the DPDK as a lib for data-plane pod in the vcloud platform. We observed that if data-plane pod doesn't mount the host path /sys/device to the container, then "rx_missed_errors" counter always shows zero no matter how large the traffic was generated on Mellanox NIC. But our customers don't like application need  to access any host paths, therefore we have to remove the mount path /sys/device. 

The outcome is data-plane pod would miss the "rx_missed_errors" metric, it might have a degradation regarding the debuggability for packet loss.

I have got through the dpdk code about the function "mlx5_os_read_dev_stat", and gdb the dpdk process. It shows that the point of "priv-gcounters" is NULL and below two paths have no file of "out_of_buffer"

(gdb)  p priv->q_counters
$4 = (struct mlx5_devx_obj *) 0x0

(gdb) info local
mkstr_size_path1 = 54
path1 = "/sys/class/infiniband/mlx5_2/hw_counters/out_of_buffer"
mkstr_size_path = 62
path = "/sys/class/infiniband/mlx5_2/ports/1/hw_counters/out_of_buffer"

Note: Our NIC is Mellanox and SRIOV VFs are used for POD.

We expect that Statistic counter "rx_missed_errors" can work well without mounting host path /sys/device on Mellanox NICs.
Comment 1 pony ma 2023-12-20 09:27:54 CET
Created attachment 267 [details]
gdb dpdk debug log