* Re: [dpdk-dev] [PATCH] vmxnet3: set txq_flags in default TX conf
2014-12-11 19:56 ` De Lara Guarch, Pablo
@ 2014-12-12 6:48 ` Zhang, XiaonanX
2014-12-17 8:59 ` [dpdk-dev] vmxnet3 and Linux FC20 OS platform, example directory could not compiled success Zhang, XiaonanX
1 sibling, 0 replies; 7+ messages in thread
From: Zhang, XiaonanX @ 2014-12-12 6:48 UTC (permalink / raw)
To: De Lara Guarch, Pablo, dev, Cao, Waterman, Thomas Monjalon
Tested-by: Xiaonan Zhang <xiaonanx.zhang@intel.com>
- Tested Commit: Pablo
- OS: Fedora20 3.15.8-200.fc20.x86_64
- GCC: gcc version 4.8.3 20140624
- CPU: Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz
- NIC: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection [8086:10fb]
- Default x86_64-native-linuxapp-gcc configuration
- Total 6 cases, 6 passed, 0 failed
- Test Environment setup
- Topology #1: Create 2VMs (Fedora 20, 64bit);for each VM, pass through one physical port(Niantic 82599) to VM, and also create one virtual device: vmxnet3 in VM. Between two VMs, use one vswitch to connect 2 vmxnet3. In summary, PF1
and vmxnet3A are in VM1; PF2 and vmxnet3B are in VM2.The traffic flow for l2fwd/l3fwd is as below:
Ixia -> PF1 -> vmxnet3A -> vswitch -> vmxnet3B -> PF2 -> Ixia.
- Topology #2: Create 1VM (Fedora 20, 64bit), on this VM, created 2 vmxnet3, called vmxnet3A, vmxnet3B; create 2 vswitch, vswitchA connecting PF1 and vmxnet3A, while vswitchB connecting PF2 and vmxnet3B. The traffic flow is as below:
Ixia -> PF1 -> vswitchA -> vmxnet3A -> vmxnet3B -> vswitchB -> PF2 -> Ixia.
- Test Case1: L2fwd with Topology#1
Description: Set up topology#1(in prerequisite session), and bind PF1, PF2, Vmxnet3A, vmxnet3B to DPDK poll-mode driver (igb_uio).
Increase the flow at line rate (uni-directional traffic), send the flow at different packet size (64bytes, 128bytes, 256bytes, 512bytes, 1024bytes, 1280bytes and 1518bytes) and check the received packets/rate to see
if any unexpected behavior, such as no receives after N packets.
Command / instruction:
To run the l2fwd example in 2VMs:
./build/l2fwd -c f -n 4 -- -p 0x3
- Test IXIA Flow prerequisite: Ixia port1 sends 5 packets to PF1, and the flow should have PF1's MAC as destination MAC. Check if ixia port2 have received the 5 packets.
Expected test result:
Passed
- Test Case2: L3fwd-VF with Topology#1
Description: Set up topology#1(in prerequisite session), and bind PF1, PF2, Vmxnet3A, vmxnet3B to DPDK poll-mode driver (igb_uio)
Increase the flow at line rate (uni-directional traffic), send the flow at different packet size (64bytes, 128bytes, 256bytes, 512bytes, 1024bytes, 1280bytes and 1518bytes) and check the received packets/rate to see
if any unexpected behavior, such as no receives after N packets.
Command / instruction:
To run the l3fwd-vf example in 2VMs:
./build/l3fwd-vf -c 0x6 -n 4 -- -p 0x3 --config "(0,0,1),(1,0,2)"
- Test IXIA Flow prerequisite: Ixia port1 sends 5 packets to PF1, and the flow should have PF1's MAC as destination MAC and have 2.1.1.x as destination IP. Check if ixia port2 have received the 5 packets.
Expected test result:
Passed
- Test Case3: L2fwd with Topology#2
Description: Set up topology#2(in prerequisite session), and bind vmxnet3A and vmxnet3B to DPDK poll-mode driver (igb_uio).
Increase the flow at line rate (uni-directional traffic), send the flow at different packet size (64bytes, 128bytes, 256bytes, 512bytes, 1024bytes, 1280bytes and 1518bytes) and check the received packets/rate to see
if any unexpected behavior, such as no receives after N packets.
Command / instruction:
To run the l2fwd example in VM1:
./build/l2fwd -c f -n 4 -- -p 0x3
- Test IXIA Flow prerequisite: Ixia port1 sends 5 packets to port0 (vmxnet3A), and the flow should have port0's MAC as destination MAC. Check if ixia port2 have received the 5 packets. Similar things need to be done at ixia port2.
Expected test result:
Passed
- Test Case4: L3fwd-VF with Topology#2
Description: Set up topology#2(in prerequisite session), and bind vmxnet3A and vmxnet3B to DPDK poll-mode driver (igb_uio).
Increase the flow at line rate (uni-directional traffic), send the flow at different packet size (64bytes, 128bytes, 256bytes, 512bytes, 1024bytes, 1280bytes and 1518bytes) and check the received packets/rate to see
if any unexpected behavior, such as no receives after N packets.
Command / instruction:
To run the l3fwd-vf example in VM1:
./build/l3fwd-vf -c 0x6 -n 4 -- -p 0x3 --config "(0,0,1),(1,0,2)"
- Test IXIA Flow prerequisite: Ixia port1 sends 5 packets to port0(vmxnet3A), and the flow should have port0's MAC as destination MAC and have 2.1.1.x as destination IP. Check if ixia port2 have received the 5 packets.
Expected test result:
Passed
- Test Case5: Timer test with Topology#2
Description: Set up topology#2(in prerequisite session), and bind vmxnet3A and vmxnet3B to DPDK poll-mode driver (igb_uio).
Command / instruction:
Build timer sample and run the sample:
./build/timer -c f -n 4
- Test IXIA Flow prerequisite: N.A.
Expected test result:
Passed
- Test Case6: Testpmd basic with Topology#2
Description: Set up topology#2(in prerequisite session), and bind vmxnet3A and vmxnet3B to DPDK poll-mode driver (igbuio).
Increase the flow at line rate (uni-directional traffic), send the flow at different packet size (64bytes, 128bytes, 256bytes, 512bytes, 1024bytes, 1280bytes and 1518bytes) and check the received packets/rate to see
if any unexpected behavior, such as no receives after N packets.
Command / instruction:
Run testpmd(e.g:/x86_64-native-linuxapp-gcc/app/testpmd) with below command lines:
./testpmd -c f -n 4 -- --txqflags=0xf01 -i
Clean environment and start the forwarding. Need check the port information and clear port statics by using below commands:
Testpmd>show port info all
Testpmd>clear port stats all
Testpmd>show port stats all
Testpmd>set fwd mac
Testpmd>start
- Test IXIA Flow prerequisite: N.A.
Expected test result:
Passed
-----Original Message-----
From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of De Lara Guarch, Pablo
Sent: Friday, December 12, 2014 3:57 AM
To: De Lara Guarch, Pablo; dev@dpdk.org
Subject: Re: [dpdk-dev] [PATCH] vmxnet3: set txq_flags in default TX conf
> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Pablo de Lara
> Sent: Thursday, December 11, 2014 5:08 PM
> To: dev@dpdk.org
> Cc: root
> Subject: [dpdk-dev] [PATCH] vmxnet3: set txq_flags in default TX conf
>
> Since commit fbde27f19ab8f "get default Rx/Tx configuration from dev info",
> a default RX/TX configuration can be used for all PMDs.
> In case of vmxnet3, the whole structure was zeroed and not filled out.
> The PMD does not support multi segments or offload functions,
> so txq_flags should have those flags set.
>
> Signed-off-by: root <root@sie-lab-214-174.ir.intel.com>
Self-NACK. Wrong signed-off.
> ---
> lib/librte_pmd_vmxnet3/vmxnet3_ethdev.c | 3 +++
> 1 files changed, 3 insertions(+), 0 deletions(-)
>
> diff --git a/lib/librte_pmd_vmxnet3/vmxnet3_ethdev.c
> b/lib/librte_pmd_vmxnet3/vmxnet3_ethdev.c
> index 963a8a5..ef0af16 100644
> --- a/lib/librte_pmd_vmxnet3/vmxnet3_ethdev.c
> +++ b/lib/librte_pmd_vmxnet3/vmxnet3_ethdev.c
> @@ -642,6 +642,9 @@
> vmxnet3_dev_info_get(__attribute__((unused))struct rte_eth_dev *dev,
> struct rte_
> dev_info->min_rx_bufsize = 1518 + RTE_PKTMBUF_HEADROOM;
> dev_info->max_rx_pktlen = 16384; /* includes CRC, cf MAXFRS
> register */
> dev_info->max_mac_addrs = VMXNET3_MAX_MAC_ADDRS;
> +
> + dev_info->default_txconf.txq_flags =
> ETH_TXQ_FLAGS_NOMULTSEGS |
> +
> ETH_TXQ_FLAGS_NOOFFLOADS;
> }
>
> /* return 0 means link status changed, -1 means not changed */
> --
> 1.7.4.1
^ permalink raw reply [flat|nested] 7+ messages in thread
* [dpdk-dev] vmxnet3 and Linux FC20 OS platform, example directory could not compiled success
2014-12-11 19:56 ` De Lara Guarch, Pablo
2014-12-12 6:48 ` Zhang, XiaonanX
@ 2014-12-17 8:59 ` Zhang, XiaonanX
2014-12-17 11:45 ` Thomas Monjalon
1 sibling, 1 reply; 7+ messages in thread
From: Zhang, XiaonanX @ 2014-12-17 8:59 UTC (permalink / raw)
To: De Lara Guarch, Pablo, dev, Cao, Waterman, Thomas Monjalon
Hi Pablo and Thomas,
We use latest package DPDK-1.8-rc5, and we found some compiled errors,
Our Test Environment setup as follows:
- OS: Fedora20 3.11.10-301.fc20.x86_64
- GCC: gcc version 4.8.2 20131017 (Red Hat 4.8.2-1)
- CPU: Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz
- NIC: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection [8086:10fb]
- Default x86_64-native-linuxapp-gcc configuration
main.o: In function `signal_handler':
main.c:(.text+0x7): undefined reference to `rte_eth_dev_count'
main.c:(.text+0x1a): undefined reference to `rte_exit'
main.c:(.text+0x4a): undefined reference to `rte_eth_dev_close'
main.o: In function `rte_pktmbuf_free':
main.c:(.text+0x9c): undefined reference to `per_lcore__lcore_id'
main.c:(.text+0x2df): undefined reference to `rte_eal_has_hugepages'
main.c:(.text+0x354): undefined reference to `per_lcore__lcore_id'
main.c:(.text+0x6fa): undefined reference to `rte_mem_virt2phy'
main.o: In function `send_burst':
main.c:(.text+0x797): undefined reference to `rte_eth_devices'
main.c:(.text+0x79d): undefined reference to `rte_eth_devices'
main.o: In function `main_loop':
main.c:(.text+0x819): undefined reference to `rte_get_tsc_hz'
main.c:(.text+0x820): undefined reference to `per_lcore__lcore_id'
main.c:(.text+0x870): undefined reference to `rte_logs'
main.c:(.text+0x879): undefined reference to `rte_logs'
main.c:(.text+0x893): undefined reference to `rte_log'
main.c:(.text+0x8aa): undefined reference to `rte_logs'
main.c:(.text+0x8b3): undefined reference to `rte_logs'
main.c:(.text+0x8cf): undefined reference to `rte_log'
main.c:(.text+0x8e7): undefined reference to `rte_logs'
main.c:(.text+0x8fa): undefined reference to `rte_logs'
main.c:(.text+0x916): undefined reference to `rte_log'
main.c:(.text+0x952): undefined reference to `rte_cycles_vmware_tsc_map'
main.c:(.text+0x9c3): undefined reference to `rte_eth_devices'
main.c:(.text+0x9d6): undefined reference to `rte_eth_devices'
main.c:(.text+0xe33): undefined reference to `rte_eth_devices'
main.o: In function `main':
main.c:(.text.startup+0x34): undefined reference to `rte_eal_init'
main.c:(.text.startup+0x10d): undefined reference to `rte_exit'
main.c:(.text.startup+0x1f9): undefined reference to `rte_strsplit'
main.c:(.text.startup+0x33c): undefined reference to `rte_eal_get_configuration'
main.c:(.text.startup+0x360): undefined reference to `lcore_config'
main.c:(.text.startup+0x443): undefined reference to `rte_eth_dev_count'
main.c:(.text.startup+0x4cb): undefined reference to `rte_eal_get_configuration'
main.c:(.text.startup+0x5dd): undefined reference to `rte_eth_dev_configure'
main.c:(.text.startup+0x600): undefined reference to `rte_eth_macaddr_get'
main.c:(.text.startup+0x633): undefined reference to `lcore_config'
main.c:(.text.startup+0x6fb): undefined reference to `rte_eal_get_configuration'
main.c:(.text.startup+0x754): undefined reference to `rte_pktmbuf_pool_init'
main.c:(.text.startup+0x786): undefined reference to `rte_pktmbuf_init'
main.c:(.text.startup+0x78b): undefined reference to `rte_mempool_create'
main.c:(.text.startup+0x7de): undefined reference to `rte_lpm_create'
main.c:(.text.startup+0x843): undefined reference to `rte_lpm_add'
main.c:(.text.startup+0x89c): undefined reference to `rte_exit'
main.c:(.text.startup+0x8a1): undefined reference to `rte_eal_get_configuration'
main.c:(.text.startup+0x8be): undefined reference to `lcore_config'
main.c:(.text.startup+0x8e3): undefined reference to `rte_eth_dev_info_get'
main.c:(.text.startup+0x90e): undefined reference to `rte_eth_tx_queue_setup'
main.c:(.text.startup+0x931): undefined reference to `rte_eal_get_configuration'
main.c:(.text.startup+0x95a): undefined reference to `lcore_config'
main.c:(.text.startup+0x981): undefined reference to `rte_eal_get_configuration'
main.c:(.text.startup+0xa17): undefined reference to `rte_eth_rx_queue_setup'
main.c:(.text.startup+0xaaf): undefined reference to `rte_eth_dev_start'
main.c:(.text.startup+0xae3): undefined reference to `rte_eal_mp_remote_launch'
main.c:(.text.startup+0xaea): undefined reference to `rte_eal_get_configuration'
main.c:(.text.startup+0xaf8): undefined reference to `rte_eal_get_configuration'
main.c:(.text.startup+0xb14): undefined reference to `rte_eal_get_configuration'
main.c:(.text.startup+0xb22): undefined reference to `rte_eal_get_configuration'
main.c:(.text.startup+0xb35): undefined reference to `rte_eal_wait_lcore'
main.c:(.text.startup+0xb77): undefined reference to `rte_exit'
main.c:(.text.startup+0xbb9): undefined reference to `rte_exit'
main.c:(.text.startup+0xbd5): undefined reference to `rte_exit'
main.c:(.text.startup+0xbef): undefined reference to `rte_exit'
main.c:(.text.startup+0xc04): undefined reference to `rte_exit'
main.o:main.c:(.text.startup+0xc44): more undefined references to `rte_exit' follow
collect2: error: ld returned 1 exit status
make[1]: *** [l3fwd-vf] Error 1
make: *** [all] Error 2
Best Regards
Xiaonan
-----Original Message-----
From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of De Lara Guarch, Pablo
Sent: Friday, December 12, 2014 3:57 AM
To: De Lara Guarch, Pablo; dev@dpdk.org
Subject: Re: [dpdk-dev] [PATCH] vmxnet3: set txq_flags in default TX conf
> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Pablo de Lara
> Sent: Thursday, December 11, 2014 5:08 PM
> To: dev@dpdk.org
> Cc: root
> Subject: [dpdk-dev] [PATCH] vmxnet3: set txq_flags in default TX conf
>
> Since commit fbde27f19ab8f "get default Rx/Tx configuration from dev info",
> a default RX/TX configuration can be used for all PMDs.
> In case of vmxnet3, the whole structure was zeroed and not filled out.
> The PMD does not support multi segments or offload functions,
> so txq_flags should have those flags set.
>
> Signed-off-by: root <root@sie-lab-214-174.ir.intel.com>
Self-NACK. Wrong signed-off.
> ---
> lib/librte_pmd_vmxnet3/vmxnet3_ethdev.c | 3 +++
> 1 files changed, 3 insertions(+), 0 deletions(-)
>
> diff --git a/lib/librte_pmd_vmxnet3/vmxnet3_ethdev.c
> b/lib/librte_pmd_vmxnet3/vmxnet3_ethdev.c
> index 963a8a5..ef0af16 100644
> --- a/lib/librte_pmd_vmxnet3/vmxnet3_ethdev.c
> +++ b/lib/librte_pmd_vmxnet3/vmxnet3_ethdev.c
> @@ -642,6 +642,9 @@
> vmxnet3_dev_info_get(__attribute__((unused))struct rte_eth_dev *dev,
> struct rte_
> dev_info->min_rx_bufsize = 1518 + RTE_PKTMBUF_HEADROOM;
> dev_info->max_rx_pktlen = 16384; /* includes CRC, cf MAXFRS
> register */
> dev_info->max_mac_addrs = VMXNET3_MAX_MAC_ADDRS;
> +
> + dev_info->default_txconf.txq_flags =
> ETH_TXQ_FLAGS_NOMULTSEGS |
> +
> ETH_TXQ_FLAGS_NOOFFLOADS;
> }
>
> /* return 0 means link status changed, -1 means not changed */
> --
> 1.7.4.1
^ permalink raw reply [flat|nested] 7+ messages in thread