On Fri, Jul 11, 2014 at 11:51:08PM +0100, Bruce Richardson wrote: > On Thu, Jul 10, 2014 at 04:32:49PM -0400, John W. Linville wrote: > > This is a Linux-specific virtual PMD driver backed by an AF_PACKET > > socket. This implementation uses mmap'ed ring buffers to limit copying > > and user/kernel transitions. The PACKET_FANOUT_HASH behavior of > > AF_PACKET is used for frame reception. In the current implementation, > > Tx and Rx queues are always paired, and therefore are always equal > > in number -- changing this would be a Simple Matter Of Programming. > > > > Interfaces of this type are created with a command line option like > > "--vdev=eth_packet0,iface=...". There are a number of options availabe > > as arguments: > > > > - Interface is chosen by "iface" (required) > > - Number of queue pairs set by "qpairs" (optional, default: 16) > > - AF_PACKET MMAP block size set by "blocksz" (optional, default: 4096) > > - AF_PACKET MMAP frame size set by "framesz" (optional, default: 2048) > > - AF_PACKET MMAP frame count set by "framecnt" (optional, default: 512) > > > > Signed-off-by: John W. Linville <linville at tuxdriver.com> > > --- > > This PMD is intended to provide a means for using DPDK on a broad > > range of hardware without hardware-specific PMDs and (hopefully) > > with better performance than what PCAP offers in Linux. This might > > be useful as a development platform for DPDK applications when > > DPDK-supported hardware is expensive or unavailable. > > > Hi John, > > I'm just trying this out now on a Fedora 20 machine, using kernel > 3.14.9-200.fc20.x86_64. However, while the first packet PMD port initializes > correctly, the subsequent ones do not. Please see output from my test run > below. All four ports are of the same type.
Thanks I'll check into it. I'm not sure why you would only be able to set the fanout on the first port... > > Regards, > /Bruce > > bruce at silpixa00372841:dpdk.org$ sudo > ./x86_64-native-linuxapp-gcc/app/testpmd -c 600 -n 4 > --vdev=eth_packet0,iface=eth0,qpairs=1 --vdev=eth_packet1,iface=eth1,qpairs=1 > --vdev=eth_packet2,iface=p802p1,qpairs=1 > --vdev=eth_packet3,iface=p9p3,qpairs=1 -- --mbcache=250 --burst=32 > --total-num-mbufs=65536EAL: Detected lcore 0 as core 0 on socket 0 > EAL: Detected lcore 1 as core 1 on socket 0 > EAL: Detected lcore 2 as core 2 on socket 0 > EAL: Detected lcore 3 as core 3 on socket 0 > EAL: Detected lcore 4 as core 4 on socket 0 > EAL: Detected lcore 5 as core 5 on socket 0 > EAL: Detected lcore 6 as core 6 on socket 0 > EAL: Detected lcore 7 as core 7 on socket 0 > EAL: Detected lcore 8 as core 0 on socket 1 > EAL: Detected lcore 9 as core 1 on socket 1 > EAL: Detected lcore 10 as core 2 on socket 1 > EAL: Detected lcore 11 as core 3 on socket 1 > EAL: Detected lcore 12 as core 4 on socket 1 > EAL: Detected lcore 13 as core 5 on socket 1 > EAL: Detected lcore 14 as core 6 on socket 1 > EAL: Detected lcore 15 as core 7 on socket 1 > EAL: Detected lcore 16 as core 0 on socket 0 > EAL: Detected lcore 17 as core 1 on socket 0 > EAL: Detected lcore 18 as core 2 on socket 0 > EAL: Detected lcore 19 as core 3 on socket 0 > EAL: Detected lcore 20 as core 4 on socket 0 > EAL: Detected lcore 21 as core 5 on socket 0 > EAL: Detected lcore 22 as core 6 on socket 0 > EAL: Detected lcore 23 as core 7 on socket 0 > EAL: Detected lcore 24 as core 0 on socket 1 > EAL: Detected lcore 25 as core 1 on socket 1 > EAL: Detected lcore 26 as core 2 on socket 1 > EAL: Detected lcore 27 as core 3 on socket 1 > EAL: Detected lcore 28 as core 4 on socket 1 > EAL: Detected lcore 29 as core 5 on socket 1 > EAL: Detected lcore 30 as core 6 on socket 1 > EAL: Detected lcore 31 as core 7 on socket 1 > EAL: Support maximum 64 logical core(s) by configuration. > EAL: Detected 32 lcore(s) > EAL: No free hugepages reported in hugepages-2048kB > EAL: unsupported IOMMU type! > EAL: VFIO support could not be initialized > EAL: Setting up memory... > EAL: Ask a virtual area of 0x80000000 bytes > EAL: Virtual area found at 0x7f9fc0000000 (size = 0x80000000) > EAL: Ask a virtual area of 0x80000000 bytes > EAL: Virtual area found at 0x7f9f00000000 (size = 0x80000000) > EAL: Requesting 2 pages of size 1024MB from socket 0 > EAL: Requesting 2 pages of size 1024MB from socket 1 > EAL: TSC frequency is ~2693512 KHz > EAL: Master core 9 is ready (tid=f4511880) > init (0) eth_packet0 > PMD: Initializing pmd_packet for eth_packet0 > PMD: eth_packet0: AF_PACKET MMAP parameters: > PMD: eth_packet0: block size 4096 > PMD: eth_packet0: block count 256 > PMD: eth_packet0: frame size 2048 > PMD: eth_packet0: frame count 512 > PMD: eth_packet0: creating AF_PACKET-backed ethdev on numa socket 1 > init (0) eth_packet1 > PMD: Initializing pmd_packet for eth_packet1 > PMD: eth_packet1: AF_PACKET MMAP parameters: > PMD: eth_packet1: block size 4096 > PMD: eth_packet1: block count 256 > PMD: eth_packet1: frame size 2048 > PMD: eth_packet1: frame count 512 > PMD: eth_packet1: creating AF_PACKET-backed ethdev on numa socket 1 > PMD: eth_packet1: could not set PACKET_FANOUT on AF_PACKET socket for eth1 > init (0) eth_packet2 > PMD: Initializing pmd_packet for eth_packet2 > PMD: eth_packet2: AF_PACKET MMAP parameters: > PMD: eth_packet2: block size 4096 > PMD: eth_packet2: block count 256 > PMD: eth_packet2: frame size 2048 > PMD: eth_packet2: frame count 512 > PMD: eth_packet2: creating AF_PACKET-backed ethdev on numa socket 1 > PMD: eth_packet2: could not set PACKET_FANOUT on AF_PACKET socket for p802p1 > init (0) eth_packet3 > PMD: Initializing pmd_packet for eth_packet3 > PMD: eth_packet3: AF_PACKET MMAP parameters: > PMD: eth_packet3: block size 4096 > PMD: eth_packet3: block count 256 > PMD: eth_packet3: frame size 2048 > PMD: eth_packet3: frame count 512 > PMD: eth_packet3: creating AF_PACKET-backed ethdev on numa socket 1 > PMD: eth_packet3: could not set PACKET_FANOUT on AF_PACKET socket for p9p3 > EAL: Core 10 is ready (tid=f34d9700) > EAL: PCI device 0000:04:00.0 on NUMA socket 0 > EAL: probe driver: 8086:1521 rte_igb_pmd > EAL: 0000:04:00.0 not managed by UIO driver, skipping > EAL: PCI device 0000:04:00.1 on NUMA socket 0 > EAL: probe driver: 8086:1521 rte_igb_pmd > EAL: 0000:04:00.1 not managed by UIO driver, skipping > EAL: PCI device 0000:04:00.2 on NUMA socket 0 > EAL: probe driver: 8086:1521 rte_igb_pmd > EAL: 0000:04:00.2 not managed by UIO driver, skipping > EAL: PCI device 0000:04:00.3 on NUMA socket 0 > EAL: probe driver: 8086:1521 rte_igb_pmd > EAL: 0000:04:00.3 not managed by UIO driver, skipping > EAL: PCI device 0000:0c:00.0 on NUMA socket 0 > EAL: probe driver: 8086:10fb rte_ixgbe_pmd > EAL: 0000:0c:00.0 not managed by UIO driver, skipping > EAL: PCI device 0000:0c:00.1 on NUMA socket 0 > EAL: probe driver: 8086:10fb rte_ixgbe_pmd > EAL: 0000:0c:00.1 not managed by UIO driver, skipping > EAL: PCI device 0000:84:00.0 on NUMA socket 1 > EAL: probe driver: 8086:154a rte_ixgbe_pmd > EAL: 0000:84:00.0 not managed by UIO driver, skipping > EAL: PCI device 0000:84:00.1 on NUMA socket 1 > EAL: probe driver: 8086:154a rte_ixgbe_pmd > EAL: 0000:84:00.1 not managed by UIO driver, skipping > EAL: PCI device 0000:87:00.0 on NUMA socket 1 > EAL: probe driver: 8086:154a rte_ixgbe_pmd > EAL: 0000:87:00.0 not managed by UIO driver, skipping > EAL: PCI device 0000:87:00.1 on NUMA socket 1 > EAL: probe driver: 8086:154a rte_ixgbe_pmd > EAL: 0000:87:00.1 not managed by UIO driver, skipping > EAL: PCI device 0000:8b:00.0 on NUMA socket 1 > EAL: probe driver: 8086:154a rte_ixgbe_pmd > EAL: 0000:8b:00.0 not managed by UIO driver, skipping > EAL: PCI device 0000:8b:00.1 on NUMA socket 1 > EAL: probe driver: 8086:154a rte_ixgbe_pmd > EAL: 0000:8b:00.1 not managed by UIO driver, skipping > EAL: PCI device 0000:8e:00.0 on NUMA socket 1 > EAL: probe driver: 8086:154a rte_ixgbe_pmd > EAL: 0000:8e:00.0 not managed by UIO driver, skipping > EAL: PCI device 0000:8e:00.1 on NUMA socket 1 > EAL: probe driver: 8086:154a rte_ixgbe_pmd > EAL: 0000:8e:00.1 not managed by UIO driver, skipping > Configuring Port 0 (socket 0) > Port 0: 68:05:CA:19:F0:50 > Checking link statuses... > Port 0 Link Up - speed 10000 Mbps - full-duplex > Done > No commandline core given, start packet forwarding > > Warning! Cannot handle an odd number of ports with the current port topology. > Configuration must be changed to have an even number of ports, or relaunch > application with --port-topology=chained > > io packet forwarding - CRC stripping disabled - packets/burst=32 > nb forwarding cores=1 - nb forwarding ports=1 > RX queues=1 - RX desc=128 - RX free threshold=0 > RX threshold registers: pthresh=8 hthresh=8 wthresh=0 > TX queues=1 - TX desc=512 - TX free threshold=0 > TX threshold registers: pthresh=32 hthresh=0 wthresh=0 > TX RS bit threshold=0 - TXQ flags=0x0 > Press enter to exit > > > -- John W. Linville Someday the world will need a hero, and you linville at tuxdriver.com might be all we have. Be ready.