I have a similar problem to the linked post in this thread. I have a custom board with a DP83867. The board works fine connecting directly to a PC or other network device. It negotiates and performs as expected. I have a custom board with a KSZ9896C switch on it. I can plug multiple other network devices into the different ports on the KSZ9896C and they all negotiate and operate at full 1000Base-T rates. However when I plug the two custom boards together, they don't seem to want to negotiate. I have HALO HFJ11-1G41E-L12RL as integrated magnetics on both the KSZ9896 and the DP83867. If I force the DP83867 to 100Base-T, I seem to be able to get link constantly, however when I switch back to 1000Base-T, the LED on the DP83867 comes on for a second or two and then turns off. It does this repeatedly. Once in while, it does seem to finally negotiate a link after many minutes, but when you disconnect and reconnect the cable, it gets back into the pattern of not negotiating. I have tried clearing bit 7 of register 0x31 in the DP83867 but that doesn't seem to help.
Any suggestions?