Garrett D'Amore wrote:

[EMAIL PROTECTED] wrote:




I guess I still don't see why that would be worse than spinning - in either case the ip_input thread is not capable of doing anything. You could make the same argument when using a software crypto provider. I think if we're worried about holding up ip_input(), which seems like a valid concern, then even the software crypto providers should be handled asynchronously.



I'm not talking about consuming cycles. I'm not talking about wall clock time considerations. I'm talking about potential deadlocks due to cv_wait.

You must -not- under any conditions cv_wait while in ip_input's path. Because you don't know anything about what locks or PIL the calling context is coming from.



But no locks should be held.... If the contention is we have to guard against a buggy NIC driver then yes. However, we will sacrifice performance to defend against bad behavior.


Its just _just_ locks. (Although that concern arises as well.) Its the fact that the read you're running on may be in interrupt context.

Please, please, don't try to come up with some hackery to make this work. Its best if we adhere to the rule that ip_input is called from streams functions, and must adhere to the same rules that all other streams functions follow that.... that is that thou shalt not sleep.


No one is suggesting that - we're just trying get clarification so we can make the right decision. We could prevent the driver from sleeping but I'd want to make that decision on a job by job basis.
I suspect we've pretty well beat this one into the ground now.

-gary


Doing anything else is likely to cause spectacular failure at some point in the future.

    -- Garrett


-gary


    -- Garrett


-gary


    -- Garrett



-gary


    -- Garrett


-gary


    -- Garrett

Right?
















_______________________________________________
networking-discuss mailing list
[email protected]

Reply via email to