From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stephen Hemminger Subject: Re: [PATCH v2 6/7] virtio: simple tx routine Date: Sun, 18 Oct 2015 21:19:25 -0700 Message-ID: <20151018211925.7c1b9fb2@xeon-e3> References: <1443537953-23917-1-git-send-email-huawei.xie@intel.com> <1445149744-3217-1-git-send-email-huawei.xie@intel.com> <1445149744-3217-7-git-send-email-huawei.xie@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Cc: dev@dpdk.org To: Huawei Xie Return-path: Received: from mail-pa0-f48.google.com (mail-pa0-f48.google.com [209.85.220.48]) by dpdk.org (Postfix) with ESMTP id 84D9B5A87 for ; Mon, 19 Oct 2015 06:19:15 +0200 (CEST) Received: by pabrc13 with SMTP id rc13so178036887pab.0 for ; Sun, 18 Oct 2015 21:19:15 -0700 (PDT) In-Reply-To: <1445149744-3217-7-git-send-email-huawei.xie@intel.com> List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" +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.