I have two Linux machines that I'm trying to connect via wired ethernet. I've tried both a straight-through cable and the same cable through a crossover adapter. When connected this way, both computers appear dead to each other. The lights are out on the ethernet ports, and both computers report that the link is not ready. However, when I connect both machines to a switch, everything works: lights come on, dmesg reports ready links, machines can ping each other. This leads me to believe that they are at least set up correctly (/etc/network/interfaces, routing tables etc), and that I may be facing some other type of problem. What may be causing this? It's as if both machines are waiting for the other side to come alive. Do I need to put the ethernet interfaces in some sort of 'recognizable mode' or perform some other magic for this to happen? Googling the issue gives a bunch of answers, all pretty much amounting to "make sure both machines are in the same IP range and check your cable".
Edit: the "computers" are 2x Toradex Apalis iMX6Q mounted on Ixora carrier boards. http://developer.toradex.com/product-selector/apalis-imx6 http://developer.toradex.com/product-selector/ixora-carrier-board
Since posting, I've learned that Toradex themselves face the same issue when duplicating my setup, so right now I'm awaiting a possible solution from their side.
Edit 2: it works now, the problem was in the physical layer and was fixed by a change to the Linux kernel.