[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <87bkm1x47n.fsf@kernel.org>
Date: Fri, 10 Feb 2023 11:25:00 +0200
From: Kalle Valo <kvalo@...nel.org>
To: Heiko Thiery <heiko.thiery@...il.com>
Cc: Michael Walle <michael@...le.cc>, Jakub Kicinski <kuba@...nel.org>,
Ajay.Kathat@...rochip.com, Claudiu.Beznea@...rochip.com,
linux-wireless@...r.kernel.org, netdev@...r.kernel.org,
Amisha.Patel@...rochip.com, Thomas Haller <thaller@...hat.com>,
Beniamino Galvani <bgalvani@...hat.com>
Subject: Re: wilc1000 MAC address is 00:00:00:00:00:00
Heiko Thiery <heiko.thiery@...il.com> writes:
> HI,
>
> Am Do., 9. Feb. 2023 um 22:19 Uhr schrieb Michael Walle <michael@...le.cc>:
>>
>> Am 2023-02-09 22:07, schrieb Jakub Kicinski:
>> > On Thu, 9 Feb 2023 18:51:58 +0000 Ajay.Kathat@...rochip.com wrote:
>> >> > netdev should be created with a valid lladdr, is there something
>> >> > wifi-specific here that'd prevalent that? The canonical flow is
>> >> > to this before registering the netdev:
>> >>
>> >> Here it's the timing in wilc1000 by when the MAC address is available
>> >> to
>> >> read from NV. NV read is available in "mac_open" net_device_ops
>> >> instead
>> >> of bus probe function. I think, mostly the operations on netdev which
>> >> make use of mac address are performed after the "mac_open" (I may be
>> >> missing something).
>> >>
>> >> Does it make sense to assign a random address in probe and later read
>> >> back from NV in mac_open to make use of stored value?
>> >
>> > Hard to say, I'd suspect that may be even more confusing than
>> > starting with zeroes. There aren't any hard rules around the
>> > addresses AFAIK, but addrs are visible to user space. So user
>> > space will likely make assumptions based on the most commonly
>> > observed sequence (reading real addr at probe).
>>
>> Maybe we should also ask the NetworkManager guys. IMHO random
>> MAC address sounds bogus.
>
> Maybe it would be a "workaround" with loading the firmware while
> probing the device to set the real hw address.
>
> probe()
> load_fw()
> read_hw_addr_from_nv()
> eth_hw_addr_set(ndev, addr)
> unload_fw()
>
> mac_open()
> load_fw()
>
> mac_close()
> unload_fw()
This is exactly what many wireless drivers already do and I recommend
that wilc1000 would do the same.
--
https://patchwork.kernel.org/project/linux-wireless/list/
https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
Powered by blists - more mailing lists