Thanks Ilya for the response.

It turned out that the latest DPDK I can manually compile on the
Bluefield-2 without errors is v20.08.

After looking at the table you pointed me, my best option was
OvS 2.14.9 with DPDK-v19.11.13.

Compilations went well without error, now I have the same problem when
attaching the ports to OvS. In fact, even attaching the physical port
fails.

The way how I initiate OvS is using my custom tailored script
https://github.com/cslev/nvidia-bluefield-ovs-scripts/blob/main/start_ovs.sh
From line 223.


After adding the physical port, ovs-vsctl show provides this:
```
    Bridge ovs_dpdk_br0
        datapath_type: netdev
        Port dpdk0
            Interface dpdk0
                type: dpdk
                options: {dpdk-devargs="0000:03:00.0"}
                error: "Error attaching device '0000:03:00.0' to DPDK"
        Port ovs_dpdk_br0
            Interface ovs_dpdk_br0
                type: internal
```

vswitchd log:
```
...
2023-09-21T09:29:48.626Z|00067|bridge|INFO|bridge ovs_dpdk_br0: added
interface ovs_dpdk_br0 on port 65534
2023-09-21T09:29:48.627Z|00068|bridge|INFO|bridge ovs_dpdk_br0: using
datapath ID 0000d62195e14c4e
2023-09-21T09:29:48.627Z|00069|connmgr|INFO|ovs_dpdk_br0: added service
controller "punix:/usr/local/var/run/openvswitch/ovs_dpdk_br0.mgmt"
2023-09-21T09:29:48.718Z|00070|dpdk|ERR|EAL: Driver cannot attach the
device (0000:03:00.0)
2023-09-21T09:29:48.718Z|00071|dpdk|ERR|EAL: Failed to attach device on
primary process
2023-09-21T09:29:48.719Z|00072|netdev_dpdk|WARN|Error attaching device
'0000:03:00.0' to DPDK
2023-09-21T09:29:48.719Z|00073|netdev|WARN|dpdk0: could not set
configuration (Invalid argument)
2023-09-21T09:29:48.719Z|00074|dpdk|ERR|Invalid port_id=32
2023-09-21T09:29:57.230Z|00075|memory|INFO|27944 kB peak resident set
size after 10.3 seconds
2023-09-21T09:29:57.230Z|00076|memory|INFO|handlers:1 ports:1
revalidators:1 rules:5
```


Is there any other log files I can look into for more informational
debug messages?


Cheers,
levi


On Wed, 2023-09-20 at 17:20 +0200, Ilya Maximets wrote:
> On 9/20/23 06:39, Levente Csikor via discuss wrote:
> > Hi All,
> > 
> > I have a long lasting problem I have been trying to resolve for
> > quite
> > some time. I am playing around with an NVidia SmartNIC (Bluefield-
> > 2),
> > which has OvS installed by default. It works well with the kernel
> > driver, and even TC hardware offloading is working.
> > 
> > I want to experiment with DPDK, though. 
> > DPDK is also installed by default on the Bluefield-2.
> > The details of the versions are as follows:
> > 
> > OvS 2.17.7
> > DPDK 22.11.1.4.2
> > 
> > Following the "NVidia tutorials", I manage to add the physical port
> > as
> > a netdev device to an OVS-DPDK bridge, however, adding the virtual
> > function fails.
> > 
> > More details about the commands and problem are here:  
> > https://forums.developer.nvidia.com/t/error-with-configuring-ovs-dpdk-on-bluefiled-2/256030/4
> > 
> > 
> > Anyway, as a last resort, I thought I give a try to install OvS and
> > DPDK from scratch following
> > https://docs.openvswitch.org/en/latest/intro/install/dpdk/
> > 
> > I used the same version for OvS and DPDK; the latter was anyway the
> > one
> > recommended by the OvS documentation.
> > 
> > During the `make` process, I encounter several errors I cannot
> > really
> > resolve
> > ```
> > In file included from lib/dp-packet.h:29,
> >                  from lib/bfd.c:28:
> > lib/netdev-dpdk.h:95:12: warning: ‘struct rte_flow_tunnel’ declared
> > inside parameter list will not be visible outside of this
> > definition or
> > declaration
> >    95 |     struct rte_flow_tunnel *tunnel OVS_UNUSED,
> >       |            ^~~~~~~~~~~~~~~
> > lib/netdev-dpdk.h:106:42: warning: ‘struct rte_flow_tunnel’
> > declared
> > inside parameter list will not be visible outside of this
> > definition or
> > declaration
> >   106 |                                   struct rte_flow_tunnel
> > *tunnel OVS_UNUSED,
> >       |                                          ^~~~~~~~~~~~~~~
> > lib/netdev-dpdk.h:119:12: warning: ‘struct rte_flow_restore_info’
> > declared inside parameter list will not be visible outside of this
> > definition or declaration
> >   119 |     struct rte_flow_restore_info *info OVS_UNUSED,
> >       |            ^~~~~~~~~~~~~~~~~~~~~
> > In file included from lib/bfd.c:28:
> > lib/dp-packet.h:61:40: error: ‘RTE_MBUF_F_RX_RSS_HASH’ undeclared
> > here
> > (not in a function)
> >    61 |     DEF_OL_FLAG(DP_PACKET_OL_RSS_HASH,
> > RTE_MBUF_F_RX_RSS_HASH,
> > 0x1),
> >       |                                       
> > ^~~~~~~~~~~~~~~~~~~~~~
> > lib/dp-packet.h:52:57: note: in definition of macro ‘DEF_OL_FLAG’
> >    52 | #define DEF_OL_FLAG(NAME, DPDK_DEF, GENERIC_DEF) NAME =
> > DPDK_DEF
> >       |                                                        
> > ^~~~~~~~
> > lib/dp-packet.h:63:41: error: ‘RTE_MBUF_F_RX_FDIR_ID’ undeclared
> > here
> > (not in a function)
> >    63 |     DEF_OL_FLAG(DP_PACKET_OL_FLOW_MARK,
> > RTE_MBUF_F_RX_FDIR_ID,
> > 0x2),
> >       |                                        
> > ^~~~~~~~~~~~~~~~~~~~~
> > lib/dp-packet.h:52:57: note: in definition of macro ‘DEF_OL_FLAG’
> >    52 | #define DEF_OL_FLAG(NAME, DPDK_DEF, GENERIC_DEF) NAME =
> > DPDK_DEF
> >       |                                                        
> > ^~~~~~~~
> > lib/dp-packet.h:65:47: error: ‘RTE_MBUF_F_RX_L4_CKSUM_BAD’
> > undeclared
> > here (not in a function)
> >    65 |     DEF_OL_FLAG(DP_PACKET_OL_RX_L4_CKSUM_BAD,
> > RTE_MBUF_F_RX_L4_CKSUM_BAD, 0x4),
> >       |                                              
> > ^~~~~~~~~~~~~~~~~~~~~~~~~~
> > lib/dp-packet.h:52:57: note: in definition of macro ‘DEF_OL_FLAG’
> >    52 | #define DEF_OL_FLAG(NAME, DPDK_DEF, GENERIC_DEF) NAME =
> > DPDK_DEF
> >       |                                                        
> > ^~~~~~~~
> > lib/dp-packet.h:67:47: error: ‘RTE_MBUF_F_RX_IP_CKSUM_BAD’
> > undeclared
> > here (not in a function)
> >    67 |     DEF_OL_FLAG(DP_PACKET_OL_RX_IP_CKSUM_BAD,
> > RTE_MBUF_F_RX_IP_CKSUM_BAD, 0x8),
> >       |                                              
> > ^~~~~~~~~~~~~~~~~~~~~~~~~~
> > lib/dp-packet.h:52:57: note: in definition of macro ‘DEF_OL_FLAG’
> >    52 | #define DEF_OL_FLAG(NAME, DPDK_DEF, GENERIC_DEF) NAME =
> > DPDK_DEF
> >       |                                                        
> > ^~~~~~~~
> > lib/dp-packet.h:69:48: error: ‘RTE_MBUF_F_RX_L4_CKSUM_GOOD’
> > undeclared
> > here (not in a function)
> >    69 |     DEF_OL_FLAG(DP_PACKET_OL_RX_L4_CKSUM_GOOD,
> > RTE_MBUF_F_RX_L4_CKSUM_GOOD,
> >       |                                               
> > ^~~~~~~~~~~~~~~~~~~~~~~~~~~
> > lib/dp-packet.h:52:57: note: in definition of macro ‘DEF_OL_FLAG’
> >    52 | #define DEF_OL_FLAG(NAME, DPDK_DEF, GENERIC_DEF) NAME =
> > DPDK_DEF
> >       |                                                        
> > ^~~~~~~~
> > lib/dp-packet.h:72:48: error: ‘RTE_MBUF_F_RX_IP_CKSUM_GOOD’
> > undeclared
> > here (not in a function)
> >    72 |     DEF_OL_FLAG(DP_PACKET_OL_RX_IP_CKSUM_GOOD,
> > RTE_MBUF_F_RX_IP_CKSUM_GOOD,
> >       |                                               
> > ^~~~~~~~~~~~~~~~~~~~~~~~~~~
> > lib/dp-packet.h:52:57: note: in definition of macro ‘DEF_OL_FLAG’
> >    52 | #define DEF_OL_FLAG(NAME, DPDK_DEF, GENERIC_DEF) NAME =
> > DPDK_DEF
> >       |                                                        
> > ^~~~~~~~
> > lib/dp-packet.h:75:42: error: ‘RTE_MBUF_F_TX_TCP_SEG’ undeclared
> > here
> > (not in a function); did you mean ‘RTE_MBUF_MAX_NB_SEGS’?
> >    75 |     DEF_OL_FLAG(DP_PACKET_OL_TX_TCP_SEG,
> > RTE_MBUF_F_TX_TCP_SEG,
> > 0x40),
> >       |                                         
> > ^~~~~~~~~~~~~~~~~~~~~
> > lib/dp-packet.h:52:57: note: in definition of macro ‘DEF_OL_FLAG’
> >    52 | #define DEF_OL_FLAG(NAME, DPDK_DEF, GENERIC_DEF) NAME =
> > DPDK_DEF
> >       |                                                        
> > ^~~~~~~~
> > lib/dp-packet.h:77:39: error: ‘RTE_MBUF_F_TX_IPV4’ undeclared here
> > (not
> > in a function)
> >    77 |     DEF_OL_FLAG(DP_PACKET_OL_TX_IPV4, RTE_MBUF_F_TX_IPV4,
> > 0x80),
> >       |                                       ^~~~~~~~~~~~~~~~~~
> > lib/dp-packet.h:52:57: note: in definition of macro ‘DEF_OL_FLAG’
> >    52 | #define DEF_OL_FLAG(NAME, DPDK_DEF, GENERIC_DEF) NAME =
> > DPDK_DEF
> >       |                                                        
> > ^~~~~~~~
> > lib/dp-packet.h:79:39: error: ‘RTE_MBUF_F_TX_IPV6’ undeclared here
> > (not
> > in a function)
> >    79 |     DEF_OL_FLAG(DP_PACKET_OL_TX_IPV6, RTE_MBUF_F_TX_IPV6,
> > 0x100),
> >       |                                       ^~~~~~~~~~~~~~~~~~
> > lib/dp-packet.h:52:57: note: in definition of macro ‘DEF_OL_FLAG’
> >    52 | #define DEF_OL_FLAG(NAME, DPDK_DEF, GENERIC_DEF) NAME =
> > DPDK_DEF
> >       |                                                        
> > ^~~~~~~~
> > lib/dp-packet.h:81:44: error: ‘RTE_MBUF_F_TX_TCP_CKSUM’ undeclared
> > here
> > (not in a function)
> >    81 |     DEF_OL_FLAG(DP_PACKET_OL_TX_TCP_CKSUM,
> > RTE_MBUF_F_TX_TCP_CKSUM, 0x200),
> >       |                                           
> > ^~~~~~~~~~~~~~~~~~~~~~~
> > lib/dp-packet.h:52:57: note: in definition of macro ‘DEF_OL_FLAG’
> >    52 | #define DEF_OL_FLAG(NAME, DPDK_DEF, GENERIC_DEF) NAME =
> > DPDK_DEF
> >       |                                                        
> > ^~~~~~~~
> > lib/dp-packet.h:83:44: error: ‘RTE_MBUF_F_TX_UDP_CKSUM’ undeclared
> > here
> > (not in a function)
> >    83 |     DEF_OL_FLAG(DP_PACKET_OL_TX_UDP_CKSUM,
> > RTE_MBUF_F_TX_UDP_CKSUM, 0x400),
> >       |                                           
> > ^~~~~~~~~~~~~~~~~~~~~~~
> > lib/dp-packet.h:52:57: note: in definition of macro ‘DEF_OL_FLAG’
> >    52 | #define DEF_OL_FLAG(NAME, DPDK_DEF, GENERIC_DEF) NAME =
> > DPDK_DEF
> >       |                                                        
> > ^~~~~~~~
> > lib/dp-packet.h:85:45: error: ‘RTE_MBUF_F_TX_SCTP_CKSUM’ undeclared
> > here (not in a function)
> >    85 |     DEF_OL_FLAG(DP_PACKET_OL_TX_SCTP_CKSUM,
> > RTE_MBUF_F_TX_SCTP_CKSUM, 0x800),
> >       |                                            
> > ^~~~~~~~~~~~~~~~~~~~~~~~
> > lib/dp-packet.h:52:57: note: in definition of macro ‘DEF_OL_FLAG’
> >    52 | #define DEF_OL_FLAG(NAME, DPDK_DEF, GENERIC_DEF) NAME =
> > DPDK_DEF
> >       |                                                        
> > ^~~~~~~~
> > make[2]: *** [Makefile:4645: lib/bfd.lo] Error 1
> > make[2]: Leaving directory '/opt/ovs-2.17.7'
> > make[1]: *** [Makefile:5409: all-recursive] Error 1
> > make[1]: Leaving directory '/opt/ovs-2.17.7'
> > make: *** [Makefile:3079: all] Error 2
> > ```
> > 
> > Asking google did not help at all :( 
> > Did anyone encounter such errors?
> 
> Nvidia is using their closed-source versions of OVS and DPDK, so the
> versions you provided are not what you need.
> 
> Upstream OVS 2.17 works only with DPDK 21.11.  See the "What DPDK
> version
> does each Open vSwitch release work with?" section of releases FAQ:
>   https://docs.openvswitch.org/en/latest/faq/releases/
> 
> DPDK 22.11 is supported starting with OVS 3.1.  But I would guess
> that
> Nvidia's DPDK 22.11 is not actually an upstream DPDK 22.11.
> 
> Best regards, Ilya Maximets.
> 
> > 
> > btw. the Ethernet ports/hw that the Bluefield-2 has is a
> > Mellanox/Nvidia ConnectX-6, using the mlx5_core driver.
> > 
> > 
> > All comments are welcome :)
> > 
> > Thanks,
> > Levi

Attachment: signature.asc
Description: This is a digitally signed message part

_______________________________________________
discuss mailing list
disc...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-discuss

Reply via email to