sctp: use bitmap_weight
authorAkinobu Mita <akinobu.mita@gmail.com>
Fri, 16 Nov 2012 20:39:49 +0000 (20:39 +0000)
committerDavid S. Miller <davem@davemloft.net>
Sun, 18 Nov 2012 03:01:18 +0000 (22:01 -0500)
Use bitmap_weight to count the total number of bits set in bitmap.

Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
Cc: Vlad Yasevich <vyasevich@gmail.com>
Cc: Sridhar Samudrala <sri@us.ibm.com>
Cc: linux-sctp@vger.kernel.org
Cc: netdev@vger.kernel.org
Acked-by: Vlad Yasevich <vyasevich@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/sctp/tsnmap.c

index b5fb7c409023ff8adea81d41e68ace60781febae..5f25e0c92c31e48460536cd2bb0fc29549172b93 100644 (file)
@@ -272,7 +272,7 @@ __u16 sctp_tsnmap_pending(struct sctp_tsnmap *map)
        __u32 max_tsn = map->max_tsn_seen;
        __u32 base_tsn = map->base_tsn;
        __u16 pending_data;
-       u32 gap, i;
+       u32 gap;
 
        pending_data = max_tsn - cum_tsn;
        gap = max_tsn - base_tsn;
@@ -280,11 +280,7 @@ __u16 sctp_tsnmap_pending(struct sctp_tsnmap *map)
        if (gap == 0 || gap >= map->len)
                goto out;
 
-       for (i = 0; i < gap+1; i++) {
-               if (test_bit(i, map->tsn_map))
-                       pending_data--;
-       }
-
+       pending_data -= bitmap_weight(map->tsn_map, gap + 1);
 out:
        return pending_data;
 }