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@xxxxxxxxxx> diff --git a/drivers/staging/rtl8192e/rtl8192e/r8192E_dev.c b/drivers/staging/rtl8192e/rtl8192e/r8192E_dev.c index a9d78e9..50c7bb7 100644 --- a/drivers/staging/rtl8192e/rtl8192e/r8192E_dev.c +++ b/drivers/staging/rtl8192e/rtl8192e/r8192E_dev.c @@ -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; _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/devel