mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-23 15:32:33 +00:00
d5bf46bbe8
OpenWRT's developer guide prefers having actual patches so they an be sent upstream more easily. However, in this case, Adding proper fields also allows for `git am` to properly function. Some of these patches are quite old, and lack much traceable history. This commit tries to rectify that, by digging in the history to find where and how it was first added. It is by no means perfect and also shows some patches that should have been long gone. Signed-off-by: Olliver Schinagl <oliver@schinagl.nl>
55 lines
1.5 KiB
Diff
55 lines
1.5 KiB
Diff
From: David Bauer <mail@david-bauer.net>
|
|
Subject: of/net: Add MAC address to of tree
|
|
|
|
The label-mac logic relies on the mac-address property of a netdev
|
|
devices of-node. However, the mac address can also be stored as a
|
|
different property or read from e.g. an mtd device.
|
|
|
|
Create this node when reading a mac-address from OF if it does not
|
|
already exist and copy the mac-address used for the device to this
|
|
property. This way, the MAC address can be accessed using procfs.
|
|
|
|
Submitted-by: David Bauer <mail@david-bauer.net>
|
|
---
|
|
drivers/of/of_net.c | 22 ++++++++++++++
|
|
1 files changed, 22 insertions(+)
|
|
|
|
--- a/drivers/of/of_net.c
|
|
+++ b/drivers/of/of_net.c
|
|
@@ -95,6 +95,27 @@ static int of_get_mac_addr_nvmem(struct
|
|
return 0;
|
|
}
|
|
|
|
+static int of_add_mac_address(struct device_node *np, u8* addr)
|
|
+{
|
|
+ struct property *prop;
|
|
+
|
|
+ prop = kzalloc(sizeof(*prop), GFP_KERNEL);
|
|
+ if (!prop)
|
|
+ return -ENOMEM;
|
|
+
|
|
+ prop->name = "mac-address";
|
|
+ prop->length = ETH_ALEN;
|
|
+ prop->value = kmemdup(addr, ETH_ALEN, GFP_KERNEL);
|
|
+ if (!prop->value || of_update_property(np, prop))
|
|
+ goto free;
|
|
+
|
|
+ return 0;
|
|
+free:
|
|
+ kfree(prop->value);
|
|
+ kfree(prop);
|
|
+ return -ENOMEM;
|
|
+}
|
|
+
|
|
/**
|
|
* Search the device tree for the best MAC address to use. 'mac-address' is
|
|
* checked first, because that is supposed to contain to "most recent" MAC
|
|
@@ -171,6 +192,7 @@ found:
|
|
addr[5] = (mac_val >> 0) & 0xff;
|
|
}
|
|
|
|
+ of_add_mac_address(np, addr);
|
|
return ret;
|
|
}
|
|
EXPORT_SYMBOL(of_get_mac_address);
|