Thx a lot, Applied to master!
On Thu, Sep 18, 2014 at 5:21 PM, Daniele Di Proietto <ddiproie...@vmware.com > wrote: > Thanks for the fix Alex! > > Acked-by: Daniele Di Proietto <ddiproie...@vmware.com> > > On 9/18/14, 5:09 PM, "Alex Wang" <al...@nicira.com> wrote: > > >Since dpdk_do_tx_copy() will be called by both pmd and > >non-pmd thread, it should take the queue id as input. > >The current ovs always uses NON_PMD_THREAD_TX_QUEUE > >as queue id, which causes unprotected multi-access > >to the same queue. > > > >This commit fixes the issue by passing the queue id > >to dpdk_do_tx_copy(). > > > >Reported-by: Ethan Jackson <et...@nicira.com> > >Signed-off-by: Alex Wang <al...@nicira.com> > >--- > > lib/netdev-dpdk.c | 11 +++++------ > > 1 file changed, 5 insertions(+), 6 deletions(-) > > > >diff --git a/lib/netdev-dpdk.c b/lib/netdev-dpdk.c > >index 1e12e8b..f2a42e8 100644 > >--- a/lib/netdev-dpdk.c > >+++ b/lib/netdev-dpdk.c > >@@ -70,8 +70,6 @@ static struct vlog_rate_limit rl = > >VLOG_RATE_LIMIT_INIT(5, 20); > > #define MP_CACHE_SZ (256 * 2) > > #define SOCKET0 0 > > > >-#define NON_PMD_THREAD_TX_QUEUE 0 > >- > > #define NIC_PORT_RX_Q_SIZE 2048 /* Size of Physical NIC RX Queue, Max > >(n+32<=4096)*/ > > #define NIC_PORT_TX_Q_SIZE 2048 /* Size of Physical NIC TX Queue, Max > >(n+32<=4096)*/ > > > >@@ -783,7 +781,8 @@ dpdk_queue_pkts(struct netdev_dpdk *dev, int qid, > > > > /* Tx function. Transmit packets indefinitely */ > > static void > >-dpdk_do_tx_copy(struct netdev *netdev, struct dpif_packet ** pkts, int > >cnt) > >+dpdk_do_tx_copy(struct netdev *netdev, int qid, struct dpif_packet ** > >pkts, > >+ int cnt) > > OVS_NO_THREAD_SAFETY_ANALYSIS > > { > > struct netdev_dpdk *dev = netdev_dpdk_cast(netdev); > >@@ -832,8 +831,8 @@ dpdk_do_tx_copy(struct netdev *netdev, struct > >dpif_packet ** pkts, int cnt) > > ovs_mutex_unlock(&dev->mutex); > > } > > > >- dpdk_queue_pkts(dev, NON_PMD_THREAD_TX_QUEUE, mbufs, newcnt); > >- dpdk_queue_flush(dev, NON_PMD_THREAD_TX_QUEUE); > >+ dpdk_queue_pkts(dev, qid, mbufs, newcnt); > >+ dpdk_queue_flush(dev, qid); > > > > if (!thread_is_pmd()) { > > ovs_mutex_unlock(&nonpmd_mempool_mutex); > >@@ -849,7 +848,7 @@ netdev_dpdk_send(struct netdev *netdev, int qid, > >struct dpif_packet **pkts, > > int i; > > > > if (!may_steal || pkts[0]->ofpbuf.source != OFPBUF_DPDK) { > >- dpdk_do_tx_copy(netdev, pkts, cnt); > >+ dpdk_do_tx_copy(netdev, qid, pkts, cnt); > > > > if (may_steal) { > > for (i = 0; i < cnt; i++) { > >-- > >1.7.9.5 > > > >_______________________________________________ > >dev mailing list > >dev@openvswitch.org > > > https://urldefense.proofpoint.com/v1/url?u=http://openvswitch.org/mailman/ > >listinfo/dev&k=oIvRg1%2BdGAgOoM1BIlLLqw%3D%3D%0A&r=MV9BdLjtFIdhBDBaw5z%2BU > >6SSA2gAfY4L%2F1HCy3VjlKU%3D%0A&m=LD%2F%2FRbiiFsW0UPz71GTUbMxTg33MzqvHsPG%2 > >BaBG7F6c%3D%0A&s=9f4e76b23ef2972b375cfa648354e5ea787e4cc2e803a42ee7181f460 > >191af0d > > _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev