فهرست منبع

Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/jkirsher/net-next-2.6

David S. Miller 14 سال پیش
والد
کامیت
039f02ebd9

+ 1 - 1
drivers/net/igb/Makefile

@@ -1,7 +1,7 @@
 ################################################################################
 ################################################################################
 #
 #
 # Intel 82575 PCI-Express Ethernet Linux driver
 # Intel 82575 PCI-Express Ethernet Linux driver
-# Copyright(c) 1999 - 2009 Intel Corporation.
+# Copyright(c) 1999 - 2011 Intel Corporation.
 #
 #
 # This program is free software; you can redistribute it and/or modify it
 # This program is free software; you can redistribute it and/or modify it
 # under the terms and conditions of the GNU General Public License,
 # under the terms and conditions of the GNU General Public License,

+ 19 - 3
drivers/net/igb/e1000_82575.c

@@ -1,7 +1,7 @@
 /*******************************************************************************
 /*******************************************************************************
 
 
   Intel(R) Gigabit Ethernet Linux driver
   Intel(R) Gigabit Ethernet Linux driver
-  Copyright(c) 2007-2009 Intel Corporation.
+  Copyright(c) 2007-2011 Intel Corporation.
 
 
   This program is free software; you can redistribute it and/or modify it
   This program is free software; you can redistribute it and/or modify it
   under the terms and conditions of the GNU General Public License,
   under the terms and conditions of the GNU General Public License,
@@ -1156,10 +1156,13 @@ static s32 igb_setup_serdes_link_82575(struct e1000_hw *hw)
 {
 {
 	u32 ctrl_ext, ctrl_reg, reg;
 	u32 ctrl_ext, ctrl_reg, reg;
 	bool pcs_autoneg;
 	bool pcs_autoneg;
+	s32 ret_val = E1000_SUCCESS;
+	u16 data;
 
 
 	if ((hw->phy.media_type != e1000_media_type_internal_serdes) &&
 	if ((hw->phy.media_type != e1000_media_type_internal_serdes) &&
 	    !igb_sgmii_active_82575(hw))
 	    !igb_sgmii_active_82575(hw))
-		return 0;
+		return ret_val;
+
 
 
 	/*
 	/*
 	 * On the 82575, SerDes loopback mode persists until it is
 	 * On the 82575, SerDes loopback mode persists until it is
@@ -1203,6 +1206,18 @@ static s32 igb_setup_serdes_link_82575(struct e1000_hw *hw)
 		/* disable PCS autoneg and support parallel detect only */
 		/* disable PCS autoneg and support parallel detect only */
 		pcs_autoneg = false;
 		pcs_autoneg = false;
 	default:
 	default:
+		if (hw->mac.type == e1000_82575 ||
+		    hw->mac.type == e1000_82576) {
+			ret_val = hw->nvm.ops.read(hw, NVM_COMPAT, 1, &data);
+			if (ret_val) {
+				printk(KERN_DEBUG "NVM Read Error\n\n");
+				return ret_val;
+			}
+
+			if (data & E1000_EEPROM_PCS_AUTONEG_DISABLE_BIT)
+				pcs_autoneg = false;
+		}
+
 		/*
 		/*
 		 * non-SGMII modes only supports a speed of 1000/Full for the
 		 * non-SGMII modes only supports a speed of 1000/Full for the
 		 * link so it is best to just force the MAC and let the pcs
 		 * link so it is best to just force the MAC and let the pcs
@@ -1250,7 +1265,7 @@ static s32 igb_setup_serdes_link_82575(struct e1000_hw *hw)
 	if (!igb_sgmii_active_82575(hw))
 	if (!igb_sgmii_active_82575(hw))
 		igb_force_mac_fc(hw);
 		igb_force_mac_fc(hw);
 
 
-	return 0;
+	return ret_val;
 }
 }
 
 
 /**
 /**
@@ -1735,6 +1750,7 @@ static s32 igb_reset_hw_82580(struct e1000_hw *hw)
 		ctrl |= E1000_CTRL_RST;
 		ctrl |= E1000_CTRL_RST;
 
 
 	wr32(E1000_CTRL, ctrl);
 	wr32(E1000_CTRL, ctrl);
+	wrfl();
 
 
 	/* Add delay to insure DEV_RST has time to complete */
 	/* Add delay to insure DEV_RST has time to complete */
 	if (global_device_reset)
 	if (global_device_reset)

+ 3 - 1
drivers/net/igb/e1000_82575.h

@@ -1,7 +1,7 @@
 /*******************************************************************************
 /*******************************************************************************
 
 
   Intel(R) Gigabit Ethernet Linux driver
   Intel(R) Gigabit Ethernet Linux driver
-  Copyright(c) 2007-2009 Intel Corporation.
+  Copyright(c) 2007-2011 Intel Corporation.
 
 
   This program is free software; you can redistribute it and/or modify it
   This program is free software; you can redistribute it and/or modify it
   under the terms and conditions of the GNU General Public License,
   under the terms and conditions of the GNU General Public License,
@@ -243,6 +243,8 @@ struct e1000_adv_tx_context_desc {
 #define E1000_DTXCTL_MDP_EN     0x0020
 #define E1000_DTXCTL_MDP_EN     0x0020
 #define E1000_DTXCTL_SPOOF_INT  0x0040
 #define E1000_DTXCTL_SPOOF_INT  0x0040
 
 
+#define E1000_EEPROM_PCS_AUTONEG_DISABLE_BIT	(1 << 14)
+
 #define ALL_QUEUES   0xFFFF
 #define ALL_QUEUES   0xFFFF
 
 
 /* RX packet buffer size defines */
 /* RX packet buffer size defines */

+ 4 - 3
drivers/net/igb/e1000_defines.h

@@ -1,7 +1,7 @@
 /*******************************************************************************
 /*******************************************************************************
 
 
   Intel(R) Gigabit Ethernet Linux driver
   Intel(R) Gigabit Ethernet Linux driver
-  Copyright(c) 2007-2009 Intel Corporation.
+  Copyright(c) 2007-2011 Intel Corporation.
 
 
   This program is free software; you can redistribute it and/or modify it
   This program is free software; you can redistribute it and/or modify it
   under the terms and conditions of the GNU General Public License,
   under the terms and conditions of the GNU General Public License,
@@ -437,6 +437,7 @@
 #define E1000_RAH_POOL_1 0x00040000
 #define E1000_RAH_POOL_1 0x00040000
 
 
 /* Error Codes */
 /* Error Codes */
+#define E1000_SUCCESS      0
 #define E1000_ERR_NVM      1
 #define E1000_ERR_NVM      1
 #define E1000_ERR_PHY      2
 #define E1000_ERR_PHY      2
 #define E1000_ERR_CONFIG   3
 #define E1000_ERR_CONFIG   3
@@ -587,8 +588,8 @@
 #define E1000_NVM_POLL_READ     0    /* Flag for polling for read complete */
 #define E1000_NVM_POLL_READ     0    /* Flag for polling for read complete */
 
 
 /* NVM Word Offsets */
 /* NVM Word Offsets */
-#define NVM_ID_LED_SETTINGS        0x0004
-/* For SERDES output amplitude adjustment. */
+#define NVM_COMPAT                 0x0003
+#define NVM_ID_LED_SETTINGS        0x0004 /* SERDES output amplitude */
 #define NVM_INIT_CONTROL2_REG      0x000F
 #define NVM_INIT_CONTROL2_REG      0x000F
 #define NVM_INIT_CONTROL3_PORT_B   0x0014
 #define NVM_INIT_CONTROL3_PORT_B   0x0014
 #define NVM_INIT_CONTROL3_PORT_A   0x0024
 #define NVM_INIT_CONTROL3_PORT_A   0x0024

+ 1 - 1
drivers/net/igb/e1000_hw.h

@@ -1,7 +1,7 @@
 /*******************************************************************************
 /*******************************************************************************
 
 
   Intel(R) Gigabit Ethernet Linux driver
   Intel(R) Gigabit Ethernet Linux driver
-  Copyright(c) 2007-2009 Intel Corporation.
+  Copyright(c) 2007-2011 Intel Corporation.
 
 
   This program is free software; you can redistribute it and/or modify it
   This program is free software; you can redistribute it and/or modify it
   under the terms and conditions of the GNU General Public License,
   under the terms and conditions of the GNU General Public License,

+ 1 - 1
drivers/net/igb/e1000_mac.c

@@ -1,7 +1,7 @@
 /*******************************************************************************
 /*******************************************************************************
 
 
   Intel(R) Gigabit Ethernet Linux driver
   Intel(R) Gigabit Ethernet Linux driver
-  Copyright(c) 2007-2009 Intel Corporation.
+  Copyright(c) 2007-2011 Intel Corporation.
 
 
   This program is free software; you can redistribute it and/or modify it
   This program is free software; you can redistribute it and/or modify it
   under the terms and conditions of the GNU General Public License,
   under the terms and conditions of the GNU General Public License,

+ 1 - 1
drivers/net/igb/e1000_mac.h

@@ -1,7 +1,7 @@
 /*******************************************************************************
 /*******************************************************************************
 
 
   Intel(R) Gigabit Ethernet Linux driver
   Intel(R) Gigabit Ethernet Linux driver
-  Copyright(c) 2007-2009 Intel Corporation.
+  Copyright(c) 2007-2011 Intel Corporation.
 
 
   This program is free software; you can redistribute it and/or modify it
   This program is free software; you can redistribute it and/or modify it
   under the terms and conditions of the GNU General Public License,
   under the terms and conditions of the GNU General Public License,

+ 1 - 1
drivers/net/igb/e1000_mbx.c

@@ -1,7 +1,7 @@
 /*******************************************************************************
 /*******************************************************************************
 
 
   Intel(R) Gigabit Ethernet Linux driver
   Intel(R) Gigabit Ethernet Linux driver
-  Copyright(c) 2007-2009 Intel Corporation.
+  Copyright(c) 2007-2011 Intel Corporation.
 
 
   This program is free software; you can redistribute it and/or modify it
   This program is free software; you can redistribute it and/or modify it
   under the terms and conditions of the GNU General Public License,
   under the terms and conditions of the GNU General Public License,

+ 1 - 1
drivers/net/igb/e1000_mbx.h

@@ -1,7 +1,7 @@
 /*******************************************************************************
 /*******************************************************************************
 
 
   Intel(R) Gigabit Ethernet Linux driver
   Intel(R) Gigabit Ethernet Linux driver
-  Copyright(c) 2007-2009 Intel Corporation.
+  Copyright(c) 2007-2011 Intel Corporation.
 
 
   This program is free software; you can redistribute it and/or modify it
   This program is free software; you can redistribute it and/or modify it
   under the terms and conditions of the GNU General Public License,
   under the terms and conditions of the GNU General Public License,

+ 1 - 1
drivers/net/igb/e1000_nvm.c

@@ -1,7 +1,7 @@
 /*******************************************************************************
 /*******************************************************************************
 
 
   Intel(R) Gigabit Ethernet Linux driver
   Intel(R) Gigabit Ethernet Linux driver
-  Copyright(c) 2007-2009 Intel Corporation.
+  Copyright(c) 2007-2011 Intel Corporation.
 
 
   This program is free software; you can redistribute it and/or modify it
   This program is free software; you can redistribute it and/or modify it
   under the terms and conditions of the GNU General Public License,
   under the terms and conditions of the GNU General Public License,

+ 1 - 1
drivers/net/igb/e1000_nvm.h

@@ -1,7 +1,7 @@
 /*******************************************************************************
 /*******************************************************************************
 
 
   Intel(R) Gigabit Ethernet Linux driver
   Intel(R) Gigabit Ethernet Linux driver
-  Copyright(c) 2007 Intel Corporation.
+  Copyright(c) 2011 Intel Corporation.
 
 
   This program is free software; you can redistribute it and/or modify it
   This program is free software; you can redistribute it and/or modify it
   under the terms and conditions of the GNU General Public License,
   under the terms and conditions of the GNU General Public License,

+ 1 - 1
drivers/net/igb/e1000_phy.c

@@ -1,7 +1,7 @@
 /*******************************************************************************
 /*******************************************************************************
 
 
   Intel(R) Gigabit Ethernet Linux driver
   Intel(R) Gigabit Ethernet Linux driver
-  Copyright(c) 2007-2009 Intel Corporation.
+  Copyright(c) 2007-2011 Intel Corporation.
 
 
   This program is free software; you can redistribute it and/or modify it
   This program is free software; you can redistribute it and/or modify it
   under the terms and conditions of the GNU General Public License,
   under the terms and conditions of the GNU General Public License,

+ 1 - 1
drivers/net/igb/e1000_phy.h

@@ -1,7 +1,7 @@
 /*******************************************************************************
 /*******************************************************************************
 
 
   Intel(R) Gigabit Ethernet Linux driver
   Intel(R) Gigabit Ethernet Linux driver
-  Copyright(c) 2007-2009 Intel Corporation.
+  Copyright(c) 2007-2011 Intel Corporation.
 
 
   This program is free software; you can redistribute it and/or modify it
   This program is free software; you can redistribute it and/or modify it
   under the terms and conditions of the GNU General Public License,
   under the terms and conditions of the GNU General Public License,

+ 1 - 1
drivers/net/igb/e1000_regs.h

@@ -1,7 +1,7 @@
 /*******************************************************************************
 /*******************************************************************************
 
 
   Intel(R) Gigabit Ethernet Linux driver
   Intel(R) Gigabit Ethernet Linux driver
-  Copyright(c) 2007-2009 Intel Corporation.
+  Copyright(c) 2007-2011 Intel Corporation.
 
 
   This program is free software; you can redistribute it and/or modify it
   This program is free software; you can redistribute it and/or modify it
   under the terms and conditions of the GNU General Public License,
   under the terms and conditions of the GNU General Public License,

+ 1 - 1
drivers/net/igb/igb.h

@@ -1,7 +1,7 @@
 /*******************************************************************************
 /*******************************************************************************
 
 
   Intel(R) Gigabit Ethernet Linux driver
   Intel(R) Gigabit Ethernet Linux driver
-  Copyright(c) 2007-2009 Intel Corporation.
+  Copyright(c) 2007-2011 Intel Corporation.
 
 
   This program is free software; you can redistribute it and/or modify it
   This program is free software; you can redistribute it and/or modify it
   under the terms and conditions of the GNU General Public License,
   under the terms and conditions of the GNU General Public License,

+ 1 - 1
drivers/net/igb/igb_ethtool.c

@@ -1,7 +1,7 @@
 /*******************************************************************************
 /*******************************************************************************
 
 
   Intel(R) Gigabit Ethernet Linux driver
   Intel(R) Gigabit Ethernet Linux driver
-  Copyright(c) 2007-2009 Intel Corporation.
+  Copyright(c) 2007-2011 Intel Corporation.
 
 
   This program is free software; you can redistribute it and/or modify it
   This program is free software; you can redistribute it and/or modify it
   under the terms and conditions of the GNU General Public License,
   under the terms and conditions of the GNU General Public License,

+ 1 - 1
drivers/net/igb/igb_main.c

@@ -1,7 +1,7 @@
 /*******************************************************************************
 /*******************************************************************************
 
 
   Intel(R) Gigabit Ethernet Linux driver
   Intel(R) Gigabit Ethernet Linux driver
-  Copyright(c) 2007-2009 Intel Corporation.
+  Copyright(c) 2007-2011 Intel Corporation.
 
 
   This program is free software; you can redistribute it and/or modify it
   This program is free software; you can redistribute it and/or modify it
   under the terms and conditions of the GNU General Public License,
   under the terms and conditions of the GNU General Public License,

+ 3 - 2
drivers/net/ixgbe/ixgbe_main.c

@@ -5155,8 +5155,6 @@ static int __devinit ixgbe_sw_init(struct ixgbe_adapter *adapter)
 		adapter->flags2 |= IXGBE_FLAG2_RSC_ENABLED;
 		adapter->flags2 |= IXGBE_FLAG2_RSC_ENABLED;
 		if (hw->device_id == IXGBE_DEV_ID_82599_T3_LOM)
 		if (hw->device_id == IXGBE_DEV_ID_82599_T3_LOM)
 			adapter->flags2 |= IXGBE_FLAG2_TEMP_SENSOR_CAPABLE;
 			adapter->flags2 |= IXGBE_FLAG2_TEMP_SENSOR_CAPABLE;
-		/* n-tuple support exists, always init our spinlock */
-		spin_lock_init(&adapter->fdir_perfect_lock);
 		/* Flow Director hash filters enabled */
 		/* Flow Director hash filters enabled */
 		adapter->flags |= IXGBE_FLAG_FDIR_HASH_CAPABLE;
 		adapter->flags |= IXGBE_FLAG_FDIR_HASH_CAPABLE;
 		adapter->atr_sample_rate = 20;
 		adapter->atr_sample_rate = 20;
@@ -5177,6 +5175,9 @@ static int __devinit ixgbe_sw_init(struct ixgbe_adapter *adapter)
 		break;
 		break;
 	}
 	}
 
 
+	/* n-tuple support exists, always init our spinlock */
+	spin_lock_init(&adapter->fdir_perfect_lock);
+
 #ifdef CONFIG_IXGBE_DCB
 #ifdef CONFIG_IXGBE_DCB
 	/* Configure DCB traffic classes */
 	/* Configure DCB traffic classes */
 	for (j = 0; j < MAX_TRAFFIC_CLASS; j++) {
 	for (j = 0; j < MAX_TRAFFIC_CLASS; j++) {