[dpdk-dev] virtio: check mbuf is direct when using any layout
Commit Message
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: dd856dfcb9e74 "virtio: use any layout on Tx"
Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
---
drivers/net/virtio/virtio_rxtx.c | 1 +
1 file changed, 1 insertion(+)
Comments
On Mon, May 09, 2016 at 06:19:35PM +0200, Olivier Matz wrote:
> 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: dd856dfcb9e74 "virtio: use any layout on Tx"
Missing "()" here. Fixed and applied to dpdk-next-virtio.
Thanks.
--yliu
@@ -886,6 +886,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 *),