On 18/02/2021 14:53, Jason Gunthorpe wrote: > On Thu, Feb 18, 2021 at 11:13:43AM +0200, Gal Pressman wrote: >> I'm a bit confused about the meaning of the ibv_req_notify_cq() verb: >> "Upon the addition of a new CQ entry (CQE) to cq, a completion event will be >> added to the completion channel associated with the CQ." >> >> What is considered a new CQE in this case? >> The next CQE from the user's perspective, i.e. any new CQE that wasn't consumed >> by the user's poll cq? >> Or any new CQE from the device's perspective? > > new CQE from the device perspective. > >> For example, if at the time of ibv_req_notify_cq() call the CQ has received 100 >> completions, but the user hasn't polled his CQ yet, when should he be notified? >> On the 101 completion or immediately (since there are completions waiting on the >> CQ)? > > 101 completion > > It is only meaningful to call it when the CQ is empty. Thanks, so there's an inherent race between the user's CQ poll and the next arm? Do you know what's the purpose of the consumer index in the arm doorbell that's implemented by many providers?