[dpdk-dev] [PATCH v5 2/6] vhost: rewrite enqueue
Maxime Coquelin
maxime.coquelin at redhat.com
Thu Sep 15 18:35:35 CEST 2016
Hi,
On 09/14/2016 10:20 AM, Wang, Zhihong wrote:
>>> + desc_current =
>>> + vq->avail->ring[(vq->last_used_idx)
>> &
>>> + (vq->size - 1)];
>>> + desc_chain_head = desc_current;
>>> + desc = &vq->desc[desc_current];
>>> + desc_addr = gpa_to_vva(dev, desc->addr);
>>> + if (unlikely(!desc_addr))
>>> + goto error;
>>>
>>> - desc = &vq->desc[desc->next];
>>> - desc_addr = gpa_to_vva(dev, desc->addr);
>>> - if (unlikely(!desc_addr))
>>> - return -1;
>>> -
>>> - desc_offset = 0;
>>> - desc_avail = desc->len;
>>> + desc_chain_len = 0;
>>> + desc_offset = 0;
>> As I commented on v3, there is code duplication between next flag, and
>> mrg buf cases:
>> desc_offset = 0;
>>
>> and:
>>
>> desc = &vq->desc[desc_current];
>> desc_addr = gpa_to_vva(dev, desc->addr);
>> if (unlikely(!desc_addr))
>> goto error;
>>
>
> Do you mean to add something like:
>
> static inline int __attribute__((always_inline))
> get_desc(struct virtio_net *dev, struct vhost_virtqueue *vq,
> uint32_t desc_idx, struct vring_desc **desc,
> uint64_t *desc_addr)
> {
> *desc = &vq->desc[desc_idx];
> *desc_addr = gpa_to_vva(dev, (*desc)->addr);
> if (unlikely(!(*desc_addr)))
> return -1;
>
> return 0;
> }
I meant, move this code after the if/else.
You can do it in a function if it is done elsewhere in the file.
More information about the dev
mailing list