Re: [PATCH 5/5] net: add MTD support to eth_platform_get_mac_address()

From: Bartosz Golaszewski
Date: Wed Jul 18 2018 - 12:54:16 EST


2018-07-18 18:47 GMT+02:00 Andrew Lunn <andrew@xxxxxxx>:
> On Wed, Jul 18, 2018 at 06:10:35PM +0200, Bartosz Golaszewski wrote:
>> From: Bartosz Golaszewski <bgolaszewski@xxxxxxxxxxxx>
>>
>> MTD doesn't support nvmem yet. Some platforms use MTD to read the MAC
>> address from SPI flash. If we want this function to generalize reading
>> the MAC address, we need to separately try to use MTD.
>>
>> Signed-off-by: Bartosz Golaszewski <bgolaszewski@xxxxxxxxxxxx>
>> ---
>> net/ethernet/eth.c | 20 ++++++++++++++++++++
>> 1 file changed, 20 insertions(+)
>>
>> diff --git a/net/ethernet/eth.c b/net/ethernet/eth.c
>> index adf5bd03851f..f7dbd2cff7f9 100644
>> --- a/net/ethernet/eth.c
>> +++ b/net/ethernet/eth.c
>> @@ -55,6 +55,7 @@
>> #include <linux/of_net.h>
>> #include <linux/pci.h>
>> #include <linux/nvmem-consumer.h>
>> +#include <linux/mtd/mtd.h>
>> #include <net/dst.h>
>> #include <net/arp.h>
>> #include <net/sock.h>
>> @@ -573,6 +574,25 @@ int eth_platform_get_mac_address(struct device *dev, u8 *mac_addr)
>> }
>> }
>>
>> +#ifdef CONFIG_MTD
>> + /* NOTE: this should go away as soon as MTD gets nvmem support. */
>> + if (!addr) {
>> + struct mtd_info *mtd;
>> + int rv;
>> +
>> + mtd = get_mtd_device_nm("MAC-Address");
>
> In order for this to go away, you need to keep backwards
> compatibility. When using nvmem, you look for a cell called
> "mac-address". Here you are looking for "MAC-Address". That is going
> to make backwards compatibility harder. How do you plan to do it?
>
> Andrew

I'm trying to adjust to already existing users. The only user of
get_mtd_device_nm() who calls it to read the MAC address registers a
partition called "MAC-Address". We can't change it since it's visible
from user space. In the future we'd just have to have a list of
supported string that we'd use to do the nvmem lookup.

Bart