Firmware sends an event to host to notify that the firmware is ready. Implemented in wireless firmware version 5.110.21.p1.
Signed-off-by: Javier Cardona <[EMAIL PROTECTED]> --- drivers/net/wireless/libertas/cmdresp.c | 5 ++++- drivers/net/wireless/libertas/host.h | 1 + drivers/net/wireless/libertas/if_usb.c | 14 +++++++++++--- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/drivers/net/wireless/libertas/cmdresp.c b/drivers/net/wireless/libertas/cmdresp.c index d391391..dd1e188 100644 --- a/drivers/net/wireless/libertas/cmdresp.c +++ b/drivers/net/wireless/libertas/cmdresp.c @@ -982,7 +982,10 @@ int libertas_process_event(wlan_private * priv) case MACREG_INT_CODE_SNR_HIGH: lbs_pr_alert("EVENT: snr high\n"); break; - + case MACREG_INT_CODE_FIRMWARE_READY: + priv->adapter->fw_ready = 1; + lbs_pr_alert("EVENT: Wireless firmware ready\n"); + break; case MACREG_INT_CODE_MESH_AUTO_STARTED: /* Ignore spurious autostart events if autostart is disabled */ if (!priv->mesh_autostart_enabled) { diff --git a/drivers/net/wireless/libertas/host.h b/drivers/net/wireless/libertas/host.h index 00d5675..2150ea0 100644 --- a/drivers/net/wireless/libertas/host.h +++ b/drivers/net/wireless/libertas/host.h @@ -291,5 +291,6 @@ enum cmd_mesh_access_opts { #define MACREG_INT_CODE_RSSI_HIGH 0x0000001c #define MACREG_INT_CODE_SNR_HIGH 0x0000001d #define MACREG_INT_CODE_MESH_AUTO_STARTED 0x00000023 +#define MACREG_INT_CODE_FIRMWARE_READY 0x00000030 #endif /* _HOST_H_ */ diff --git a/drivers/net/wireless/libertas/if_usb.c b/drivers/net/wireless/libertas/if_usb.c index 4c5e20c..740065b 100644 --- a/drivers/net/wireless/libertas/if_usb.c +++ b/drivers/net/wireless/libertas/if_usb.c @@ -924,10 +924,18 @@ restart: if_usb_submit_rx_urb(priv); - /* Delay 200 ms to waiting for the FW ready */ - msleep_interruptible(200); + /* Wait for the FW ready */ + i = 0; + while (!priv->adapter->fw_ready && i < 100) { + msleep_interruptible(10); + ++i; + } - priv->adapter->fw_ready = 1; + if (!priv->adapter->fw_ready) { + lbs_pr_alert("No FW RDY event received. Older FW?\n"); + priv->adapter->fw_ready = 1; + } else + lbs_pr_info("FW ready time = %d ms\n", i * 10); done: lbs_deb_leave_args(LBS_DEB_USB, "ret %d", ret); -- 1.5.2.5 _______________________________________________ Devel mailing list Devel@lists.laptop.org http://lists.laptop.org/listinfo/devel