On 10/19/2015 12:17 PM, Stephen Hemminger wrote:
> On Sun, 18 Oct 2015 14:29:03 +0800
> Huawei Xie <huawei.xie at intel.com> wrote:
>
>> +
>> + 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;
>> + }
>> + }
> This assumes all transmits are from the same pool, which is not necessarily
> true.
Don't get you. It accumulates all the mbufs from the same pool, free all
of them until it meets one from a different pool.
if (likely(m->pool == free[0]->pool))
>