2. Port Blacklist Tests¶
2.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
2.2. Test Case: Testpmd with no blacklisted device¶
Run testpmd in interactive mode and ensure that at least 2 ports are bound and available:
build/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: probe driver: 8086:10fb rte_niantic_pmd
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: probe driver: 8086:10fb rte_niantic_pmd
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: probe driver: 8086:10fb rte_niantic_pmd
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
2.3. Test Case: Testpmd with one port blacklisted¶
Select first available port to be blacklisted and specify it with -b option. For the example above:
build/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: probe driver: 8086:10fb rte_niantic_pmd
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: probe driver: 8086:10fb rte_niantic_pmd
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: probe driver: 8086:10fb rte_niantic_pmd
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
2.4. Test Case: Testpmd with all but one port blacklisted¶
Blacklist all devices except the last one. For the example above::
build/testpmd -c 3 -b 0000:01:00.0 -b 0000:01:00.0 -b 0000:02:00.0 -- -i
Check that 3 corresponding device is skipped for binding, and only 1 ports is available now::
EAL: probe driver: 8086:10fb rte_niantic_pmd
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