ar5523: Fix sparse endianness warnings
authorPontus Fuchs <pontus.fuchs@gmail.com>
Mon, 5 Nov 2012 20:17:50 +0000 (21:17 +0100)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 14 Nov 2012 19:55:40 +0000 (14:55 -0500)
__be32 variables where used a little careless leading to sparse warnings.
Treat them a little more gentle.

Reported-by: Fengguang Wu <fengguang.wu@intel.com>
Signed-off-by: Pontus Fuchs <pontus.fuchs@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/ath/ar5523/ar5523.c
drivers/net/wireless/ath/ar5523/ar5523_hw.h

index 402e6d378b2ccc8e7e46716592671a0a17120c15..4bd7714cd66aebe9c1e82667d8776dd28083860b 100644 (file)
@@ -50,18 +50,19 @@ static void ar5523_read_reply(struct ar5523 *ar, struct ar5523_cmd_hdr *hdr,
                              struct ar5523_tx_cmd *cmd)
 {
        int dlen, olen;
-       u32 *rp;
+       __be32 *rp;
 
-       dlen = hdr->len - sizeof(*hdr);
+       dlen = be32_to_cpu(hdr->len) - sizeof(*hdr);
 
        if (dlen < 0) {
                WARN_ON(1);
                goto out;
        }
 
-       ar5523_dbg(ar, "Code = %d len = %d\n", hdr->code & 0xff, dlen);
+       ar5523_dbg(ar, "Code = %d len = %d\n", be32_to_cpu(hdr->code) & 0xff,
+                  dlen);
 
-       rp = (u32 *)(hdr + 1);
+       rp = (__be32 *)(hdr + 1);
        if (dlen >= sizeof(u32)) {
                olen = be32_to_cpu(rp[0]);
                dlen -= sizeof(u32);
@@ -95,6 +96,7 @@ static void ar5523_cmd_rx_cb(struct urb *urb)
        struct ar5523_tx_cmd *cmd = &ar->tx_cmd;
        struct ar5523_cmd_hdr *hdr = ar->rx_cmd_buf;
        int dlen;
+       u32 code, hdrlen;
 
        if (urb->status) {
                if (urb->status != -ESHUTDOWN)
@@ -110,15 +112,15 @@ static void ar5523_cmd_rx_cb(struct urb *urb)
        ar5523_dbg(ar, "%s code %02x priv %d\n", __func__,
                   be32_to_cpu(hdr->code) & 0xff, hdr->priv);
 
-       hdr->code = be32_to_cpu(hdr->code);
-       hdr->len = be32_to_cpu(hdr->len);
+       code = be32_to_cpu(hdr->code);
+       hdrlen = be32_to_cpu(hdr->len);
 
-       switch (hdr->code & 0xff) {
+       switch (code & 0xff) {
        default:
                /* reply to a read command */
                if (hdr->priv != AR5523_CMD_ID) {
                        ar5523_err(ar, "Unexpected command id: %02x\n",
-                                  hdr->code & 0xff);
+                                  code & 0xff);
                        goto skip;
                }
                ar5523_read_reply(ar, hdr, cmd);
@@ -147,7 +149,7 @@ static void ar5523_cmd_rx_cb(struct urb *urb)
        case WDCMSG_TARGET_START:
                /* This command returns a bogus id so it needs special
                   handling */
-               dlen = hdr->len - sizeof(*hdr);
+               dlen = hdrlen - sizeof(*hdr);
                if (dlen != (int)sizeof(u32)) {
                        ar5523_err(ar, "Invalid reply to WDCMSG_TARGET_START");
                        return;
@@ -303,7 +305,7 @@ static int ar5523_config(struct ar5523 *ar, u32 reg, u32 val)
 
        write.reg = cpu_to_be32(reg);
        write.len = cpu_to_be32(0);     /* 0 = single write */
-       *(u32 *)write.data = cpu_to_be32(val);
+       *(__be32 *)write.data = cpu_to_be32(val);
 
        error = ar5523_cmd_write(ar, WDCMSG_TARGET_SET_CONFIG, &write,
                                 3 * sizeof(u32), 0);
@@ -335,29 +337,30 @@ static int ar5523_get_status(struct ar5523 *ar, u32 which, void *odata,
                             int olen)
 {
        int error;
+       __be32 which_be;
 
-       which = cpu_to_be32(which);
+       which_be = cpu_to_be32(which);
        error = ar5523_cmd_read(ar, WDCMSG_TARGET_GET_STATUS,
-           &which, sizeof(which), odata, olen, AR5523_CMD_FLAG_MAGIC);
+           &which_be, sizeof(which_be), odata, olen, AR5523_CMD_FLAG_MAGIC);
        if (error != 0)
-               ar5523_err(ar, "could not read EEPROM offset 0x%02x\n",
-                          be32_to_cpu(which));
+               ar5523_err(ar, "could not read EEPROM offset 0x%02x\n", which);
        return error;
 }
 
 static int ar5523_get_capability(struct ar5523 *ar, u32 cap, u32 *val)
 {
        int error;
+       __be32 cap_be, val_be;
 
-       cap = cpu_to_be32(cap);
-       error = ar5523_cmd_read(ar, WDCMSG_TARGET_GET_CAPABILITY,
-           &cap, sizeof(cap), val, sizeof(u32), AR5523_CMD_FLAG_MAGIC);
+       cap_be = cpu_to_be32(cap);
+       error = ar5523_cmd_read(ar, WDCMSG_TARGET_GET_CAPABILITY, &cap_be,
+                               sizeof(cap_be), &val_be, sizeof(__be32),
+                               AR5523_CMD_FLAG_MAGIC);
        if (error != 0) {
-               ar5523_err(ar, "could not read capability %u\n",
-                          be32_to_cpu(cap));
+               ar5523_err(ar, "could not read capability %u\n", cap);
                return error;
        }
-       *val = be32_to_cpu(*val);
+       *val = be32_to_cpu(val_be);
        return error;
 }
 
index a0e8bf460316289760859939c5e88df7d87dd1db..0fe2c803f48fbc38195e9639a6446755c4e886fe 100644 (file)
@@ -161,7 +161,7 @@ struct ar5523_rx_desc {
 
 struct ar5523_tx_desc {
        __be32  msglen;
-       __be32  msgid;          /* msg id (supplied by host) */
+       u32     msgid;          /* msg id (supplied by host) */
        __be32  type;           /* opcode: WDMSG_SEND or WDCMSG_FLUSH */
        __be32  txqid;          /* tx queue id and flags */
 #define        UATH_TXQID_MASK         0x0f