const u8 request, const u8 requesttype,
                             const u16 offset, const u16 value,
                             void *buffer, const u16 buffer_length,
-                            u16 timeout)
+                            const int timeout)
 {
        struct usb_device *usb_dev =
            interface_to_usbdev(rt2x00dev_usb(rt2x00dev));
                        return 0;
 
                /*
-                * Check for errors,
-                * -ETIMEDOUT: We need a bit more time to complete.
+                * Check for errors
                 * -ENODEV: Device has disappeared, no point continuing.
+                * All other errors: Try again.
                 */
-               if (status == -ETIMEDOUT)
-                       timeout *= 2;
                else if (status == -ENODEV)
                        break;
        }
 int rt2x00usb_vendor_request_buff(const struct rt2x00_dev *rt2x00dev,
                                  const u8 request, const u8 requesttype,
                                  const u16 offset, void *buffer,
-                                 const u16 buffer_length, u16 timeout)
+                                 const u16 buffer_length, const int timeout)
 {
        int status;
 
 
  */
 #define REGISTER_BUSY_COUNT            5
 #define REGISTER_BUSY_DELAY            100
-#define REGISTER_TIMEOUT               20
+#define REGISTER_TIMEOUT               500
 #define REGISTER_TIMEOUT_FIRMWARE      1000
 
 /*
                             const u8 request, const u8 requesttype,
                             const u16 offset, const u16 value,
                             void *buffer, const u16 buffer_length,
-                            u16 timeout);
+                            const int timeout);
 
 /*
  * Used to read/write from/to the device.
 int rt2x00usb_vendor_request_buff(const struct rt2x00_dev *rt2x00dev,
                                  const u8 request, const u8 requesttype,
                                  const u16 offset, void *buffer,
-                                 const u16 buffer_length, u16 timeout);
+                                 const u16 buffer_length, const int timeout);
 
 /*
  * Simple wrapper around rt2x00usb_vendor_request to write a single
                                              const u8 request,
                                              const u16 offset,
                                              const u16 value,
-                                             int timeout)
+                                             const int timeout)
 {
        return rt2x00usb_vendor_request(rt2x00dev, request,
                                        USB_VENDOR_REQUEST_OUT, offset,