Hi, i tried this out and yes, changing rte_eth_link_get_nowait() to rte_eth_link_get() fixes the issue.
On Tue, Jan 5, 2016 at 11:55 AM, Zhang, Roy Fan <roy.fan.zhang at intel.com> wrote: > Thanks. > > I believe the problem is that rte_eth_link_get_nowait() in > app_ports_check_link() is a no-wait version of rte_eth_link_get() (which is > used in testpmd), the former won't cause up to 9sec stall in the process as > the latter, but may not get up-to-date link status of the port. > > Could you try, instead of using 1sec delay before app_ports_check_link(), > but to replace rte_eth_link_get_nowait() to rte_eth_link_get(), and tell me > if it works? > I suppose this should be a more reliable step to guarantee that you get > the actual link status. > > Regards, > Fan > > > > On 05/01/2016 06:59, Arto S?nkiaho wrote: > > Thank you. > > This fixed the problem. > > It really looks like it takes a moment before the port comes up and this > caused app_ports_check_link to fail. > > On Tue, Jan 5, 2016 at 12:27 AM, Vijay S <vsnv83 at gmail.com> wrote: > >> I was able to fix this issue in test-pipeline by adding a 1 sec sleep >> before calling app_ports_check_link in the function app_init_ports(). The >> eth ports require some time to come up after rte_eth_dev_start.. >> >> Thnx, >> Vijay >> >> >> On Thu, Dec 31, 2015 at 1:25 AM, Arto S?nkiaho < <artosank at gmail.com> >> artosank at gmail.com> wrote: >> >>> Thanks for the quick response. >>> >>> The port(s) are physically connected, that is not an issue here. >>> >>> I have 2 nics and they are connected to each other and when i run testpmd >>> or l2fwd or l3fwd applications, they work flawlessly. >>> >>> Pktgen also works without issues and i can generate traffic between the >>> ports. >>> >>> The problem appears when i try to run testpipeline, it always prints out >>> that "Some NIC ports are DOWN" and exits. >>> >>> Here is an output when i try to run it with links 0 and 1. >>> >>> $ sudo ./testpipeline -l 1,2,3 -- -p 0x03 >>> EAL: Detected lcore 0 as core 0 on socket 0 >>> EAL: Detected lcore 1 as core 0 on socket 0 >>> EAL: Detected lcore 2 as core 1 on socket 0 >>> EAL: Detected lcore 3 as core 1 on socket 0 >>> EAL: Detected lcore 4 as core 2 on socket 0 >>> EAL: Detected lcore 5 as core 2 on socket 0 >>> EAL: Detected lcore 6 as core 3 on socket 0 >>> EAL: Detected lcore 7 as core 3 on socket 0 >>> EAL: Support maximum 128 logical core(s) by configuration. >>> EAL: Detected 8 lcore(s) >>> EAL: VFIO modules not all loaded, skip VFIO support... >>> EAL: Setting up physically contiguous memory... >>> EAL: Ask a virtual area of 0x200000 bytes >>> EAL: Virtual area found at 0x7fcda6200000 (size = 0x200000) >>> EAL: Ask a virtual area of 0xc00000 bytes >>> EAL: Virtual area found at 0x7fcda5400000 (size = 0xc00000) >>> EAL: Ask a virtual area of 0x32800000 bytes >>> EAL: Virtual area found at 0x7fcd72a00000 (size = 0x32800000) >>> EAL: Ask a virtual area of 0x19400000 bytes >>> EAL: Virtual area found at 0x7fcd59400000 (size = 0x19400000) >>> EAL: Ask a virtual area of 0x400000 bytes >>> EAL: Virtual area found at 0x7fcd58e00000 (size = 0x400000) >>> EAL: Ask a virtual area of 0x600000 bytes >>> EAL: Virtual area found at 0x7fcd58600000 (size = 0x600000) >>> EAL: Ask a virtual area of 0x69400000 bytes >>> EAL: Virtual area found at 0x7fccef000000 (size = 0x69400000) >>> EAL: Ask a virtual area of 0x1c00000 bytes >>> EAL: Virtual area found at 0x7fcced200000 (size = 0x1c00000) >>> EAL: Ask a virtual area of 0x6c00000 bytes >>> EAL: Virtual area found at 0x7fcce6400000 (size = 0x6c00000) >>> EAL: Ask a virtual area of 0x600000 bytes >>> EAL: Virtual area found at 0x7fcce5c00000 (size = 0x600000) >>> EAL: Ask a virtual area of 0x200000 bytes >>> EAL: Virtual area found at 0x7fcce5800000 (size = 0x200000) >>> EAL: Ask a virtual area of 0x200000 bytes >>> EAL: Virtual area found at 0x7fcce5400000 (size = 0x200000) >>> EAL: Ask a virtual area of 0x5400000 bytes >>> EAL: Virtual area found at 0x7fccdfe00000 (size = 0x5400000) >>> EAL: Ask a virtual area of 0x70600000 bytes >>> EAL: Virtual area found at 0x7fcc6f600000 (size = 0x70600000) >>> EAL: Ask a virtual area of 0x200000 bytes >>> EAL: Virtual area found at 0x7fcc6f200000 (size = 0x200000) >>> EAL: Ask a virtual area of 0x400000 bytes >>> EAL: Virtual area found at 0x7fcc6ec00000 (size = 0x400000) >>> EAL: Ask a virtual area of 0x8e600000 bytes >>> EAL: Virtual area found at 0x7fcbe0400000 (size = 0x8e600000) >>> EAL: Ask a virtual area of 0x200000 bytes >>> EAL: Virtual area found at 0x7fcbe0000000 (size = 0x200000) >>> EAL: Ask a virtual area of 0x200000 bytes >>> EAL: Virtual area found at 0x7fcbdfc00000 (size = 0x200000) >>> EAL: Ask a virtual area of 0x800000 bytes >>> EAL: Virtual area found at 0x7fcbdf200000 (size = 0x800000) >>> EAL: Ask a virtual area of 0x200000 bytes >>> EAL: Virtual area found at 0x7fcbdee00000 (size = 0x200000) >>> EAL: Ask a virtual area of 0x400000 bytes >>> EAL: Virtual area found at 0x7fcbde800000 (size = 0x400000) >>> EAL: Ask a virtual area of 0x200000 bytes >>> EAL: Virtual area found at 0x7fcbde400000 (size = 0x200000) >>> EAL: Ask a virtual area of 0x400000 bytes >>> EAL: Virtual area found at 0x7fcbdde00000 (size = 0x400000) >>> EAL: Ask a virtual area of 0x200000 bytes >>> EAL: Virtual area found at 0x7fcbdda00000 (size = 0x200000) >>> EAL: Ask a virtual area of 0x200000 bytes >>> EAL: Virtual area found at 0x7fcbdd600000 (size = 0x200000) >>> EAL: Ask a virtual area of 0x400000 bytes >>> EAL: Virtual area found at 0x7fcbdd000000 (size = 0x400000) >>> EAL: Ask a virtual area of 0x400000 bytes >>> EAL: Virtual area found at 0x7fcbdca00000 (size = 0x400000) >>> EAL: Ask a virtual area of 0x200000 bytes >>> EAL: Virtual area found at 0x7fcbdc600000 (size = 0x200000) >>> EAL: Ask a virtual area of 0x200000 bytes >>> EAL: Virtual area found at 0x7fcbdc200000 (size = 0x200000) >>> EAL: Ask a virtual area of 0x200000 bytes >>> EAL: Virtual area found at 0x7fcbdbe00000 (size = 0x200000) >>> EAL: Requesting 3637 pages of size 2MB from socket 0 >>> EAL: TSC frequency is ~1795854 KHz >>> EAL: Master lcore 1 is ready (tid=a8e13940;cpuset=[1]) >>> EAL: lcore 2 is ready (tid=a7715700;cpuset=[2]) >>> EAL: lcore 3 is ready (tid=a6f14700;cpuset=[3]) >>> EAL: PCI device 0000:01:00.0 on NUMA socket -1 >>> EAL: probe driver: 8086:1533 rte_igb_pmd >>> EAL: PCI memory mapped at 0x7fcda6400000 >>> EAL: PCI memory mapped at 0x7fcda6500000 >>> PMD: eth_igb_dev_init(): port_id 0 vendorID=0x8086 deviceID=0x1533 >>> EAL: PCI device 0000:02:00.0 on NUMA socket -1 >>> EAL: probe driver: 8086:1533 rte_igb_pmd >>> EAL: PCI memory mapped at 0x7fcda6504000 >>> EAL: PCI memory mapped at 0x7fcda6604000 >>> PMD: eth_igb_dev_init(): port_id 1 vendorID=0x8086 deviceID=0x1533 >>> USER1: Creating the mbuf pool ... >>> USER1: Initializing NIC port 0 ... >>> PMD: eth_igb_rx_queue_setup(): sw_ring=0x7fcbdcaa7d40 >>> hw_ring=0x7fcbdcaa8180 dma_addr=0x2098a8180 >>> PMD: eth_igb_tx_queue_setup(): To improve 1G driver performance, consider >>> setting the TX WTHRESH value to 4, 8, or 16. >>> PMD: eth_igb_tx_queue_setup(): sw_ring=0x7fcbdca95bc0 >>> hw_ring=0x7fcbdca97c00 dma_addr=0x209897c00 >>> PMD: eth_igb_start(): << >>> USER1: Initializing NIC port 1 ... >>> PMD: eth_igb_rx_queue_setup(): sw_ring=0x7fcbdca85540 >>> hw_ring=0x7fcbdca85980 dma_addr=0x209885980 >>> PMD: eth_igb_tx_queue_setup(): To improve 1G driver performance, consider >>> setting the TX WTHRESH value to 4, 8, or 16. >>> PMD: eth_igb_tx_queue_setup(): sw_ring=0x7fcbdca733c0 >>> hw_ring=0x7fcbdca75400 dma_addr=0x209875400 >>> PMD: eth_igb_start(): << >>> Port: 0 >>> USER1: Port 0 (0 Gbps) DOWN >>> Port: 1 >>> USER1: Port 1 (0 Gbps) DOWN >>> PANIC in app_ports_check_link(): >>> Some NIC ports are DOWN >>> 6: [./testpipeline() [0x42b7b3]] >>> 5: [/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5) >>> [0x7fcda7f38ec5]] >>> 4: [./testpipeline(main+0x34) [0x42a2f4]] >>> 3: [./testpipeline(app_init+0x34e) [0x42c0be]] >>> 2: [./testpipeline(__rte_panic+0xc9) [0x424d9e]] >>> 1: [./testpipeline(rte_dump_stack+0x1a) [0x492baa]] >>> >>> Any ideas what's the problem here ? Is there some step i must do before >>> running the testpipeline ? >>> >>> On Wed, Dec 23, 2015 at 6:15 PM, Zhang, Roy Fan <roy.fan.zhang at intel.com >>> > >>> wrote: >>> >>> > Hello, >>> > >>> > Thank you for using DPDK. >>> > >>> > testpipeline mainly passes the received packets to different tables >>> inside >>> > pipeline, and, if the pipeline works correctly, forwards the packets >>> back >>> > to output ports. >>> > >>> > To use testpipeline, you may have to have Ethernet packets sending to >>> the >>> > correct port(s) continuously. >>> > And the only way to check if the pipeline correctly is to monitor the >>> port >>> > output seeing if the pipeline has forwarded the packets back. There is >>> no >>> > interactive commands for testpipeline. >>> > >>> > Please check if your port is physically connected. To avail the >>> purpose of >>> > testpipeline, please connect your server running the program with the >>> with >>> > device capable of generating and monitoring packet flows, like a packet >>> > generator. >>> > If the answer is yes, please bond different ports to dpdk and run the >>> > program again. >>> > >>> > Regards, >>> > Fan >>> > >>> > > Hello, i am new with DPDK and i am trying to run the test-pipeline >>> > program. >>> > > >>> > > Here is the output when i run it: >>> > > >>> > > ./testpipeline -c 0x07 -- -p 0x01 >>> > > EAL: Detected lcore 0 as core 0 on socket 0 >>> > > EAL: Detected lcore 1 as core 0 on socket 0 >>> > > EAL: Detected lcore 2 as core 1 on socket 0 >>> > > EAL: Detected lcore 3 as core 1 on socket 0 >>> > > EAL: Detected lcore 4 as core 2 on socket 0 >>> > > EAL: Detected lcore 5 as core 2 on socket 0 >>> > > EAL: Detected lcore 6 as core 3 on socket 0 >>> > > EAL: Detected lcore 7 as core 3 on socket 0 >>> > > EAL: Support maximum 128 logical core(s) by configuration. >>> > > EAL: Detected 8 lcore(s) >>> > > EAL: VFIO modules not all loaded, skip VFIO support... >>> > > EAL: Setting up physically contiguous memory... >>> > > EAL: Ask a virtual area of 0x7000000 bytes >>> > > EAL: Virtual area found at 0x7f6689400000 (size = 0x7000000) >>> > > EAL: Ask a virtual area of 0x1c00000 bytes >>> > > EAL: Virtual area found at 0x7f6687600000 (size = 0x1c00000) >>> > > EAL: Ask a virtual area of 0x4000000 bytes >>> > > EAL: Virtual area found at 0x7f6683400000 (size = 0x4000000) >>> > > EAL: Ask a virtual area of 0x1800000 bytes >>> > > EAL: Virtual area found at 0x7f6681a00000 (size = 0x1800000) >>> > > EAL: Ask a virtual area of 0x200000 bytes >>> > > EAL: Virtual area found at 0x7f6681600000 (size = 0x200000) >>> > > EAL: Ask a virtual area of 0x11800000 bytes >>> > > EAL: Virtual area found at 0x7f666fc00000 (size = 0x11800000) >>> > > EAL: Ask a virtual area of 0x200000 bytes >>> > > EAL: Virtual area found at 0x7f666f800000 (size = 0x200000) >>> > > EAL: Requesting 256 pages of size 2MB from socket 0 >>> > > EAL: TSC frequency is ~1795851 KHz >>> > > EAL: Master lcore 0 is ready (tid=91f13940;cpuset=[0]) >>> > > EAL: lcore 1 is ready (tid=6f7ff700;cpuset=[1]) >>> > > EAL: lcore 2 is ready (tid=6effe700;cpuset=[2]) >>> > > EAL: PCI device 0000:01:00.0 on NUMA socket -1 >>> > > EAL: probe driver: 8086:1533 rte_igb_pmd >>> > > EAL: PCI memory mapped at 0x7f6690400000 >>> > > EAL: PCI memory mapped at 0x7f6690500000 >>> > > PMD: eth_igb_dev_init(): port_id 0 vendorID=0x8086 deviceID=0x1533 >>> > > EAL: PCI device 0000:02:00.0 on NUMA socket -1 >>> > > EAL: probe driver: 8086:1533 rte_igb_pmd >>> > > EAL: Not managed by a supported kernel driver, skipped >>> > > USER1: Creating the mbuf pool ... >>> > > USER1: Initializing NIC port 0 ... >>> > > PMD: eth_igb_rx_queue_setup(): sw_ring=0x7f666f936dc0 >>> > > hw_ring=0x7f666f937200 dma_addr=0x208337200 >>> > > PMD: eth_igb_tx_queue_setup(): To improve 1G driver performance, >>> > consider setting the TX WTHRESH value to 4, 8, or 16. >>> > > PMD: eth_igb_tx_queue_setup(): sw_ring=0x7f666f924c40 >>> > > hw_ring=0x7f666f926c80 dma_addr=0x208326c80 >>> > > PMD: eth_igb_start(): << >>> > > USER1: Port 0 (0 Gbps) DOWN >>> > > PANIC in app_ports_check_link(): >>> > > Some NIC ports are DOWN >>> > > 6: [./testpipeline() [0x42b7b3]] >>> > > 5: [/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5) >>> > > [0x7f6691038ec5]] >>> > > 4: [./testpipeline(main+0x34) [0x42a2f4]] >>> > > 3: [./testpipeline(app_init+0x336) [0x42c0a6]] >>> > > 2: [./testpipeline(__rte_panic+0xc9) [0x424d9e]] >>> > > 1: [./testpipeline(rte_dump_stack+0x1a) [0x492b8a] $ >>> > > >>> > > Here is the nic bind info >>> > > >>> > > $ dpdk_nic_bind -s >>> > > >>> > > Network devices using DPDK-compatible driver >>> > ============================================ >>> > > 0000:01:00.0 'I210 Gigabit Network Connection' drv=igb_uio unused= >>> > > >>> > > Network devices using kernel driver >>> > > =================================== >>> > > 0000:00:19.0 'Ethernet Connection I218-LM' if=eth2 drv=e1000e >>> > unused=igb_uio *Active* >>> > > 0000:02:00.0 'I210 Gigabit Network Connection' if=eth0 drv=igb >>> > unused=igb_uio >>> > > >>> > > Other network devices >>> > > ===================== >>> > > <none> >>> > > >>> > > Changing port mask to 0x04 or any other value gives following error: >>> > > >>> > > ./testpipeline -c 0x07 -- -p 0x04 >>> > > EAL: Detected lcore 0 as core 0 on socket 0 >>> > > EAL: Detected lcore 1 as core 0 on socket 0 >>> > > EAL: Detected lcore 2 as core 1 on socket 0 >>> > > EAL: Detected lcore 3 as core 1 on socket 0 >>> > > EAL: Detected lcore 4 as core 2 on socket 0 >>> > > EAL: Detected lcore 5 as core 2 on socket 0 >>> > > EAL: Detected lcore 6 as core 3 on socket 0 >>> > > EAL: Detected lcore 7 as core 3 on socket 0 >>> > > EAL: Support maximum 128 logical core(s) by configuration. >>> > > EAL: Detected 8 lcore(s) >>> > > EAL: VFIO modules not all loaded, skip VFIO support... >>> > > EAL: Setting up physically contiguous memory... >>> > > EAL: Ask a virtual area of 0x7000000 bytes >>> > > EAL: Virtual area found at 0x7fceeb000000 (size = 0x7000000) >>> > > EAL: Ask a virtual area of 0x1c00000 bytes >>> > > EAL: Virtual area found at 0x7fcee9200000 (size = 0x1c00000) >>> > > EAL: Ask a virtual area of 0x4000000 bytes >>> > > EAL: Virtual area found at 0x7fcee5000000 (size = 0x4000000) >>> > > EAL: Ask a virtual area of 0x1800000 bytes >>> > > EAL: Virtual area found at 0x7fcee3600000 (size = 0x1800000) >>> > > EAL: Ask a virtual area of 0x200000 bytes >>> > > EAL: Virtual area found at 0x7fcee3200000 (size = 0x200000) >>> > > EAL: Ask a virtual area of 0x11800000 bytes >>> > > EAL: Virtual area found at 0x7fced1800000 (size = 0x11800000) >>> > > EAL: Ask a virtual area of 0x200000 bytes >>> > > EAL: Virtual area found at 0x7fced1400000 (size = 0x200000) >>> > > EAL: Requesting 256 pages of size 2MB from socket 0 >>> > > EAL: TSC frequency is ~1795851 KHz >>> > > EAL: Master lcore 0 is ready (tid=f3c37940;cpuset=[0]) >>> > > EAL: lcore 1 is ready (tid=d13ff700;cpuset=[1]) >>> > > EAL: lcore 2 is ready (tid=d0bfe700;cpuset=[2]) >>> > > EAL: PCI device 0000:01:00.0 on NUMA socket -1 >>> > > EAL: probe driver: 8086:1533 rte_igb_pmd >>> > > EAL: PCI memory mapped at 0x7fcef2000000 >>> > > EAL: PCI memory mapped at 0x7fcef2100000 >>> > > PMD: eth_igb_dev_init(): port_id 0 vendorID=0x8086 deviceID=0x1533 >>> > > EAL: PCI device 0000:02:00.0 on NUMA socket -1 >>> > > EAL: probe driver: 8086:1533 rte_igb_pmd >>> > > EAL: Not managed by a supported kernel driver, skipped >>> > > USER1: Creating the mbuf pool ... >>> > > USER1: Initializing NIC port 2 ... >>> > > PANIC in app_init_ports(): >>> > > Cannot init NIC port 2 (-22) >>> > > 6: [./testpipeline() [0x42b7b3]] >>> > > 5: [/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5) >>> > > [0x7fcef2d5cec5]] >>> > > 4: [./testpipeline(main+0x34) [0x42a2f4]] >>> > > 3: [./testpipeline(app_init+0x3a2) [0x42c112]] >>> > > 2: [./testpipeline(__rte_panic+0xc9) [0x424d9e]] >>> > > 1: [./testpipeline(rte_dump_stack+0x1a) [0x492b8a]] >>> > > >>> > > What i'm doing wrong here ? >>> > > >>> > > There is probably some configuration step missing or misconfiguration >>> > but i could not figure out what it is. >>> > > >>> > > Thank you in advance. >>> > >>> >> >> > > >
