git: b70247df0ba4 - main - axgbe: use bit_foreach
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 12 Aug 2024 21:05:59 UTC
The branch main has been updated by dougm: URL: https://cgit.FreeBSD.org/src/commit/?id=b70247df0ba43a97fb4b06bbc85163a3ecaf08a5 commit b70247df0ba43a97fb4b06bbc85163a3ecaf08a5 Author: Doug Moore <dougm@FreeBSD.org> AuthorDate: 2024-08-12 21:04:32 +0000 Commit: Doug Moore <dougm@FreeBSD.org> CommitDate: 2024-08-12 21:04:32 +0000 axgbe: use bit_foreach bitstring.h includes a definition of bit_foreach, for iterating over the set bits of a bitstring. axgbe implements its own version of this for bitstrings. Drop it, and use the bitstring method. Reviewed by: des Differential Revision: https://reviews.freebsd.org/D46037 --- sys/dev/axgbe/xgbe-dev.c | 7 +++-- sys/dev/axgbe/xgbe_osdep.h | 66 ---------------------------------------------- 2 files changed, 3 insertions(+), 70 deletions(-) diff --git a/sys/dev/axgbe/xgbe-dev.c b/sys/dev/axgbe/xgbe-dev.c index 39d0dab144a2..3a7d683ea5a9 100644 --- a/sys/dev/axgbe/xgbe-dev.c +++ b/sys/dev/axgbe/xgbe-dev.c @@ -826,7 +826,7 @@ static int xgbe_update_vlan_hash_table(struct xgbe_prv_data *pdata) { uint32_t crc; - uint16_t vid; + size_t vid; uint16_t vlan_hash_table = 0; __le16 vid_le = 0; @@ -834,14 +834,13 @@ xgbe_update_vlan_hash_table(struct xgbe_prv_data *pdata) XGMAC_IOREAD(pdata, MAC_VLANHTR)); /* Generate the VLAN Hash Table value */ - for_each_set_bit(vid, pdata->active_vlans, VLAN_NVID) { - + bit_foreach(pdata->active_vlans, VLAN_NVID, vid) { /* Get the CRC32 value of the VLAN ID */ vid_le = cpu_to_le16(vid); crc = bitrev32(~xgbe_vid_crc32_le(vid_le)) >> 28; vlan_hash_table |= (1 << crc); - axgbe_printf(1, "%s: vid 0x%x vid_le 0x%x crc 0x%x " + axgbe_printf(1, "%s: vid 0x%lx vid_le 0x%x crc 0x%x " "vlan_hash_table 0x%x\n", __func__, vid, vid_le, crc, vlan_hash_table); } diff --git a/sys/dev/axgbe/xgbe_osdep.h b/sys/dev/axgbe/xgbe_osdep.h index 1f0359657dcd..40c1607b20e3 100644 --- a/sys/dev/axgbe/xgbe_osdep.h +++ b/sys/dev/axgbe/xgbe_osdep.h @@ -56,11 +56,6 @@ typedef uint32_t __le32; #define le32_to_cpu(x) htole32(x) #define cpu_to_le16(x) htole16(x) -#define for_each_set_bit(bit, addr, size) \ - for ((bit) = find_first_bit((addr), (size)); \ - (bit) < (size); \ - (bit) = find_next_bit((addr), (size), (bit) + 1)) - typedef struct mtx spinlock_t; static inline void @@ -241,65 +236,4 @@ get_bitmask_order(unsigned int count) return (order); /* We could be slightly more clever with -1 here... */ } -static inline unsigned long -find_next_bit(const unsigned long *addr, unsigned long size, unsigned long offset) -{ - long mask; - int offs; - int bit; - int pos; - - if (offset >= size) - return (size); - pos = offset / BITS_PER_LONG; - offs = offset % BITS_PER_LONG; - bit = BITS_PER_LONG * pos; - addr += pos; - if (offs) { - mask = (*addr) & ~BITMAP_LAST_WORD_MASK(offs); - if (mask) - return (bit + __ffsl(mask)); - if (size - bit <= BITS_PER_LONG) - return (size); - bit += BITS_PER_LONG; - addr++; - } - for (size -= bit; size >= BITS_PER_LONG; - size -= BITS_PER_LONG, bit += BITS_PER_LONG, addr++) { - if (*addr == 0) - continue; - return (bit + __ffsl(*addr)); - } - if (size) { - mask = (*addr) & BITMAP_LAST_WORD_MASK(size); - if (mask) - bit += __ffsl(mask); - else - bit += size; - } - return (bit); -} - -static inline unsigned long -find_first_bit(const unsigned long *addr, unsigned long size) -{ - long mask; - int bit; - - for (bit = 0; size >= BITS_PER_LONG; - size -= BITS_PER_LONG, bit += BITS_PER_LONG, addr++) { - if (*addr == 0) - continue; - return (bit + __ffsl(*addr)); - } - if (size) { - mask = (*addr) & BITMAP_LAST_WORD_MASK(size); - if (mask) - bit += __ffsl(mask); - else - bit += size; - } - return (bit); -} - #endif /* _XGBE_OSDEP_H_ */