Hello,

I believe the following patch should not have been applied and should 
now be reverted.
The reason is because eth_mac_addr() is not functionally equivalent to 
lowpan_set_address() that it replaces:
- lowpan_set_address() copies dev->addr_len bytes, where dev->addr_len 
is set to 8 bytes for IEEE802154 devices (this is an IEEE EUI-64 
address). Hence, the function copies the full 8 bytes of the address.
- eth_mac_addr() copies ETH_ALEN bytes, where ETH_ALEN is set to 6. 
Hence, the function copies only 6 bytes of the 8 bytes address. So, 2 
bytes of the address are never copied.

Does this sound reasonable?

Regards,
Tony


Le 22.02.2012 14:36, Danny Kukawka a écrit :
> Use eth_mac_addr() for .ndo_set_mac_address, remove
> lowpan_set_address since it do currently the same as
> eth_mac_addr(). Additional advantage: eth_mac_addr() already
> checks if the given address is valid
>
> Signed-off-by: Danny Kukawka <danny.kuka...@bisect.de>
> ---
>  net/ieee802154/6lowpan.c |   16 ++--------------
>  1 files changed, 2 insertions(+), 14 deletions(-)
>
> diff --git a/net/ieee802154/6lowpan.c b/net/ieee802154/6lowpan.c
> index e4ecc1e..3685158 100644
> --- a/net/ieee802154/6lowpan.c
> +++ b/net/ieee802154/6lowpan.c
> @@ -55,6 +55,7 @@
>  #include <linux/module.h>
>  #include <linux/moduleparam.h>
>  #include <linux/netdevice.h>
> +#include <linux/etherdevice.h>
>  #include <net/af_ieee802154.h>
>  #include <net/ieee802154.h>
>  #include <net/ieee802154_netdev.h>
> @@ -924,19 +925,6 @@ drop:
>       return -EINVAL;
>  }
>
> -static int lowpan_set_address(struct net_device *dev, void *p)
> -{
> -     struct sockaddr *sa = p;
> -
> -     if (netif_running(dev))
> -             return -EBUSY;
> -
> -     /* TODO: validate addr */
> -     memcpy(dev->dev_addr, sa->sa_data, dev->addr_len);
> -
> -     return 0;
> -}
> -
>  static int lowpan_get_mac_header_length(struct sk_buff *skb)
>  {
>       /*
> @@ -1062,7 +1050,7 @@ static struct header_ops lowpan_header_ops = {
>
>  static const struct net_device_ops lowpan_netdev_ops = {
>       .ndo_start_xmit         = lowpan_xmit,
> -     .ndo_set_mac_address    = lowpan_set_address,
> +     .ndo_set_mac_address    = eth_mac_addr,
>  };
>
>  static void lowpan_setup(struct net_device *dev)


------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Linux-zigbee-devel mailing list
Linux-zigbee-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-zigbee-devel

Reply via email to