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_ */