On 12/31/2015 11:39 PM, Pavel Fedin wrote: > Hello! > > Last minute note. I have found the problem but have no time to research and > fix it. > It happens because ovs first creates the device, starts it, then stops it, > and reconfigures queues. The second queue allocation > happens from within netdev_set_multiq(). Then ovs restarts the device and > proceeds to actually using it. > But, queues are not initialized properly in DPDK after the second > allocation. Because of this thing: > > /* On restart after stop do not touch queues */ > if (hw->started) > return 0; Hi Fedin,
As you see, I also think it is a bug. A device should be ok to start/stop/start... I already send a patch to fix this. http://dpdk.org/ml/archives/dev/2016-January/031010.html Thanks, Jianfeng > > It keeps us away from calling virtio_dev_rxtx_start(), which should in turn > call virtio_dev_vring_start(), which calls > vring_init(). So, VIRTQUEUE_NUSED() dies badly because vq->vq_ring all > contains NULLs. > See you all after 10th. And happy New Year again! > >