3. Port Blocklist Tests¶
3.1. Prerequisites¶
Board with at least 2 DPDK supported NICs attached.
If using vfio the kernel must be >= 3.6+ and VT-d must be enabled in bios.When using vfio, use the following commands to load the vfio driver and bind it to the device under test:
modprobe vfio
modprobe vfio-pci
usertools/dpdk-devbind.py --bind=vfio-pci device_bus_id
3.2. Test Case¶
3.2.1. Test Case 1: Testpmd with no blocklisted device¶
Run testpmd in interactive mode and ensure that at least 2 ports are bound and available:
build/app/dpdk-testpmd -c 3 -- -i .... EAL: unbind kernel driver /sys/bus/pci/devices/0000:01:00.0/driver/unbind EAL: Core 1 is ready (tid=357fc700) EAL: bind PCI device 0000:01:00.0 to uio driver EAL: Device bound EAL: map PCI resource for device 0000:01:00.0 EAL: PCI memory mapped at 0x7fe6b68c7000 EAL: unbind kernel driver /sys/bus/pci/devices/0000:01:00.1/driver/unbind EAL: bind PCI device 0000:01:00.1 to uio driver EAL: Device bound EAL: map PCI resource for device 0000:01:00.1 EAL: PCI memory mapped at 0x7fe6b6847000 EAL: unbind kernel driver /sys/bus/pci/devices/0000:02:00.0/driver/unbind EAL: bind PCI device 0000:02:00.0 to uio driver EAL: Device bound EAL: map PCI resource for device 0000:02:00.0 EAL: PCI memory mapped at 0x7fe6b6580000 EAL: unbind kernel driver /sys/bus/pci/devices/0000:02:00.1/driver/unbind EAL: bind PCI device 0000:02:00.1 to uio driver EAL: Device bound EAL: map PCI resource for device 0000:02:00.1 EAL: PCI memory mapped at 0x7fe6b6500000 Interactive-mode selected Initializing port 0... done: Link Up - speed 10000 Mbps - full-duplex Initializing port 1... done: Link Up - speed 10000 Mbps - full-duplex Initializing port 2... done: Link Up - speed 10000 Mbps - full-duplex Initializing port 3... done: Link Up - speed 10000 Mbps - full-duplex
3.2.2. Test Case 2: Testpmd with one port blocklisted¶
Select first available port to be blocklisted and specify it with -b option. For the example above:
build/app/dpdk-testpmd -c 3 -b 0000:01:00.0 -- -i
Check that corresponding device is skipped for binding, and only 3 ports are available now::
EAL: unbind kernel driver /sys/bus/pci/devices/0000:01:00.1/driver/unbind EAL: bind PCI device 0000:01:00.1 to uio driver EAL: Device bound EAL: map PCI resource for device 0000:01:00.1 EAL: PCI memory mapped at 0x7f0037912000 EAL: unbind kernel driver /sys/bus/pci/devices/0000:02:00.0/driver/unbind EAL: bind PCI device 0000:02:00.0 to uio driver EAL: Device bound EAL: map PCI resource for device 0000:02:00.0 EAL: PCI memory mapped at 0x7f0037892000 EAL: unbind kernel driver /sys/bus/pci/devices/0000:02:00.1/driver/unbind EAL: bind PCI device 0000:02:00.1 to uio driver EAL: Device bound EAL: map PCI resource for device 0000:02:00.1 EAL: PCI memory mapped at 0x7f0037812000 Interactive-mode selected Initializing port 0... done: Link Up - speed 10000 Mbps - full-duplex Initializing port 1... done: Link Up - speed 10000 Mbps - full-duplex Initializing port 2... done: Link Up - speed 10000 Mbps - full-duplex
3.2.3. Test Case 3: Testpmd with all but one port blocklisted¶
Blocklist all devices except the last one. For the example above::
build/app/dpdk-testpmd -c 3 -b 0000:01:00.0 -b 0000:01:00.1 -b 0000:02:00.0 -- -i
Check that 3 corresponding device is skipped for binding, and only 1 ports is available now::
EAL: unbind kernel driver /sys/bus/pci/devices/0000:02:00.1/driver/unbind EAL: bind PCI device 0000:02:00.1 to uio driver EAL: Device bound EAL: map PCI resource for device 0000:02:00.1 EAL: PCI memory mapped at 0x7f22e9aeb000 Interactive-mode selected Initializing port 0... done: Link Up - speed 10000 Mbps - full-duplex