]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
Revert "rt2x00: Endless loop on hub port power down"
authorStanislaw Gruszka <sgruszka@redhat.com>
Wed, 26 Nov 2014 14:29:16 +0000 (15:29 +0100)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 1 Dec 2014 20:57:21 +0000 (15:57 -0500)
This reverts commit 2ad69ac5976191e9bb7dc4044204a504653ad1bb. It
causes wireless device disappear when we get -EPROTO error form USB
request. I encounter such situation occasionally when resume form
suspend with RT3070 adapter:

[  289.619985] ieee80211 phy0: rt2x00usb_vendor_request: Error - Vendor Request 0x06 failed for offset 0x0404 with error -71
[  289.639368] ieee80211 phy0: rt2800_wait_bbp_ready: Error - BBP register access failed, aborting
[  289.639374] ieee80211 phy0: rt2800usb_set_device_state: Error - Device failed to enter state 4 (-5)

Without the patch, except printing error, device works just fine after
resume.

Currently after timeouts and REGISTER_BUSY_COUNT tuning, we should
not have any "endless loop", though we can wait quite long when driver
is trying to communicate with the device through non functioning USB
connection. Generally the problem that commit 2ad69ac597619 solves
is kinda artificial.

Cc: Richard Genoud <richard.genoud@gmail.com>
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/rt2x00/rt2x00usb.c

index c2346f8d1db068f52f48e8830caacb63c6138df1..892270dd3e7b898c12acee8ccc2ef262da775f6d 100644 (file)
@@ -64,12 +64,6 @@ int rt2x00usb_vendor_request(struct rt2x00_dev *rt2x00dev,
                }
        } while (time_before(jiffies, expire));
 
-       /* If the port is powered down, we get a -EPROTO error, and this
-        * leads to a endless loop. So just say that the device is gone.
-        */
-       if (status == -EPROTO)
-               clear_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags);
-
        rt2x00_err(rt2x00dev,
                   "Vendor Request 0x%02x failed for offset 0x%04x with error %d\n",
                   request, offset, status);