From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eric Dumazet Subject: [PATCH] PCI: Limit VPD length for Broadcom 5708S Date: Thu, 31 Jul 2008 20:27:31 +0200 Message-ID: <48920413.6080508@cosmosbay.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: linux kernel , Linux Netdev List To: benli@broadcom.com, willy@linux.intel.com, jbarnes@virtuousgeek.org Return-path: Received: from smtp20.orange.fr ([80.12.242.26]:4959 "EHLO smtp20.orange.fr" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752503AbYGaS1m (ORCPT ); Thu, 31 Jul 2008 14:27:42 -0400 Sender: netdev-owner@vger.kernel.org List-ID: While trying to upgrade kernel from 2.6.25 to 2.6.26 on a ProLiant BL460c G1, I faced this problem on integrated Broadcom 5708S NIC when trying to UP them. bnx2: fw sync timeout, reset code = 1030003 I noticed that commit 99cb233d60cbe644203f19938c729ea2bb004d70 (PCI: Limit VPD read/write lengths for Broadcom 5706, 5708, 5709 rev.A) was probably a good candidate to solve the problem. Apparently, it added PCI quirks for a list of Broadcom NICs, but quirk_brcm_570x_limit_vpd() ignores part of them. I found the following patch useful to restore correct operation on my machine. Some information about this nic : 03:00.0 Ethernet controller: Broadcom Corporation NetXtreme II BCM5708S Gigabit Ethernet (rev 12) Subsystem: Hewlett-Packard Company NC373i Integrated Multifunction Gigabit Server Adapter Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr+ Stepping- SERR+ FastB2B- Status: Cap+ 66Mhz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- SERR- diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c index 0fb3650..59667e5 100644 --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c @@ -1756,9 +1756,12 @@ DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_VIA, 0x324e, quirk_via_cx700_pci_parking_c */ static void __devinit quirk_brcm_570x_limit_vpd(struct pci_dev *dev) { - /* Only disable the VPD capability for 5706, 5708, and 5709 rev. A */ + /* + * Only disable the VPD capability for 5706, 5708, 5708S and 5709 rev. A + */ if ((dev->device == PCI_DEVICE_ID_NX2_5706) || (dev->device == PCI_DEVICE_ID_NX2_5708) || + (dev->device == PCI_DEVICE_ID_NX2_5708S) || ((dev->device == PCI_DEVICE_ID_NX2_5709) && (dev->revision & 0xf0) == 0x0)) { if (dev->vpd)