Messages in this thread | | | Date | Thu, 01 Dec 2011 21:42:19 +0100 | From | booster@wolke7 ... | Subject | Re: [bug?] r8169: hangs under heavy load |
| |
Francois Romieu wrote: > booster@wolke7.net <booster@wolke7.net> : > [...] > >> Any more ideas ? >> > > Give me a brain. > > Fixed patch below. > > diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c > index 6f06aa1..e776bf2 100644 > --- a/drivers/net/ethernet/realtek/r8169.c > +++ b/drivers/net/ethernet/realtek/r8169.c > @@ -4885,8 +4894,7 @@ static void rtl_hw_start_8168(struct net_device *dev) > RTL_W16(IntrMitigate, 0x5151); > > /* Work around for RxFIFO overflow. */ > - if (tp->mac_version == RTL_GIGA_MAC_VER_11 || > - tp->mac_version == RTL_GIGA_MAC_VER_22) { > + if (tp->mac_version == RTL_GIGA_MAC_VER_11) { > tp->intr_event |= RxFIFOOver | PCSTimeout; > tp->intr_event &= ~RxOverflow; > } > @@ -5804,6 +5812,10 @@ static irqreturn_t rtl8169_interrupt(int irq, void *dev_instance) > */ > status = RTL_R16(IntrStatus); > while (status && status != 0xffff) { > + status &= tp->intr_event; > + if (!status) > + break; > + > handled = 1; > > /* Handle all of the error cases first. These will reset > @@ -5818,7 +5830,6 @@ static irqreturn_t rtl8169_interrupt(int irq, void *dev_instance) > switch (tp->mac_version) { > /* Work around for rx fifo overflow */ > case RTL_GIGA_MAC_VER_11: > - case RTL_GIGA_MAC_VER_22: > case RTL_GIGA_MAC_VER_26: > netif_stop_queue(dev); > rtl8169_tx_timeout(dev); > @@ -5828,6 +5839,7 @@ static irqreturn_t rtl8169_interrupt(int irq, void *dev_instance) > case RTL_GIGA_MAC_VER_19: > case RTL_GIGA_MAC_VER_20: > case RTL_GIGA_MAC_VER_21: > + case RTL_GIGA_MAC_VER_22: > case RTL_GIGA_MAC_VER_23: > case RTL_GIGA_MAC_VER_24: > case RTL_GIGA_MAC_VER_27: > > Hello Francois,
it looks OK now - no more "eth0: link up" messages and network hangs any more. I've send and received 60 GB to and from the system and the performance is ~30 MB/s. I'll keep the system up and running and do some more stability tests.
The only thing that's missing now is the transfer LED: the yellow link LED is on, but the green transfer LED is off and doesn't blink.
Thanks a lot for your great support.
Regards, Gerd
Output:
[ 2.334588] r8169 Gigabit Ethernet driver 2.3LK-NAPI-patch3 loaded [ 2.334639] r8169 0000:02:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 2.334689] r8169 0000:02:00.0: setting latency timer to 64 [ 2.334767] r8169 0000:02:00.0: irq 40 for MSI/MSI-X [ 2.387618] r8169 0000:02:00.0: eth0: RTL8168c/8111c[21] at 0xf8224000, 00:01:c0:08:aa:31, XID 1c4000c0 IRQ 40 [ 2.387630] r8169 0000:02:00.0: eth0: jumbo features [frames: 6128 bytes, tx checksumming: ko] [ 2.392954] r8169 Gigabit Ethernet driver 2.3LK-NAPI-patch3 loaded [ 2.393015] r8169 0000:03:00.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17 [ 2.393082] r8169 0000:03:00.0: setting latency timer to 64 [ 2.393166] r8169 0000:03:00.0: irq 41 for MSI/MSI-X [ 2.394707] r8169 0000:03:00.0: eth1: RTL8168c/8111c[21] at 0xf8238000, 00:01:c0:08:aa:32, XID 1c4000c0 IRQ 41 [ 2.394718] r8169 0000:03:00.0: eth1: jumbo features [frames: 6128 bytes, tx checksumming: ko] [ 14.324097] r8169 0000:03:00.0: eth1: link down [ 14.324555] ADDRCONF(NETDEV_UP): eth1: link is not ready [ 14.419038] r8169 0000:02:00.0: eth0: link down [ 14.419049] r8169 0000:02:00.0: eth0: link down [ 14.419419] ADDRCONF(NETDEV_UP): eth0: link is not ready [ 16.789915] r8169 0000:02:00.0: eth0: link up [ 16.791046] ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
driver: r8169 version: 2.3LK-NAPI-patch3 firmware-version: N/A bus-info: 0000:02:00.0
Settings for eth0: Supported ports: [ TP MII ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Half 1000baseT/Full Supports auto-negotiation: Yes Advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Half 1000baseT/Full Advertised pause frame use: Symmetric Receive-only Advertised auto-negotiation: Yes Link partner advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Link partner advertised pause frame use: Symmetric Link partner advertised auto-negotiation: Yes Speed: 1000Mb/s Duplex: Full Port: MII PHYAD: 0 Transceiver: internal Auto-negotiation: on Supports Wake-on: pumbg Wake-on: g Current message level: 0x00000033 (51) Link detected: yes
| |