Subject: Re: [PATCH 2/4] dsmark: get rid of trivial function

From: Patrick McHardy <[email-masked]>
Date: Mon, 21 Jan 2008 01:16:32 +0100

Stephen Hemminger wrote:
> Replace loop in dsmark_valid_indices with equivalent bit math.
> 
> Signed-off-by: Stephen Hemminger <[email-masked]>
> 
> --- a/net/sched/sch_dsmark.c	2008-01-20 13:07:58.000000000 -0800
> +++ b/net/sched/sch_dsmark.c	2008-01-20 13:22:54.000000000 -0800
> @@ -45,13 +45,8 @@ struct dsmark_qdisc_data {
>  
>  static inline int dsmark_valid_indices(u16 indices)
>  {
> -	while (indices != 1) {
> -		if (indices & 1)
> -			return 0;
> -		indices >>= 1;
> -	}
> -
> -	return 1;
> +	/* Must have only one bit set */
> +	return (indices & (indices - 1)) == 0;

hweight seems easier to understand, it took me a bit
to realize that the comment matches the code :)