mac80211: fix the sparse warnings on endian handling in RANN propagation
authorChun-Yeow Yeoh <yeohchunyeow@gmail.com>
Mon, 19 Mar 2012 13:38:46 +0000 (21:38 +0800)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 9 Apr 2012 20:12:30 +0000 (16:12 -0400)
The HWMP sequence number of received RANN element is compared to decide whether to be
propagated. The sequence number is required to covert from 32bit little endian data into
CPUs endianness for comparison. The same applies to the RANN metric.

Signed-off-by: Chun-Yeow Yeoh <yeohchunyeow@gmail.com>
Signed-off-by: Javier Cardona <javier@cozybit.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
include/linux/ieee80211.h
net/mac80211/mesh_hwmp.c

index a8c1c46431ab219197b1ed536e2389955df6ec7c..09301b0768d080065bfe496a80007e212ab283d0 100644 (file)
@@ -640,9 +640,9 @@ struct ieee80211_rann_ie {
        u8 rann_hopcount;
        u8 rann_ttl;
        u8 rann_addr[6];
-       u32 rann_seq;
-       u32 rann_interval;
-       u32 rann_metric;
+       __le32 rann_seq;
+       __le32 rann_interval;
+       __le32 rann_metric;
 } __attribute__ ((packed));
 
 enum ieee80211_rann_flags {
index 1c6f3d02aebf5a4f19630f604aae94cda6810247..f80a9e3da359140e70dba522a1cda9932ace0381 100644 (file)
@@ -748,10 +748,10 @@ static void hwmp_rann_frame_process(struct ieee80211_sub_if_data *sdata,
        flags = rann->rann_flags;
        root_is_gate = !!(flags & RANN_FLAG_IS_GATE);
        orig_addr = rann->rann_addr;
-       orig_sn = rann->rann_seq;
+       orig_sn = le32_to_cpu(rann->rann_seq);
        hopcount = rann->rann_hopcount;
        hopcount++;
-       metric = rann->rann_metric;
+       metric = le32_to_cpu(rann->rann_metric);
 
        /*  Ignore our own RANNs */
        if (compare_ether_addr(orig_addr, sdata->vif.addr) == 0)