#
d5284f0d |
| 09-Feb-2023 |
Maxime Coquelin <maxime.coquelin@redhat.com> |
net/virtio: alloc Rx SW ring only if vectorized path
This patch only allocates the SW ring when vectorized datapath is used. It also moves the SW ring and fake mbuf in the virtnet_rx struct since th
net/virtio: alloc Rx SW ring only if vectorized path
This patch only allocates the SW ring when vectorized datapath is used. It also moves the SW ring and fake mbuf in the virtnet_rx struct since this is Rx-only.
Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com> Reviewed-by: Chenbo Xia <chenbo.xia@intel.com>
show more ...
|
#
d9908843 |
| 14-Apr-2021 |
Xueming Li <xuemingl@nvidia.com> |
net/virtio: fix vectorized Rx queue rearm
When Rx queue worked in vectorized mode and rxd <= 512, under traffic of high PPS rate, testpmd often start and receive packets of rxd without further growt
net/virtio: fix vectorized Rx queue rearm
When Rx queue worked in vectorized mode and rxd <= 512, under traffic of high PPS rate, testpmd often start and receive packets of rxd without further growth.
Testpmd started with rxq flush which tried to rx MAX_PKT_BURST(512) packets and drop. When Rx burst size >= Rx queue size, all descriptors in used queue consumed without rearm, device can't receive more packets. The next Rx burst returned at once since no used descriptors found, rearm logic was skipped, rx vq kept in starving state.
To avoid rx vq starving, this patch always check the available queue, rearm if needed even no used descriptor reported by device.
Fixes: fc3d66212fed ("virtio: add vector Rx") Fixes: 2d7c37194ee4 ("net/virtio: add NEON based Rx handler") Fixes: 52b5a707e6ca ("net/virtio: add Altivec Rx") Cc: stable@dpdk.org
Signed-off-by: Xueming Li <xuemingl@nvidia.com> Reviewed-by: David Christensen <drc@linux.vnet.ibm.com> Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
show more ...
|
#
3169550f |
| 16-Mar-2021 |
Maxime Coquelin <maxime.coquelin@redhat.com> |
net/virtio: remove reference to virtqueue in vrings
Vrings are part of the virtqueues, so we don't need to have a pointer to it in Vrings descriptions.
Instead, let's just subtract from its offset
net/virtio: remove reference to virtqueue in vrings
Vrings are part of the virtqueues, so we don't need to have a pointer to it in Vrings descriptions.
Instead, let's just subtract from its offset to calculate virtqueue address.
Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com> Reviewed-by: Chenbo Xia <chenbo.xia@intel.com> Reviewed-by: David Marchand <david.marchand@redhat.com> Tested-by: Balazs Nemeth <bnemeth@redhat.com>
show more ...
|
#
df96fd0d |
| 29-Jan-2021 |
Bruce Richardson <bruce.richardson@intel.com> |
ethdev: make driver-only headers private
The rte_ethdev_driver.h, rte_ethdev_vdev.h and rte_ethdev_pci.h files are for drivers only and should be a private to DPDK and not installed.
Signed-off-by:
ethdev: make driver-only headers private
The rte_ethdev_driver.h, rte_ethdev_vdev.h and rte_ethdev_pci.h files are for drivers only and should be a private to DPDK and not installed.
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com> Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com> Acked-by: Thomas Monjalon <thomas@monjalon.net> Acked-by: Steven Webster <steven.webster@windriver.com>
show more ...
|
#
f0f5d844 |
| 23-Sep-2020 |
Phil Yang <phil.yang@arm.com> |
eal: remove deprecated coherent IO memory barriers
Since the 20.08 release deprecated rte_cio_*mb APIs because these APIs provide the same functionality as rte_io_*mb APIs on all platforms, so remov
eal: remove deprecated coherent IO memory barriers
Since the 20.08 release deprecated rte_cio_*mb APIs because these APIs provide the same functionality as rte_io_*mb APIs on all platforms, so remove them and use rte_io_*mb instead.
Signed-off-by: Phil Yang <phil.yang@arm.com> Signed-off-by: Joyce Kong <joyce.kong@arm.com> Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com> Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com> Acked-by: David Marchand <david.marchand@redhat.com>
show more ...
|
#
58902736 |
| 10-Jul-2020 |
Joyce Kong <joyce.kong@arm.com> |
vhost: restrict pointer aliasing for packed ring
Restrict pointer aliasing to allow the compiler to vectorize loop more aggressively.
With this patch, a 9.6% improvement is observed in throughput f
vhost: restrict pointer aliasing for packed ring
Restrict pointer aliasing to allow the compiler to vectorize loop more aggressively.
With this patch, a 9.6% improvement is observed in throughput for the packed virtio-net PVP case, and a 2.8% improvement in throughput for the packed virtio-user PVP case. All performance data are measured on ThunderX-2 platform under 0.001% acceptable packet loss with 1 core on both vhost and virtio side.
Signed-off-by: Joyce Kong <joyce.kong@arm.com> Reviewed-by: Phil Yang <phil.yang@arm.com> Acked-by: Adrián Moreno <amorenoz@redhat.com>
show more ...
|
#
c92b936f |
| 10-Jul-2020 |
Joyce Kong <joyce.kong@arm.com> |
net/virtio: restrict pointer aliasing for NEON
Restrict pointer aliasing to allow the compiler to vectorize loops more aggressively.
With this patch, a 9.6% improvement is observed in throughput fo
net/virtio: restrict pointer aliasing for NEON
Restrict pointer aliasing to allow the compiler to vectorize loops more aggressively.
With this patch, a 9.6% improvement is observed in throughput for the virtio-net PVP case, and a 2.4% perf improvement in throughput for the virtio-user PVP case. All performance data are measured on ThunderX-2 platform under the 0.001% acceptable packet loss with 2 cores on the vhost side and 1 core on the virtio side.
Signed-off-by: Joyce Kong <joyce.kong@arm.com> Reviewed-by: Phil Yang <phil.yang@arm.com>
show more ...
|
#
9e190e97 |
| 24-Jun-2020 |
Joyce Kong <joyce.kong@arm.com> |
net/virtio: simplify variable name
Virtio_hw *hw has been pointed to vq->hw, it is better to use hw instead of vq->hw in later code.
Signed-off-by: Joyce Kong <joyce.kong@arm.com> Reviewed-by: Honn
net/virtio: simplify variable name
Virtio_hw *hw has been pointed to vq->hw, it is better to use hw instead of vq->hw in later code.
Signed-off-by: Joyce Kong <joyce.kong@arm.com> Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com> Reviewed-by: Chenbo Xia <chenbo.xia@intel.com> Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
show more ...
|
#
ea5207c1 |
| 30-Apr-2020 |
Joyce Kong <joyce.kong@arm.com> |
virtio: use one way barrier for split vring used index
In case VIRTIO_F_ORDER_PLATFORM(36) is not negotiated, then the frontend and backend are assumed to be implemented in software, that is they ca
virtio: use one way barrier for split vring used index
In case VIRTIO_F_ORDER_PLATFORM(36) is not negotiated, then the frontend and backend are assumed to be implemented in software, that is they can run on identical CPUs in an SMP configuration. Thus a weak form of memory barriers like rte_smp_r/wmb, other than rte_cio_r/wmb, is sufficient for this case(vq->hw->weak_barriers == 1) and yields better performance. For the above case, this patch helps yielding even better performance by replacing the two-way barriers with C11 one-way barriers for used index in split ring.
Signed-off-by: Joyce Kong <joyce.kong@arm.com> Reviewed-by: Gavin Hu <gavin.hu@arm.com> Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
show more ...
|
#
016f56b5 |
| 11-Sep-2019 |
Thibaut Collet <thibaut.collet@6wind.com> |
net/virtio: get all pending Rx packets in vectorized paths
The loop to read packets does not take all packets as the number of available packets (nb_used) is decremented in the loop. Take all availa
net/virtio: get all pending Rx packets in vectorized paths
The loop to read packets does not take all packets as the number of available packets (nb_used) is decremented in the loop. Take all available packets provides a performance improvement of 3%.
Fixes: fc3d66212fed ("virtio: add vector Rx") Cc: stable@dpdk.org
Signed-off-by: Thibaut Collet <thibaut.collet@6wind.com> Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
show more ...
|
#
6958e40d |
| 11-Sep-2019 |
Thibaut Collet <thibaut.collet@6wind.com> |
net/virtio: fix Rx stats with vectorized functions
With vectorized functions, only the rx stats for number of packets is incremented. Update also the other statistics. Performance impact is about 2%
net/virtio: fix Rx stats with vectorized functions
With vectorized functions, only the rx stats for number of packets is incremented. Update also the other statistics. Performance impact is about 2%
Fixes: fc3d66212fed ("virtio: add vector Rx") Cc: stable@dpdk.org
Signed-off-by: Thibaut Collet <thibaut.collet@6wind.com> Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
show more ...
|
#
dfd33aa4 |
| 19-Mar-2019 |
Tiwei Bie <tiwei.bie@intel.com> |
net/virtio: refactor virtqueue structure
Put split ring and packed ring specific fields into separate sub-structures, and also union them as they won't be available at the same time.
Signed-off-by:
net/virtio: refactor virtqueue structure
Put split ring and packed ring specific fields into separate sub-structures, and also union them as they won't be available at the same time.
Signed-off-by: Tiwei Bie <tiwei.bie@intel.com> Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
show more ...
|
#
ffc905f3 |
| 22-Jan-2018 |
Ferruh Yigit <ferruh.yigit@intel.com> |
ethdev: separate driver APIs
Create a rte_ethdev_driver.h file and move PMD specific APIs here. Drivers updated to include this new header file.
There is no update in header content and since ethde
ethdev: separate driver APIs
Create a rte_ethdev_driver.h file and move PMD specific APIs here. Drivers updated to include this new header file.
There is no update in header content and since ethdev.h included by ethdev_driver.h, nothing changed from driver point of view, only logically grouping of APIs. From applications point of view they can't access to driver specific APIs anymore and they shouldn't.
More PMD specific data structures still remain in ethdev.h because of inline functions in header use them. Those will be handled separately.
Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com> Acked-by: Shreyansh Jain <shreyansh.jain@nxp.com> Acked-by: Andrew Rybchenko <arybchenko@solarflare.com> Acked-by: Thomas Monjalon <thomas@monjalon.net>
show more ...
|
#
5b56d18d |
| 11-Dec-2017 |
Tiwei Bie <tiwei.bie@intel.com> |
net/virtio: remove redundant macro definitions for vector Rx
RTE_VIRTIO_VPMD_RX_BURST and RTE_VIRTIO_VPMD_RX_REARM_THRESH have been defined and used in virtio_rxtx_simple.h, but are defined again in
net/virtio: remove redundant macro definitions for vector Rx
RTE_VIRTIO_VPMD_RX_BURST and RTE_VIRTIO_VPMD_RX_REARM_THRESH have been defined and used in virtio_rxtx_simple.h, but are defined again in virtio_rxtx_simple_*.c. It just happens to work. So remove the redundant definitions from the *.c files.
Signed-off-by: Tiwei Bie <tiwei.bie@intel.com> Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com> Acked-by: Yuanhan Liu <yliu@fridaylinux.org>
show more ...
|
#
aaf4363e |
| 08-Jan-2018 |
Jerin Jacob <jerin.jacob@caviumnetworks.com> |
drivers: use SPDX tag for Cavium copyright files
Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com> Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
|
#
4c00cfdc |
| 04-Nov-2017 |
Thomas Monjalon <thomas@monjalon.net> |
remove useless memzone includes
The memzone header is often included without good reason.
Signed-off-by: Thomas Monjalon <thomas@monjalon.net> Acked-by: Bruce Richardson <bruce.richardson@intel.com>
|
#
3abcd29f |
| 08-Jul-2017 |
Jerin Jacob <jerin.jacob@caviumnetworks.com> |
update Cavium Inc copyright headers
Replace the incorrect reference to "Cavium Networks", "Cavium Ltd" company name with correct the "Cavium, Inc" company name in copyright headers.
Signed-off-by:
update Cavium Inc copyright headers
Replace the incorrect reference to "Cavium Networks", "Cavium Ltd" company name with correct the "Cavium, Inc" company name in copyright headers.
Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
show more ...
|
#
b7be4f46 |
| 19-Apr-2017 |
Zhiyong Yang <zhiyong.yang@intel.com> |
net/virtio: support to turn on/off traffic flow
Current virtio_dev_stop only disables interrupt and marks link down, When it is invoked, tx/rx traffic flows still work. This is a strange behavior. T
net/virtio: support to turn on/off traffic flow
Current virtio_dev_stop only disables interrupt and marks link down, When it is invoked, tx/rx traffic flows still work. This is a strange behavior. The patch supports the switch of flow.
Signed-off-by: Zhiyong Yang <zhiyong.yang@intel.com>
show more ...
|
#
2d7c3719 |
| 18-Aug-2016 |
Jerin Jacob <jerin.jacob@caviumnetworks.com> |
net/virtio: add NEON based Rx handler
Added neon based Rx vector implementation. Selection of the new handler based neon availability at runtime. Updated the release notes and MAINTAINERS file.
Sig
net/virtio: add NEON based Rx handler
Added neon based Rx vector implementation. Selection of the new handler based neon availability at runtime. Updated the release notes and MAINTAINERS file.
Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com> Acked-by: Yuanhan Liu <yuanhan.liu@linux.intel.com> Acked-by: Jianbo Liu <jianbo.liu@linaro.org>
show more ...
|