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

Commit 3142467f authored by Pali Rohár's avatar Pali Rohár Committed by Kalle Valo
Browse files

wl1251: Set generated MAC address back to NVS data



In case there is no valid MAC address kernel generates random one. This
patch propagate this generated MAC address back to NVS data which will be
uploaded to wl1251 chip. So HW would have same MAC address as linux kernel
uses.

This should not change any functionality, but it is better to tell wl1251
correct mac address since beginning of chip usage.

Signed-off-by: default avatarPali Rohár <pali.rohar@gmail.com>
Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
parent 4f507d58
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -1480,6 +1480,21 @@ static int wl1251_read_nvs_mac(struct wl1251 *wl)
	return 0;
}

static int wl1251_write_nvs_mac(struct wl1251 *wl)
{
	int i, ret;

	ret = wl1251_check_nvs_mac(wl);
	if (ret)
		return ret;

	/* MAC is stored in reverse order */
	for (i = 0; i < ETH_ALEN; i++)
		wl->nvs[NVS_OFF_MAC_DATA + i] = wl->mac_addr[ETH_ALEN - i - 1];

	return 0;
}

static int wl1251_register_hw(struct wl1251 *wl)
{
	int ret;
@@ -1545,6 +1560,8 @@ int wl1251_init_ieee80211(struct wl1251 *wl)
		static const u8 nokia_oui[3] = {0x00, 0x1f, 0xdf};
		memcpy(wl->mac_addr, nokia_oui, 3);
		get_random_bytes(wl->mac_addr + 3, 3);
		if (!wl->use_eeprom)
			wl1251_write_nvs_mac(wl);
		wl1251_warning("MAC address in eeprom or nvs data is not valid");
		wl1251_warning("Setting random MAC address: %pM", wl->mac_addr);
	}