aboutsummaryrefslogtreecommitdiffstats
path: root/package/kernel/acx-mac80211/patches/200-initial-macaddr.patch
blob: c0fdd433b35efe11c66ce89ffc999c55352fe33c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
--- a/cardsetting.c
+++ b/cardsetting.c
@@ -715,10 +715,25 @@ int acx1xx_get_station_id(acx_device_t *
 	u8 *stationID = adev->ie_cmd_buf;
 	const u8 *paddr;
 	int i, res;
+	const char *prom_addr;
+	char *prom_getenv(const char *name);
 
 	res = acx_interrogate(adev, stationID, ACX1xx_IE_DOT11_STATION_ID);
 	paddr = &stationID[4];
-	for (i = 0; i < ETH_ALEN; i++) {
+	prom_addr = NULL;
+#ifdef CONFIG_VLYNQ
+	prom_addr = prom_getenv("macwlan");
+	if (prom_addr == NULL)
+		prom_addr = prom_getenv("mac_ap");
+#endif
+	if (prom_addr)
+		sscanf(prom_addr, "%hhx:%hhx:%hhx:%hhx:%hhx:%hhx", adev->dev_addr,
+				adev->dev_addr + 1,
+				adev->dev_addr + 2,
+				adev->dev_addr + 3,
+				adev->dev_addr + 4,
+				adev->dev_addr + 5);
+	else for (i = 0; i < ETH_ALEN; i++) {
 		/* we copy the MAC address (reversed in the card) to
 		 * the netdevice's MAC address, and on ifup it will be
 		 * copied into iwadev->dev_addr */