First of all thank you Flavio for your reply and sorry for late reply
but I had to switch to something else. Now I resume my ovs ramp up and
have some additional problems.
My goal is actually to measure performance gain resulting from
offloading of flow matching to HW. I started with Marvell (even though
it does not support at the moment RSS+MARK action in DPDK flow API)
since I thought that if I get it up and running that would be a good
starting point for adding support for flow matching offload to Marvell
PMD. However I do have problems even with what seems to be already
supported.
For the moment I suspend the starting of OVS/DPDK on Marvell PMD and I'm
trying to bring up the OVS with Mellanox MLX5 PMD. That should be
supported according to the documentation however I fail to bring it up.
Maybe there is something very basic that I get wrong so I'd like to
solicit some help to first start OVS/DPDK on this card (MCX516A-CDAT).
Once I get this up and running I'll move to Marvell PMDs.
Let me shortly describe my attempt - maybe you'll spot something wrong.
1. I compile and install DPDK and test if testpmd has no problems
(output at the end [1] in order to not clutter this e-mail too much).
2. Then I configure ovs
./configure --with-dpdk=$HOME/dpdk-install/usr/local
--with-linux=/lib/modules/$(uname -r)/build LIBS="-libverbs -lmlx5"
and install it.
3. I tell OVS to initialize DPDK
# ovs-vsctl get Open_vSwitch . other_config
{dpdk-init="true"}
4. I start it (without any bridge)
# ovs-ctl --delete-bridges start
* Starting ovsdb-server
* system ID not configured, please use --system-id
* Configuring Open vSwitch system IDs
Zone 0: name:<rte_eth_dev_data>, IO:0x5e9b6000, len:0x34900,
virt:0x7f8dd29b6000, socket_id:0, flags:0
* Starting ovs-vswitchd
* Enabling remote OVSDB managers
5. Then I attach to ovs-vswitchd in gdb and set breakpoint in
rte_eal_hotplug_add
6. Then I add bridge and first DPDK port
# ovs-vsctl add-br br0 -- set bridge br0 datapath_type=netdev
# ovs-vsctl add-port br0 dpdk-p0 -- set Interface dpdk-p0 type=dpdk
options:dpdk-devargs=08:00.0
7. In the debugger I step through until I get to pci_find_device() and
in there the comparison function used is 'cmp_detached_dev_name()' which
checks for dev->drive to be NULL and in my case it is not as it points
to mlx5 driver:
(gdb) p name
$23 = 0x262c250 "08:00.0"
(gdb) p *dev
$24 = {next = {tqe_next = 0x0, tqe_prev = 0x0}, name = 0x25fa5c0 "08:00.0",
driver = 0xc96b30 <mlx5_driver+16>, numa_node = 0, devargs = 0x25fa5a0}
(gdb) n
55 return 1;
and as a result it fails to add port:
ovs-vsctl: Error detected while setting up 'dpdk-p0': Error attaching
device '08:00.0' to DPDK. See ovs-vswitchd log for details.
ovs-vsctl: The default log directory is "/usr/local/var/log/openvswitch".
and in there the confirmation from DPDK:
2018-10-08T09:38:28.234Z|00058|dpdk|ERR|EAL: Cannot find unplugged
device (08:00.0)
2018-10-08T09:38:28.234Z|00059|netdev_dpdk|WARN|Error attaching device
'08:00.0' to DPDK
2018-10-08T09:38:28.234Z|00060|netdev|WARN|dpdk-p0: could not set
configuration (Invalid argument)
So basically port seems to be attached (to correct driver) but somehow
detached port is searched for. Seems very much like some config problem
but I don't know OVS enough to figure it out.
So I'd still appreciate some help in bringing OVS w/ DPDK up.
Best regards
Andrzej
PS. Below are some comments to your last reply Flavio.
On 17.09.2018 20:25, Flavio Leitner wrote:
> On Thu, Sep 13, 2018 at 04:56:51PM +0200, Andrzej Ostruszka wrote:
[...]
>> modprobe: ERROR: could not insert 'openvswitch': Unknown symbol in
>> module, or unknown parameter (see d
>> mesg)
>
> You can work around that in modprobe.conf, e.g.:
> install openvswitch /bin/true
Thanks I have not thought about that.
[...]
>> # ovs-vsctl show
>> 78e4732f-e2e1-4784-971c-f4d67e163a26
>>
>> Bridge "br0"
>>
>> Port "br0"
>>
>> Interface "br0"
>>
>> type: internal
>>
>> ovs_version: "2.9.2"
>>
>>
>> so it looks like I'm good to go but I get problems when I try to add
>> ports to it.
>
> BTW the bridge 'br0' also needs to be in the userspace DP.
Ohh, that seems to be in contrast to what this doc:
http://docs.openvswitch.org/en/latest/howto/dpdk/
seems to suggest. It tells that the bridge has to be netdev (or maybe I
don't understand what the 'netdev' datapath type is).
[...]
> I'd say to stop trying with OVS and try ``testpmd´´ from DPDK directly and
> see if you can get it working. It is the simplest possible scenario
> where you can tell that at least the bare bones are working.
The testpmd on that board was running without any problems. And the
same is for the case of MLX5 based board as mentioned above. I must be
missing something.
Best regards
Andrzej
[1] Sample output with testing of MLX5 via testpmd (the links are down
since I have not yet plugged anything)
# ./testpmd -w 08:00.0 -w 08:00.1 -- -i
EAL: Detected 4 lcore(s)
EAL: No free hugepages reported in hugepages-1048576kB
EAL: Probing VFIO support...
EAL: PCI device 0000:08:00.0 on NUMA socket -1
EAL: Invalid NUMA socket, default to 0
EAL: probe driver: 15b3:1019 net_mlx5
PMD: net_mlx5: PCI information matches, using device "mlx5_0" (SR-IOV:
false)
PMD: net_mlx5: 1 port(s) detected
PMD: net_mlx5: MPS is enabled
PMD: net_mlx5: port 1 MAC address is 24:8a:07:ad:7a:92
EAL: PCI device 0000:08:00.1 on NUMA socket -1
EAL: Invalid NUMA socket, default to 0
EAL: probe driver: 15b3:1019 net_mlx5
PMD: net_mlx5: PCI information matches, using device "mlx5_1" (SR-IOV:
false)
PMD: net_mlx5: 1 port(s) detected
PMD: net_mlx5: MPS is enabled
PMD: net_mlx5: port 1 MAC address is 24:8a:07:ad:7a:93
Interactive-mode selected
USER1: create a new mbuf pool <mbuf_pool_socket_0>: n=171456, size=2176,
socket=0
Configuring Port 0 (socket 0)
PMD: net_mlx5: 0xe00ac0: TX queues number update: 0 -> 1
PMD: net_mlx5: 0xe00ac0: RX queues number update: 0 -> 1
Port 0: 24:8A:07:AD:7A:92
Configuring Port 1 (socket 0)
PMD: net_mlx5: 0xe04b40: TX queues number update: 0 -> 1
PMD: net_mlx5: 0xe04b40: RX queues number update: 0 -> 1
Port 1: 24:8A:07:AD:7A:93
Checking link statuses...
Done
testpmd> show port info all
********************* Infos for port 0 *********************
MAC address: 24:8A:07:AD:7A:92
Driver name: net_mlx5
Connect to socket: 0
memory allocation on the socket: 0
Link status: down
Link speed: 0 Mbps
Link duplex: full-duplex
MTU: 1500
Promiscuous mode: enabled
Allmulticast mode: disabled
Maximum number of MAC addresses: 128
Maximum number of MAC addresses of hash filtering: 0
VLAN offload:
strip on
filter on
qinq(extend) off
Hash key size in bytes: 40
Redirection table size: 1
No flow type is supported.
Max possible RX queues: 65535
Max possible number of RXDs per queue: 65535
Min possible number of RXDs per queue: 0
RXDs number alignment: 1
Max possible TX queues: 65535
Max possible number of TXDs per queue: 65535
Min possible number of TXDs per queue: 0
TXDs number alignment: 1
********************* Infos for port 1 *********************
MAC address: 24:8A:07:AD:7A:93
Driver name: net_mlx5
Connect to socket: 0
memory allocation on the socket: 0
Link status: down
Link speed: 0 Mbps
Link duplex: full-duplex
MTU: 1500
Promiscuous mode: enabled
Allmulticast mode: disabled
Maximum number of MAC addresses: 128
Maximum number of MAC addresses of hash filtering: 0
VLAN offload:
strip on
filter on
qinq(extend) off
Hash key size in bytes: 40
Redirection table size: 1
No flow type is supported.
Max possible RX queues: 65535
Max possible number of RXDs per queue: 65535
Min possible number of RXDs per queue: 0
RXDs number alignment: 1
Max possible TX queues: 65535
Max possible number of TXDs per queue: 65535
Min possible number of TXDs per queue: 0
TXDs number alignment: 1
_______________________________________________
discuss mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-discuss