]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
libertas: more endianness breakage
authorAl Viro <viro@ftp.linux.org.uk>
Wed, 10 Oct 2007 02:46:37 +0000 (22:46 -0400)
committerGreg Kroah-Hartman <gregkh@suse.de>
Fri, 16 Nov 2007 17:25:34 +0000 (09:25 -0800)
based on patch 8362cd413e8116306fafbaf414f0419db0595142 in mainline.

domain->header.len is le16 and has just been assigned
cpu_to_le16(arithmetical expression).  And all fields of adapter->logmsg
are __le32; not a single 16-bit among them...
That's incremental to the previous one

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/net/wireless/libertas/11d.c
drivers/net/wireless/libertas/wext.c

index 4cf0ff7b833d6e77d6c99e5ba36c066f1b61b037..056027004a6d2190c4c2ddc80254b22299ebff97 100644 (file)
@@ -562,7 +562,7 @@ int libertas_cmd_802_11d_domain_info(wlan_private * priv,
                       nr_subband * sizeof(struct ieeetypes_subbandset));
 
                cmd->size = cpu_to_le16(sizeof(pdomaininfo->action) +
-                                            domain->header.len +
+                                            le16_to_cpu(domain->header.len) +
                                             sizeof(struct mrvlietypesheader) +
                                             S_DS_GEN);
        } else {
index 2fcc3bf210817623a8e96dc3a526df968dfa69e7..873c405d77b05982260bb9cadd4d4f162b318d63 100644 (file)
@@ -973,7 +973,7 @@ static struct iw_statistics *wlan_get_wireless_stats(struct net_device *dev)
        /* Quality by TX errors */
        priv->wstats.discard.retries = priv->stats.tx_errors;
 
-       tx_retries = le16_to_cpu(adapter->logmsg.retry);
+       tx_retries = le32_to_cpu(adapter->logmsg.retry);
 
        if (tx_retries > 75)
                tx_qual = (90 - tx_retries) * POOR / 15;
@@ -989,10 +989,10 @@ static struct iw_statistics *wlan_get_wireless_stats(struct net_device *dev)
                    (PERFECT - VERY_GOOD) / 50 + VERY_GOOD;
        quality = min(quality, tx_qual);
 
-       priv->wstats.discard.code = le16_to_cpu(adapter->logmsg.wepundecryptable);
-       priv->wstats.discard.fragment = le16_to_cpu(adapter->logmsg.rxfrag);
+       priv->wstats.discard.code = le32_to_cpu(adapter->logmsg.wepundecryptable);
+       priv->wstats.discard.fragment = le32_to_cpu(adapter->logmsg.rxfrag);
        priv->wstats.discard.retries = tx_retries;
-       priv->wstats.discard.misc = le16_to_cpu(adapter->logmsg.ackfailure);
+       priv->wstats.discard.misc = le32_to_cpu(adapter->logmsg.ackfailure);
 
        /* Calculate quality */
        priv->wstats.qual.qual = max(quality, (u32)100);