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

Reply via email to