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

John W. Linville linville at tuxdriver.com
Fri Jul 11 19:40:43 CEST 2014


On Fri, Jul 11, 2014 at 05:20:42PM +0000, Zhou, Danny wrote:
> Looks like you used a pretty new kernel version with new socket options that old kernel like my 3.12 does not support. When I tried this patch, it just cannot build, and compiler complains like below. Which Linux distribution does this patch work for? How to ensure it works for old kernels?
> 
> /home/danny/dpdk.org/dpdk/lib/librte_pmd_packet/rte_eth_packet.c: In function rte_pmd_init_internals:
> /home/danny/dpdk.org/dpdk/lib/librte_pmd_packet/rte_eth_packet.c:524:17: error: PACKET_FANOUT_FLAG_ROLLOVER undeclared (first use in this function)
> /home/danny/dpdk.org/dpdk/lib/librte_pmd_packet/rte_eth_packet.c:524:17: note: each undeclared identifier is reported only once for each function it appears in
> /home/danny/dpdk.org/dpdk/lib/librte_pmd_packet/rte_eth_packet.c:557:33: error: PACKET_QDISC_BYPASS undeclared (first use in this function)

Both of them are isolated, so for playing with it you could just
comment those out.  It looks like PACKET_FANOUT_FLAG_ROLLOVER should
have been in 3.10, while PACKET_QDISC_BYPASS didn't show-up until
3.14...

/home/linville/git/linux
[linville-x1.hq.tuxdriver.com]:> git annotate include/uapi/linux/if_packet.h | grep PACKET_FANOUT_FLAG_ROLLOVER
77f65ebdca506	(Willem de Bruijn	2013-03-19 10:18:11 +0000	64)#define PACKET_FANOUT_FLAG_ROLLOVER	0x1000

/home/linville/git/linux
[linville-x1.hq.tuxdriver.com]:> git show -s --format=short 77f65ebdca506
commit 77f65ebdca506870d99bfabe52bde222511022ec
Author: Willem de Bruijn <willemb at google.com>

    packet: packet fanout rollover during socket overload

/home/linville/git/linux
[linville-x1.hq.tuxdriver.com]:> git describe --contains 77f65ebdca506
v3.10-rc1~66^2~423

/home/linville/git/linux
[linville-x1.hq.tuxdriver.com]:> git annotate include/uapi/linux/if_packet.h | grep PACKET_QDISC_BYPASS
d346a3fae3ff1	(Daniel Borkmann	2013-12-06 11:36:17 +0100	56)#define PACKET_QDISC_BYPASS		20

/home/linville/git/linux
[linville-x1.hq.tuxdriver.com]:> git show -s --format=short d346a3fae3ff1
commit d346a3fae3ff1d99f5d0c819bf86edf9094a26a1
Author: Daniel Borkmann <dborkman at redhat.com>

    packet: introduce PACKET_QDISC_BYPASS socket option

/home/linville/git/linux
[linville-x1.hq.tuxdriver.com]:> git describe --contains d346a3fae3ff1
v3.14-rc1~94^2~564

Is there an example of code in DPDK that requires specific kernel
versions?  What is the preferred method for coding such dependencies?

John
-- 
John W. Linville		Someday the world will need a hero, and you
linville at tuxdriver.com			might be all we have.  Be ready.


More information about the dev mailing list