ieee802154: enforce consistent endianness in the 802.15.4 stack
Enable sparse warnings about endianness, replace the remaining fields regarding network operations without explicit endianness annotations with such that are annotated, and propagate this through the entire stack. Uses of ieee802154_addr_sa are not changed yet, this patch is only concerned with all other fields (such as address filters, operation parameters and the likes). Signed-off-by: Phoebe Buckheister <phoebe.buckheister@itwm.fraunhofer.de> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
46ef0eb3ea
commit
b70ab2e87f
@@ -120,11 +120,11 @@ static int lowpan_header_create(struct sk_buff *skb,
|
||||
|
||||
/* prepare wpan address data */
|
||||
sa.addr_type = IEEE802154_ADDR_LONG;
|
||||
sa.pan_id = ieee802154_mlme_ops(dev)->get_pan_id(dev);
|
||||
sa.pan_id = le16_to_cpu(ieee802154_mlme_ops(dev)->get_pan_id(dev));
|
||||
|
||||
memcpy(&(sa.hwaddr), saddr, 8);
|
||||
/* intra-PAN communications */
|
||||
da.pan_id = ieee802154_mlme_ops(dev)->get_pan_id(dev);
|
||||
da.pan_id = sa.pan_id;
|
||||
|
||||
/* if the destination address is the broadcast address, use the
|
||||
* corresponding short address
|
||||
@@ -352,13 +352,13 @@ static struct wpan_phy *lowpan_get_phy(const struct net_device *dev)
|
||||
return ieee802154_mlme_ops(real_dev)->get_phy(real_dev);
|
||||
}
|
||||
|
||||
static u16 lowpan_get_pan_id(const struct net_device *dev)
|
||||
static __le16 lowpan_get_pan_id(const struct net_device *dev)
|
||||
{
|
||||
struct net_device *real_dev = lowpan_dev_info(dev)->real_dev;
|
||||
return ieee802154_mlme_ops(real_dev)->get_pan_id(real_dev);
|
||||
}
|
||||
|
||||
static u16 lowpan_get_short_addr(const struct net_device *dev)
|
||||
static __le16 lowpan_get_short_addr(const struct net_device *dev)
|
||||
{
|
||||
struct net_device *real_dev = lowpan_dev_info(dev)->real_dev;
|
||||
return ieee802154_mlme_ops(real_dev)->get_short_addr(real_dev);
|
||||
|
||||
@@ -5,3 +5,5 @@ obj-$(CONFIG_6LOWPAN_IPHC) += 6lowpan_iphc.o
|
||||
6lowpan-y := 6lowpan_rtnl.o reassembly.o
|
||||
ieee802154-y := netlink.o nl-mac.o nl-phy.o nl_policy.o wpan-class.o
|
||||
af_802154-y := af_ieee802154.o raw.o dgram.o
|
||||
|
||||
ccflags-y += -D__CHECK_ENDIAN__
|
||||
|
||||
@@ -48,7 +48,7 @@ struct net_device *ieee802154_get_dev(struct net *net,
|
||||
{
|
||||
struct net_device *dev = NULL;
|
||||
struct net_device *tmp;
|
||||
u16 pan_id, short_addr;
|
||||
__le16 pan_id, short_addr;
|
||||
|
||||
switch (addr->addr_type) {
|
||||
case IEEE802154_ADDR_LONG:
|
||||
@@ -59,9 +59,9 @@ struct net_device *ieee802154_get_dev(struct net *net,
|
||||
rcu_read_unlock();
|
||||
break;
|
||||
case IEEE802154_ADDR_SHORT:
|
||||
if (addr->pan_id == 0xffff ||
|
||||
if (addr->pan_id == IEEE802154_PANID_BROADCAST ||
|
||||
addr->short_addr == IEEE802154_ADDR_UNDEF ||
|
||||
addr->short_addr == 0xffff)
|
||||
addr->short_addr == IEEE802154_ADDR_UNDEF)
|
||||
break;
|
||||
|
||||
rtnl_lock();
|
||||
@@ -74,8 +74,8 @@ struct net_device *ieee802154_get_dev(struct net *net,
|
||||
short_addr =
|
||||
ieee802154_mlme_ops(tmp)->get_short_addr(tmp);
|
||||
|
||||
if (pan_id == addr->pan_id &&
|
||||
short_addr == addr->short_addr) {
|
||||
if (le16_to_cpu(pan_id) == addr->pan_id &&
|
||||
le16_to_cpu(short_addr) == addr->short_addr) {
|
||||
dev = tmp;
|
||||
dev_hold(dev);
|
||||
break;
|
||||
|
||||
@@ -363,8 +363,8 @@ int ieee802154_dgram_deliver(struct net_device *dev, struct sk_buff *skb)
|
||||
/* Data frame processing */
|
||||
BUG_ON(dev->type != ARPHRD_IEEE802154);
|
||||
|
||||
pan_id = ieee802154_mlme_ops(dev)->get_pan_id(dev);
|
||||
short_addr = ieee802154_mlme_ops(dev)->get_short_addr(dev);
|
||||
pan_id = le16_to_cpu(ieee802154_mlme_ops(dev)->get_pan_id(dev));
|
||||
short_addr = le16_to_cpu(ieee802154_mlme_ops(dev)->get_short_addr(dev));
|
||||
|
||||
read_lock(&dgram_lock);
|
||||
sk_for_each(sk, &dgram_head) {
|
||||
|
||||
+18
-14
@@ -72,7 +72,7 @@ nla_put_failure:
|
||||
}
|
||||
EXPORT_SYMBOL(ieee802154_nl_assoc_indic);
|
||||
|
||||
int ieee802154_nl_assoc_confirm(struct net_device *dev, u16 short_addr,
|
||||
int ieee802154_nl_assoc_confirm(struct net_device *dev, __le16 short_addr,
|
||||
u8 status)
|
||||
{
|
||||
struct sk_buff *msg;
|
||||
@@ -87,7 +87,8 @@ int ieee802154_nl_assoc_confirm(struct net_device *dev, u16 short_addr,
|
||||
nla_put_u32(msg, IEEE802154_ATTR_DEV_INDEX, dev->ifindex) ||
|
||||
nla_put(msg, IEEE802154_ATTR_HW_ADDR, IEEE802154_ADDR_LEN,
|
||||
dev->dev_addr) ||
|
||||
nla_put_u16(msg, IEEE802154_ATTR_SHORT_ADDR, short_addr) ||
|
||||
nla_put_u16(msg, IEEE802154_ATTR_SHORT_ADDR,
|
||||
le16_to_cpu(short_addr)) ||
|
||||
nla_put_u8(msg, IEEE802154_ATTR_STATUS, status))
|
||||
goto nla_put_failure;
|
||||
return ieee802154_nl_mcast(msg, IEEE802154_COORD_MCGRP);
|
||||
@@ -157,8 +158,8 @@ nla_put_failure:
|
||||
}
|
||||
EXPORT_SYMBOL(ieee802154_nl_disassoc_confirm);
|
||||
|
||||
int ieee802154_nl_beacon_indic(struct net_device *dev,
|
||||
u16 panid, u16 coord_addr)
|
||||
int ieee802154_nl_beacon_indic(struct net_device *dev, __le16 panid,
|
||||
__le16 coord_addr)
|
||||
{
|
||||
struct sk_buff *msg;
|
||||
|
||||
@@ -172,8 +173,10 @@ int ieee802154_nl_beacon_indic(struct net_device *dev,
|
||||
nla_put_u32(msg, IEEE802154_ATTR_DEV_INDEX, dev->ifindex) ||
|
||||
nla_put(msg, IEEE802154_ATTR_HW_ADDR, IEEE802154_ADDR_LEN,
|
||||
dev->dev_addr) ||
|
||||
nla_put_u16(msg, IEEE802154_ATTR_COORD_SHORT_ADDR, coord_addr) ||
|
||||
nla_put_u16(msg, IEEE802154_ATTR_COORD_PAN_ID, panid))
|
||||
nla_put_u16(msg, IEEE802154_ATTR_COORD_SHORT_ADDR,
|
||||
le16_to_cpu(coord_addr)) ||
|
||||
nla_put_u16(msg, IEEE802154_ATTR_COORD_PAN_ID,
|
||||
le16_to_cpu(panid)))
|
||||
goto nla_put_failure;
|
||||
return ieee802154_nl_mcast(msg, IEEE802154_COORD_MCGRP);
|
||||
|
||||
@@ -243,6 +246,7 @@ static int ieee802154_nl_fill_iface(struct sk_buff *msg, u32 portid,
|
||||
{
|
||||
void *hdr;
|
||||
struct wpan_phy *phy;
|
||||
u16 short_addr, pan_id;
|
||||
|
||||
pr_debug("%s\n", __func__);
|
||||
|
||||
@@ -254,15 +258,16 @@ static int ieee802154_nl_fill_iface(struct sk_buff *msg, u32 portid,
|
||||
phy = ieee802154_mlme_ops(dev)->get_phy(dev);
|
||||
BUG_ON(!phy);
|
||||
|
||||
short_addr = le16_to_cpu(ieee802154_mlme_ops(dev)->get_short_addr(dev));
|
||||
pan_id = le16_to_cpu(ieee802154_mlme_ops(dev)->get_pan_id(dev));
|
||||
|
||||
if (nla_put_string(msg, IEEE802154_ATTR_DEV_NAME, dev->name) ||
|
||||
nla_put_string(msg, IEEE802154_ATTR_PHY_NAME, wpan_phy_name(phy)) ||
|
||||
nla_put_u32(msg, IEEE802154_ATTR_DEV_INDEX, dev->ifindex) ||
|
||||
nla_put(msg, IEEE802154_ATTR_HW_ADDR, IEEE802154_ADDR_LEN,
|
||||
dev->dev_addr) ||
|
||||
nla_put_u16(msg, IEEE802154_ATTR_SHORT_ADDR,
|
||||
ieee802154_mlme_ops(dev)->get_short_addr(dev)) ||
|
||||
nla_put_u16(msg, IEEE802154_ATTR_PAN_ID,
|
||||
ieee802154_mlme_ops(dev)->get_pan_id(dev)))
|
||||
nla_put_u16(msg, IEEE802154_ATTR_SHORT_ADDR, short_addr) ||
|
||||
nla_put_u16(msg, IEEE802154_ATTR_PAN_ID, pan_id))
|
||||
goto nla_put_failure;
|
||||
wpan_phy_put(phy);
|
||||
return genlmsg_end(msg, hdr);
|
||||
@@ -368,11 +373,10 @@ int ieee802154_associate_resp(struct sk_buff *skb, struct genl_info *info)
|
||||
addr.addr_type = IEEE802154_ADDR_LONG;
|
||||
nla_memcpy(addr.hwaddr, info->attrs[IEEE802154_ATTR_DEST_HW_ADDR],
|
||||
IEEE802154_ADDR_LEN);
|
||||
addr.pan_id = ieee802154_mlme_ops(dev)->get_pan_id(dev);
|
||||
|
||||
addr.pan_id = le16_to_cpu(ieee802154_mlme_ops(dev)->get_pan_id(dev));
|
||||
|
||||
ret = ieee802154_mlme_ops(dev)->assoc_resp(dev, &addr,
|
||||
nla_get_u16(info->attrs[IEEE802154_ATTR_DEST_SHORT_ADDR]),
|
||||
cpu_to_le16(nla_get_u16(info->attrs[IEEE802154_ATTR_DEST_SHORT_ADDR])),
|
||||
nla_get_u8(info->attrs[IEEE802154_ATTR_STATUS]));
|
||||
|
||||
out:
|
||||
@@ -407,7 +411,7 @@ int ieee802154_disassociate_req(struct sk_buff *skb, struct genl_info *info)
|
||||
addr.short_addr = nla_get_u16(
|
||||
info->attrs[IEEE802154_ATTR_DEST_SHORT_ADDR]);
|
||||
}
|
||||
addr.pan_id = ieee802154_mlme_ops(dev)->get_pan_id(dev);
|
||||
addr.pan_id = le16_to_cpu(ieee802154_mlme_ops(dev)->get_pan_id(dev));
|
||||
|
||||
ret = ieee802154_mlme_ops(dev)->disassoc_req(dev, &addr,
|
||||
nla_get_u8(info->attrs[IEEE802154_ATTR_REASON]));
|
||||
|
||||
Reference in New Issue
Block a user