Messages in this thread | | | From | (Alan Cox) | Subject | Re: Today Linus redesigns the networking driver interface (was Re: tulip driver in ...) | Date | Sun, 20 Sep 1998 15:32:08 +0100 (BST) |
| |
> 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/
| |