netdev
[Top] [All Lists]

Re: testing techniques to confirm the effectiveness of changes made to s

To: rahul.hari@xxxxxxxxxxxxxxx
Subject: Re: testing techniques to confirm the effectiveness of changes made to sch_gred.c
From: Thomas Graf <tgraf@xxxxxxx>
Date: Sun, 12 Jun 2005 12:46:28 +0200
Cc: netdev@xxxxxxxxxxx, netdev@xxxxxxxxxxxxxxx, lartc-request@xxxxxxxxxxxxxxx, diffserv-general@xxxxxxxxxxxxxxxxxxxxx, linux.kernel@xxxxxxxxxxxxxxxx
In-reply-to: <4532f3170506101739702e31ad@xxxxxxxxxxxxxx>
References: <4532f3170506101739702e31ad@xxxxxxxxxxxxxx>
Sender: netdev-bounce@xxxxxxxxxxx
* Rahul Hari <4532f3170506101739702e31ad@xxxxxxxxxxxxxx> 2005-06-11 06:09
> I have made some changes to the file sch_gred.c to modify the GRED
> queueing discipline to support the following features:
> 1) The first virtual queue should get absolute priority while
> dequeueing (not caring if the others get starved)
> 2) While in equalise mode and with RIO mode enabled, the packets in
> the first virtual queue should not be counted for calculating the
> qave.

You do not need to modify gred to achieve this, use a prio qdisc
with 2 bands, band 1 covers your "first virtual queue" with a single
red attached, band 2 covers the rest and uses a gred.

> 1) Since the  process deals with dequeueing, i have to make changes to
> gred_dequeue only. If t->tab[0] != 0 then  we dequeue the packet
> otherwise do not dequeue it.

What you describe above is: only dequeue when DP 0 is configured,
probably not what you want. The only way to prioritize within gred
the way you want is to modify dequeue() that it iterates through
sch->q looking for a skb with tcindex==DP0 and use it instead of
the skb at the queue head.

> 2)  
> if (t->eqp && t->grio) {
> 
>          for (i=0;i<t->DPs;i++) {
>                       if ((!t->tab[i]) || (i==q->DP) || (i==0))       
>                               continue; 
>                               
>                       if ((t->tab[i] != q) && 
> (PSCHED_IS_PASTPERFECT(t->tab[i]->qidlestart)))
>                               qave +=t->tab[i]->qave;
>                    }

You no longer consider the priority so it won't be wred anymore,
also if (i == q->DP) continue makes a check t->tab[i] != q
unnecessary.


<Prev in Thread] Current Thread [Next in Thread>