[dpdk-dev] [PATCH] librte_pmd_packet: add PMD for AF_PACKET-based virtual devices

Bruce Richardson bruce.richardson at intel.com
Sat Jul 12 00:51:08 CEST 2014


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.

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

 


More information about the dev mailing list