> > Index: wireless-testing-new/drivers/net/wireless/rtlwifi/rtl8192ce/hw.c > > =================================================================== > > --- wireless-testing-new.orig/drivers/net/wireless/rtlwifi/rtl8192ce/hw.c > > +++ wireless-testing-new/drivers/net/wireless/rtlwifi/rtl8192ce/hw.c > > @@ -1964,8 +1965,9 @@ static void rtl92ce_update_hal_rate_mask > > > > RT_TRACE(rtlpriv, COMP_RATR, DBG_DMESG, > > "ratr_bitmap :%x\n", ratr_bitmap); > > - *(u32 *)&rate_mask = (ratr_bitmap & 0x0fffffff) | > > - (ratr_index << 28); > > + for (i = 0; i < 3; i++) > > + rate_mask[i] = ratr_bitmap & (0xff << (i * 4)); > > rate_mask is u8, doesn't this needs (calc) >> (i * 8) > > > + rate_mask[3] = (ratr_bitmap & 0x0f000000) | (ratr_index << 28); > > Perhaps you meant: > > ((ratr_bitmap & 0x0f000000) >> 24) | (ratr_index << 4) I'd just do: rate_mask[0] = ratr_bitmap; rate_mask[1] = ratr_bitmap >>= 8; rate_mask[2] = ratr_bitmap >>= 8; rate_mask[3] = (ratr_bitmap >> 8) & 0xf | ratr_index << 4; which is, of course, little endian. Which means it is different from the original code on big-endian systems. So changing this here ought to require a change when the data is read. So this either fixes, or adds, an endianness bug. David -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html