mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-10-31 05:54:26 -04:00 
			
		
		
		
	Fixes situations where MAC address gets incremented multiple times
if device initialization fails at first and then is deferred.
Fixes: d284e6ef0f ("treewide: convert mtd-mac-address-increment* to generic implementation")
Signed-off-by: Will Moss <willormos@gmail.com>
		
	
			
		
			
				
	
	
		
			32 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			32 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From dd07dd394d8bfdb5d527fab18ca54f20815ec4e4 Mon Sep 17 00:00:00 2001
 | |
| From: Will Moss <willormos@gmail.com>
 | |
| Date: Wed, 3 Aug 2022 13:48:55 +0000
 | |
| Subject: [PATCH] of_net: do mac-address-increment only once
 | |
| 
 | |
| Remove mac-address-increment and mac-address-increment-byte
 | |
| DT property after incrementing process to make sure MAC address
 | |
| would not get incremented more if this function is stared again.
 | |
| It could happen if device initialization is deferred after
 | |
| unsuccessful attempt.
 | |
| 
 | |
| Signed-off-by: Will Moss <willormos@gmail.com>
 | |
| ---
 | |
|  drivers/of/of_net.c | 6 ++++++
 | |
|  1 file changed, 6 insertions(+)
 | |
| 
 | |
| --- a/drivers/of/of_net.c
 | |
| +++ b/drivers/of/of_net.c
 | |
| @@ -190,6 +190,12 @@ found:
 | |
|  		addr[3] = (mac_val >> 16) & 0xff;
 | |
|  		addr[4] = (mac_val >> 8) & 0xff;
 | |
|  		addr[5] = (mac_val >> 0) & 0xff;
 | |
| +
 | |
| +		/* Remove mac-address-increment and mac-address-increment-byte
 | |
| +		 * DT property to make sure MAC address would not get incremented
 | |
| +		 * more if this function is stared again. */
 | |
| +		of_remove_property(np, of_find_property(np, "mac-address-increment", NULL));
 | |
| +		of_remove_property(np, of_find_property(np, "mac-address-increment-byte", NULL));
 | |
|  	}
 | |
|  
 | |
|  	of_add_mac_address(np, addr);
 |