Re: [PATCH v3] sis900: Fix the tx queue timeout issue
From: David Miller <davem@davemloft.net>
Date: 2013-08-02 22:04:01
From: Ben Hutchings <redacted> Date: Fri, 2 Aug 2013 21:18:55 +0200
This looks reasonable. It looks like link changes now work like this: 1. When sis900_timer() detects link-down, it calls netif_carrier_off() but does not clear autong_complete. 2. When sis900_timer() detects link-up, it calls sis900_check_mode() which restarts autonegotiation and clears autong_complete. 3. sis900_timer() will now call sis900_read_mode(). When that detects link-up, it sets autong_complete and calls netif_carrier_on(). This patch has moved the call to netif_carrier_on() from step 2 to step 3. However, I don't understand why autonegotiation is restarted in step 2. When autonegotiation is enabled, the PHY should not indicate link-up until it has completed. Perhaps this is a necessary workaround for a hardware bug. Otherwise it's a waste of time.
Agreed, if the PHY was configured to use autonegotiation, getting a link up event afterwards implies that autonegotiation is complete. In any event, I'm going to apply this patch anyways because it is far and above a significant move forward.