[Click] Unqueue modification

Eddie Kohler kohler at cs.ucla.edu
Mon Nov 10 02:12:41 EST 2008


Hi Lorenzo,

No, this change seems perfectly reasonable.  And in fact I'm going to check it 
in to mainline.  However the only reason you had this problem was that you set 
a large BURST value -- you could also just leave BURST at 1, the default.

Eddie


Lorenzo Bianconi wrote:
> Hi all,
> 
> I am using Click in kernel module to implement a system where a given node manages the transmission of N other nodes.In particular, in the node configuration, to stop and to restart the packet transmission I am using an unqueue element which is activated and deactivated by another element. I have noticed when I unschedule the unqueue task (setting the unqueue class attribute _active to false), the element continues to pull/push packets until it reaches the _burst threshold. In order to render the unqueue element more responsive when it has been unscheduled, I have modified in this way the run_task class member function (I have highlighted in red the modification):
> 
> bool
> 
> Unqueue::run_task(Task *)
> {
>     if(!_active)
>         return false;
> 
>     int worked = 0;
>     while ((worked < _burst) && _active) {
>         if (Packet *p = input(0).pull()) {
>             worked++;
>             output(0).push(p);
>         } else {
>             if(!_signal) {
>                 _count += worked;
>                 return worked > 0;
>             }
>             break;
>         }
>        }
>         
>        _task.fast_reschedule();
>         _count += worked; 
>       return worked > 0;
> }
> 
> Do you think it is correct or maybe it could trigger problems??
> 
> Thanks
> 
> Kind regards
> 
> Lorenzo
> 
> _______________________________________________
> click mailing list
> click at amsterdam.lcs.mit.edu
> https://amsterdam.lcs.mit.edu/mailman/listinfo/click


More information about the click mailing list