cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
philippeproulx
Visitor
Visitor
3,236 Views
Registered: ‎04-01-2012

TCP issues

Jump to solution

Hi everyone.

 

This is my first post on the Community Forums: I don't know what to expect.

 

I am trying to use Linux on a Digilent Genesys board. This board has a Virtex-5 and thus I use LL TEMAC for Ethernet communication. Now, everything seems to work fine: the kernel boots (I am using the mainline v2.6.39 (git-cloned from kernel.org), in which I added the Xilinx LL TEMAC drivers), the rootfs is loaded and the commands work fine. I am using PuTTY as my serial terminal emulator.

 

Now, everything works except TCP. My PC can ping the board, the board can ping my PC (ICMP/ARP working so far). I can also start a netcat UDP server on it, connect to the board with my PC (or vice versa), send and receive text (UDP working so far). Now, I just cannot establish any TCP connection between the board and my PC. When Wiresharking, I see this pattern:

 

  • board to PC: SYN packet
  • PC to board: "[TCP Previous segment lost] ... [SYN, ACK]"
  • board to PC: RST packet

I have no idea where to start debugging this. Is there something I forgot in my meticulous kernel configuration?

 

I can give you what you want to help me: DTS content, .config content, dmesg dump, etc.

 

Any help would be very appreciated!

0 Kudos
1 Solution

Accepted Solutions
philippeproulx
Visitor
Visitor
3,842 Views
Registered: ‎04-01-2012

Finally made it. I think it had something to do with using xps_ll_fifo and the mainline LL_TEMAC driver. I switched to using DMA as the Ethernet buffer and TCP works fine now!

 

However, I had to add this to the DTS "ethernet" node:

 

phy-handle = <&phy0>;

mdio {
  #address-cells = <1>;
  #size-cells = <0>;
  phy0: phy@7 {
    compatible = "marvell,88e1111";
    device_type = "ethernet-phy";
    reg = <7>;
  };
};

 

Adding only the "phy0" subnode without including it into the "mdio" one resulted in warnings/errors while compiling the DTS. However, I found that the LL_TEMAC mainline driver never looks for that "mdio" subnode, so I had to add it to the code, something like:

 

rc = of_mdiobus_register(bus, of_find_node_by_name(np, "mdio"));

 

where np is the "ethernet" node pointer.

View solution in original post

0 Kudos
2 Replies
philippeproulx
Visitor
Visitor
3,843 Views
Registered: ‎04-01-2012

Finally made it. I think it had something to do with using xps_ll_fifo and the mainline LL_TEMAC driver. I switched to using DMA as the Ethernet buffer and TCP works fine now!

 

However, I had to add this to the DTS "ethernet" node:

 

phy-handle = <&phy0>;

mdio {
  #address-cells = <1>;
  #size-cells = <0>;
  phy0: phy@7 {
    compatible = "marvell,88e1111";
    device_type = "ethernet-phy";
    reg = <7>;
  };
};

 

Adding only the "phy0" subnode without including it into the "mdio" one resulted in warnings/errors while compiling the DTS. However, I found that the LL_TEMAC mainline driver never looks for that "mdio" subnode, so I had to add it to the code, something like:

 

rc = of_mdiobus_register(bus, of_find_node_by_name(np, "mdio"));

 

where np is the "ethernet" node pointer.

View solution in original post

0 Kudos
eegeorge
Newbie
Newbie
3,110 Views
Registered: ‎08-21-2012

Hello,I'm tring to do this .using win7 system.I'm a freshman .can I see you ucf file?maybe the whole project file.thank you very much. my email address is

eegeorge@yahoo.cn

0 Kudos