UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

cancel
Showing results for 
Search instead for 
Did you mean: 
Observer derekparks
Observer
1,644 Views
Registered: ‎09-14-2017

Not able to send/recv packets in Linux

Using custom board with

Linux 4.9.0

Zynq-7100

macb Cadence

TI DP83867 phy  

 

The mac&phy drivers seem to initialize and configured properly as seen in this snip of the Linux startup:

 

libphy: Fixed MDIO Bus: probed
CAN device driver interface
libphy: MACB_mii_bus: probed
macb e000b000.ethernet eth0: Cadence GEM rev 0x00020118 at 0xe000b000 irq 29 (00:0a:35:00:1e:29)
TI DP83867 e000b000.etherne:0c: attached PHY driver [TI DP83867] (mii_bus:phy_addr=e000b000.etherne:0c, irq=-1)
e1000e: Intel(R) PRO/1000 Network Driver - 3.2.6-k
e1000e: Copyright(c) 1999 - 2015 Intel Corporation.

 

Link lights are on and blinking, ethtool shows negotiation is completed with the other side (tried switch and direct PC connection).

 

But no pings leave the board nor do any pings enter.  Any help is appreciated.

0 Kudos
11 Replies
Xilinx Employee
Xilinx Employee
1,581 Views
Registered: ‎01-21-2014

Re: Not able to send/recv packets in Linux

Can you post your device tree entry for the MAC? Do you see an ARP request coming out when you ping?

 

Thanks, 

Terry

 

 

0 Kudos
Xilinx Employee
Xilinx Employee
1,573 Views
Registered: ‎01-21-2014

Re: Not able to send/recv packets in Linux

0 Kudos
Visitor ptynan3
Visitor
1,511 Views
Registered: ‎03-27-2018

Re: Not able to send/recv packets in Linux

Here is the excerpt from our dtsi file:

 

&gem0 {

                phy-handle = <&ethernet_phy>;

 

    status = "okay";

    phy-mode = "rgmii-id";

   

    pinctrl-names = "default";

               

    xlnx,eth-mode = <0x1>;

 

                /delete-node/ ethernet-phy@7;

 

    mdio {

        status = "okay";

        #address-cells = <1>;

        #size-cells = <0>;

        ethernet_phy: ethernet-phy@c {

            compatible = "ti,dp83867", "ethernet-phy-ieee802.3-c22";

            device_type = "ethernet-phy";

                                                reg = <0xc>;

            ti,rx-internal-delay = <0xc>;

            ti,tx-internal-delay = <0xa>;

            ti,fifo-depth = <0x01>;

            ti,min-output-impedance;

            status = "okay";

        };

    };

};

 

We are able to negotiate 100M with these settings, but we get frame errors for 1G at all 16 possible rx delays.  

 

 

 

 

 

0 Kudos
Observer derekparks
Observer
1,480 Views
Registered: ‎09-14-2017

Re: Not able to send/recv packets in Linux

@terryo, we do see ARPs sending out the TX.  Additionally, i manually enter an arp entry and see that pings are leaving.  And finally, the pings are received and replied too by the receiving end (a windows PC).   We've tried the link you posted and even tried all 16 different rx delay settings...0x0-0xf.  I've attached dmesg output. 

0 Kudos
Xilinx Employee
Xilinx Employee
1,460 Views
Registered: ‎01-21-2014

Re: Not able to send/recv packets in Linux

Did you look into the dp83867-rxctrl-strap-quirk setting to see if that might apply to you?  

 

 

0 Kudos
Observer derekparks
Observer
1,428 Views
Registered: ‎09-14-2017

Re: Not able to send/recv packets in Linux

Tried both quirk settings.  Furthermore, found out that our 'mode=3' and don't need the quirk.

0 Kudos
Moderator
Moderator
1,398 Views
Registered: ‎08-25-2009

Re: Not able to send/recv packets in Linux

Hi @derekparks,

 

If you are able to ping at 100 and face issues are 1000, then it could be related to PHY tuning. Please check that the GEM reference clock is being supplied at 125MHz when using 1G – this happens by default with CCF but if you have any customizations, it might be worth checking. Once, that is verified, as you to tune the TX delay value and then once all TX packets are visible with no errors in wireshark on the other end, switch to tuning RX delay. Just to verify you can set both to maximum first. Also, “xlnx,eth-mode = <0x1>;” is not required. And the entire ethernet phy node can be directly placed in gem0 node without need for mdio node. Also, I’m guessing you checked that use of “ti,min-output-impedance” is required for your setup.

Also, please check the MAC statistics registers to check TX/RX packets and errors.

"Don't forget to reply, kudo and accept as solution."
Observer derekparks
Observer
1,388 Views
Registered: ‎09-14-2017

Re: Not able to send/recv packets in Linux

We were able to see clock changes between 125 and 25MHz when switching between a 1000 and 100Mbps switch, so the clock rate seems to be ruled out.  I've also built without the mdio, min-output-impedance, and eth-mode and have same results.

0 Kudos
Moderator
Moderator
1,332 Views
Registered: ‎08-25-2009

Re: Not able to send/recv packets in Linux

Hi @derekparks,

 

How about tunning on the TX and RX? Have you done as what I suggested?

"Don't forget to reply, kudo and accept as solution."
0 Kudos
Observer derekparks
Observer
756 Views
Registered: ‎09-14-2017

Re: Not able to send/recv packets in Linux

We have tried tuning the rx and tx. Seems tuning the tx doesn't matter what the settings are. There has been some positive results in selecting the higher end of the delay values, but nothing that has proved to be a fix.

I believe there is an issue with how we are using our Petalinux environment to develop. We have used a zc706 testing board to develop with an fmc5 daughter card to test ADC chips. I created the the Petalinux env using download an Xilinx board support package (bsp) binary. When our custom boards arrived, i continued to use the same environment and should move into a new environment. The one thing i was trying to avoid is having to configuration manage two software branches with roughly %90 similar code bases. Any thoughts on CM are appreciated.
0 Kudos
Moderator
Moderator
741 Views
Registered: ‎04-24-2017

Re: Not able to send/recv packets in Linux

Hi @derekparks,

 

I'm not sure which Petalinux environment are you talking about.

 

You mean petalinux config files?

 

We support only GIT as subversion tools. We have some limitations in 2017.1/2 using git for petalinux project and it is fixed in 2017.3 onwards.

Thanks,
Sandeep
PetaLinux Yocto | Embedded SW Support

---------------------------------------------------------------------------
Don’t forget to Reply, Kudo, and Accept as Solution.
---------------------------------------------------------------------------
0 Kudos