mirror of
https://git.FreeBSD.org/src.git
synced 2024-12-21 11:13:30 +00:00
The new method of reading the mac address from the
RAR(0) register does not work on this old adapter, provide a local routine that does it the older way. Approved by: re
This commit is contained in:
parent
dcf1c8c8d8
commit
38537cb9d3
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=195409
@ -1,6 +1,6 @@
|
|||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
|
|
||||||
Copyright (c) 2001-2008, Intel Corporation
|
Copyright (c) 2001-2009, Intel Corporation
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
@ -49,6 +49,8 @@ static s32 e1000_led_on_82542(struct e1000_hw *hw);
|
|||||||
static s32 e1000_led_off_82542(struct e1000_hw *hw);
|
static s32 e1000_led_off_82542(struct e1000_hw *hw);
|
||||||
static void e1000_rar_set_82542(struct e1000_hw *hw, u8 *addr, u32 index);
|
static void e1000_rar_set_82542(struct e1000_hw *hw, u8 *addr, u32 index);
|
||||||
static void e1000_clear_hw_cntrs_82542(struct e1000_hw *hw);
|
static void e1000_clear_hw_cntrs_82542(struct e1000_hw *hw);
|
||||||
|
static s32 e1000_read_mac_addr_82542(struct e1000_hw *hw);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* e1000_init_phy_params_82542 - Init PHY func ptrs.
|
* e1000_init_phy_params_82542 - Init PHY func ptrs.
|
||||||
@ -134,6 +136,8 @@ static s32 e1000_init_mac_params_82542(struct e1000_hw *hw)
|
|||||||
mac->ops.clear_vfta = e1000_clear_vfta_generic;
|
mac->ops.clear_vfta = e1000_clear_vfta_generic;
|
||||||
/* setting MTA */
|
/* setting MTA */
|
||||||
mac->ops.mta_set = e1000_mta_set_generic;
|
mac->ops.mta_set = e1000_mta_set_generic;
|
||||||
|
/* read mac address */
|
||||||
|
mac->ops.read_mac_addr = e1000_read_mac_addr_82542;
|
||||||
/* set RAR */
|
/* set RAR */
|
||||||
mac->ops.rar_set = e1000_rar_set_82542;
|
mac->ops.rar_set = e1000_rar_set_82542;
|
||||||
/* turn on/off LED */
|
/* turn on/off LED */
|
||||||
@ -554,3 +558,34 @@ static void e1000_clear_hw_cntrs_82542(struct e1000_hw *hw)
|
|||||||
E1000_READ_REG(hw, E1000_PTC1023);
|
E1000_READ_REG(hw, E1000_PTC1023);
|
||||||
E1000_READ_REG(hw, E1000_PTC1522);
|
E1000_READ_REG(hw, E1000_PTC1522);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* e1000_read_mac_addr_82542 - Read device MAC address
|
||||||
|
* @hw: pointer to the HW structure
|
||||||
|
*
|
||||||
|
* Reads the device MAC address from the EEPROM and stores the value.
|
||||||
|
**/
|
||||||
|
static s32 e1000_read_mac_addr_82542(struct e1000_hw *hw)
|
||||||
|
{
|
||||||
|
s32 ret_val = E1000_SUCCESS;
|
||||||
|
u16 offset, nvm_data, i;
|
||||||
|
|
||||||
|
DEBUGFUNC("e1000_read_mac_addr");
|
||||||
|
|
||||||
|
for (i = 0; i < ETH_ADDR_LEN; i += 2) {
|
||||||
|
offset = i >> 1;
|
||||||
|
ret_val = hw->nvm.ops.read(hw, offset, 1, &nvm_data);
|
||||||
|
if (ret_val) {
|
||||||
|
DEBUGOUT("NVM Read Error\n");
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
hw->mac.perm_addr[i] = (u8)(nvm_data & 0xFF);
|
||||||
|
hw->mac.perm_addr[i+1] = (u8)(nvm_data >> 8);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < ETH_ADDR_LEN; i++)
|
||||||
|
hw->mac.addr[i] = hw->mac.perm_addr[i];
|
||||||
|
|
||||||
|
out:
|
||||||
|
return ret_val;
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user