Hi, I've got a machine with a Broadcom bcm5762c, using the tg3 driver, that fails to receive network packets under some very specific conditions.
It works perfectly using a 1Gbps switch. If, however, it first uses PXE and then loads the Linux tg3 driver, and the switch is 100Mbps, it no longer receives packets larger than ICMP. It does do ARP and ping. If it boots using PXE on a 1Gbps switch, boots into Linux, and then it's plugged into 100 Mbps it also stops receiving packets. mii-diag and dmesg confirm auto-negotiated speed and flow control, and confirm temporary disconnect as the cables are moved. PXE boots using UNDI, which then transfers a kernel using TFTP, which transfers correctly. The kernel boots, loads the tg3 driver, connects the network. Up to this point everything works. Ping will work too. Any other network traffic fails. Booting from a harddrive works fine. I assume the UNDI driver somewhere breaks auto-negotiation. I've tried using mii-tool and ethtool, but I haven't managed to make it work yet. Is it possible to get negotiation working after PXE boot? Are there any tg3 driver flags that might make a difference? Berend