>mlx4/qp.c: mlx4_ib_post_send() >* when passing a list containing more than one item to >mlx4_ib_post_send(), and sending the second or later item fails (e.g. >because of QP overflow), the preceding items are sent anyway. This >behavior makes it almost impossible to get error recovery right for >block device implementations that use ib_post_send() (e.g. the SRPT >target implementation).
Yes - this is the correct behavior. The bad_wr pointer should reference the WR that failed, with all WRs in the list passed that point being returned unprocessed. This is the reason for having the bad_wr in the call. Error recovery shouldn't be any more difficult than posting one WR at a time. >If my interpretation of the section about verbs in the InfiniBand >Architecture Specification is correct, either all work requests should >be processed or none. A quote from section 11.4.1.1, Post Send Request >(page 622 in volume 1 of release 1.2.1): The IB spec does not define an API. For performance reasons, you don't want the implementation to walk through the WR list multiple times - once to check it, then a second time to actually post the requests to the hardware. - Sean -- 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
