IMX6 ethernet Packet Loss

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

IMX6 ethernet Packet Loss

2,118 Views
himanshugusain
Contributor III

Hi

I am using the custom imx6q board in which we have RGMII back to back connection between i.MX6Q and Zynq FPGA.

We have taken care of the driver changes to fake the presence of PHY and thus able to communicate between both the processor 

We are observing packet loss issue while pinging to/from  IMX/ZYNQ with the latest kernel (3.10.53) provided by freescale

This issue was not observed in old kernel (3.0.35) version we were using.

There are lot of modification related to Flow control in the latest driver.Could that be affecting the

packet loss

Regards

Himanshu

Labels (3)
0 Kudos
5 Replies

1,018 Views
Yuri
NXP Employee
NXP Employee

Hello,

As for the flow control, PHY-less connection is implemented in the case.

Please be sure if MAC frame to carry the PAUSE command is treated (properly)

in the  FPGA. Also, You may try using ethtool to enable receiving
and transmitting pause frames.


Have a great day,
Yuri

-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

0 Kudos

1,018 Views
himanshugusain
Contributor III

Hi,

On our i.mx6q based custom board, we are facing a problem for ethernet.

We are using lollipop release(kernel 3.10.53). For ethernet, if we ping without explicitly mentioning any packet size, it is successful. But if we increase the size(for ex: 2000, 5000), the packet loss is more than 50% and for packet 10,000 it is not pinging at all.

for ex: ping -s 5000 192.19.253.11 results in 50% packet loss

But on the same board, If we are using JellyBean source(kernel 3.0), the ping is successful for all packet size.

We have taken the register dump of fec for kernel 3.0 and kernel 3.10. Please see the register dump below.

RegiterDump.png

We can see there are differences for both kernel.

We tried to configure the 3.10 kernel same way as it is in 3.0 kernel.

For register(ENET_TDAR) offset 0x24,  the 5th bit is mentioned as either

" EN1588 Enable(Enables enhanced functionality of the MAC)

                          - Legacy FEC buffer descriptors and functions enabled

                         - Enhanced frame time-stamping functions enabled. "

If we try to clear the bit to set it as <legacy>(as configured in 3.0 kernel), It is not pinging at all for 3.10 kernel.

Is FEC is configured differently for both the kernel?

Please help us to understand the differences between the two kernel for fecs.

Please reply as it has become a critical issue for our project.

Thanks,

0 Kudos

1,018 Views
Yuri
NXP Employee
NXP Employee

Hello,

  You may try the recent NXP Android release, based on Linux 3.14.52 kernel.

http://www.nxp.com/webapp/Download?colCode=IMX6_L5.1_2.1.0_AND_SOURCE_BSP&appType=license&location=n...

i.MX 6 Series Software and Development Tool|NXP

Regards,

Yuri.

0 Kudos

1,018 Views
himanshugusain
Contributor III

Hello Yuri

Thanks for the response

The ZYNQ(FPGA) is same in both the cases (kernel 3.0.35 and kernel 3.10.53)

we are not seeing any loss in 3.0.35 but observed major loss in 3.10.53 when

increasing the payload of (1K +)

Attaching the Register dump of both Kernel

RegiterDump.png

Regards

Himanshu

0 Kudos

1,018 Views
himanshugusain
Contributor III

Hi

Below is my device tree configuration  for the fec module

&fec {

    pinctrl-names = "default";

    pinctrl-0 = <&pinctrl_enet_1>;

    phy-mode = "rgmii";

    status = "okay";

};

fec: ethernet@02188000 {

                compatible = "fsl,imx6q-fec";

                reg = <0x02188000 0x4000>;

                interrupts-extended = <&intc 0 118 0x04>,

                                                   <&intc 0 119 0x04>;

               clocks = <&clks 117>, <&clks 117>, <&clks 190>;

               clock-names = "ipg", "ahb", "ptp";

               status = "disabled";

Currently i am getting packet loss while doing ping with payload

what could be possible reason for the packet loss

Kernel version i am using  - 3.10.53

0 Kudos