Hello guys,

Studying a bit deeper the code in OvsEvent.c, I came across several things I do 
not understand.
Perhaps you can help me a bit :)

I can see it is used for the "queue packet for userspace".
Being called "OvsEvent", I had expected that it has something to do with 
KEVENT, but it is not the case.

Two things that I find difficult to understand are:
a) the code sets a cancel IRP routine, but it nowhere calls IoCancelIrp.
b) the requests to the driver (read / write) can be satisfied instantaneously, 
so we normally have no "pending" IRPs.
I don't think it is correct to call the queuing of packets to userspace a 
"pending" operation. The packets in queue are pending, but not the request. In 
device drivers I think we get a pending operation when the data needs time to 
arrive, or to be written to the device, and can therefore be canceled while the 
operation is in progress. I don't understand how these terms apply to our case.

Is the intent of calls to IoSetCancelRoutine in OvsEvent.c to provide a 
cleanup, should the driver be unloaded while having requests ongoing?

Could you please give me some details on the architecture of OvsEvent and its 
use by packet queuing and km-um communication?

Thanks!
Samuel
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to