Since card status updates appear to only occur every second, a delay of 1000ms on startup may not be sufficient - change to 1500ms.
The long delay of 4000ms is likely to be related to the time required for the ADSL line to come up - the driver should not need to do this. Overall delay when loading firmware will change from 5000ms to 1500ms. Signed-Off-By: Simon Arlott <[EMAIL PROTECTED]> --- drivers/usb/atm/cxacru.c | 9 +++++---- 1 files changed, 5 insertions(+), 4 deletions(-) diff --git a/drivers/usb/atm/cxacru.c b/drivers/usb/atm/cxacru.c index 8d8a107..35308a8 100644 --- a/drivers/usb/atm/cxacru.c +++ b/drivers/usb/atm/cxacru.c @@ -931,9 +931,10 @@ static void cxacru_upload_firmware(struct cxacru_data *instance, usb_err(usbatm, "Passing control to firmware failed: %d\n", ret); return; } + usb_info(usbatm, "started firmware\n"); /* Delay to allow firmware to start up. */ - msleep_interruptible(1000); + msleep(1500); usb_clear_halt(usb_dev, usb_sndbulkpipe(usb_dev, CXACRU_EP_CMD)); usb_clear_halt(usb_dev, usb_rcvbulkpipe(usb_dev, CXACRU_EP_CMD)); @@ -947,7 +948,7 @@ static void cxacru_upload_firmware(struct cxacru_data *instance, } /* Load config data (le32), doing one packet at a time */ - if (cf) + if (cf) { for (off = 0; off < cf->size / 4; ) { u32 buf[CMD_PACKET_SIZE / 4 - 1]; int i, len = min_t(int, cf->size / 4 - off, CMD_PACKET_SIZE / 4 / 2 - 1); @@ -963,8 +964,8 @@ static void cxacru_upload_firmware(struct cxacru_data *instance, return; } } - - msleep_interruptible(4000); + usb_info(usbatm, "loaded config data\n"); + } } static int cxacru_find_firmware(struct cxacru_data *instance, -- 1.5.0.1 -- Simon Arlott - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/