tg3 driver not advertising 1000mbit

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello,

I'm experiencing a problem with my "Broadcom Corporation NetXtreme BCM5722 Gigabit Ethernet PCI Express" network card in my Dell R300 servers. When booting the server, the network card sometimes doesn't advertise gigabit speeds, and so it auto-negotiates @ 10mbit. The speed can then be set to gigabit with mii-tool, but its not a good solution! On the other hand, sometimes when it boots, it just works perfectly, and advertises gigabit speeds & auto-negotiates on gigabit!

Today I tried to debug the driver a bit, and found some strange behavior :) Only 2 values were different in the writephy function when it booted @ 10mbit & gigabit.

I found something obvious in the tg3_readphy & tg3_writephy methods.

807         while (loops != 0) {
808                 udelay(10);
809                 frame_val = tr32(MAC_MI_COM);
810                 if ((frame_val & MI_COM_BUSY) == 0) {
811                         udelay(5);
812                         frame_val = tr32(MAC_MI_COM);
813                         break;
814                 }
815                 loops -= 1;
816         }

On line 809 frame_val is filled with a read (tr32) from the device.
On line 810 we check if its not 'MI_COM_BUSY'
If not then we have a delay of 5, and then we read it again ?!
I don't know why the value is read twice! I checked with some other drivers (also broadcom) and there the read command was given some other argument when reading the BUSY state, and then in the if, it was really fetching the data. But in this case, we only have 2 times the same argument!

With the original code the server booted into 10mbit the half of the boots! When I removed line 811 & 812, then it booted into 10mbit only 1/20 times ! Which is way better ! But its still not fully fixed!

Feel free to give any other solutions / comments !

Sincerely,
Jean-Louis Dupond
--
To unsubscribe from this list: send the line "unsubscribe linux-net" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Netdev]     [Ethernet Bridging]     [Linux 802.1Q VLAN]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Git]     [Bugtraq]     [Yosemite News and Information]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux PCI]     [Linux Admin]     [Samba]

  Powered by Linux