Commit b9346e0f authored by Mithlesh Thukral's avatar Mithlesh Thukral Committed by Greg Kroah-Hartman

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: default avatarChristopher Harrer <charrer@alacritech.com>
Signed-off-by: default avatarMithlesh Thukral <mithlesh@linsyssoft.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 544ed364
...@@ -834,14 +834,15 @@ static void sxg_config_pci(struct pci_dev *pcidev) ...@@ -834,14 +834,15 @@ static void sxg_config_pci(struct pci_dev *pcidev)
static inline int sxg_read_config(struct adapter_t *adapter) static inline int sxg_read_config(struct adapter_t *adapter)
{ {
/* struct sxg_config data; */ /* struct sxg_config data; */
struct sxg_config *config;
struct sw_cfg_data *data; struct sw_cfg_data *data;
dma_addr_t p_addr; dma_addr_t p_addr;
unsigned long status; unsigned long status;
unsigned long i; unsigned long i;
config = pci_alloc_consistent(adapter->pcidev,
sizeof(struct sxg_config), &p_addr);
data = pci_alloc_consistent(adapter->pcidev, if(!config) {
sizeof(struct sw_cfg_data), &p_addr);
if(!data) {
/* /*
* We cant get even this much memory. Raise a hell * We cant get even this much memory. Raise a hell
* Get out of here * Get out of here
...@@ -851,8 +852,12 @@ static inline int sxg_read_config(struct adapter_t *adapter) ...@@ -851,8 +852,12 @@ static inline int sxg_read_config(struct adapter_t *adapter)
return -ENOMEM; return -ENOMEM;
} }
data = &config->SwCfg;
/* Initialize (reflective memory) status register */
WRITE_REG(adapter->UcodeRegs[0].ConfigStat, SXG_CFG_TIMEOUT, TRUE); 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); WRITE_REG64(adapter, adapter->UcodeRegs[0].Config, p_addr, 0);
for(i=0; i<1000; i++) { for(i=0; i<1000; i++) {
READ_REG(adapter->UcodeRegs[0].ConfigStat, status); READ_REG(adapter->UcodeRegs[0].ConfigStat, status);
...@@ -866,12 +871,12 @@ static inline int sxg_read_config(struct adapter_t *adapter) ...@@ -866,12 +871,12 @@ static inline int sxg_read_config(struct adapter_t *adapter)
case SXG_CFG_LOAD_EEPROM: case SXG_CFG_LOAD_EEPROM:
/* Config read from Flash succeeded */ /* Config read from Flash succeeded */
case SXG_CFG_LOAD_FLASH: case SXG_CFG_LOAD_FLASH:
/* Copy the MAC address to adapter structure */ /*
/* TODO: We are not doing the remaining part : FRU, * Copy the MAC address to adapter structure
* etc * TODO: We are not doing the remaining part : FRU, etc
*/ */
memcpy(adapter->macaddr, data->MacAddr[0].MacAddr, memcpy(adapter->macaddr, data->MacAddr[0].MacAddr,
sizeof(struct sxg_config_mac)); sizeof(struct sxg_config_mac));
break; break;
case SXG_CFG_TIMEOUT: case SXG_CFG_TIMEOUT:
case SXG_CFG_LOAD_INVALID: case SXG_CFG_LOAD_INVALID:
......
...@@ -944,15 +944,6 @@ struct sxg_config { ...@@ -944,15 +944,6 @@ struct sxg_config {
struct sw_cfg_data SwCfg; 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 #ifdef WINDOWS_COMPILER
/* /*
* The following macro is something of a kludge, but it is the only way * The following macro is something of a kludge, but it is the only way
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment