Problem running flow_monitor_meter sample – can’t parse device representor

Hi,

I’m trying to run the flow_monitor_meter sample from DOCA Flow, but I keep getting an “Invalid input” error when I specify the representor device.

Here’s what I’m running:

/tmp/build/doca_flow_monitor_meter -- -r pci/0000:03:00.0,pf1hpf -l 60

And this is what I get back:

root@localhost:/doca_devel/samples/doca_flow/flow_monitor_meter# /tmp/build/doca_flow_monitor_meter -- -r pci/0000:03:00.0,pf1hpf -l 60
[23:39:16:581404][2993881120][DOCA][INF][doca_log.cpp:628] DOCA version 3.1.0105
[23:39:16:581573][2993881120][DOCA][INF][flow_monitor_meter_main.c:49][main] Starting the sample
EAL: Detected CPU lcores: 8
EAL: Detected NUMA nodes: 1
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
TELEMETRY: No legacy callbacks, legacy socket not created
[23:39:16:609472][2993881120][DOCA][ERR][device_utils.cpp:699] Failed to extract the device representor PCI identifier: 0000:03:00.0,pf1hpf
[23:39:16:609514][2993881120][DOCA][ERR][doca_argp.cpp:540] Failed to parse device representor identifier "pci/0000:03:00.0,pf1hpf": Invalid input


Usage: doca_flow_monitor_meter [DPDK Flags] -- [DOCA Flags] [Program Flags]

DOCA Flags:
  -h, --help                        Print a help synopsis
  -v, --version                     Print program version information
  -l, --log-level                   Set the (numeric) log level for the program <10=DISABLE, 20=CRITICAL, 30=ERROR, 40=WARNING, 50=INFO, 60=DEBUG, 70=TRACE>
  --sdk-log-level                   Set the SDK (numeric) log level for the program <10=DISABLE, 20=CRITICAL, 30=ERROR, 40=WARNING, 50=INFO, 60=DEBUG, 70=TRACE>

Program Flags:
  -a, --device                      device
  -r, --rep                         device representor


[23:39:16:609605][2993881120][DOCA][ERR][flow_monitor_meter_main.c:65][main] Failed to parse sample input: Invalid input
[23:39:16:609627][2993881120][DOCA][INF][flow_monitor_meter_main.c:101][main] Sample finished with errors

I already checked my devices with dpdk-devbind.py --status and both ports are visible:

root@localhost:/doca_devel/samples/doca_flow/flow_monitor_meter# /opt/mellanox/dpdk/bin/dpdk-devbind.py  --status
lspci: Unable to load libkmod resources: error -2
lspci: Unable to load libkmod resources: error -2
lspci: Unable to load libkmod resources: error -2
lspci: Unable to load libkmod resources: error -2
lspci: Unable to load libkmod resources: error -2
lspci: Unable to load libkmod resources: error -2
lspci: Unable to load libkmod resources: error -2
lspci: Unable to load libkmod resources: error -2
lspci: Unable to load libkmod resources: error -2

Network devices using kernel driver
===================================
0000:03:00.0 'MT42822 BlueField-2 integrated ConnectX-6 Dx network controller a2d6' if=pf0hpf,p0,en3f0pf0sf0 drv=mlx5_core unused= 
0000:03:00.1 'MT42822 BlueField-2 integrated ConnectX-6 Dx network controller a2d6' if=p1,pf1hpf drv=mlx5_core unused= 

Other Network devices
=====================
0000:03:00.2 'Device c2d1' unused=

No 'Baseband' devices detected
==============================

No 'Crypto' devices detected
============================

No 'DMA' devices detected
=========================

No 'Eventdev' devices detected
==============================

No 'Mempool' devices detected
=============================

No 'Compress' devices detected
==============================

No 'Misc (rawdev)' devices detected
===================================

No 'Regex' devices detected
===========================
root@localhost:/doca_devel/samples/doca_flow/flow_monitor_meter# 

I’ve tried several combinations for -a and -r, like:

-a pf0hpf -r pf1hpf
-a 0000:03:00.0 -r 0000:03:00.1
-r pci/0000:03:00.0,pf1hpf

but the sample always fails with the same parsing error.

root@localhost:/doca_devel/samples/doca_flow/flow_monitor_meter#  /opt/mellanox/doca/tools/doca_caps --list-rep-devs
PCI: 0000:03:00.0
PCI: 0000:03:00.1
representor-PCI: 0000:03:00.1
ib_port                                       1
host_index                                    1
pf_index                                      1
pci_func_type                                 PF
hotplug                                       no
vuid                                          MT2148X08793MLNXS0D0F1
iface_name                                    pf1hpf
iface_index                                   10
PCI: 0000:03:00.0
root@localhost:/doca_devel/samples/doca_flow/flow_monitor_meter#

root@localhost:/home/ubuntu# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: oob_net0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 08:c0:eb:b2:43:96 brd ff:ff:ff:ff:ff:ff
altname enamlnxbf17i0
inet 172.28.20.102/24 brd 172.28.20.255 scope global dynamic noprefixroute oob_net0
valid_lft 1893sec preferred_lft 1893sec
inet6 fe80::ac0:ebff:feb2:4396/64 scope link
valid_lft forever preferred_lft forever
3: tmfifo_net0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:1a:ca:ff:ff:01 brd ff:ff:ff:ff:ff:ff
inet 192.168.100.2/30 brd 192.168.100.3 scope global noprefixroute tmfifo_net0
valid_lft forever preferred_lft forever
inet6 fe80::21a:caff:feff:ff01/64 scope link
valid_lft forever preferred_lft forever
4: p0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1550 qdisc mq state UP group default qlen 1000
link/ether 08:c0:eb:b2:43:8e brd ff:ff:ff:ff:ff:ff
altname enp3s0f0np0
inet6 fe80::ac0:ebff:feb2:438e/64 scope link
valid_lft forever preferred_lft forever
5: p1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1550 qdisc mq state UP group default qlen 1000
link/ether 08:c0:eb:b2:43:8f brd ff:ff:ff:ff:ff:ff
altname enp3s0f1np1
inet6 fe80::ac0:ebff:feb2:438f/64 scope link
valid_lft forever preferred_lft forever
9: pf0hpf: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 128
link/ether 12:77:48:31:b6:b8 brd ff:ff:ff:ff:ff:ff
altname enp3s0f0nc1pf0
inet6 fe80::1077:48ff:fe31:b6b8/64 scope link
valid_lft forever preferred_lft forever
10: pf1hpf: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 128
link/ether e2:a0:26:2c:d1:f1 brd ff:ff:ff:ff:ff:ff
altname enp3s0f1nc1pf1
inet6 fe80::e0a0:26ff:fe2c:d1f1/64 scope link
valid_lft forever preferred_lft forever
11: en3f0pf0sf0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 128
link/ether c6:f2:4e:81:0f:da brd ff:ff:ff:ff:ff:ff
altname enp3s0f0npf0sf0
12: enp3s0f0s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 02:ae:7b:fc:12:23 brd ff:ff:ff:ff:ff:ff
inet6 fe80::ae:7bff:fefc:1223/64 scope link
valid_lft forever preferred_lft forever
14: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:4a:ee:03:cc brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever
18: ovs-netdev: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 22:58:e7:4d:50:7e brd ff:ff:ff:ff:ff:ff
19: br-inside: <BROADCAST,MULTICAST,PROMISC> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 08:c0:eb:b2:43:8f brd ff:ff:ff:ff:ff:ff
20: br-outside: <BROADCAST,MULTICAST,PROMISC> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 08:c0:eb:b2:43:8e brd ff:ff:ff:ff:ff:ff

Has anyone managed to get this sample running successfully?
Any working example or advice would be really appreciated.

Thanks!

Hi tuanama,

You can refer to DOCA Arg Parser - NVIDIA Docs to obtain information about representors. If you need further assistance, please contact doca-feedback@nvidia.com for further support.

Thanks,

Quanying