[dpdk-dev] [PATCH v1 01/14] vhost: add single packet enqueue function

Stephen Hemminger stephen at networkplumber.org
Mon Sep 23 18:06:21 CEST 2019


This code could be more concise.

> +/*
> + * Returns -1 on fail, 0 on success
> + */

That is standard convention, and probably doesn't need a comment.

> +static inline int
> +vhost_enqueue_single_packed(struct virtio_net *dev, struct vhost_virtqueue *vq,
> +	struct rte_mbuf *pkt, struct buf_vector *buf_vec, uint16_t *nr_descs)
> +{
> +	uint16_t nr_vec = 0;
> +
> +	uint16_t avail_idx;
> +	uint16_t max_tries, tries = 0;
> +
> +	uint16_t buf_id = 0;
> +	uint32_t len = 0;
> +	uint16_t desc_count;

You don't need extra blank lines in declarations.

> +
> +	uint32_t size = pkt->pkt_len + dev->vhost_hlen;
> +	avail_idx = vq->last_avail_idx;
> +
> +	if (rxvq_is_mergeable(dev))
> +		max_tries = vq->size - 1;
> +	else
> +		max_tries = 1;
> +
> +	uint16_t num_buffers = 0;
> +
> +	while (size > 0) {
> +		/*
> +		 * if we tried all available ring items, and still
> +		 * can't get enough buf, it means something abnormal
> +		 * happened.
> +		 */
> +		if (unlikely(++tries > max_tries))
> +			return -1;
> +
> +		if (unlikely(fill_vec_buf_packed(dev, vq,
> +						avail_idx, &desc_count,
> +						buf_vec, &nr_vec,
> +						&buf_id, &len,
> +						VHOST_ACCESS_RW) < 0)) {
> +			return -1;
> +		}

Brackets are not necessary on single statement return.

> +		len = RTE_MIN(len, size);
> +
> +		size -= len;
No need for blank line in between.

> +
> +		avail_idx += desc_count;
> +		if (avail_idx >= vq->size)
> +			avail_idx -= vq->size;
> +
> +		*nr_descs += desc_count;
> +		num_buffers += 1;
> +	}
> +
> +	if (copy_mbuf_to_desc(dev, vq, pkt,
> +					buf_vec, nr_vec,
> +					num_buffers) < 0) {
> +		return 0;
> +	}
> +
> +	return 0;
> +}
> +
> +


More information about the dev mailing list