[dpdk-users] Device-agnostic VMDQ_DCB using only VLAN ID and PRIORITY, without MAC address tables

Andrea Bigagli andrea.bigagli at commprove.com
Mon Oct 23 16:30:42 CEST 2017

I’m in a non-virtualised environment where I have a dpdk-based receiver that needs to direct traffic to different RX queues based _ONLY_ on vlan’s VID and PCP (i.e. vlan_id and priority).
I can’t rely on any specific mac addresses/ranges that I know in advance to choose the RX queues and I cannot use VFs (max_vfs = 0 in the PMD).
If it makes any difference, I don’t need to TX anything, just receive traffic for monitoring purposes.

In the past (dpdk-16.11), since I was only working with ixgbe devices, I hacked my way around and invoked dev_ops->set_vf_rx_mode with "ETH_VMDQ_ACCEPT_HASH_UC | ETH_VMDQ_ACCEPT_BROADCAST | ETH_VMDQ_ACCEPT_MULTICAST” flags, which ultimately invoked ixgbe_set_pool_rx_mode in the PMD.

It seemed a bit of a kludge, but it has worked well.

Now I’m facing two problems: I’m going to start using also i40 devices and I’m going to upgrade to dpdk-17.08/17.11.

1) Latest DPDKs (since 17.02 IIRC) don’t have anymore a “set_vf_rx_mode” devop and the PMD has now a dedicated rte_pmd_ixgbe_set_vf_rxmode which would do what I want, but it now seems to force you to have VFs enabled, as it checks against max_vfs being > 0, which is not my case.

2) I’ve never used i40 before and I don’t even know where to start here.

I have seen a “rx_mode” flag variable inside the rte_eth_vmdq_rx_conf structure that is designed to be set with the ETH_VMDQ_ACCEPT_* flags that I was using when invoking directly the set_vf_rx_mode devop, but I can see it is only used when in VMDQ_ONLY and not in VMDQ_DCB.

So, to summarise, I don’t use VFs and I don’t have any control / prior knowledge on mac addresses, but I’d like to perform VMDQ_DCB multi queue RX using only vlan’s VID and PCP on at least ixgbe and i40 PMDs, with latest DPDK.
Is there a supported and device-agnostic way to do that?

More information about the users mailing list