Thread (42 messages) 42 messages, 8 authors, 2017-02-20

Re: [PATCH v3 3/4] bonding: take queue spinlock in rx/tx burst functions

From: Iremonger, Bernard <hidden>
Date: 2016-06-13 12:28:11

Hi Bruce,

<snip>
Subject: Re: [dpdk-dev] [PATCH v3 3/4] bonding: take queue spinlock in rx/tx
burst functions

On Sun, Jun 12, 2016 at 06:11:28PM +0100, Bernard Iremonger wrote:
quoted
Use rte_spinlock_trylock() in the rx/tx burst functions to take the
queue spinlock.

Signed-off-by: Bernard Iremonger <redacted>
Acked-by: Konstantin Ananyev <redacted>
---
Why does this particular PMD need spinlocks when doing RX and TX, while
other device types do not? How is adding/removing devices from a bonded
device different to other control operations that can be done on physical
PMDs? Is this not similar to say bringing down or hotplugging out a physical
port just before an RX or TX operation takes place?
For all other PMDs we rely on the app to synchronise control and data plane
operation - why not here?

/Bruce
This issue arose during VM live migration testing. 
For VM live migration it is necessary (while traffic is running) to be able to remove a bonded slave device, stop it, close it and detach it.
It a slave device is removed from a bonded device while traffic is running a segmentation fault may occur in the rx/tx burst function. The spinlock has been added to prevent this occurring.

The bonding device already uses a spinlock to synchronise between the add and remove functionality and the slave_link_status_change_monitor code. 

Previously testpmd did not allow, stop, close or detach of PMD while traffic was running. Testpmd has been modified with the following patchset 

http://dpdk.org/dev/patchwork/patch/13472/

It now allows stop, close and detach of a PMD provided in it is not forwarding and is not a slave of bonded PMD.

 Regards,

Bernard.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help