The quick answer is the qp_list is traversed w/o the lock held inipath_ib_rcv(). The intent is to be able to do a lookup on the GIDto get a reference to the struct ipath_mcast and then walk the qp_listw/o locks being held while processing the received packets atinterrupt level.