Thanks for all your insightful comments.
All make sense to me, and also allowed me to think on my next moves.

Thank you so much, Ilya.

If I progress in this regards, I will come back to you guys.

Cheers,
levi

On Thu, 2023-09-21 at 12:46 +0200, Ilya Maximets wrote:
> On 9/21/23 11:32, Levente Csikor wrote:
> > 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?
> 
> You may enable additional DPDK debug logs by setting --log-level
> in the dpdk-extra config.  However, your DPDK version is older than
> a hardware you're using.  Meaning, the mlx driver in DPDK 19.11
> likely just doesn't recognize the hardware and will not be able to
> use it.  You need to figure out how to build newer versions of DPDK.
> Also, representor syntax changed a few times in the past, so your
> script may not work with older versions of DPDK.
> 
> If you can't build DPDK on the board itself, cross-compiling may be
> an option:
>   https://doc.dpdk.org/guides/platform/bluefield.html
> 
> Also OVS 2.14 is likely a poor choice for hardware offloading.
> I would not recommend anything below 2.17.  3.1 would be a better.
> 
> > 
> > 
> > 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