[ovs-dev] [PATCH v2] Do not flush tx queue which is shared among CPUs since it is always flushed

Pravin Shelar pshelar at nicira.com
Tue Jun 16 06:35:59 UTC 2015


On Mon, Jun 8, 2015 at 7:42 PM, Pravin Shelar <pshelar at nicira.com> wrote:
> On Mon, Jun 8, 2015 at 6:13 PM, Wei li <liw at dtdream.com> wrote:
>> When tx queue is shared among CPUS,the pkts always be flush in 'netdev_dpdk_eth_send'
>> So it is unnecessarily for flushing in netdev_dpdk_rxq_recv
>> Otherwise tx will be accessed without locking
>>
>> Signed-off-by: Wei li <liw at dtdream.com>
>> ---
>> v1->v2: fix typo
>>
>>  lib/netdev-dpdk.c | 7 +++++--
>>  1 file changed, 5 insertions(+), 2 deletions(-)
>>
>> diff --git a/lib/netdev-dpdk.c b/lib/netdev-dpdk.c
>> index 63243d8..1e0a483 100644
>> --- a/lib/netdev-dpdk.c
>> +++ b/lib/netdev-dpdk.c
>> @@ -892,8 +892,11 @@ netdev_dpdk_rxq_recv(struct netdev_rxq *rxq_, struct dp_packet **packets,
>>      int nb_rx;
>>
>>      /* There is only one tx queue for this core.  Do not flush other
>> -     * queueus. */
>> -    if (rxq_->queue_id == rte_lcore_id()) {
>> +     * queues.
>> +     * Do not flush tx queue which is shared among CPUs
>> +     * since it is always flushed */
>> +    if (rxq_->queue_id == rte_lcore_id() &&
>> +               OVS_LIKELY(!dev->txq_needs_locking)) {
>>          dpdk_queue_flush(dev, rxq_->queue_id);
>>      }
>
> Patch looks good, But Daniele has plan to get rid of queue flushing
> logic. do you see problem with doing this?

Daniele
You mentiond t



More information about the dev mailing list