• J
    bitfield: fix *_encode_bits() · e7d4a95d
    Johannes Berg 提交于
    There's a bug in *_encode_bits() in using ~field_multiplier() for
    the check whether or not the constant value fits into the field,
    this is wrong and clearly ~field_mask() was intended. This was
    triggering for me for both constant and non-constant values.
    
    Additionally, make this case actually into an compile error.
    Declaring the extern function that will never exist with just a
    warning is pointless as then later we'll just get a link error.
    
    While at it, also fix the indentation in those lines I'm touching.
    
    Finally, as suggested by Andy Shevchenko, add some tests and for
    that introduce also u8 helpers. The tests don't compile without
    the fix, showing that it's necessary.
    
    Fixes: 00b0c9b8 ("Add primitives for manipulating bitfields both in host- and fixed-endian.")
    Reviewed-by: NAndy Shevchenko <andy.shevchenko@gmail.com>
    Signed-off-by: NJohannes Berg <johannes@sipsolutions.net>
    Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
    e7d4a95d
bitfield.h 4.7 KB