diff options
author | David Bauer <mail@david-bauer.net> | 2021-07-20 22:00:10 +0200 |
---|---|---|
committer | David Bauer <mail@david-bauer.net> | 2021-07-22 04:32:28 +0200 |
commit | b30924873062be47250e6b872347461c8221688d (patch) | |
tree | 4afc2631224c4a6e469d85f646a3be32ca717ada /target | |
parent | 089c2bb2178daa144baa2e3ed20a55fb9a5c11ab (diff) | |
download | upstream-b30924873062be47250e6b872347461c8221688d.tar.gz upstream-b30924873062be47250e6b872347461c8221688d.tar.bz2 upstream-b30924873062be47250e6b872347461c8221688d.zip |
Traversing the device-tree by referencing a network device to determine
a devices labe-mac does not work with the generic nvmem implementation,
as the userspace expects the MAC-address to be available as a
device-tree property.
The legacy mtd-mac-address implementation did create such a node. Do the
same when using the nvmem implementation to allow reading the MAC
address.
Fixes commit d284e6ef0f06 ("treewide: convert mtd-mac-address-increment*
to generic implementation")
Signed-off-by: David Bauer <mail@david-bauer.net>
Diffstat (limited to 'target')
-rw-r--r-- | target/linux/generic/hack-5.10/683-NET-add-mac-address-property.patch | 59 | ||||
-rw-r--r-- | target/linux/generic/hack-5.4/683-NET-add-mac-address-property.patch | 59 |
2 files changed, 118 insertions, 0 deletions
diff --git a/target/linux/generic/hack-5.10/683-NET-add-mac-address-property.patch b/target/linux/generic/hack-5.10/683-NET-add-mac-address-property.patch new file mode 100644 index 0000000000..de561c5336 --- /dev/null +++ b/target/linux/generic/hack-5.10/683-NET-add-mac-address-property.patch @@ -0,0 +1,59 @@ +From: David Bauer <mail@david-bauer.net> +Date: Tue, 20 Jul 2021 22:00:10 +0200 +Subject: [PATCH] generic: add mac-address property for NVMEM mac addresses + +Traversing the device-tree by referencing a network device to determine +a devices labe-mac does not work with the generic nvmem implementation, +as the userspace expects the MAC-address to be available as a +device-tree property. + +The legacy mtd-mac-address implementation did create such a node. Do the +same when using the nvmem implementation to allow reading the MAC +address. + +Fixes commit d284e6ef0f06 ("treewide: convert mtd-mac-address-increment* +to generic implementation") + +Signed-off-by: David Bauer <mail@david-bauer.net> + +--- a/drivers/of/of_net.c ++++ b/drivers/of/of_net.c +@@ -61,6 +61,7 @@ static void *of_get_mac_addr_nvmem(struc + void *mac; + u8 nvmem_mac[ETH_ALEN]; + struct platform_device *pdev = of_find_device_by_node(np); ++ struct property *prop; + + if (!pdev) { + *err = -ENODEV; +@@ -78,10 +79,29 @@ static void *of_get_mac_addr_nvmem(struc + put_device(&pdev->dev); + if (!mac) { + *err = -ENOMEM; +- return NULL; ++ goto out_err; ++ } ++ ++ prop = devm_kzalloc(&pdev->dev, sizeof(*prop), GFP_KERNEL); ++ if (!prop) { ++ *err = -ENOMEM; ++ goto out_err; ++ } ++ prop->name = "mac-address"; ++ prop->length = ETH_ALEN; ++ prop->value = devm_kmemdup(&pdev->dev, mac, ETH_ALEN, GFP_KERNEL); ++ if (!prop->value || of_add_property(np, prop)) { ++ *err = -ENOMEM; ++ goto out_err; + } + + return mac; ++ ++out_err: ++ devm_kfree(&pdev->dev, prop->value); ++ devm_kfree(&pdev->dev, prop); ++ devm_kfree(&pdev->dev, mac); ++ return NULL; + } + + static void *of_get_mac_address_mtd(struct device_node *np) diff --git a/target/linux/generic/hack-5.4/683-NET-add-mac-address-property.patch b/target/linux/generic/hack-5.4/683-NET-add-mac-address-property.patch new file mode 100644 index 0000000000..de561c5336 --- /dev/null +++ b/target/linux/generic/hack-5.4/683-NET-add-mac-address-property.patch @@ -0,0 +1,59 @@ +From: David Bauer <mail@david-bauer.net> +Date: Tue, 20 Jul 2021 22:00:10 +0200 +Subject: [PATCH] generic: add mac-address property for NVMEM mac addresses + +Traversing the device-tree by referencing a network device to determine +a devices labe-mac does not work with the generic nvmem implementation, +as the userspace expects the MAC-address to be available as a +device-tree property. + +The legacy mtd-mac-address implementation did create such a node. Do the +same when using the nvmem implementation to allow reading the MAC +address. + +Fixes commit d284e6ef0f06 ("treewide: convert mtd-mac-address-increment* +to generic implementation") + +Signed-off-by: David Bauer <mail@david-bauer.net> + +--- a/drivers/of/of_net.c ++++ b/drivers/of/of_net.c +@@ -61,6 +61,7 @@ static void *of_get_mac_addr_nvmem(struc + void *mac; + u8 nvmem_mac[ETH_ALEN]; + struct platform_device *pdev = of_find_device_by_node(np); ++ struct property *prop; + + if (!pdev) { + *err = -ENODEV; +@@ -78,10 +79,29 @@ static void *of_get_mac_addr_nvmem(struc + put_device(&pdev->dev); + if (!mac) { + *err = -ENOMEM; +- return NULL; ++ goto out_err; ++ } ++ ++ prop = devm_kzalloc(&pdev->dev, sizeof(*prop), GFP_KERNEL); ++ if (!prop) { ++ *err = -ENOMEM; ++ goto out_err; ++ } ++ prop->name = "mac-address"; ++ prop->length = ETH_ALEN; ++ prop->value = devm_kmemdup(&pdev->dev, mac, ETH_ALEN, GFP_KERNEL); ++ if (!prop->value || of_add_property(np, prop)) { ++ *err = -ENOMEM; ++ goto out_err; + } + + return mac; ++ ++out_err: ++ devm_kfree(&pdev->dev, prop->value); ++ devm_kfree(&pdev->dev, prop); ++ devm_kfree(&pdev->dev, mac); ++ return NULL; + } + + static void *of_get_mac_address_mtd(struct device_node *np) |