Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+12 −7
Original line number Diff line number Diff line
@@ -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,9 +871,9 @@ 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));
+0 −9
Original line number Diff line number Diff line
@@ -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