[openib-general] Generic device driver
Roland Dreier
rolandd at cisco.com
Fri Jul 15 09:15:50 PDT 2005
Suresh> What I am missing is, when a packet arrives at the PHY,
Suresh> how is the recv_handler() being called? Just need the flow
Suresh> at this level.
When a packet arrives the HCA executes a work request from the receive
queue of the appropriate queue pair. A completion queue entry is
added to the completion queue associated with this receive queue. If
the completion queue has had an event requested, then a completion
event will be generated and the driver needs to call the comp_handler
for the completion queue.
Chapter 10 of the IBA spec may be helpful for understanding the
semantics here.
In the case of MADs, comp_handler will be ib_mad_thread_completion_handler(),
which defers processing through a work queue and after a baroque path
eventually calls the consumer MAD agent's recv_handler.
In mthca, comp_handler is called because an event queue entry is
generated, which will usually cause an interrupt. The interrupt
handler sees the event queue entry for the completion event and calls
mthca_cq_event(). However, there is no requirement for your device to
implement event queues or even to use interrupts.
- R.
More information about the general
mailing list