On Wed, Jan 17, 2001 at 05:14:38PM +0100, Andi Kleen wrote:
> On Wed, Jan 17, 2001 at 02:51:48PM +0100, Gleb Natapov wrote:
> >
> > You are trying to say that if I'll connect to my router via 9600 serial
> > line and run 'ip monitor'
> > there the routing daemon will not be able to feed routes to the kernel
> > quicker than ip monitor will
> > be able to read them and send output via slow serial line?! Somehow 9600
> > serial line become a
> > bottleneck! Are you sure about that, or I misunderstood you?
>
> You misunderstood me. The kernel side doesn't do any flow control, it just
> drops messages when the
> buffers fill up. The user side does flow control by blocking or EAGAIN, e.g.
> you submitting new
> routes.
>
What user side? There are to sides: W - feeds routes to the kernel, R - read
netlink updates from the kernel.
Who does flow control and how?
W knows nothing about R it simple adds routes to the kernel with the speed
kernel can process them.
R tries its best to read messages from kernel, but if it doesn't do this fast
enough it will get ENOBUFS.
The only one who can synchronize between W and R is kernel, but I hope kernel
doesn't do this.
--
Gleb.
|