nuttx/drivers/virtio/Kconfig
wangbowen6 9aa57b6c53 virtio: add virtio framework in NuttX
1. virtio devics/drivers match and probe/remote mechanism;
2. virtio mmio transport layer based on OpenAmp (Compatible with both
   virtio mmio version 1 and 2);
3. virtio-serial driver based on new virtio framework;
4. virtio-rng driver based on new virtio framework;
5. virtio-net driver based on new virtio framework
   (IOB Offload implementation);
6. virtio-blk driver based on new virtio framework;
7. Remove the old virtio mmio framework, the old framework only
   support mmio transport layer, and the new framwork support
   more transport layer and this commit has implemented all the
   old virtio drivers;
8. Refresh the the qemu-arm64 and qemu-riscv virtio related
   configs, and update its README.txt;

New virtio-net driver has better performance
Compared with previous virtio-mmio-net:
|                        | master/-c | master/-s | this/-c | this/-s |
| :--------------------: | :-------: | :-------: | :-----: | :-----: |
| qemu-armv8a:netnsh     |  539Mbps  |  524Mbps  | 906Mbps | 715Mbps |
| qemu-armv8a:netnsh_smp |  401Mbps  |  437Mbps  | 583Mbps | 505Mbps |
| rv-virt:netnsh         |  487Mbps  |  512Mbps  | 760Mbps | 634Mbps |
| rv-virt:netnsh_smp     |  387Mbps  |  455Mbps  | 447Mbps | 502Mbps |
| rv-virt:netnsh64       |  602Mbps  |  595Mbps  | 881Mbps | 769Mbps |
| rv-virt:netnsh64_smp   |  414Mbps  |  515Mbps  | 491Mbps | 525Mbps |
| rv-virt:knetnsh64      |  515Mbps  |  457Mbps  | 606Mbps | 540Mbps |
| rv-virt:knetnsh64_smp  |  308Mbps  |  389Mbps  | 415Mbps | 474Mbps |
Note: Both CONFIG_IOB_NBUFFERS=64, using iperf command, all in Mbits/sec
      Tested in QEMU 7.2.2

Signed-off-by: wangbowen6 <wangbowen6@xiaomi.com>
Signed-off-by: Zhe Weng <wengzhe@xiaomi.com>
2023-08-10 03:39:39 +08:00

64 lines
1.5 KiB
Plaintext

#
# For a description of the syntax of this configuration file,
# see the file kconfig-language.txt in the NuttX tools repository.
#
menuconfig DRIVERS_VIRTIO
bool "Virtio Device Support"
depends on OPENAMP
default n
if DRIVERS_VIRTIO
config DRIVERS_VIRTIO_MMIO
bool "Virtio MMIO Device Support"
default n
config DRIVERS_VIRTIO_MMIO_QUEUE_LEN
int "Virtio MMIO Virtio Queue Length"
default 0
range 0 1024
depends on DRIVERS_VIRTIO_MMIO
---help---
If this value equals to 0, use the max queue length get from
mmio register.
config DRIVERS_VIRTIO_BLK
bool "Virtio block support"
depends on !DISABLE_MOUNTPOINT
default n
config DRIVERS_VIRTIO_NET
bool "Virtio network support"
depends on NETDEVICES
default n
select ARCH_HAVE_NETDEV_STATISTICS
select NETDEV_LATEINIT
config DRIVERS_VIRTIO_NET_BUFNUM
int "Virtio network driver buffer number"
default 0
depends on DRIVERS_VIRTIO_NET
---help---
The buffer number in each virtqueue. (We have 2 virtqueues.)
If this value equals to 0, use CONFIG_IOB_NBUFFERS / 4 for each.
Normally we get just a little improvement for >8 buffers, and very little for >32.
config DRIVERS_VIRTIO_RNG
bool "Virtio rng support"
default n
select ARCH_HAVE_RNG
config DRIVERS_VIRTIO_SERIAL
bool "Virtio serial support"
depends on SERIAL
default n
select SERIAL_RXDMA
select SERIAL_TXDMA
if DRIVERS_VIRTIO_SERIAL
config DRIVERS_VIRTIO_SERIAL_BUFSIZE
int "Virtio serial driver buffer size"
default 256
endif
endif # DRIVERS_VIRTIO