Staging: sxg: Read the correct MAC address from the card for Rev B cards
Read the correct MAC address from EEPROM/Flash. Without this fix, all the interfaces were using the same MAC address. This works on Rev B firmware. Signed-off-by: Christopher Harrer <charrer@alacritech.com> Signed-off-by: Mithlesh Thukral <mithlesh@linsyssoft.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
544ed364f4
commit
b9346e0fc5
2 changed files with 12 additions and 16 deletions
|
@ -834,14 +834,15 @@ static void sxg_config_pci(struct pci_dev *pcidev)
|
|||
static inline int sxg_read_config(struct adapter_t *adapter)
|
||||
{
|
||||
/* struct sxg_config data; */
|
||||
struct sxg_config *config;
|
||||
struct sw_cfg_data *data;
|
||||
dma_addr_t p_addr;
|
||||
unsigned long status;
|
||||
unsigned long i;
|
||||
config = pci_alloc_consistent(adapter->pcidev,
|
||||
sizeof(struct sxg_config), &p_addr);
|
||||
|
||||
data = pci_alloc_consistent(adapter->pcidev,
|
||||
sizeof(struct sw_cfg_data), &p_addr);
|
||||
if(!data) {
|
||||
if(!config) {
|
||||
/*
|
||||
* We cant get even this much memory. Raise a hell
|
||||
* Get out of here
|
||||
|
@ -851,8 +852,12 @@ static inline int sxg_read_config(struct adapter_t *adapter)
|
|||
return -ENOMEM;
|
||||
}
|
||||
|
||||
data = &config->SwCfg;
|
||||
|
||||
/* Initialize (reflective memory) status register */
|
||||
WRITE_REG(adapter->UcodeRegs[0].ConfigStat, SXG_CFG_TIMEOUT, TRUE);
|
||||
|
||||
/* Send request to fetch configuration data */
|
||||
WRITE_REG64(adapter, adapter->UcodeRegs[0].Config, p_addr, 0);
|
||||
for(i=0; i<1000; i++) {
|
||||
READ_REG(adapter->UcodeRegs[0].ConfigStat, status);
|
||||
|
@ -866,12 +871,12 @@ static inline int sxg_read_config(struct adapter_t *adapter)
|
|||
case SXG_CFG_LOAD_EEPROM:
|
||||
/* Config read from Flash succeeded */
|
||||
case SXG_CFG_LOAD_FLASH:
|
||||
/* Copy the MAC address to adapter structure */
|
||||
/* TODO: We are not doing the remaining part : FRU,
|
||||
* etc
|
||||
/*
|
||||
* Copy the MAC address to adapter structure
|
||||
* TODO: We are not doing the remaining part : FRU, etc
|
||||
*/
|
||||
memcpy(adapter->macaddr, data->MacAddr[0].MacAddr,
|
||||
sizeof(struct sxg_config_mac));
|
||||
sizeof(struct sxg_config_mac));
|
||||
break;
|
||||
case SXG_CFG_TIMEOUT:
|
||||
case SXG_CFG_LOAD_INVALID:
|
||||
|
|
|
@ -944,15 +944,6 @@ struct sxg_config {
|
|||
struct sw_cfg_data SwCfg;
|
||||
};
|
||||
|
||||
/* EEPROM/Flash Format (Sahara rev A) */
|
||||
struct sxg_config_a {
|
||||
/* H/W Section - Read by Sahara hardware (256 bytes) */
|
||||
struct hw_cfg_data HwCfg[NUM_HW_CFG_ENTRIES_A];
|
||||
|
||||
/* S/W Section - Other configuration data (128 bytes) */
|
||||
struct sw_cfg_data SwCfg;
|
||||
};
|
||||
|
||||
#ifdef WINDOWS_COMPILER
|
||||
/*
|
||||
* The following macro is something of a kludge, but it is the only way
|
||||
|
|
Reference in a new issue