[RFC PATCH 4/6] ethdev: extend VMDq/DCB configuration with queue mapping
Medvedkin, Vladimir
vladimir.medvedkin at intel.com
Tue Oct 7 17:21:02 CEST 2025
Hi Ivan,
On 9/25/2025 6:59 PM, Ivan Malov wrote:
> Hi Vladimir,
>
> On Sat, 30 Aug 2025, Vladimir Medvedkin wrote:
>
>> Currently DCB Traffic Class queue mapping is only used when calling get
>> DCB info API, while setting up queue mappings is up to each individual
>> driver. Use the tc queue mapping structure to enable setting up custom
>> mapping explicitly.
>>
>
> snip
>
>> -/**
>> - * A structure used to get the information of queue and
>> - * TC mapping on both Tx and Rx paths.
>> - */
>> -struct rte_eth_dcb_tc_queue_mapping {
>> - /** Rx queues assigned to tc per Pool */
>> - struct {
>> - uint16_t base;
>> - uint16_t nb_queue;
>> - } tc_rxq[RTE_ETH_MAX_VMDQ_POOL][RTE_ETH_DCB_NUM_TCS];
>> - /** Rx queues assigned to tc per Pool */
>> - struct {
>> - uint16_t base;
>> - uint16_t nb_queue;
>> - } tc_txq[RTE_ETH_MAX_VMDQ_POOL][RTE_ETH_DCB_NUM_TCS];
>> -};
>
> May I clarify: is 'tc_rxq' structure supposed to facilitate the use
> case where:
> - VLAN ID (VID) of the packet selects a 'pool' containing some entries;
I think it could be VLAN ID and/or dst MAC address
> - VLAN UP (priority) selects an entry in the 'pool' (gives 'base',
> 'nb_queue);
VLAN UP selects TC (could be many to one mapping). And then TC selects
an entry
> - if 'nb_queue' is 1, we send the packet to a specific queue ('base');
> - if 'nb_queue > 1', we perform RSS across 'nb_queue' relative to 'base'?
yes
>
> I'm slightly confused, as [3/6] seems to remove
> 'rte_eth_vmdq_dcb_conf' and
> the 'pool_map' (with 'vlan_id') and I'm not sure where it should
> resurface.
Correct, I think we should separate DCB from VMDQ configuration.
Currently rte_eth_vmdq_dcb_conf combines two different technologies
because of how old NICs were working wit respect to queue assignment.
But now I think it would be better to get rid of `struct
rte_eth_dcb_tc_queue_mapping`, at least inside the configuration block,
and replace it with a somehow similar struct, but with one-dimensional
array indexed only by TC (i.e. remove `[RTE_ETH_MAX_VMDQ_POOL]`),
implying similar per-TC queue assignment for each pool.
>
> Thank you.
--
Regards,
Vladimir
More information about the dev
mailing list