Message ID | 20121117192036.GA29018@electric-eye.fr.zoreil.com |
---|---|
State | RFC, archived |
Delegated to: | David Miller |
Headers | show |
On Saturday 17 November 2012 20:20:36 Francois Romieu wrote: > Jan Janssen <medhefgo@web.de> : > [...] > > > I'd be glad to help you with that. The bug happens with 3.6.6 and with > > 3.7- > > rc6. Pick one that suits you best, I can work with both. > > /me slaps head. > > Please try the patch below against v3.7-rc6 > > diff --git a/drivers/net/ethernet/sis/sis900.c > b/drivers/net/ethernet/sis/sis900.c index fb9f6b3..edf5edb 100644 > --- a/drivers/net/ethernet/sis/sis900.c > +++ b/drivers/net/ethernet/sis/sis900.c > @@ -2479,7 +2479,7 @@ static int sis900_resume(struct pci_dev *pci_dev) > netif_start_queue(net_dev); > > /* Workaround for EDB */ > - sis900_set_mode(ioaddr, HW_SPEED_10_MBPS, FDX_CAPABLE_HALF_SELECTED); > + sis900_set_mode(sis_priv, HW_SPEED_10_MBPS, FDX_CAPABLE_HALF_SELECTED); > > /* Enable all known interrupts by setting the interrupt mask. */ > sw32(imr, RxSOVR | RxORN | RxERR | RxOK | TxURN | TxERR | TxIDLE); This seems to fix it. I was able to repeatedly suspend and resume. On my first resume try I did get a netdev watchdog timeout right after I got back to my shell prompt, but it wasn't reproducable. So, I'm assuming it's some unrelated rc or hardware issue. Thought I might better mention it. Jan -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/net/ethernet/sis/sis900.c b/drivers/net/ethernet/sis/sis900.c index fb9f6b3..edf5edb 100644 --- a/drivers/net/ethernet/sis/sis900.c +++ b/drivers/net/ethernet/sis/sis900.c @@ -2479,7 +2479,7 @@ static int sis900_resume(struct pci_dev *pci_dev) netif_start_queue(net_dev); /* Workaround for EDB */ - sis900_set_mode(ioaddr, HW_SPEED_10_MBPS, FDX_CAPABLE_HALF_SELECTED); + sis900_set_mode(sis_priv, HW_SPEED_10_MBPS, FDX_CAPABLE_HALF_SELECTED); /* Enable all known interrupts by setting the interrupt mask. */ sw32(imr, RxSOVR | RxORN | RxERR | RxOK | TxURN | TxERR | TxIDLE);