net: mvmdio: fix interrupt timeout handling
This version corrects the whitespace issue. orion_mdio_wait_ready uses wait_event_timeout to wait for the SMI interrupt to fire. wait_event_timeout waits for between "timeout - 1" and "timeout" jiffies. In this case a 1ms timeout when HZ is 1000 results in a wait of 0 to 1 jiffies, causing premature timeouts. This fix ensures a minimum timeout of 2 jiffies, ensuring wait_event_timeout will always wait at least 1 jiffie. Issue reported by Nicolas Schichan. Tested-by: Nicolas Schichan <nschichan@freebox.fr> Signed-off-by: Leigh Brown <leigh@solinno.co.uk> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
a4f6363476
commit
1a1f20bc9d
1 changed files with 6 additions and 0 deletions
|
@ -92,6 +92,12 @@ static int orion_mdio_wait_ready(struct mii_bus *bus)
|
|||
if (time_is_before_jiffies(end))
|
||||
++timedout;
|
||||
} else {
|
||||
/* wait_event_timeout does not guarantee a delay of at
|
||||
* least one whole jiffie, so timeout must be no less
|
||||
* than two.
|
||||
*/
|
||||
if (timeout < 2)
|
||||
timeout = 2;
|
||||
wait_event_timeout(dev->smi_busy_wait,
|
||||
orion_mdio_smi_is_done(dev),
|
||||
timeout);
|
||||
|
|
Loading…
Reference in a new issue