diff options
author | Akinobu Mita <akinobu.mita@gmail.com> | 2012-11-16 15:39:49 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-11-17 22:01:18 -0500 |
commit | fc184f089220f7abd604993d7c69218603c2ffb2 (patch) | |
tree | 5897c60c370d41e399c5ec6584fe36222a6f423b | |
parent | 67f4efdce7d85282fbd5832cddc80a07eb89b6d6 (diff) |
sctp: use bitmap_weight
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>
-rw-r--r-- | net/sctp/tsnmap.c | 8 |
1 files changed, 2 insertions, 6 deletions
diff --git a/net/sctp/tsnmap.c b/net/sctp/tsnmap.c index b5fb7c409023..5f25e0c92c31 100644 --- a/net/sctp/tsnmap.c +++ b/net/sctp/tsnmap.c | |||
@@ -272,7 +272,7 @@ __u16 sctp_tsnmap_pending(struct sctp_tsnmap *map) | |||
272 | __u32 max_tsn = map->max_tsn_seen; | 272 | __u32 max_tsn = map->max_tsn_seen; |
273 | __u32 base_tsn = map->base_tsn; | 273 | __u32 base_tsn = map->base_tsn; |
274 | __u16 pending_data; | 274 | __u16 pending_data; |
275 | u32 gap, i; | 275 | u32 gap; |
276 | 276 | ||
277 | pending_data = max_tsn - cum_tsn; | 277 | pending_data = max_tsn - cum_tsn; |
278 | gap = max_tsn - base_tsn; | 278 | gap = max_tsn - base_tsn; |
@@ -280,11 +280,7 @@ __u16 sctp_tsnmap_pending(struct sctp_tsnmap *map) | |||
280 | if (gap == 0 || gap >= map->len) | 280 | if (gap == 0 || gap >= map->len) |
281 | goto out; | 281 | goto out; |
282 | 282 | ||
283 | for (i = 0; i < gap+1; i++) { | 283 | pending_data -= bitmap_weight(map->tsn_map, gap + 1); |
284 | if (test_bit(i, map->tsn_map)) | ||
285 | pending_data--; | ||
286 | } | ||
287 | |||
288 | out: | 284 | out: |
289 | return pending_data; | 285 | return pending_data; |
290 | } | 286 | } |