|
@@ -213,15 +213,23 @@ int ib_pull ( struct ib_device *ibdev, struct io_buffer *iobuf,
|
213
|
213
|
/* Determine destination QP, if applicable */
|
214
|
214
|
if ( qp ) {
|
215
|
215
|
if ( IB_LID_MULTICAST ( lid ) && grh ) {
|
216
|
|
- *qp = ib_find_qp_mgid ( ibdev, &grh->dgid );
|
|
216
|
+ if ( ! ( *qp = ib_find_qp_mgid ( ibdev, &grh->dgid ))){
|
|
217
|
+ DBGC ( ibdev, "IBDEV %p RX for unknown MGID "
|
|
218
|
+ "%08x:%08x:%08x:%08x\n", ibdev,
|
|
219
|
+ ntohl ( grh->dgid.u.dwords[0] ),
|
|
220
|
+ ntohl ( grh->dgid.u.dwords[1] ),
|
|
221
|
+ ntohl ( grh->dgid.u.dwords[2] ),
|
|
222
|
+ ntohl ( grh->dgid.u.dwords[3] ) );
|
|
223
|
+ return -ENODEV;
|
|
224
|
+ }
|
217
|
225
|
} else {
|
218
|
|
- *qp = ib_find_qp_qpn ( ibdev, qpn );
|
219
|
|
- }
|
220
|
|
- if ( ! *qp ) {
|
221
|
|
- DBGC ( ibdev, "IBDEV %p RX for nonexistent QP\n",
|
222
|
|
- ibdev );
|
223
|
|
- return -ENODEV;
|
|
226
|
+ if ( ! ( *qp = ib_find_qp_qpn ( ibdev, qpn ) ) ) {
|
|
227
|
+ DBGC ( ibdev, "IBDEV %p RX for nonexistent "
|
|
228
|
+ "QPN %lx\n", ibdev, qpn );
|
|
229
|
+ return -ENODEV;
|
|
230
|
+ }
|
224
|
231
|
}
|
|
232
|
+ assert ( *qp );
|
225
|
233
|
}
|
226
|
234
|
|
227
|
235
|
DBGC2 ( ibdev, "IBDEV %p RX %04x:%08lx <= %04x:%08lx (key %08x)\n",
|