This patch changes the byteorder handling for short and panid handling.
We now except to get little endian in nl802154 for these attributes.
Signed-off-by: Alexander Aring <alex.aring@gmail.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
                                    struct wpan_dev *wpan_dev);
        int     (*set_channel)(struct wpan_phy *wpan_phy, u8 page, u8 channel);
        int     (*set_pan_id)(struct wpan_phy *wpan_phy,
-                             struct wpan_dev *wpan_dev, u16 pan_id);
+                             struct wpan_dev *wpan_dev, __le16 pan_id);
        int     (*set_short_addr)(struct wpan_phy *wpan_phy,
-                                 struct wpan_dev *wpan_dev, u16 short_addr);
+                                 struct wpan_dev *wpan_dev, __le16 short_addr);
        int     (*set_backoff_exponent)(struct wpan_phy *wpan_phy,
                                        struct wpan_dev *wpan_dev, u8 min_be,
                                        u8 max_be);
 
        struct cfg802154_registered_device *rdev = info->user_ptr[0];
        struct net_device *dev = info->user_ptr[1];
        struct wpan_dev *wpan_dev = dev->ieee802154_ptr;
-       u16 pan_id;
+       __le16 pan_id;
 
        /* conflict here while tx/rx calls */
        if (netif_running(dev))
        if (!info->attrs[NL802154_ATTR_PAN_ID])
                return -EINVAL;
 
-       pan_id = nla_get_u16(info->attrs[NL802154_ATTR_PAN_ID]);
+       pan_id = nla_get_le16(info->attrs[NL802154_ATTR_PAN_ID]);
 
        return rdev_set_pan_id(rdev, wpan_dev, pan_id);
 }
        struct cfg802154_registered_device *rdev = info->user_ptr[0];
        struct net_device *dev = info->user_ptr[1];
        struct wpan_dev *wpan_dev = dev->ieee802154_ptr;
-       u16 short_addr;
+       __le16 short_addr;
 
        /* conflict here while tx/rx calls */
        if (netif_running(dev))
        if (!info->attrs[NL802154_ATTR_SHORT_ADDR])
                return -EINVAL;
 
-       short_addr = nla_get_u16(info->attrs[NL802154_ATTR_SHORT_ADDR]);
+       short_addr = nla_get_le16(info->attrs[NL802154_ATTR_SHORT_ADDR]);
 
        return rdev_set_short_addr(rdev, wpan_dev, short_addr);
 }
 
 
 static inline int
 rdev_set_pan_id(struct cfg802154_registered_device *rdev,
-               struct wpan_dev *wpan_dev, u16 pan_id)
+               struct wpan_dev *wpan_dev, __le16 pan_id)
 {
        return rdev->ops->set_pan_id(&rdev->wpan_phy, wpan_dev, pan_id);
 }
 
 static inline int
 rdev_set_short_addr(struct cfg802154_registered_device *rdev,
-                   struct wpan_dev *wpan_dev, u16 short_addr)
+                   struct wpan_dev *wpan_dev, __le16 short_addr)
 {
        return rdev->ops->set_short_addr(&rdev->wpan_phy, wpan_dev, short_addr);
 }
 
 
 static int
 ieee802154_set_pan_id(struct wpan_phy *wpan_phy, struct wpan_dev *wpan_dev,
-                     u16 pan_id)
+                     __le16 pan_id)
 {
        ASSERT_RTNL();
 
         *
         * This could useful to simple deassociate an device.
         */
-       if (pan_id == IEEE802154_PAN_ID_BROADCAST)
+       if (pan_id == cpu_to_le16(IEEE802154_PAN_ID_BROADCAST))
                return -EINVAL;
 
-       wpan_dev->pan_id = cpu_to_le16(pan_id);
+       wpan_dev->pan_id = pan_id;
        return 0;
 }
 
 
 static int
 ieee802154_set_short_addr(struct wpan_phy *wpan_phy, struct wpan_dev *wpan_dev,
-                         u16 short_addr)
+                         __le16 short_addr)
 {
        ASSERT_RTNL();
 
         * I think we should allow to set these settings but
         * don't allow to allow socket communication with it.
         */
-       if (short_addr == IEEE802154_ADDR_SHORT_UNSPEC ||
-           short_addr == IEEE802154_ADDR_SHORT_BROADCAST)
+       if (short_addr == cpu_to_le16(IEEE802154_ADDR_SHORT_UNSPEC) ||
+           short_addr == cpu_to_le16(IEEE802154_ADDR_SHORT_BROADCAST))
                return -EINVAL;
 
-       wpan_dev->short_addr = cpu_to_le16(short_addr);
+       wpan_dev->short_addr = short_addr;
        return 0;
 }