+static inline void __attribute__((always_inline))
+virtio_xmit_cleanup(struct virtqueue *vq)
+{

Please don't use always inline, frustrating the compiler isn't going
to help.

+       uint16_t i, desc_idx;
+       int nb_free = 0;
+       struct rte_mbuf *m, *free[VIRTIO_TX_MAX_FREE_BUF_SZ];
+
+       desc_idx = (uint16_t)(vq->vq_used_cons_idx &
+               ((vq->vq_nentries >> 1) - 1));
+       free[0] = (struct rte_mbuf *)vq->vq_descx[desc_idx++].cookie;
+       nb_free = 1;
+
+       for (i = 1; i < VIRTIO_TX_FREE_NR; i++) {
+               m = (struct rte_mbuf *)vq->vq_descx[desc_idx++].cookie;
+               if (likely(m->pool == free[0]->pool))
+                       free[nb_free++] = m;
+               else {
+                       rte_mempool_put_bulk(free[0]->pool, (void **)free,
+                               nb_free);
+                       free[0] = m;
+                       nb_free = 1;
+               }
+       }
+
+       rte_mempool_put_bulk(free[0]->pool, (void **)free, nb_free);
+       vq->vq_used_cons_idx += VIRTIO_TX_FREE_NR;
+       vq->vq_free_cnt += (VIRTIO_TX_FREE_NR << 1);
+
+       return;
+}

Don't add return; at end of void functions. It only clutters
things for no reason.

Reply via email to