[dpdk-dev] When I run test-pmd, most of received packets(loop-backed packet) have RX-error.

Choi, Sy Jong sy.jong.choi at intel.com
Wed Oct 21 04:07:17 CEST 2015


Hi Ick-Sung,

You will need to use igb_uio for DPDK. That is the Poll mode driver.

ixgbe is for the kernel, and do not support DPDK.

Regards,
Choi, Sy Jong
Platform Application Engineer

-----Original Message-----
From: dev [mailto:dev-bounces at dpdk.org] On Behalf Of ???
Sent: Wednesday, October 21, 2015 10:04 AM
To: Kyle Larose
Cc: dev at dpdk.org
Subject: Re: [dpdk-dev] When I run test-pmd, most of received packets(loop-backed packet) have RX-error.

 Dear Kyle Larose. 
 
Thank you very much for your precious advice and answer.
 
I will try your suggestions.
 
 
I have a question. Can I use igb_uio driver in DPDK?
 
When I stalled the network device driver in DPDK.
 
I used the following commands and I see that the 10GbE devices have igb_uio device driver. 
 
   sudo /sbin/modprobe uio
   sudo /sbin/insmod $RTE_SDK/$RTE_TARGET/kmod/igb_uio.ko
 
 
Network devices using DPDK-compatible driver ============================================
0000:02:00.0 '82599ES 10-Gigabit SFI/SFP+ Network Connection' drv=igb_uio unused=
0000:02:00.1 '82599ES 10-Gigabit SFI/SFP+ Network Connection' drv=igb_uio unused=
 
Network devices using kernel driver
===================================
0000:00:19.0 'Ethernet Connection I217-V' if=eth0 drv=e1000e unused=igb_uio *Active*
0000:04:00.0 '82572EI Gigabit Ethernet Controller (Copper)' if=eth3 drv=e1000e unused=igb_uio 
 
The network device driver seems to be igb_uio.
 
 
 
If I bind the network device to ixgbe using the following commands, the network device seems to be connected to kernel, not the DPDK.
 
        sudo ${RTE_SDK}/tools/dpdk_nic_bind.py -b ixgbe 0000:02:00.0 && echo "OK"
        sudo ${RTE_SDK}/tools/dpdk_nic_bind.py -b ixgbe 0000:02:00.1 && echo "OK"
 
 
Can I use ixgbe driver for DPDK?
 
If I can, would you tell me how can I specify it?
 
Thank you very much for your precious advices.
 
Sincerely Yours,
 
Ick-Sung Choi.
 
 
-----Original Message-----
From: "Kyle Larose"<eomereadig at gmail.com>
To: "최익성"<pnk003 at naver.com>;
Cc: <dev at dpdk.org>;
Sent: 2015-10-20 (화) 22:50:43
Subject: Re: [dpdk-dev] When I run test-pmd, most of received packets(loop-backed packet) have RX-error.
 
On Tue, Oct 20, 2015 at 2:12 AM, 최익성 <pnk003 at naver.com> wrote:
> Dear DPDK experts.
>
> Thank you very much for your best great efforts and precious answers.
>
>
> When I run test-pmd, most of received packets are RX-error.
>
> The computer has two 10GbE ports Intel NIC and the two ports are loop-backed each other.
>
> The result shows that the loop-backed packets have rx-error occured from ethernet device port.
>
> The rx-error ( ierrors) seems to be counted by rte_eth_stats_get(uint8_t port_id, struct rte_eth_stats *stats) function in ~/dpdk/lib/librte_ether/rte_ethdev.c
>
> Then this rte_eth_stats_get() function calls (*dev->dev_ops->stats_get)(dev, stats); > > However, I can't find and trace the function (*dev->dev_ops->stats_get)().
>
> Would you tell me how can I find the function?
>
> Would you tell me why this receive errors occurs for what reasons?
>
>
> I tested it in two xeon computers with different OS.
>
>    Fedora 22 (linux kernel version 4.2.3-200.fc22.x86_64, DPDK 2.1.0).
>    Ubuntu 14.04.1 LTS(linux kernel version : 3.13.0-34-generic, DPDK 2.1.0).
>
> Both experiments show the same result with rx-errors.
>
> I will really appreciate if I can be given any advice and answers.
>
> Thank you very much.
>
> Sincerely Yours,
>
> Ick-Sung Choi.
>

Hello,

I don't know the reason for your errors, but I can probably help with the function.

I usually do this in two ways. One way is to identify the driver, and then look for instances of "struct eth_dev_ops" in it. For example, if you have an ixgbe/82599/etc, the driver is the ixgbe. Searching in the directory for it, you find this:

    http://dpdk.org/browse/dpdk/tree/drivers/net/ixgbe/ixgbe_ethdev.c#n389

Another alternative is to attach to your running process with gdb, and print the dev struct. gdb will typically map the pointers contained therein to their symbolic names.



More information about the dev mailing list