[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <4ED7E6AB.6050308@wolke7.net>
Date: Thu, 01 Dec 2011 21:42:19 +0100
From: booster@...ke7.net
To: Francois Romieu <romieu@...zoreil.com>
CC: hayeswang <hayeswang@...ltek.com>,
'Jonathan Nieder' <jrnieder@...il.com>,
'Eric Dumazet' <eric.dumazet@...il.com>,
netdev@...r.kernel.org, 'nic_swsd' <nic_swsd@...ltek.com>,
linux-kernel@...r.kernel.org,
'Armin Kazmi' <armin.kazmi@...dortmund.de>
Subject: Re: [bug?] r8169: hangs under heavy load
Francois Romieu wrote:
> booster@...ke7.net <booster@...ke7.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
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists