diff options
Diffstat (limited to 'drivers/net/wireless/p54/p54pci.c')
| -rw-r--r-- | drivers/net/wireless/p54/p54pci.c | 7 | 
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/net/wireless/p54/p54pci.c b/drivers/net/wireless/p54/p54pci.c index d4aee64fb5ea..27a49068d32d 100644 --- a/drivers/net/wireless/p54/p54pci.c +++ b/drivers/net/wireless/p54/p54pci.c @@ -431,6 +431,7 @@ static int p54p_open(struct ieee80211_hw *dev)  {  	struct p54p_priv *priv = dev->priv;  	int err; +	long timeout;  	init_completion(&priv->boot_comp);  	err = request_irq(priv->pdev->irq, p54p_interrupt, @@ -468,10 +469,12 @@ static int p54p_open(struct ieee80211_hw *dev)  	P54P_WRITE(dev_int, cpu_to_le32(ISL38XX_DEV_INT_RESET));  	P54P_READ(dev_int); -	if (!wait_for_completion_interruptible_timeout(&priv->boot_comp, HZ)) { +	timeout = wait_for_completion_interruptible_timeout( +			&priv->boot_comp, HZ); +	if (timeout <= 0) {  		wiphy_err(dev->wiphy, "Cannot boot firmware!\n");  		p54p_stop(dev); -		return -ETIMEDOUT; +		return timeout ? -ERESTARTSYS : -ETIMEDOUT;  	}  	P54P_WRITE(int_enable, cpu_to_le32(ISL38XX_INT_IDENT_UPDATE));  | 

