I finally got around to reviewing this, and I think I see a problem. It seems that if we get, say, a send completion followed by a receive completion, we will not update which wq is locked so we'll update the receive queue with the send queue locked. Is this true? - R.