On Sun, 2004-12-19 at 17:29, Tommy Christensen wrote:
> I haven't tried this myself, but surely it can happen when the
> socket send-buffer is smaller than what can be queued up for
> transmission: i.e. in the qdisc queue and device DMA ring.
Shouldnt this have to do with socket options? If you wish to block while
waiting for send, then you should be allowed.
For a routing protocol that actually is notified that the link went
down, it should probably flush those socket buffer at that point.
> And even more so, when sending to multiple devices from one socket.
Yes, this looks more within reason. I dont know what the answer to this
is. But would be helpful for someone to create a setup that reproduces
this.
> > Look at e1000 they do it right there.
> >
> > On link up:
> > netif_carrier_on(netdev);
> > netif_wake_queue(netdev);
> > On Link Down:
> > netif_carrier_off(netdev); // wonder if these need swapping
> > netif_stop_queue(netdev);
> >
>
> Well, this is the same as what started this whole thread.
> I believe that stopping the queue on link-down events is simply
> bad behavior of the driver.
>From what Thomas was saying, this is not what he was doing. Read his
email.
cheers,
jamal
|