Staging: rtl8192e: fix an endian bug
authorDan Carpenter <dan.carpenter@oracle.com>
Wed, 29 May 2013 08:12:18 +0000 (11:12 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 30 May 2013 11:46:29 +0000 (20:46 +0900)
Passing the high bits of "ratr_value" to rtl8192_config_rate() only
works on little endian systems.  We should be passing a u16 value.

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/rtl8192e/rtl8192e/r8192E_dev.c

index a9d78e9651c6006a981c7e26c920f71cd57692d2..50c7bb773984e0f0ee0c5e70180df412acc01e8d 100644 (file)
@@ -2128,10 +2128,11 @@ void rtl8192_update_ratr_table(struct net_device *dev)
        struct rtllib_device *ieee = priv->rtllib;
        u8 *pMcsRate = ieee->dot11HTOperationalRateSet;
        u32 ratr_value = 0;
+       u16 rate_config = 0;
        u8 rate_index = 0;
 
-       rtl8192_config_rate(dev, (u16 *)(&ratr_value));
-       ratr_value |= (*(u16 *)(pMcsRate)) << 12;
+       rtl8192_config_rate(dev, &rate_config);
+       ratr_value = rate_config | *pMcsRate << 12;
        switch (ieee->mode) {
        case IEEE_A:
                ratr_value &= 0x00000FF0;