Joseph Jezak wrote:
> Hi Larry,
>
> I got a report of a user having an issue with 2.6.20 and IRQ issues, and
> I can reproduce it. And I have a fix. :) (The best kind of bug!)
>
> I've attached the oops. Basically, increasing the number of IRQ tries
> (BCM43xx_IRQWAIT_MAX_RETRIES) from 50 to 100 seems to fix the problem.
> There's probably something else going on here, but I'm not sure what
> yet. This at least papers over the problem. :p
>
> Back to working on 4318 now... I'm through most of the init code and
> nothing I've fixed has fixed the issue in wireless-dev yet :p
Joe,
As you have probably read in the bcm43xx list, I cannot test the suspend/resume
code as my graphics
card basically locks up when I try to suspend, but others have reported an oops
on resume. I have
added the mailing list and one of the people with the problem to the cc's.
Perhaps, the bcm43xx needs a bit more settling time before we try to resume.
Could you please
change IRQWAIT_MAX_RETRIES back to the original value and try the following
patch? If it works,
perhaps you could try reducing the msleep time. An extra 50 times through the
loop in chip_init is
only 500 usec, and it is likely that msleep(1) will be sufficient. If it works
with the msleep, then
we won't spin the system the way a udelay does.
Good luck with the 4318 problem.
Thanks,
Larry
=========================
Index: linux-2.6/drivers/net/wireless/bcm43xx/bcm43xx_main.c
===================================================================
--- linux-2.6.orig/drivers/net/wireless/bcm43xx/bcm43xx_main.c
+++ linux-2.6/drivers/net/wireless/bcm43xx/bcm43xx_main.c
@@ -4266,6 +4266,7 @@ static int bcm43xx_resume(struct pci_dev
dprintk(KERN_INFO PFX "Resuming...\n");
+ msleep(1000);
pci_set_power_state(pdev, 0);
err = pci_enable_device(pdev);
if (err) {
Index: linux-2.6/drivers/net/wireless/bcm43xx/bcm43xx_main.c
===================================================================
--- linux-2.6.orig/drivers/net/wireless/bcm43xx/bcm43xx_main.c
+++ linux-2.6/drivers/net/wireless/bcm43xx/bcm43xx_main.c
@@ -4266,6 +4266,7 @@ static int bcm43xx_resume(struct pci_dev
dprintk(KERN_INFO PFX "Resuming...\n");
+ msleep(1000);
pci_set_power_state(pdev, 0);
err = pci_enable_device(pdev);
if (err) {
_______________________________________________
Bcm43xx-dev mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/bcm43xx-dev