On Thu, Aug 25, 2016 at 10:19:22AM +0200, Mathias Kresin wrote:
> The EEPROM used on some CPEs has for every device the same generic
> ralink mac in EEPROM and needs to be overridden.
I don't know what is CPE, but even if I would know that, I most likely
sill will not understand that description.
> +++ b/drivers/net/wireless/ralink/rt2x00/rt2400pci.c
> @@ -1459,10 +1459,7 @@ static int rt2400pci_validate_eeprom(struct rt2x00_dev
> *rt2x00dev)
> * Start validation of the data that has been read.
> */
> mac = rt2x00_eeprom_addr(rt2x00dev, EEPROM_MAC_ADDR_0);
> - if (!is_valid_ether_addr(mac)) {
> - eth_random_addr(mac);
> - rt2x00_eeprom_dbg(rt2x00dev, "MAC: %pM\n", mac);
> - }
> + rt2x00lib_set_mac_address(rt2x00dev, mac);
<snip>
> +#include <linux/of.h>
> +#include <linux/of_net.h>
>
> #include "rt2x00.h"
> #include "rt2x00lib.h"
> @@ -931,6 +933,21 @@ static void rt2x00lib_rate(struct ieee80211_rate *entry,
> entry->flags |= IEEE80211_RATE_SHORT_PREAMBLE;
> }
>
> +void rt2x00lib_set_mac_address(struct rt2x00_dev *rt2x00dev, u8
> *eeprom_mac_addr)
> +{
> + const char *mac_addr;
> +
> + mac_addr = of_get_mac_address(rt2x00dev->dev->of_node);
Shouldn't use dev_of_node(&rt2x00dev->dev) and check against NULL ?
> + if (mac_addr)
> + ether_addr_copy(eeprom_mac_addr, mac_addr);
Why we do not read MAC from EEPROM if fail to get it from of_node?
Thanks
Stanislaw