Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 184462
b: refs/heads/master
c: 7b21b6f
h: refs/heads/master
v: v3
  • Loading branch information
Juuso Oikarinen authored and John W. Linville committed Feb 19, 2010
1 parent 10a9d3f commit 656a252
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 18 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 152ee6e09e2ce54d7d1cc9d338b82c0bf3cbbc95
refs/heads/master: 7b21b6f8216494ab6b8b4dc9d15e48051a0f0a66
8 changes: 0 additions & 8 deletions trunk/drivers/net/wireless/wl12xx/wl1271_boot.c
Original file line number Diff line number Diff line change
Expand Up @@ -228,14 +228,6 @@ static int wl1271_boot_upload_nvs(struct wl1271 *wl)
nvs_len = sizeof(wl->nvs->nvs);
nvs_ptr = (u8 *)wl->nvs->nvs;

/* Update the device MAC address into the nvs */
nvs_ptr[11] = wl->mac_addr[0];
nvs_ptr[10] = wl->mac_addr[1];
nvs_ptr[6] = wl->mac_addr[2];
nvs_ptr[5] = wl->mac_addr[3];
nvs_ptr[4] = wl->mac_addr[4];
nvs_ptr[3] = wl->mac_addr[5];

/*
* Layout before the actual NVS tables:
* 1 byte : burst length.
Expand Down
36 changes: 27 additions & 9 deletions trunk/drivers/net/wireless/wl12xx/wl1271_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -467,6 +467,32 @@ static int wl1271_fetch_firmware(struct wl1271 *wl)
return ret;
}

static int wl1271_update_mac_addr(struct wl1271 *wl)
{
int ret = 0;
u8 *nvs_ptr = (u8 *)wl->nvs->nvs;

/* get mac address from the NVS */
wl->mac_addr[0] = nvs_ptr[11];
wl->mac_addr[1] = nvs_ptr[10];
wl->mac_addr[2] = nvs_ptr[6];
wl->mac_addr[3] = nvs_ptr[5];
wl->mac_addr[4] = nvs_ptr[4];
wl->mac_addr[5] = nvs_ptr[3];

/* FIXME: if it is a zero-address, we should bail out. Now, instead,
we randomize an address */
if (is_zero_ether_addr(wl->mac_addr)) {
static const u8 nokia_oui[3] = {0x00, 0x1f, 0xdf};
memcpy(wl->mac_addr, nokia_oui, 3);
get_random_bytes(wl->mac_addr + 3, 3);
}

SET_IEEE80211_PERM_ADDR(wl->hw, wl->mac_addr);

return ret;
}

static int wl1271_fetch_nvs(struct wl1271 *wl)
{
const struct firmware *fw;
Expand Down Expand Up @@ -496,7 +522,7 @@ static int wl1271_fetch_nvs(struct wl1271 *wl)

memcpy(wl->nvs, fw->data, sizeof(struct wl1271_nvs_file));

ret = 0;
ret = wl1271_update_mac_addr(wl);

out:
release_firmware(fw);
Expand Down Expand Up @@ -1893,7 +1919,6 @@ static int __devinit wl1271_probe(struct spi_device *spi)
struct ieee80211_hw *hw;
struct wl1271 *wl;
int ret, i;
static const u8 nokia_oui[3] = {0x00, 0x1f, 0xdf};

pdata = spi->dev.platform_data;
if (!pdata) {
Expand Down Expand Up @@ -1938,13 +1963,6 @@ static int __devinit wl1271_probe(struct spi_device *spi)

spin_lock_init(&wl->wl_lock);

/*
* In case our MAC address is not correctly set,
* we use a random but Nokia MAC.
*/
memcpy(wl->mac_addr, nokia_oui, 3);
get_random_bytes(wl->mac_addr + 3, 3);

wl->state = WL1271_STATE_OFF;
mutex_init(&wl->mutex);

Expand Down

0 comments on commit 656a252

Please sign in to comment.