net: add a helpers for loading netdev->dev_addr from platform
Subsystems (8)
Jakub Kicinski
maintainerv2 cover net: add a helpers for loading netdev->dev_addr from platform
Similarly to recently added device_get_ethdev_address() and of_get_ethdev_address() create a helper for drivers loading mac addr from platform data.
nvmem_get_mac_address() does not have driver callers so instead of adding a helper there unexport it.
Jakub Kicinski (3):
ethernet: un-export nvmem_get_mac_address()
eth: platform: add a helper for loading netdev->dev_addr
ethernet: use platform_get_ethdev_address()
drivers/net/ethernet/actions/owl-emac.c | 2 +- drivers/net/ethernet/mediatek/mtk_star_emac.c | 2 +- drivers/net/usb/smsc75xx.c | 3 +-- drivers/net/usb/smsc95xx.c | 3 +-- include/linux/etherdevice.h | 1 + net/ethernet/eth.c | 21 ++++++++++++++++++- 6 files changed, 25 insertions(+), 7 deletions(-)
Signature · 1 line
2.31.1
Jakub Kicinski
maintainerPATCH v2 1/3 ethernet: un-export nvmem_get_mac_address()
nvmem_get_mac_address() is only called from of_net.c we don't need the export.
--- net/ethernet/eth.c | 1 - 1 file changed, 1 deletion(-)
net/ethernet/eth.c +0 -1
@@ -558,7 +558,6 @@ int nvmem_get_mac_address(struct device *dev, void *addrbuf)return 0 ; } -EXPORT_SYMBOL (nvmem_get_mac_address);static int fwnode_get_mac_addr (struct fwnode_handle *fwnode,const char *name,char *addr)
Signature · 1 line
2.31.1
Jakub Kicinski
maintainerPATCH v2 2/3 eth: platform: add a helper for loading netdev->dev_addr
In reply to Jakub KicinskiCommit 406f42fa0d3c ("net-next: When a bond have a massive amount of VLANs...") introduced a rbtree for faster Ethernet address look up. To maintain netdev->dev_addr in this tree we need to make all the writes to it got through appropriate helpers.
There is a handful of drivers which pass netdev->dev_addr as the destination buffer to eth_platform_get_mac_address(). Add a helper which takes a dev pointer instead, so it can call an appropriate helper.
---
v2: align the temp buffer on the stack
--- include/linux/etherdevice.h | 1 + net/ethernet/eth.c | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+)
include/linux/etherdevice.h +1 -0
@@ -29,6 +29,7 @@ struct device;struct fwnode_handle ;int eth_platform_get_mac_address (struct device *dev,u8 *mac_addr); +int platform_get_ethdev_address (struct device *dev,struct net_device *netdev);unsigned char *arch_get_platform_mac_address (void );int nvmem_get_mac_address (struct device *dev,void *addrbuf);int device_get_mac_address (struct device *dev,char *addr);
net/ethernet/eth.c +20 -0
@@ -523,6 +523,26 @@ int eth_platform_get_mac_address(struct device *dev, u8 *mac_addr) }EXPORT_SYMBOL (eth_platform_get_mac_address); +/** +* platform_get_ethdev_address - Set netdev's MAC address from a given device +* @dev: Pointer to the device +* @netdev: Pointer to netdev to write the address to +* +* Wrapper around eth_platform_get_mac_address() which writes the address +* directly to netdev->dev_addr. +*/ +int platform_get_ethdev_address (struct device *dev,struct net_device *netdev) +{ +u8 addr[ETH_ALEN ]__aligned(2) ; +int ret; + + ret =eth_platform_get_mac_address (dev, addr); +if (!ret) +eth_hw_addr_set (netdev, addr); +return ret; +} +EXPORT_SYMBOL (platform_get_ethdev_address); +/** * nvmem_get_mac_address - Obtain the MAC address from an nvmem cell named * 'mac-address' associated with given device.
Signature · 1 line
2.31.1
Jakub Kicinski
maintainerPATCH v2 3/3 ethernet: use platform_get_ethdev_address()
In reply to Jakub KicinskiUse the new platform_get_ethdev_address() helper for the cases where dev->dev_addr is passed in directly as the destination.
@@
expression dev, net;
@@
- eth_platform_get_mac_address(dev, net->dev_addr)
+ platform_get_ethdev_address(dev, net)
--- drivers/net/ethernet/actions/owl-emac.c | 2 +- drivers/net/ethernet/mediatek/mtk_star_emac.c | 2 +- drivers/net/usb/smsc75xx.c | 3 +-- drivers/net/usb/smsc95xx.c | 3 +-- 4 files changed, 4 insertions(+), 6 deletions(-)
drivers/net/ethernet/actions/owl-emac.c +1 -1
@@ -1385,7 +1385,7 @@ static void owl_emac_get_mac_addr(struct net_device *netdev)struct device *dev = netdev->dev.parent;int ret; - ret =eth_platform_get_mac_address (dev, netdev->dev_addr); + ret =platform_get_ethdev_address (dev, netdev);if (!ret &&is_valid_ether_addr (netdev->dev_addr))return ;
drivers/net/ethernet/mediatek/mtk_star_emac.c +1 -1
@@ -1544,7 +1544,7 @@ static int mtk_star_probe(struct platform_device *pdev)if (ret)return ret; - ret =eth_platform_get_mac_address (dev, ndev->dev_addr); + ret =platform_get_ethdev_address (dev, ndev);if (ret || !is_valid_ether_addr (ndev->dev_addr))eth_hw_addr_random (ndev);
drivers/net/usb/smsc75xx.c +1 -2
@@ -758,8 +758,7 @@ static int smsc75xx_ioctl(struct net_device *netdev, struct ifreq *rq, int cmd)static void smsc75xx_init_mac_address (struct usbnet *dev) {/* maybe the boot loader passed the MAC address in devicetree */ -if (!eth_platform_get_mac_address (&dev->udev->dev, - dev->net->dev_addr)) { +if (!platform_get_ethdev_address (&dev->udev->dev, dev->net)) {if (is_valid_ether_addr (dev->net->dev_addr)) {/* device tree values are valid so use them */ netif_dbg (dev, ifup, dev->net,"MAC address read from the device tree\n" );
drivers/net/usb/smsc95xx.c +1 -2
@@ -756,8 +756,7 @@ static int smsc95xx_ioctl(struct net_device *netdev, struct ifreq *rq, int cmd)static void smsc95xx_init_mac_address (struct usbnet *dev) {/* maybe the boot loader passed the MAC address in devicetree */ -if (!eth_platform_get_mac_address (&dev->udev->dev, - dev->net->dev_addr)) { +if (!platform_get_ethdev_address (&dev->udev->dev, dev->net)) {if (is_valid_ether_addr (dev->net->dev_addr)) {/* device tree values are valid so use them */ netif_dbg (dev, ifup, dev->net,"MAC address read from the device tree\n" );
Signature · 1 line
2.31.1
This series was applied to netdev/net-next.git (master) by David S. Miller <[email protected]>:
Hello:
This series was applied to netdev/net-next.git (master) by David S. Miller <[email protected]>:
Quoted 8 lines · On Thu, 7 Oct 2021 11:18:44 -0700 you wrote:
Similarly to recently added
device_get_ethdev_address()andof_get_ethdev_address()create a helper for drivers loading mac addr from platform data.
nvmem_get_mac_address()does not have driver callers so instead of adding a helper there unexport it.[...]
Here is the summary with links:
- [net-next,v2,1/3] ethernet: un-export nvmem_get_mac_address()
https://git.kernel.org/netdev/net-next/c/da8f606e15c7 - [net-next,v2,2/3] eth: platform: add a helper for loading netdev->dev_addr https://git.kernel.org/netdev/net-next/c/ba882580f211 - [net-next,v2,3/3] ethernet: use platform_get_ethdev_address() https://git.kernel.org/netdev/net-next/c/4d04cdc5ee49
You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html