[dpdk-dev] [PATCH v9] drivers/net:new PMD using tun/tap host interface
> On Nov 29, 2016, at 3:36 PM, Aws Ismail wrote: > > I have verified that adding just a single tap device works with testpmd. But > as soon as I try more than one tap device, I would get a coredump, e.g.: > > root@?localhost:~# testpmd -c f -n 4 --socket-mem 512 > --vdev=net_tap?,iface=tap0? --vdev=net_tap?,iface=tap1? -- -i > EAL: Detected 16 lcore(s) > EAL: Probing VFIO support... > EAL: VFIO support initialized > EAL: cannot open /proc/self/numa_maps, consider that all memory is in > socket_id 0 > PMD: Initializing pmd_tap for net_tap as dtap0 > PMD: net_tap: Create TAP Ethernet device with 32 queues on numa 0 > PMD: Initializing pmd_tap for net_tap as dtap1 > PMD: net_tap: Create TAP Ethernet device with 32 queues on numa 0 > EAL: failed to initialize net_tap device > PANIC in rte_eal_init(): > Cannot init pmd devices > 6: [testpmd() [0x409149]] > 5: [/lib/libc.so.6(__libc_start_main+0xf0) [0x7f3e65fa8740]] > 4: [testpmd() [0x408b21]] > 3: [/usr/lib/librte_eal.so.3.1(rte_eal_init+0xe09) [0x7f3e68ceaea9]] > 2: [/usr/lib/librte_eal.so.3.1(__rte_panic+0xc0) [0x7f3e68ce9b5a]] > 1: [/usr/lib/librte_eal.so.3.1(rte_dump_stack+0x18) [0x7f3e68cf2078]] It appears the call to rte_eth_dev_allocate() in the code is wrong. I did pass in the variable called tap_name created in the function, but I was told I needed to pass in ?name? that was passed into the function. The rte_eth_dev_allocate() needs a unique name for each call and name is all was the same. Need to change that line to use tap_name instead or tell me the real way to handle this problem. If you want a new patch I can try to get it done, but I am working on something else at this time and it could be a few days before I can get the patch out. > Aborted (core dumped) > > root@?localhost?:~# > > > On Fri, Nov 25, 2016 at 2:38 PM, Aws Ismail wrote: > Keith, > > This won't build when integrated with v16.11. The register macro > prefix has been renamed. a v10 is needed. > > diff --git a/drivers/net/tap/rte_eth_tap.c b/drivers/net/tap/rte_eth_tap.c > index 7f303db..297d4b6 100644 > --- a/drivers/net/tap/rte_eth_tap.c > +++ b/drivers/net/tap/rte_eth_tap.c > @@ -752,5 +752,6 @@ static struct rte_vdev_driver pmd_tap_drv = { > .remove = rte_pmd_tap_remove, > }; > > -DRIVER_REGISTER_VDEV(net_tap, pmd_tap_drv); > -DRIVER_REGISTER_PARAM_STRING(net_tap, "iface=,speed=N"); > +RTE_PMD_REGISTER_VDEV(net_tap, pmd_tap_drv); > +RTE_PMD_REGISTER_ALIAS(net_tap, eth_tap); > +RTE_PMD_REGISTER_PARAM_STRING(net_tap, "iface=,speed=N"); > > On Mon, Nov 21, 2016 at 7:56 AM, Ferruh Yigit > wrote: > > On 10/13/2016 11:03 PM, Keith Wiles wrote: > >> The rte_eth_tap.c PMD creates a device using TUN/TAP interfaces > >> on the local host. The PMD allows for DPDK and the host to > >> communicate using a raw device interface on the host and in > >> the DPDK application. The device created is a Tap device with > >> a L2 packet header. > >> > >> v9 - Fix up the docs to use correct syntax > >> v8 - Fix issue with tap_tx_queue_setup() not return zero on success. > >> v7 - Reword the comment in common_base and fix the data->name issue > >> v6 - fixed the checkpatch issues > >> v5 - merge in changes from list review see related emails > >> fixed many minor edits > >> v4 - merge with latest driver changes > >> v3 - fix includes by removing ifdef for other type besides Linux > >> Fix the copyright notice in the Makefile > >> v2 - merge all of the patches into one patch > >> Fix a typo on naming the tap device > >> Update the maintainers list > >> > >> Signed-off-by: Keith Wiles > >> --- > > > > Just a reminder, this is a new PMD and waiting for community review. > Regards, Keith
[dpdk-dev] [PATCH v9] drivers/net:new PMD using tun/tap host interface
I have verified that adding just a single tap device works with testpmd. But as soon as I try more than one tap device, I would get a coredump, e.g.: root@ ?localhost :~# testpmd -c f -n 4 --socket-mem 512 --vdev=net_tap ?,iface=tap0? --vdev=net_tap ?,iface=tap1? -- -i EAL: Detected 16 lcore(s) EAL: Probing VFIO support... EAL: VFIO support initialized EAL: cannot open /proc/self/numa_maps, consider that all memory is in socket_id 0 PMD: Initializing pmd_tap for net_tap as dtap0 PMD: net_tap: Create TAP Ethernet device with 32 queues on numa 0 PMD: Initializing pmd_tap for net_tap as dtap1 PMD: net_tap: Create TAP Ethernet device with 32 queues on numa 0 EAL: failed to initialize net_tap device PANIC in rte_eal_init(): Cannot init pmd devices 6: [testpmd() [0x409149]] 5: [/lib/libc.so.6(__libc_start_main+0xf0) [0x7f3e65fa8740]] 4: [testpmd() [0x408b21]] 3: [/usr/lib/librte_eal.so.3.1(rte_eal_init+0xe09) [0x7f3e68ceaea9]] 2: [/usr/lib/librte_eal.so.3.1(__rte_panic+0xc0) [0x7f3e68ce9b5a]] 1: [/usr/lib/librte_eal.so.3.1(rte_dump_stack+0x18) [0x7f3e68cf2078]] Aborted (core dumped) root@ ?localhost? :~# On Fri, Nov 25, 2016 at 2:38 PM, Aws Ismail wrote: > Keith, > > This won't build when integrated with v16.11. The register macro > prefix has been renamed. a v10 is needed. > > diff --git a/drivers/net/tap/rte_eth_tap.c b/drivers/net/tap/rte_eth_tap.c > index 7f303db..297d4b6 100644 > --- a/drivers/net/tap/rte_eth_tap.c > +++ b/drivers/net/tap/rte_eth_tap.c > @@ -752,5 +752,6 @@ static struct rte_vdev_driver pmd_tap_drv = { > .remove = rte_pmd_tap_remove, > }; > > -DRIVER_REGISTER_VDEV(net_tap, pmd_tap_drv); > -DRIVER_REGISTER_PARAM_STRING(net_tap, "iface=,speed=N"); > +RTE_PMD_REGISTER_VDEV(net_tap, pmd_tap_drv); > +RTE_PMD_REGISTER_ALIAS(net_tap, eth_tap); > +RTE_PMD_REGISTER_PARAM_STRING(net_tap, "iface=,speed=N"); > > On Mon, Nov 21, 2016 at 7:56 AM, Ferruh Yigit > wrote: > > On 10/13/2016 11:03 PM, Keith Wiles wrote: > >> The rte_eth_tap.c PMD creates a device using TUN/TAP interfaces > >> on the local host. The PMD allows for DPDK and the host to > >> communicate using a raw device interface on the host and in > >> the DPDK application. The device created is a Tap device with > >> a L2 packet header. > >> > >> v9 - Fix up the docs to use correct syntax > >> v8 - Fix issue with tap_tx_queue_setup() not return zero on success. > >> v7 - Reword the comment in common_base and fix the data->name issue > >> v6 - fixed the checkpatch issues > >> v5 - merge in changes from list review see related emails > >> fixed many minor edits > >> v4 - merge with latest driver changes > >> v3 - fix includes by removing ifdef for other type besides Linux > >> Fix the copyright notice in the Makefile > >> v2 - merge all of the patches into one patch > >> Fix a typo on naming the tap device > >> Update the maintainers list > >> > >> Signed-off-by: Keith Wiles > >> --- > > > > Just a reminder, this is a new PMD and waiting for community review. >
[dpdk-dev] [PATCH v9] drivers/net:new PMD using tun/tap host interface
Keith, This won't build when integrated with v16.11. The register macro prefix has been renamed. a v10 is needed. diff --git a/drivers/net/tap/rte_eth_tap.c b/drivers/net/tap/rte_eth_tap.c index 7f303db..297d4b6 100644 --- a/drivers/net/tap/rte_eth_tap.c +++ b/drivers/net/tap/rte_eth_tap.c @@ -752,5 +752,6 @@ static struct rte_vdev_driver pmd_tap_drv = { .remove = rte_pmd_tap_remove, }; -DRIVER_REGISTER_VDEV(net_tap, pmd_tap_drv); -DRIVER_REGISTER_PARAM_STRING(net_tap, "iface=,speed=N"); +RTE_PMD_REGISTER_VDEV(net_tap, pmd_tap_drv); +RTE_PMD_REGISTER_ALIAS(net_tap, eth_tap); +RTE_PMD_REGISTER_PARAM_STRING(net_tap, "iface=,speed=N"); On Mon, Nov 21, 2016 at 7:56 AM, Ferruh Yigit wrote: > On 10/13/2016 11:03 PM, Keith Wiles wrote: >> The rte_eth_tap.c PMD creates a device using TUN/TAP interfaces >> on the local host. The PMD allows for DPDK and the host to >> communicate using a raw device interface on the host and in >> the DPDK application. The device created is a Tap device with >> a L2 packet header. >> >> v9 - Fix up the docs to use correct syntax >> v8 - Fix issue with tap_tx_queue_setup() not return zero on success. >> v7 - Reword the comment in common_base and fix the data->name issue >> v6 - fixed the checkpatch issues >> v5 - merge in changes from list review see related emails >> fixed many minor edits >> v4 - merge with latest driver changes >> v3 - fix includes by removing ifdef for other type besides Linux >> Fix the copyright notice in the Makefile >> v2 - merge all of the patches into one patch >> Fix a typo on naming the tap device >> Update the maintainers list >> >> Signed-off-by: Keith Wiles >> --- > > Just a reminder, this is a new PMD and waiting for community review.
[dpdk-dev] [PATCH v9] drivers/net:new PMD using tun/tap host interface
On 10/13/2016 11:03 PM, Keith Wiles wrote: > The rte_eth_tap.c PMD creates a device using TUN/TAP interfaces > on the local host. The PMD allows for DPDK and the host to > communicate using a raw device interface on the host and in > the DPDK application. The device created is a Tap device with > a L2 packet header. > > v9 - Fix up the docs to use correct syntax > v8 - Fix issue with tap_tx_queue_setup() not return zero on success. > v7 - Reword the comment in common_base and fix the data->name issue > v6 - fixed the checkpatch issues > v5 - merge in changes from list review see related emails > fixed many minor edits > v4 - merge with latest driver changes > v3 - fix includes by removing ifdef for other type besides Linux > Fix the copyright notice in the Makefile > v2 - merge all of the patches into one patch > Fix a typo on naming the tap device > Update the maintainers list > > Signed-off-by: Keith Wiles > --- Just a reminder, this is a new PMD and waiting for community review.
[dpdk-dev] [PATCH v9] drivers/net:new PMD using tun/tap host interface
On 10/13/2016 11:03 PM, Keith Wiles wrote: > The rte_eth_tap.c PMD creates a device using TUN/TAP interfaces > on the local host. The PMD allows for DPDK and the host to > communicate using a raw device interface on the host and in > the DPDK application. The device created is a Tap device with > a L2 packet header. > > v9 - Fix up the docs to use correct syntax > v8 - Fix issue with tap_tx_queue_setup() not return zero on success. > v7 - Reword the comment in common_base and fix the data->name issue > v6 - fixed the checkpatch issues > v5 - merge in changes from list review see related emails > fixed many minor edits > v4 - merge with latest driver changes > v3 - fix includes by removing ifdef for other type besides Linux > Fix the copyright notice in the Makefile > v2 - merge all of the patches into one patch > Fix a typo on naming the tap device > Update the maintainers list > > Signed-off-by: Keith Wiles > --- Reviewed-by: Ferruh Yigit
[dpdk-dev] [PATCH v9] drivers/net:new PMD using tun/tap host interface
> -Original Message- > From: dev [mailto:dev-bounces at dpdk.org] On Behalf Of Keith Wiles > Sent: Thursday, October 13, 2016 11:04 PM > To: dev at dpdk.org > Cc: pmatilai at redhat.com; yuanhan.liu at linux.intel.com; Yigit, Ferruh > > Subject: [dpdk-dev] [PATCH v9] drivers/net:new PMD using tun/tap host > interface > > The rte_eth_tap.c PMD creates a device using TUN/TAP interfaces on the > local host. The PMD allows for DPDK and the host to communicate using a > raw device interface on the host and in the DPDK application. The device > created is a Tap device with a L2 packet header. > > v9 - Fix up the docs to use correct syntax > v8 - Fix issue with tap_tx_queue_setup() not return zero on success. > v7 - Reword the comment in common_base and fix the data->name issue > v6 - fixed the checkpatch issues > v5 - merge in changes from list review see related emails > fixed many minor edits > v4 - merge with latest driver changes > v3 - fix includes by removing ifdef for other type besides Linux > Fix the copyright notice in the Makefile > v2 - merge all of the patches into one patch > Fix a typo on naming the tap device > Update the maintainers list > > Signed-off-by: Keith Wiles For the doc part of the patch: Acked-by: John McNamara
[dpdk-dev] [PATCH v9] drivers/net:new PMD using tun/tap host interface
The rte_eth_tap.c PMD creates a device using TUN/TAP interfaces on the local host. The PMD allows for DPDK and the host to communicate using a raw device interface on the host and in the DPDK application. The device created is a Tap device with a L2 packet header. v9 - Fix up the docs to use correct syntax v8 - Fix issue with tap_tx_queue_setup() not return zero on success. v7 - Reword the comment in common_base and fix the data->name issue v6 - fixed the checkpatch issues v5 - merge in changes from list review see related emails fixed many minor edits v4 - merge with latest driver changes v3 - fix includes by removing ifdef for other type besides Linux Fix the copyright notice in the Makefile v2 - merge all of the patches into one patch Fix a typo on naming the tap device Update the maintainers list Signed-off-by: Keith Wiles --- MAINTAINERS | 5 + config/common_base | 9 + config/common_linuxapp | 1 + doc/guides/nics/index.rst | 1 + doc/guides/nics/tap.rst | 136 ++ drivers/net/Makefile| 1 + drivers/net/tap/Makefile| 57 +++ drivers/net/tap/rte_eth_tap.c | 756 drivers/net/tap/rte_pmd_tap_version.map | 4 + mk/rte.app.mk | 1 + 10 files changed, 971 insertions(+) create mode 100644 doc/guides/nics/tap.rst create mode 100644 drivers/net/tap/Makefile create mode 100644 drivers/net/tap/rte_eth_tap.c create mode 100644 drivers/net/tap/rte_pmd_tap_version.map diff --git a/MAINTAINERS b/MAINTAINERS index 8f5fa82..433d402 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -394,6 +394,11 @@ F: doc/guides/nics/pcap_ring.rst F: app/test/test_pmd_ring.c F: app/test/test_pmd_ring_perf.c +Tap PMD +M: Keith Wiles +F: drivers/net/tap +F: doc/guides/nics/tap.rst + Null Networking PMD M: Tetsuya Mukawa F: drivers/net/null/ diff --git a/config/common_base b/config/common_base index f5d2eff..47ef843 100644 --- a/config/common_base +++ b/config/common_base @@ -592,3 +592,12 @@ CONFIG_RTE_APP_TEST_RESOURCE_TAR=n CONFIG_RTE_TEST_PMD=y CONFIG_RTE_TEST_PMD_RECORD_CORE_CYCLES=n CONFIG_RTE_TEST_PMD_RECORD_BURST_STATS=n + +# +# Compile the TAP PMD +# +# The TAP PMD is currently only built for Linux and the +# option is enabled by default in common_linuxapp file, +# set to 'n' in the common_base file. +# +CONFIG_RTE_LIBRTE_PMD_TAP=n diff --git a/config/common_linuxapp b/config/common_linuxapp index 2483dfa..782b503 100644 --- a/config/common_linuxapp +++ b/config/common_linuxapp @@ -44,3 +44,4 @@ CONFIG_RTE_LIBRTE_PMD_VHOST=y CONFIG_RTE_LIBRTE_PMD_AF_PACKET=y CONFIG_RTE_LIBRTE_POWER=y CONFIG_RTE_VIRTIO_USER=y +CONFIG_RTE_LIBRTE_PMD_TAP=y diff --git a/doc/guides/nics/index.rst b/doc/guides/nics/index.rst index 92d56a5..f676a52 100644 --- a/doc/guides/nics/index.rst +++ b/doc/guides/nics/index.rst @@ -56,6 +56,7 @@ Network Interface Controller Drivers vhost vmxnet3 pcap_ring +tap **Figures** diff --git a/doc/guides/nics/tap.rst b/doc/guides/nics/tap.rst new file mode 100644 index 000..622b9e7 --- /dev/null +++ b/doc/guides/nics/tap.rst @@ -0,0 +1,136 @@ +.. BSD LICENSE +Copyright(c) 2016 Intel Corporation. All rights reserved. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +* Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in +the documentation and/or other materials provided with the +distribution. +* Neither the name of Intel Corporation nor the names of its +contributors may be used to endorse or promote products derived +from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Tun/Tap Poll Mode Driver + + +The ``rte_eth_tap.c`` PMD