#
69657304 |
| 13-Oct-2016 |
Olivier Matz <olivier.matz@6wind.com> |
net/virtio: support TSO
Signed-off-by: Olivier Matz <olivier.matz@6wind.com> Acked-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
|
#
86d59b21 |
| 13-Oct-2016 |
Olivier Matz <olivier.matz@6wind.com> |
net/virtio: support LRO
Signed-off-by: Olivier Matz <olivier.matz@6wind.com> Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com> Acked-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
|
#
58169a9c |
| 13-Oct-2016 |
Olivier Matz <olivier.matz@6wind.com> |
net/virtio: support Tx checksum offload
Signed-off-by: Olivier Matz <olivier.matz@6wind.com> Acked-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
|
#
96cb6711 |
| 13-Oct-2016 |
Olivier Matz <olivier.matz@6wind.com> |
net/virtio: support Rx checksum offload
Signed-off-by: Olivier Matz <olivier.matz@6wind.com> Acked-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
|
#
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 ...
|
#
ed35184a |
| 05-Jul-2016 |
Jerin Jacob <jerin.jacob@caviumnetworks.com> |
net/virtio: select data handler depending on CPU flag
Introduced cpuflag based run-time detection to select the SSE based simple Rx handler
Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.co
net/virtio: select data handler depending on CPU flag
Introduced cpuflag based run-time detection to select the SSE based simple Rx handler
Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com> Acked-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
show more ...
|
#
17483cb2 |
| 05-Jul-2016 |
Jerin Jacob <jerin.jacob@caviumnetworks.com> |
net/virtio: cleanup conditional compilation
Removed unnecessary compile time dependency on "use_simple_rxtx".
Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com> Acked-by: Yuanhan Liu <yuan
net/virtio: cleanup conditional compilation
Removed unnecessary compile time dependency on "use_simple_rxtx".
Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com> Acked-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
show more ...
|
#
834ac655 |
| 19-Jul-2016 |
Yuanhan Liu <yuanhan.liu@linux.intel.com> |
net/virtio: fix crash on null dereference
The rxq/txq for the queue_release callback could be NULL, say when rte_eth_dev_configure() fails that the queue is not setup at all.
Do a simple NULL check
net/virtio: fix crash on null dereference
The rxq/txq for the queue_release callback could be NULL, say when rte_eth_dev_configure() fails that the queue is not setup at all.
Do a simple NULL check would fix the crash issue.
Fixes: 01ad44fd374f ("net/virtio: split Rx/Tx queue")
Reported-by: Olivier Matz <olivier.matz@6wind.com> Signed-off-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
show more ...
|
#
25f80d10 |
| 19-Jul-2016 |
Olivier Matz <olivier.matz@6wind.com> |
net/virtio: fix packet corruption
The support of virtio-user changed the way the mbuf dma address is retrieved, using a physical address in case of virtio-pci and a virtual address in case of virtio
net/virtio: fix packet corruption
The support of virtio-user changed the way the mbuf dma address is retrieved, using a physical address in case of virtio-pci and a virtual address in case of virtio-user.
This change introduced some possible memory corruption in packets, replacing: m->buf_physaddr + RTE_PKTMBUF_HEADROOM by: m->buf_physaddr + m->data_off (through a macro)
This patch fixes this issue, restoring the original behavior.
By the way, it also rework the macros, adding a "VIRTIO_" prefix and API comments.
Fixes: f24f8f9fee8a ("net/virtio: allow virtual address to fill vring descriptors")
Signed-off-by: Olivier Matz <olivier.matz@6wind.com> Acked-by: Jianfeng Tan <jianfeng.tan@intel.com> Acked-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
show more ...
|
#
f24f8f9f |
| 15-Jun-2016 |
Jianfeng Tan <jianfeng.tan@intel.com> |
net/virtio: allow virtual address to fill vring descriptors
This patch is related to how to calculate relative address for vhost backend.
The principle is that: based on one or multiple shared memo
net/virtio: allow virtual address to fill vring descriptors
This patch is related to how to calculate relative address for vhost backend.
The principle is that: based on one or multiple shared memory regions, vhost maintains a reference system with the frontend start address, backend start address, and length for each segment, so that each frontend address (GPA, Guest Physical Address) can be translated into vhost-recognizable backend address. To make the address translation efficient, we need to maintain as few regions as possible. In the case of VM, GPA is always locally continuous. But for some other case, like virtio-user, GPA continuous is not guaranteed, therefore, we use virtual address here.
It basically means: a. when set_base_addr, VA address is used; b. when preparing RX's descriptors, VA address is used; c. when transmitting packets, VA is filled in TX's descriptors; d. in TX and CQ's header, VA is used.
Signed-off-by: Huawei Xie <huawei.xie@intel.com> Signed-off-by: Jianfeng Tan <jianfeng.tan@intel.com> Acked-by: Neil Horman <nhorman@tuxdriver.com> Acked-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
show more ...
|
#
01ad44fd |
| 01-Jun-2016 |
Huawei Xie <huawei.xie@intel.com> |
net/virtio: split Rx/Tx queue
We keep a common vq structure, containing only vq related fields, and then split others into RX, TX and control queue respectively.
Signed-off-by: Huawei Xie <huawei.x
net/virtio: split Rx/Tx queue
We keep a common vq structure, containing only vq related fields, and then split others into RX, TX and control queue respectively.
Signed-off-by: Huawei Xie <huawei.xie@intel.com> [Jianfeng Tan: found and fixed 2 bugs] Acked-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
show more ...
|
#
88c10784 |
| 09-May-2016 |
Olivier Matz <olivier.matz@6wind.com> |
net/virtio: check mbuf is direct when using any layout
The commit dd856dfcb9e74 introduced an optimization that prepends virtio header to mbuf data. It can be used when the tx mbuf is writeable, so
net/virtio: check mbuf is direct when using any layout
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>
show more ...
|
#
fbfd9955 |
| 11-May-2016 |
Olivier Matz <olivier.matz@6wind.com> |
mbuf: add raw allocation function
Many drivers provide their own implementation of rte_mbuf_raw_alloc(), duplicating the code. Introduce a new public function in rte_mbuf to allocate a raw mbuf (uni
mbuf: add raw allocation function
Many drivers provide their own implementation of rte_mbuf_raw_alloc(), duplicating the code. Introduce a new public function in rte_mbuf to allocate a raw mbuf (uninitialized).
Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
show more ...
|
#
2c0eb46f |
| 25-Apr-2016 |
Jianfeng Tan <jianfeng.tan@intel.com> |
virtio: fix segfault on Tx desc flags setup
After the do-while loop, idx could be VQ_RING_DESC_CHAIN_END (32768) when it's the last vring desc buf we can get. Therefore, following expresssion could
virtio: fix segfault on Tx desc flags setup
After the do-while loop, idx could be VQ_RING_DESC_CHAIN_END (32768) when it's the last vring desc buf we can get. Therefore, following expresssion could lead to a segfault error, as it tries to access beyond the desc memory boundary.
start_dp[idx].flags &= ~VRING_DESC_F_NEXT;
This bug could be reproduced easily with "set fwd txonly" in the guest PMD, where the dequeue on host is slower than the guest Tx, that running out of free desc buf is pretty easy.
The fix is straightforward and easy, just remove it, as we have already set desc flags properly inside the do-while loop.
Fixes: dd856dfcb9e ("virtio: use any layout on Tx")
[Yuanhan Liu: commit log reword] Signed-off-by: Jianfeng Tan <jianfeng.tan@intel.com> Acked-by: Huawei Xie <huawei.xie@intel.com> Acked-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
show more ...
|
#
e9083127 |
| 19-Apr-2016 |
Jianfeng Tan <jianfeng.tan@intel.com> |
virtio: fix newline under debug mode
Issue: output of appliations and debug info of DPDK may be mixed up in same line when enabling below debug options of virtio: CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_INIT
virtio: fix newline under debug mode
Issue: output of appliations and debug info of DPDK may be mixed up in same line when enabling below debug options of virtio: CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_INIT CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_TX CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_DRIVER
This patch adds "\n" in the tail of definitions like PMD_RX_LOG, PMD_TX_LOG, and PMD_DRV_LOG, and removes some "\n" when using these macros.
Fixes: c1f86306a026 ("virtio: add new driver")
Signed-off-by: Jianfeng Tan <jianfeng.tan@intel.com> Acked-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
show more ...
|
#
610e0a8b |
| 05-Apr-2016 |
Rich Lane <rich.lane@bigswitch.com> |
virtio: use zeroed memory for simple Tx header
For simple TX the virtio-net header must be zeroed, but it was using memory that had been initialized with indirect descriptor tables. This resulted in
virtio: use zeroed memory for simple Tx header
For simple TX the virtio-net header must be zeroed, but it was using memory that had been initialized with indirect descriptor tables. This resulted in "unsupported gso type" errors from librte_vhost.
We can use the same memory for every descriptor to save cachelines in the vswitch.
Fixes: 6dc5de3a ("virtio: use indirect ring elements")
Signed-off-by: Rich Lane <rich.lane@bigswitch.com> Acked-by: Yuanhan Liu <yuanhan.liu@linux.intel.com> Acked-by: Jianfeng Tan <jianfeng.tan@intel.com>
show more ...
|
#
3eabd79c |
| 10-Mar-2016 |
Kyle Larose <klarose@sandvine.com> |
virtio: fix Rx ring descriptor starvation
Virtio has an mbuf descriptor ring containing mbufs to be used for receiving traffic. When the host queues traffic to be sent to the guest, it consumes thes
virtio: fix Rx ring descriptor starvation
Virtio has an mbuf descriptor ring containing mbufs to be used for receiving traffic. When the host queues traffic to be sent to the guest, it consumes these descriptors. If none exist, it discards the packet.
The virtio pmd allocates mbufs to the descriptor ring every time it successfully receives a packet. However, it never does it if it does not receive a valid packet. If the descriptor ring is exhausted, and the mbuf mempool does not have any mbufs free (which can happen for various reasons, such as queueing along the processing pipeline), then the receive call will not allocate any mbufs to the descriptor ring, and when it finishes, the descriptor ring will be empty. The ring being empty means that we will never receive a packet again, which means we will never allocate mbufs to the ring: we are stuck.
Ultimately, the problem arises because there is a dependency between receiving packets and making the descriptor ring not be empty, and a dependency between the descriptor ring not being empty, and receiving packets.
To fix the problem, this pakes makes virtio always try to allocate mbufs to the descriptor ring, if necessary, when polling for packets. Do this by removing the early exit if no packets were received. Since the packet loop later will do nothing if there are no packets, this is fine.
I reproduced the problem by pushing packets through a pipelined systems (such as the client_server sample application) after artificially decreasing the size of the mbuf pool and introducing a delay in a secondary stage.
Without the fix, the process stops receiving packets fairly quicky. With the fix, it continues to receive packets.
Fixes: c1f86306a026 ("virtio: add new driver")
Signed-off-by: Kyle Larose <klarose@sandvine.com> Acked-by: Huawei Xie <huawei.xie@intel.com>
show more ...
|
#
17cbf09f |
| 04-Mar-2016 |
Stephen Hemminger <stephen@networkplumber.org> |
virtio: optimize Tx enqueue
All the error checks in virtqueue_enqueue_xmit are already done by the caller. Therefore they can be removed to improve performance.
Signed-off-by: Stephen Hemminger <st
virtio: optimize Tx enqueue
All the error checks in virtqueue_enqueue_xmit are already done by the caller. Therefore they can be removed to improve performance.
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> Acked-by: Yuanhan Liu <yuanhan.liu@linux.intel.com> Acked-by: Huawei Xie <huawei.xie@intel.com>
show more ...
|
#
dd856dfc |
| 04-Mar-2016 |
Stephen Hemminger <stephen@networkplumber.org> |
virtio: use any layout on Tx
Virtio supports a feature that allows sender to put transmit header prepended to data. It requires that the mbuf be writeable, correct alignment, and the feature has be
virtio: use any layout on Tx
Virtio supports a feature that allows sender to put transmit header prepended to data. It requires that the mbuf be writeable, correct alignment, and the feature has been negotiatied. If all this works out, then it will be the optimum way to transmit a single segment packet.
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> Acked-by: Yuanhan Liu <yuanhan.liu@linux.intel.com> Acked-by: Huawei Xie <huawei.xie@intel.com>
show more ...
|
#
6dc5de3a |
| 04-Mar-2016 |
Stephen Hemminger <stephen@networkplumber.org> |
virtio: use indirect ring elements
The virtio ring in QEMU/KVM is usually limited to 256 entries and the normal way that virtio driver was queuing mbufs required nsegs + 1 ring elements. By using th
virtio: use indirect ring elements
The virtio ring in QEMU/KVM is usually limited to 256 entries and the normal way that virtio driver was queuing mbufs required nsegs + 1 ring elements. By using the indirect ring element feature if available, each packet will take only one ring slot even for multi-segment packets.
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> Acked-by: Yuanhan Liu <yuanhan.liu@linux.intel.com> Acked-by: Huawei Xie <huawei.xie@intel.com>
show more ...
|
#
64a7619e |
| 26-Feb-2016 |
Igor Ryzhov <iryzhov@nfware.com> |
virtio: remove broadcast packets from multicast statistics
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com> Acked-by: Harry van Haaren <harry.van.haaren@intel.com> Acked-by: Yuanhan Liu <yuanhan.liu@
virtio: remove broadcast packets from multicast statistics
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com> Acked-by: Harry van Haaren <harry.van.haaren@intel.com> Acked-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
Applied with coding standards fixes: Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
show more ...
|
#
3b1e3e4e |
| 10-Dec-2015 |
Huawei Xie <huawei.xie@intel.com> |
virtio: fix descriptors pointing to the same buffer
The virtio_net_hdr desc all pointed to the same buffer. It doesn't cause issue because in the simple TX mode we don't use the header. This patch m
virtio: fix descriptors pointing to the same buffer
The virtio_net_hdr desc all pointed to the same buffer. It doesn't cause issue because in the simple TX mode we don't use the header. This patch makes the header desc point to different buffer.
Fixes: b4ae9c505f2e ("virtio: optimize ring layout")
Signed-off-by: Huawei Xie <huawei.xie@intel.com> Acked-by: Jianfeng Tan <jianfeng.tan@intel.com> Acked-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
show more ...
|
#
d6b324c0 |
| 04-Mar-2016 |
Ravi Kerur <rkerur@gmail.com> |
mbuf: get DMA address
Macros RTE_MBUF_DATA_DMA_ADDR and RTE_MBUF_DATA_DMA_ADDR_DEFAULT are defined in each PMD driver file. Convert macros to inline functions and move them to common lib/librte_mbuf
mbuf: get DMA address
Macros RTE_MBUF_DATA_DMA_ADDR and RTE_MBUF_DATA_DMA_ADDR_DEFAULT are defined in each PMD driver file. Convert macros to inline functions and move them to common lib/librte_mbuf/rte_mbuf.h file. PMD drivers include rte_mbuf.h file directly/indirectly hence no additioanl header file inclusion is necessary.
Signed-off-by: Ravi Kerur <rkerur@gmail.com> Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
show more ...
|
#
69d308e1 |
| 01-Mar-2016 |
Santosh Shukla <sshukla@mvista.com> |
virtio: restrict vector Rx/Tx to x86 SSSE3
Temporary implementation to let virtio operate in non-vec mode for archs which doesn't support _ssse_ cpuflag.
todo: 1) Move virtio_recv_pkts_vec() implem
virtio: restrict vector Rx/Tx to x86 SSSE3
Temporary implementation to let virtio operate in non-vec mode for archs which doesn't support _ssse_ cpuflag.
todo: 1) Move virtio_recv_pkts_vec() implementation to drivers/virtio/virtio_vec_<arch>.h file. 2) Remove use_simple_rxtx flag, so that virtio/virtio_vec_<arch>.h files to provide vectored/non-vectored rx/tx apis.
Fixes: fc3d66212fed ("virtio: add vector Rx") Fixes: c121c8d6d31a ("virtio: add simple Tx") Fixes: 8d8393fb1861 ("virtio: pick simple Rx/Tx")
Signed-off-by: Santosh Shukla <sshukla@mvista.com> Acked-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
show more ...
|
#
1905e101 |
| 02-Feb-2016 |
Yuanhan Liu <yuanhan.liu@linux.intel.com> |
virtio: retrieve header size from device setting
The mergeable virtio net hdr format has been the standard and the only virtio net hdr format since virtio 1.0. Therefore, we can not hardcode hdr_siz
virtio: retrieve header size from device setting
The mergeable virtio net hdr format has been the standard and the only virtio net hdr format since virtio 1.0. Therefore, we can not hardcode hdr_size to "sizeof(struct virtio_net_hdr)" any more at virtio_recv_pkts(), otherwise, there would be a mismatch of hdr size from rte_vhost_enqueue_burst() and virtio_recv_pkts(), leading a packet corruption.
Instead, we should retrieve it from hw->vtnet_hdr_size; we will do proper settings at eth_virtio_dev_init() in later patches.
Signed-off-by: Yuanhan Liu <yuanhan.liu@linux.intel.com> Tested-by: Qian Xu <qian.q.xu@intel.com> Reviewed-by: Tetsuya Mukawa <mukawa@igel.co.jp> Tested-by: Tetsuya Mukawa <mukawa@igel.co.jp> Acked-by: Huawei Xie <huawei.xie@intel.com>
show more ...
|