From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tom Goetz Subject: For the netdev list Date: Fri, 6 May 2011 12:57:47 -0400 Message-ID: <14130884-5927-4B8D-A52E-56C245D8225B@virtualcomputer.com> Mime-Version: 1.0 (Apple Message framework v1084) Content-Type: multipart/mixed; boundary=Apple-Mail-149--23646641 To: netdev@vger.kernel.org Return-path: Received: from server514d.exghost.com ([72.32.253.69]:2093 "EHLO server514.appriver.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S932126Ab1EFRH5 (ORCPT ); Fri, 6 May 2011 13:07:57 -0400 Received: from [72.32.253.140] (HELO FE01.exg4.exghost.com) by server514.appriver.com (CommuniGate Pro SMTP 5.3.2) with ESMTP id 159231756 for netdev@vger.kernel.org; Fri, 06 May 2011 11:57:26 -0500 Sender: netdev-owner@vger.kernel.org List-ID: --Apple-Mail-149--23646641 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii We recently obtained a new a Lenovo Edge 0578-CTO. The r8169 driver = causes instability in the system on this machine. The problem is that in = rtl8169_rx_interrupt (status & 0x00001FFF) returns values less than four = on this machine. This results in this line: int pkt_size =3D (status & 0x00001FFF) - 4; giving a huge packet size which causes problem when the packet is = copied. For a work around we've added a patch to drop packets when we = see this condition. I have attached lspci -vvv for this device and a = patch for the work around we're using. -Tom Goetz --Apple-Mail-149--23646641 Content-Disposition: attachment; filename=r8168_lspci.log Content-Type: application/octet-stream; name="r8168_lspci.log" Content-Transfer-Encoding: 7bit 09:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 03) Subsystem: Lenovo Device 2131 Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx+ Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- SERR- addr); int pkt_size = (status & 0x00001FFF) - 4; + if ((status & 0x00001FFF) < 4) { + dev->stats.rx_dropped++; + dev->stats.rx_length_errors++; + rtl8169_mark_to_asic(desc, rx_buf_sz); + printk("%s: bad packet length!\n", __FUNCTION__); + continue; + } + /* * The driver does not support incoming fragmented * frames. They are seen as a symptom of over-mtu --Apple-Mail-149--23646641--