]> git.droids-corp.org - dpdk.git/commitdiff
net/virtio: check mbuf is direct when using any layout
authorOlivier Matz <olivier.matz@6wind.com>
Mon, 9 May 2016 16:19:35 +0000 (18:19 +0200)
committerYuanhan Liu <yuanhan.liu@linux.intel.com>
Wed, 22 Jun 2016 04:10:54 +0000 (06:10 +0200)
The commit dd856dfcb9e74 introduced an optimization that prepends virtio
header to mbuf data. It can be used when the tx mbuf is writeable, so we
need to check that the mbuf is direct (i.e. it embeds its own data).

Fixes: dd856dfcb9e7 ("virtio: use any layout on Tx")
Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
drivers/net/virtio/virtio_rxtx.c

index 04f683264990fb1ae77f1e1127a423b71e3bbfbd..2411dbaee86681d5c803ce32e41b1ec6b1d09b4b 100644 (file)
@@ -873,6 +873,7 @@ virtio_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
                /* optimize ring usage */
                if (vtpci_with_feature(hw, VIRTIO_F_ANY_LAYOUT) &&
                    rte_mbuf_refcnt_read(txm) == 1 &&
+                   RTE_MBUF_DIRECT(txm) &&
                    txm->nb_segs == 1 &&
                    rte_pktmbuf_headroom(txm) >= hdr_size &&
                    rte_is_aligned(rte_pktmbuf_mtod(txm, char *),