vmxnet3: leverage data ring on Tx path
authorYong Wang <yongwang@vmware.com>
Wed, 5 Nov 2014 01:49:43 +0000 (17:49 -0800)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Fri, 14 Nov 2014 16:32:27 +0000 (17:32 +0100)
commit2e84937377dae5c913f739bb3b94a29a3310a305
tree024f4eddb9d6c788b9c9b85b4194896183449e2c
parent14680e3747d5c313d50c1953a305ec36260574e8
vmxnet3: leverage data ring on Tx path

Data_ring is a pre-mapped guest ring buffer that vmxnet3
backend has access to directly without a need for buffer
address mapping and unmapping during packet transmission.
It is useful in reducing device emulation cost on the tx
path.  There are some additional cost though on the guest
driver for packet copy and overall it's a win.

This patch leverages the data_ring for packets with a
length less than or equal to the data_ring entry size
(128B).  For larger packet, we won't use the data_ring
as that requires one extra tx descriptor and it's not
clear if doing this will be beneficial.

Performance results show that this patch significantly
boosts vmxnet3 64B tx performance (pkt rate) for l2fwd
application on a Ivy Bridge server by >20% at which
point we start to hit some bottleneck on the rx side.

Signed-off-by: Yong Wang <yongwang@vmware.com>
lib/librte_pmd_vmxnet3/vmxnet3_ethdev.c
lib/librte_pmd_vmxnet3/vmxnet3_ring.h
lib/librte_pmd_vmxnet3/vmxnet3_rxtx.c