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.