lkml.org 
[lkml]   [1998]   [Sep]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
SubjectRe: Today Linus redesigns the networking driver interface (was Re: tulip driver in ...)
Date
> I don't think that's the case, I think it's the other bh routines being
> starved or something, so that while the clock is being updated, timers
> nerver occur because they occur in bottom half entries too (and are thus
> shut out if net_bh() runs forever).

net_bh gets starved. Which incidentally means your "process only so
many packets per net_bh run" proposal is unworkable. Since we never get
-into- net_bh we can't control there.

Flow control on interrupts has to be done on the hardware interrupt context
but probably only needs to be done for 100Mbit+ adapters. I've refined the
code a bit. Its actually doable in a 2.2 timescale. Viz..

In netif_rx insert

if(backlog.qlen >= netdev_flowcontrol_len)
{
if(dev->flow_control)
{
dev->flow_control(dev,1);
dev->flow_timer.expires=jiffies+netdev_backoff_time;
/* These two would be set up once at init .. */
dev->flow_timer.data=(long)dev;
dev->flow_timer.func=dev_flow_manager;
add_timer(&dev->flow_timer);
}
}

add

void dev_flow_manager(long cookie)
{
struct device *dev=(struct device *)cookie;
dev->flow_control(dev,0);
}





-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 13:44    [W:0.082 / U:0.476 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site