[dpdk-dev] [PATCH 6/8] bond: handle slaves with fewer queues than bonding device
Declan Doherty
declan.doherty at intel.com
Tue Jan 5 14:46:05 CET 2016
On 04/12/15 19:18, Eric Kinzie wrote:
> On Fri Dec 04 19:36:09 +0100 2015, Andriy Berestovskyy wrote:
>> Hi guys,
>> I'm not quite sure if we can support less TX queues on a slave that easy:
>>
>>> queue_id = bond_slave_txqid(internals, i, bd_tx_q->queue_id);
>>> num_tx_slave = rte_eth_tx_burst(slaves[i], queue_id,
>>> slave_bufs[i], slave_nb_pkts[i]);
>>
>> It seems that two different lcores might end up writing to the same
>> slave queue at the same time, isn't it?
>>
>> Regards,
>> Andriy
>
> Andriy, I think you're probably right about this. Perhaps it should
> instead refuse to add or refuse to activate a slave with too few
> tx queues. Could probably fix this with another layer of buffering
> so that an lcore with a valid tx queue could pick up the mbufs later,
> but this doesn't seem very appealing.
>
> Eric
>
>
>> On Fri, Dec 4, 2015 at 6:14 PM, Stephen Hemminger
>> <stephen at networkplumber.org> wrote:
>>> From: Eric Kinzie <ekinzie at brocade.com>
>>>
>>> In the event that the bonding device has a greater number of tx and/or rx
>>> queues than the slave being added, track the queue limits of the slave.
>>> On receive, ignore queue identifiers beyond what the slave interface
>>> can support. During transmit, pick a different queue id to use if the
>>> intended queue is not available on the slave.
>>>
>>> Signed-off-by: Eric Kinzie <ekinzie at brocade.com>
>>> Signed-off-by: Stephen Hemminger <stephen at networkplumber.org>
>>> ---
...
I don't there is any straight forward way of supporting slaves with
different numbers of queues, the initial library was written with the
assumption that the number of tx/rx queues would always be the same on
each slave. This is why,when a slave is added to a bonded device we
reconfigure the queues. For features like RSS we have to have the same
number of rx queues otherwise the flow distribution to an application
could change in the case of a fail over event. Also by supporting
different numbers of queues between slaves we would be no longer be
supporting the standard behavior of ethdevs in DPDK were we expect that
by using different queues we don't require locking to be thread safe.
More information about the dev
mailing list