Jes Sorensen <[email protected]> writes:
> > Unfortunately, I ran into a case today where even 5000 loops was not
> > enough after a cold boot. 5000 loops meant about 1.5 second delay
> > between finishing the firmware checksum poll, while waiting for the
> > firmware to start. It now appears to me that the number of required
> > polling loops must be strongly bimodal.
> >
> > I added some logging, so that the driver reports to me the number of
> > loops required for the firmware to start.
>
> This is bizarre, I wonder if the hardware is having issues in your
> laptop?
The other bug reports I linked to seem identical to what's happening to
mine, so I doubt it is an issue with one specific instance of the hardware.
> Another thing to try would be to do an additional reset of the
> chip and wait a bit before trying to load the firmware?
Thanks, I will give this a shot.
Am I understanding your idea correctly? To put a loop around the 8051
reset and the firmware polling loop, with a delay between failure and retry?
for (int retry=1; ii<=MAX_RETRIES; ii++) {
for (retry=1; retry<=5; retry++) {
/* Reset the 8051 */
priv->fops->reset_8051(priv);
/* Wait for firmware to become ready */
for (i=0; i<RTL8XXXXU_FIRMWARE_POLL_MAX; i++) {
...
}
/* On failure, insert a delay before trying again */
if (i==RTL8XXXU_FIRMWARE_POLL_MAX)
msleep(500);
}
}
Thanks,
Dan
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html