Lines Matching refs:nbits
128 static void ethnl_bitmap32_update(u32 *dst, unsigned int nbits, in ethnl_bitmap32_update() argument
131 while (nbits > 0) { in ethnl_bitmap32_update()
135 if (nbits < 32) in ethnl_bitmap32_update()
136 real_mask &= ethnl_lower_bits(nbits); in ethnl_bitmap32_update()
143 if (nbits <= 32) in ethnl_bitmap32_update()
146 nbits -= 32; in ethnl_bitmap32_update()
171 int ethnl_bitset32_size(const u32 *val, const u32 *mask, unsigned int nbits, in ethnl_bitset32_size() argument
183 unsigned int nwords = DIV_ROUND_UP(nbits, 32); in ethnl_bitset32_size()
191 for (i = 0; i < nbits; i++) { in ethnl_bitset32_size()
233 const u32 *mask, unsigned int nbits, in ethnl_put_bitset32() argument
245 if (nla_put_u32(skb, ETHTOOL_A_BITSET_SIZE, nbits)) in ethnl_put_bitset32()
248 unsigned int nwords = DIV_ROUND_UP(nbits, 32); in ethnl_put_bitset32()
257 if (nbits % 32) in ethnl_put_bitset32()
258 dst[nwords - 1] &= ethnl_lower_bits(nbits); in ethnl_put_bitset32()
266 if (nbits % 32) in ethnl_put_bitset32()
267 dst[nwords - 1] &= ethnl_lower_bits(nbits); in ethnl_put_bitset32()
276 for (i = 0; i < nbits; i++) { in ethnl_put_bitset32()
377 static int ethnl_parse_bit(unsigned int *index, bool *val, unsigned int nbits, in ethnl_parse_bit() argument
394 if (idx >= nbits) { in ethnl_parse_bit()
409 idx = ethnl_name_to_idx(names, nbits, in ethnl_parse_bit()
437 unsigned int nbits) in ethnl_bitmap32_equal() argument
439 if (memcmp(map1, map2, nbits / 32 * sizeof(u32))) in ethnl_bitmap32_equal()
441 if (nbits % 32 == 0) in ethnl_bitmap32_equal()
443 return !((map1[nbits / 32] ^ map2[nbits / 32]) & in ethnl_bitmap32_equal()
444 ethnl_lower_bits(nbits % 32)); in ethnl_bitmap32_equal()
448 ethnl_update_bitset32_verbose(u32 *bitmap, unsigned int nbits, in ethnl_update_bitset32_verbose() argument
472 unsigned int nwords = DIV_ROUND_UP(nbits, 32); in ethnl_update_bitset32_verbose()
483 ethnl_bitmap32_clear(bitmap, 0, nbits, &dummy); in ethnl_update_bitset32_verbose()
496 ret = ethnl_parse_bit(&idx, &new_val, nbits, bit_attr, no_mask, in ethnl_update_bitset32_verbose()
513 if (no_mask && !ethnl_bitmap32_equal(saved_bitmap, bitmap, nbits)) in ethnl_update_bitset32_verbose()
520 static int ethnl_compact_sanity_checks(unsigned int nbits, in ethnl_compact_sanity_checks() argument
563 if (attr_nbits <= nbits) in ethnl_compact_sanity_checks()
568 if (ethnl_bitmap32_not_zero(nla_data(test_attr), nbits, attr_nbits)) { in ethnl_compact_sanity_checks()
592 int ethnl_update_bitset32(u32 *bitmap, unsigned int nbits, in ethnl_update_bitset32() argument
609 return ethnl_update_bitset32_verbose(bitmap, nbits, attr, tb, in ethnl_update_bitset32()
611 ret = ethnl_compact_sanity_checks(nbits, attr, tb, extack); in ethnl_update_bitset32()
617 nla_get_u32(tb[ETHTOOL_A_BITSET_SIZE]), nbits); in ethnl_update_bitset32()
623 if (no_mask && change_bits < nbits) in ethnl_update_bitset32()
624 ethnl_bitmap32_clear(bitmap, change_bits, nbits, mod); in ethnl_update_bitset32()
645 unsigned int nbits, const struct nlattr *attr, in ethnl_parse_bitset() argument
666 ret = ethnl_compact_sanity_checks(nbits, attr, tb, extack); in ethnl_parse_bitset()
671 if (change_bits > nbits) in ethnl_parse_bitset()
672 change_bits = nbits; in ethnl_parse_bitset()
675 if (change_bits < nbits) in ethnl_parse_bitset()
676 bitmap_clear(val, change_bits, nbits - change_bits); in ethnl_parse_bitset()
678 bitmap_fill(mask, nbits); in ethnl_parse_bitset()
683 if (change_bits < nbits) in ethnl_parse_bitset()
685 nbits - change_bits); in ethnl_parse_bitset()
702 bitmap_zero(val, nbits); in ethnl_parse_bitset()
704 bitmap_fill(mask, nbits); in ethnl_parse_bitset()
706 bitmap_zero(mask, nbits); in ethnl_parse_bitset()
712 ret = ethnl_parse_bit(&idx, &bit_val, nbits, bit_attr, no_mask, in ethnl_parse_bitset()
740 unsigned int nbits, ethnl_string_array_t names, in ethnl_bitset_size() argument
749 if (nbits > ETHNL_SMALL_BITMAP_BITS) { in ethnl_bitset_size()
750 unsigned int nwords = DIV_ROUND_UP(nbits, 32); in ethnl_bitset_size()
761 bitmap_to_arr32(val32, val, nbits); in ethnl_bitset_size()
763 bitmap_to_arr32(mask32, mask, nbits); in ethnl_bitset_size()
766 ret = ethnl_bitset32_size(val32, mask32, nbits, names, compact); in ethnl_bitset_size()
768 if (nbits > ETHNL_SMALL_BITMAP_BITS) in ethnl_bitset_size()
776 unsigned int nbits, ethnl_string_array_t names, in ethnl_put_bitset() argument
785 if (nbits > ETHNL_SMALL_BITMAP_BITS) { in ethnl_put_bitset()
786 unsigned int nwords = DIV_ROUND_UP(nbits, 32); in ethnl_put_bitset()
797 bitmap_to_arr32(val32, val, nbits); in ethnl_put_bitset()
799 bitmap_to_arr32(mask32, mask, nbits); in ethnl_put_bitset()
802 ret = ethnl_put_bitset32(skb, attrtype, val32, mask32, nbits, names, in ethnl_put_bitset()
805 if (nbits > ETHNL_SMALL_BITMAP_BITS) in ethnl_put_bitset()
811 int ethnl_update_bitset(unsigned long *bitmap, unsigned int nbits, in ethnl_update_bitset() argument
820 if (nbits > ETHNL_SMALL_BITMAP_BITS) { in ethnl_update_bitset()
821 unsigned int dst_words = DIV_ROUND_UP(nbits, 32); in ethnl_update_bitset()
828 bitmap_to_arr32(bitmap32, bitmap, nbits); in ethnl_update_bitset()
829 ret = ethnl_update_bitset32(bitmap32, nbits, attr, names, extack, in ethnl_update_bitset()
832 bitmap_from_arr32(bitmap, bitmap32, nbits); in ethnl_update_bitset()
836 if (nbits > ETHNL_SMALL_BITMAP_BITS) in ethnl_update_bitset()
849 unsigned int nbits, ethnl_string_array_t names, in ethnl_bitset_size() argument
852 return ethnl_bitset32_size((const u32 *)val, (const u32 *)mask, nbits, in ethnl_bitset_size()
858 unsigned int nbits, ethnl_string_array_t names, in ethnl_put_bitset() argument
862 (const u32 *)mask, nbits, names, compact); in ethnl_put_bitset()
865 int ethnl_update_bitset(unsigned long *bitmap, unsigned int nbits, in ethnl_update_bitset() argument
869 return ethnl_update_bitset32((u32 *)bitmap, nbits, attr, names, extack, in ethnl_update_bitset()