IB/ipath: Use bitmap_weight()

Use bitmap_weight() instead of finding all set bits in bitmap by hand.

Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
Cc: Ralph Campbell <infinipath@qlogic.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
This commit is contained in:
Akinobu Mita 2009-12-09 10:05:28 -08:00 committed by Roland Dreier
parent 91d3f9bacd
commit 598cb6f327

View File

@ -39,6 +39,7 @@
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/netdevice.h> #include <linux/netdevice.h>
#include <linux/vmalloc.h> #include <linux/vmalloc.h>
#include <linux/bitmap.h>
#include "ipath_kernel.h" #include "ipath_kernel.h"
#include "ipath_verbs.h" #include "ipath_verbs.h"
@ -1697,7 +1698,7 @@ void ipath_chg_pioavailkernel(struct ipath_devdata *dd, unsigned start,
unsigned len, int avail) unsigned len, int avail)
{ {
unsigned long flags; unsigned long flags;
unsigned end, cnt = 0, next; unsigned end, cnt = 0;
/* There are two bits per send buffer (busy and generation) */ /* There are two bits per send buffer (busy and generation) */
start *= 2; start *= 2;
@ -1748,12 +1749,7 @@ void ipath_chg_pioavailkernel(struct ipath_devdata *dd, unsigned start,
if (dd->ipath_pioupd_thresh) { if (dd->ipath_pioupd_thresh) {
end = 2 * (dd->ipath_piobcnt2k + dd->ipath_piobcnt4k); end = 2 * (dd->ipath_piobcnt2k + dd->ipath_piobcnt4k);
next = find_first_bit(dd->ipath_pioavailkernel, end); cnt = bitmap_weight(dd->ipath_pioavailkernel, end);
while (next < end) {
cnt++;
next = find_next_bit(dd->ipath_pioavailkernel, end,
next + 1);
}
} }
spin_unlock_irqrestore(&ipath_pioavail_lock, flags); spin_unlock_irqrestore(&ipath_pioavail_lock, flags);