(sorry to reply late -- bad mail rules.) RDS used to do send and recv processing in the event handler.
It currently uses a tasklet for recv, and send is still in the event handler. When we moved the recv processing to a tasklet, we poll the cq, arm the cq, then poll it again, because it seems like 1) we want to do as much work as possible before rearming the event and 2) we need to poll after, to be sure to catch CQEs added between the time when the handler exited and we've gotten to this point in the tasklet. How does this approach (re-polling after calling notify_cq) compare with using REPORT_MISSED_EVENTS? Maybe it's two different ways to do the same thing? Anyways, this is off the point from your original patch that changed the send cq handling, which is all done in the event handler. I don't have an explanation for you seeing the 0xdeads, except that the comment above that code that mentions racing cleanly with the send path makes my antennae twitch a little bit... Regards -- Andy PS FWIW my dev branch moves RDS to a single CQ for send & recv events similar to srp, except using a tasklet, and notify_cq(IB_CQ_SOLICITED), and doing poll/arm/poll. -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
