Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (27 commits) netfilter: fix CONFIG_COMPAT support isdn/avm: fix build when PCMCIA is not enabled header: fix broken headers for user space e1000e: don't check for alternate MAC addr on parts that don't support it e1000e: disable ASPM L1 on 82573 ll_temac: Fix poll implementation netxen: fix a race in netxen_nic_get_stats() qlnic: fix a race in qlcnic_get_stats() irda: fix a race in irlan_eth_xmit() net: sh_eth: remove unused variable netxen: update version 4.0.74 netxen: fix inconsistent lock state vlan: Match underlying dev carrier on vlan add ibmveth: Fix opps during MTU change on an active device ehea: Fix synchronization between HW and SW send queue bnx2x: Update bnx2x version to 1.52.53-4 bnx2x: Fix PHY locking problem rds: fix a leak of kernel memory netlink: fix compat recvmsg netfilter: fix userspace header warning ...
This commit is contained in:
@@ -936,12 +936,14 @@ static s32 e1000_reset_hw_82571(struct e1000_hw *hw)
|
||||
ew32(IMC, 0xffffffff);
|
||||
icr = er32(ICR);
|
||||
|
||||
/* Install any alternate MAC address into RAR0 */
|
||||
ret_val = e1000_check_alt_mac_addr_generic(hw);
|
||||
if (ret_val)
|
||||
return ret_val;
|
||||
if (hw->mac.type == e1000_82571) {
|
||||
/* Install any alternate MAC address into RAR0 */
|
||||
ret_val = e1000_check_alt_mac_addr_generic(hw);
|
||||
if (ret_val)
|
||||
return ret_val;
|
||||
|
||||
e1000e_set_laa_state_82571(hw, true);
|
||||
e1000e_set_laa_state_82571(hw, true);
|
||||
}
|
||||
|
||||
/* Reinitialize the 82571 serdes link state machine */
|
||||
if (hw->phy.media_type == e1000_media_type_internal_serdes)
|
||||
@@ -1618,14 +1620,16 @@ static s32 e1000_read_mac_addr_82571(struct e1000_hw *hw)
|
||||
{
|
||||
s32 ret_val = 0;
|
||||
|
||||
/*
|
||||
* If there's an alternate MAC address place it in RAR0
|
||||
* so that it will override the Si installed default perm
|
||||
* address.
|
||||
*/
|
||||
ret_val = e1000_check_alt_mac_addr_generic(hw);
|
||||
if (ret_val)
|
||||
goto out;
|
||||
if (hw->mac.type == e1000_82571) {
|
||||
/*
|
||||
* If there's an alternate MAC address place it in RAR0
|
||||
* so that it will override the Si installed default perm
|
||||
* address.
|
||||
*/
|
||||
ret_val = e1000_check_alt_mac_addr_generic(hw);
|
||||
if (ret_val)
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret_val = e1000_read_mac_addr_generic(hw);
|
||||
|
||||
@@ -1833,6 +1837,7 @@ struct e1000_info e1000_82573_info = {
|
||||
| FLAG_HAS_SMART_POWER_DOWN
|
||||
| FLAG_HAS_AMT
|
||||
| FLAG_HAS_SWSM_ON_LOAD,
|
||||
.flags2 = FLAG2_DISABLE_ASPM_L1,
|
||||
.pba = 20,
|
||||
.max_hw_frame_size = ETH_FRAME_LEN + ETH_FCS_LEN,
|
||||
.get_variants = e1000_get_variants_82571,
|
||||
|
@@ -621,6 +621,7 @@
|
||||
#define E1000_FLASH_UPDATES 2000
|
||||
|
||||
/* NVM Word Offsets */
|
||||
#define NVM_COMPAT 0x0003
|
||||
#define NVM_ID_LED_SETTINGS 0x0004
|
||||
#define NVM_INIT_CONTROL2_REG 0x000F
|
||||
#define NVM_INIT_CONTROL3_PORT_B 0x0014
|
||||
@@ -643,6 +644,9 @@
|
||||
/* Mask bits for fields in Word 0x1a of the NVM */
|
||||
#define NVM_WORD1A_ASPM_MASK 0x000C
|
||||
|
||||
/* Mask bits for fields in Word 0x03 of the EEPROM */
|
||||
#define NVM_COMPAT_LOM 0x0800
|
||||
|
||||
/* For checksumming, the sum of all words in the NVM should equal 0xBABA. */
|
||||
#define NVM_SUM 0xBABA
|
||||
|
||||
|
@@ -183,6 +183,16 @@ s32 e1000_check_alt_mac_addr_generic(struct e1000_hw *hw)
|
||||
u16 offset, nvm_alt_mac_addr_offset, nvm_data;
|
||||
u8 alt_mac_addr[ETH_ALEN];
|
||||
|
||||
ret_val = e1000_read_nvm(hw, NVM_COMPAT, 1, &nvm_data);
|
||||
if (ret_val)
|
||||
goto out;
|
||||
|
||||
/* Check for LOM (vs. NIC) or one of two valid mezzanine cards */
|
||||
if (!((nvm_data & NVM_COMPAT_LOM) ||
|
||||
(hw->adapter->pdev->device == E1000_DEV_ID_82571EB_SERDES_DUAL) ||
|
||||
(hw->adapter->pdev->device == E1000_DEV_ID_82571EB_SERDES_QUAD)))
|
||||
goto out;
|
||||
|
||||
ret_val = e1000_read_nvm(hw, NVM_ALT_MAC_ADDR_PTR, 1,
|
||||
&nvm_alt_mac_addr_offset);
|
||||
if (ret_val) {
|
||||
|
Reference in New Issue
Block a user