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.