Hi Tony, 2012/4/28 Tony Cheneau <tony.cheneau+zigbee...@amnesiak.org>: > 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? >
Yeah, you are definitely right. I don't exactly know where did this patch arrive from, looks like I wasn't in Cc. I'm going to create reverted patch. Thanks > 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 ------------------------------------------------------------------------------ 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