[dpdk-dev] [PATCH v2 3/7] vhost: refactor virtio_dev_merge_rx

2016-03-07 Thread Yuanhan Liu
On Mon, Mar 07, 2016 at 07:52:22AM +, Xie, Huawei wrote: > On 2/18/2016 9:48 PM, Yuanhan Liu wrote: > > Current virtio_dev_merge_rx() implementation just looks like the > > old rte_vhost_dequeue_burst(), full of twisted logic, that you > > can see same code block in quite many different places.

[dpdk-dev] [PATCH v2 3/7] vhost: refactor virtio_dev_merge_rx

2016-03-07 Thread Yuanhan Liu
On Mon, Mar 07, 2016 at 07:16:39AM +, Xie, Huawei wrote: > On 3/7/2016 3:04 PM, Xie, Huawei wrote: > > On 3/7/2016 2:49 PM, Yuanhan Liu wrote: > >> On Mon, Mar 07, 2016 at 06:38:42AM +, Xie, Huawei wrote: > >>> On 3/7/2016 2:35 PM, Yuanhan Liu wrote: > On Mon, Mar 07, 2016 at 06:22:25A

[dpdk-dev] [PATCH v2 3/7] vhost: refactor virtio_dev_merge_rx

2016-03-07 Thread Yuanhan Liu
On Mon, Mar 07, 2016 at 06:38:42AM +, Xie, Huawei wrote: > On 3/7/2016 2:35 PM, Yuanhan Liu wrote: > > On Mon, Mar 07, 2016 at 06:22:25AM +, Xie, Huawei wrote: > >> On 2/18/2016 9:48 PM, Yuanhan Liu wrote: > >>> + uint16_t idx = vq->avail->ring[avail_idx & (vq->size - 1)]; > >>> + uint32_t

[dpdk-dev] [PATCH v2 3/7] vhost: refactor virtio_dev_merge_rx

2016-03-07 Thread Yuanhan Liu
On Mon, Mar 07, 2016 at 06:22:25AM +, Xie, Huawei wrote: > On 2/18/2016 9:48 PM, Yuanhan Liu wrote: > > + uint16_t idx = vq->avail->ring[avail_idx & (vq->size - 1)]; > > + uint32_t vec_id = *vec_idx; > > + uint32_t len= *allocated; > > > There is bug not using volatile to retrieve t

[dpdk-dev] [PATCH v2 3/7] vhost: refactor virtio_dev_merge_rx

2016-03-07 Thread Xie, Huawei
On 3/7/2016 4:36 PM, Yuanhan Liu wrote: > On Mon, Mar 07, 2016 at 07:52:22AM +, Xie, Huawei wrote: >> On 2/18/2016 9:48 PM, Yuanhan Liu wrote: >>> Current virtio_dev_merge_rx() implementation just looks like the >>> old rte_vhost_dequeue_burst(), full of twisted logic, that you >>> can see same

[dpdk-dev] [PATCH v2 3/7] vhost: refactor virtio_dev_merge_rx

2016-03-07 Thread Xie, Huawei
On 2/18/2016 9:48 PM, Yuanhan Liu wrote: > Current virtio_dev_merge_rx() implementation just looks like the > old rte_vhost_dequeue_burst(), full of twisted logic, that you > can see same code block in quite many different places. > > However, the logic of virtio_dev_merge_rx() is quite similar to

[dpdk-dev] [PATCH v2 3/7] vhost: refactor virtio_dev_merge_rx

2016-03-07 Thread Xie, Huawei
On 3/7/2016 3:04 PM, Xie, Huawei wrote: > On 3/7/2016 2:49 PM, Yuanhan Liu wrote: >> On Mon, Mar 07, 2016 at 06:38:42AM +, Xie, Huawei wrote: >>> On 3/7/2016 2:35 PM, Yuanhan Liu wrote: On Mon, Mar 07, 2016 at 06:22:25AM +, Xie, Huawei wrote: > On 2/18/2016 9:48 PM, Yuanhan Liu wro

[dpdk-dev] [PATCH v2 3/7] vhost: refactor virtio_dev_merge_rx

2016-03-07 Thread Xie, Huawei
On 3/7/2016 2:49 PM, Yuanhan Liu wrote: > On Mon, Mar 07, 2016 at 06:38:42AM +, Xie, Huawei wrote: >> On 3/7/2016 2:35 PM, Yuanhan Liu wrote: >>> On Mon, Mar 07, 2016 at 06:22:25AM +, Xie, Huawei wrote: On 2/18/2016 9:48 PM, Yuanhan Liu wrote: > + uint16_t idx = vq->avail->ring[ava

[dpdk-dev] [PATCH v2 3/7] vhost: refactor virtio_dev_merge_rx

2016-03-07 Thread Xie, Huawei
On 3/7/2016 2:35 PM, Yuanhan Liu wrote: > On Mon, Mar 07, 2016 at 06:22:25AM +, Xie, Huawei wrote: >> On 2/18/2016 9:48 PM, Yuanhan Liu wrote: >>> + uint16_t idx = vq->avail->ring[avail_idx & (vq->size - 1)]; >>> + uint32_t vec_id = *vec_idx; >>> + uint32_t len= *allocated; >>> >> T

[dpdk-dev] [PATCH v2 3/7] vhost: refactor virtio_dev_merge_rx

2016-03-07 Thread Xie, Huawei
On 2/18/2016 9:48 PM, Yuanhan Liu wrote: > + uint16_t idx = vq->avail->ring[avail_idx & (vq->size - 1)]; > + uint32_t vec_id = *vec_idx; > + uint32_t len= *allocated; > There is bug not using volatile to retrieve the avail idx.

[dpdk-dev] [PATCH v2 3/7] vhost: refactor virtio_dev_merge_rx

2016-02-18 Thread Yuanhan Liu
Current virtio_dev_merge_rx() implementation just looks like the old rte_vhost_dequeue_burst(), full of twisted logic, that you can see same code block in quite many different places. However, the logic of virtio_dev_merge_rx() is quite similar to virtio_dev_rx(). The big difference is that the m