On Mon, 21 Jan 2008, Patrick McHardy wrote: > Stephen Hemminger wrote: > > Replace loop in dsmark_valid_indices with equivalent bit math. > > > > Signed-off-by: Stephen Hemminger <[EMAIL PROTECTED]> > > > > --- 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;
Isn't there some magic under include/linux to do that btw, I suppose that if the caller side zero check is pushed down there too, the is_power_of_2() is 100% match? :-) > hweight seems easier to understand, it took me a bit > to realize that the comment matches the code :) In addition, the original seems infinite loop with zero indices given but luckily that was checked at the caller site already... -- i. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html