Subject: Re: Question about QOS

From: Thomas Graf <[email-masked]>
Date: Wed, 27 Apr 2005 13:42:16 +0200

* Nicolas DICHTEL <[email-masked]> 2005-04-27 09:44
> 
> >Yes I agree, it doesn't really matter what value we return and `bound'
> >is most likely to be correct. I think we should also fix the unlikely
> >but still possible case when tv1.tv_usec is slightly smaller than
> >tv2.tv_usec. I know it is very unlikely but do_gettimeofday really
> >is not that reliable and we have users which rely on a positive
> >delta. Can you extend your patch to return abs(delta) for case 0
> >in PSCHED_TDIFF_SAFE?
> >
> You're right. Here is the new patch.
> 
> [SCHED] Fix range in PSCHED_TDIFF_SAFE to 0..bound
> 
> Signed-off-by: Nicolas Dichtel <[email-masked]>

Signed-off-by: Thomas Graf <[email-masked]>

> diff -Nru linux-2.6-a/include/net/pkt_sched.h linux-2.6-b/include/net/pkt_sched.h
> --- linux-2.6-a/include/net/pkt_sched.h	2005-04-26 15:45:07.000000000 +0200
> +++ linux-2.6-b/include/net/pkt_sched.h	2005-04-27 09:36:23.421634576 +0200
> @@ -140,7 +140,7 @@
>  	if (bound <= 1000000 || delta_sec > (0x7FFFFFFF/1000000)-1)
>  		return bound;
>  	delta = delta_sec * 1000000;
> -	if (delta > bound)
> +	if (delta > bound || delta < 0)
>  		delta = bound;
>  	return delta;
>  }
> @@ -156,7 +156,8 @@
>  		   __delta += 1000000; \
>  	   case 1: \
>  		   __delta += 1000000; \
> -	   case 0: ; \
> +	   case 0: \
> +		   __delta = abs(__delta); \
>  	   } \
>  	   __delta; \
>  })