[dpdk-dev] [RFC 21/29] net/virtio: free mbuf when need to use
Tiwei Bie
tiwei.bie at intel.com
Wed Jun 21 04:57:57 CEST 2017
Signed-off-by: Tiwei Bie <tiwei.bie at intel.com>
---
drivers/net/virtio/virtio_rxtx_1.1.c | 15 ++++++---------
1 file changed, 6 insertions(+), 9 deletions(-)
diff --git a/drivers/net/virtio/virtio_rxtx_1.1.c b/drivers/net/virtio/virtio_rxtx_1.1.c
index 05f9dc7..fdc7402 100644
--- a/drivers/net/virtio/virtio_rxtx_1.1.c
+++ b/drivers/net/virtio/virtio_rxtx_1.1.c
@@ -72,14 +72,6 @@ virtio_xmit_cleanup(struct virtqueue *vq)
idx = vq->vq_used_cons_idx & (size - 1);
while ((desc[idx].flags & DESC_HW) == 0) {
- struct vq_desc_extra *dxp;
-
- dxp = &vq->vq_descx[idx];
- if (dxp->cookie != NULL) {
- rte_pktmbuf_free(dxp->cookie);
- dxp->cookie = NULL;
- }
-
idx = (++vq->vq_used_cons_idx) & (size - 1);
vq->vq_free_cnt++;
@@ -96,10 +88,15 @@ virtio_xmit(struct virtnet_tx *txvq, struct rte_mbuf *mbuf, int first_mbuf)
struct vring_desc_1_1 *desc = vq->vq_ring.desc_1_1;
uint16_t idx;
uint16_t head_idx = (vq->vq_avail_idx++) & (vq->vq_nentries - 1);
+ struct vq_desc_extra *dxp;
idx = head_idx;
vq->vq_free_cnt -= mbuf->nb_segs + 1;
- vq->vq_descx[idx].cookie = mbuf;
+
+ dxp = &vq->vq_descx[idx];
+ if (dxp->cookie != NULL)
+ rte_pktmbuf_free(dxp->cookie);
+ dxp->cookie = mbuf;
desc[idx].addr = txvq->virtio_net_hdr_mem +
RTE_PTR_DIFF(&txr[idx].tx_hdr, txr);
--
2.7.4
More information about the dev
mailing list