[dpdk-users] [ovs-dev] adding dpdk ports sharing same pci address to ovs-dpdk bridge

Yuanhan Liu yliu at fridaylinux.org
Tue Nov 7 10:08:07 CET 2017

On Tue, Oct 10, 2017 at 06:26:51PM +0530, devendra rawat wrote:
>     > Hi Everyone,
>     >
>     > Anything finalized for sorting out this issue, do you need any more
>     > information regarding this issue ?
>     Hi,
>     I put together a very rough RFC that aims to work-around the issue:
>     https://mail.openvswitch.org/pipermail/ovs-dev/2017-October/339496.html
>     It hasn't been tested as I don't have access to the type of card that has
>     one PCI for multiple ports.
>     If anybody does have access to such a device, I welcome you to try the
>     patch although I'm not hopeful it will succeed first -pass.
>     Looking for feedback on implementation, interface, etc.
>  I applied the patch on top of OVS v2.8.1 and used DPDK v17.08. I used Mellanox
> ConnectX-3 pro NIC for testing, this NIC provides two 10G ports
> that share a single PCI address.
> The patch is working fine, I was able to add both the 10G ports to OVS bridge
> by specifying the port no. (0 or 1) in the dpdk-devargs.
> # ovs-vsctl add-port br0 dpdk0 -- set Interface dpdk0 type=dpdk
> options:dpdk-devargs=0002:01:00.0,0
> # ovs-vsctl add-port br0 dpdk0 -- set Interface dpdk0 type=dpdk
> options:dpdk-devargs=0002:01:00.0,1

I think the patch should work. But there something I want to point out:

- you were assuming the ports with the same PCI addresses are continuous
  in the port number. I don't think it's a good assumption, though it's
  very likely it's always the case in reality.

- I also think the index can not tell which port it is from the ports
  having the same PCI address.

Having said that, I think using the mac address to referencing a DPDK port
might be a better idea. Something like:


Then from the ovs-dpdk point of you, it can detect whether it's a mac
or an PCI address, and use that to get the right port.

Or, we could have it both, if that's really needed:


In such way, the original issue would also be solved. Moreover, people
know exactly what the underlie port he want to deal with.



> the port no. (0 and 1) are bound to actual physical port, i.e if I keep on
> adding and deleting port no. 0 to bridge br0 multiple times,
> every time I add the port back to br0, the same physical port is added to
> bridge br0.

More information about the users mailing list