Here are some specifics.
When a process calls ibv_post_send()
, what happens at the PCI interface to the HCA? Is the WQE encapsulated inside the PCIe doorbell and written via Programmed IO? Or is the WQE fetched in a separate DMA read by the HCA?
What happens When a process calls ibv_poll_cq()
? How does the HCA push CQEs to the system memory? Or, if it's pull based, how does the CPU detect new CQEs in the HCA?