aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@g5.osdl.org>2006-09-29 21:54:48 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2006-09-29 21:54:48 -0400
commitbf603625660b1742004bf86432ce3c210d14d4fd (patch)
treedb327975e92e01f2f2badb8ec5ae55282f156674 /drivers
parentfbe96f92b3d9450e77a3a4bb1d46aa1bb908c1ab (diff)
parent6656e3c4c8e0c80f2d2bfece574876d269f64861 (diff)
Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
* master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6: [ATM]: [lec] use refcnt to protect lec_arp_entries outside lock [ATM]: [lec] add reference counting to lec_arp entries [ATM]: [lec] use work queue instead of timer for lec arp expiry [ATM]: [lec] old_close is no longer used [ATM]: [lec] convert lec_arp_table to hlist [ATM]: [lec] header indent, comment and whitespace cleanup [ATM]: [lec] indent, comment and whitespace cleanup [continued] [ATM]: [lec] indent, comment and whitespace cleanup [SCTP]: Do not timestamp every SCTP packet. [SCTP]: Use correct mask when disabling PMTUD. [SCTP]: Include sk_buff overhead while updating the peer's receive window. [SCTP]: Enable Nagle algorithm by default. [BNX2]: Disable MSI on 5706 if AMD 8132 bridge is present. [NetLabel]: audit fixups due to delayed feedback
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/bnx2.c32
1 files changed, 30 insertions, 2 deletions
diff --git a/drivers/net/bnx2.c b/drivers/net/bnx2.c
index 7fcf015021ec..6b4edb63c4c4 100644
--- a/drivers/net/bnx2.c
+++ b/drivers/net/bnx2.c
@@ -56,8 +56,8 @@
56 56
57#define DRV_MODULE_NAME "bnx2" 57#define DRV_MODULE_NAME "bnx2"
58#define PFX DRV_MODULE_NAME ": " 58#define PFX DRV_MODULE_NAME ": "
59#define DRV_MODULE_VERSION "1.4.44" 59#define DRV_MODULE_VERSION "1.4.45"
60#define DRV_MODULE_RELDATE "August 10, 2006" 60#define DRV_MODULE_RELDATE "September 29, 2006"
61 61
62#define RUN_AT(x) (jiffies + (x)) 62#define RUN_AT(x) (jiffies + (x))
63 63
@@ -5805,6 +5805,34 @@ bnx2_init_board(struct pci_dev *pdev, struct net_device *dev)
5805 bp->cmd_ticks_int = bp->cmd_ticks; 5805 bp->cmd_ticks_int = bp->cmd_ticks;
5806 } 5806 }
5807 5807
5808 /* Disable MSI on 5706 if AMD 8132 bridge is found.
5809 *
5810 * MSI is defined to be 32-bit write. The 5706 does 64-bit MSI writes
5811 * with byte enables disabled on the unused 32-bit word. This is legal
5812 * but causes problems on the AMD 8132 which will eventually stop
5813 * responding after a while.
5814 *
5815 * AMD believes this incompatibility is unique to the 5706, and
5816 * prefers to locally disable MSI rather than globally disabling it
5817 * using pci_msi_quirk.
5818 */
5819 if (CHIP_NUM(bp) == CHIP_NUM_5706 && disable_msi == 0) {
5820 struct pci_dev *amd_8132 = NULL;
5821
5822 while ((amd_8132 = pci_get_device(PCI_VENDOR_ID_AMD,
5823 PCI_DEVICE_ID_AMD_8132_BRIDGE,
5824 amd_8132))) {
5825 u8 rev;
5826
5827 pci_read_config_byte(amd_8132, PCI_REVISION_ID, &rev);
5828 if (rev >= 0x10 && rev <= 0x13) {
5829 disable_msi = 1;
5830 pci_dev_put(amd_8132);
5831 break;
5832 }
5833 }
5834 }
5835
5808 bp->autoneg = AUTONEG_SPEED | AUTONEG_FLOW_CTRL; 5836 bp->autoneg = AUTONEG_SPEED | AUTONEG_FLOW_CTRL;
5809 bp->req_line_speed = 0; 5837 bp->req_line_speed = 0;
5810 if (bp->phy_flags & PHY_SERDES_FLAG) { 5838 if (bp->phy_flags & PHY_SERDES_FLAG) {