diff options
Diffstat (limited to 'drivers/net/wireless/ath/carl9170/usb.c')
| -rw-r--r-- | drivers/net/wireless/ath/carl9170/usb.c | 19 | 
1 files changed, 13 insertions, 6 deletions
| diff --git a/drivers/net/wireless/ath/carl9170/usb.c b/drivers/net/wireless/ath/carl9170/usb.c index a3e03580cd9f..564ca6a61985 100644 --- a/drivers/net/wireless/ath/carl9170/usb.c +++ b/drivers/net/wireless/ath/carl9170/usb.c @@ -438,14 +438,21 @@ static void carl9170_usb_rx_complete(struct urb *urb)  		if (atomic_read(&ar->rx_anch_urbs) == 0) {  			/* -			 * The system is too slow to cope with -			 * the enormous workload. We have simply -			 * run out of active rx urbs and this -			 * unfortunately leads to an unpredictable -			 * device. +			 * At this point, either the system is too slow to +			 * cope with the enormous workload (so we have simply +			 * run out of active rx urbs and this unfortunately +			 * leads to an unpredictable device), or the device +			 * is not fully functional after an unsuccessful +			 * firmware loading attempts (so it doesn't pass +			 * ieee80211_register_hw() and there is no internal +			 * workqueue at all).  			 */ -			ieee80211_queue_work(ar->hw, &ar->ping_work); +			if (ar->registered) +				ieee80211_queue_work(ar->hw, &ar->ping_work); +			else +				pr_warn_once("device %s is not registered\n", +					     dev_name(&ar->udev->dev));  		}  	} else {  		/* | 
