diff --git a/lnet/klnds/qswlnd/qswlnd_cb.c b/lnet/klnds/qswlnd/qswlnd_cb.c index 94c671dad2b499abcbd50a3e40b62d08be6e10b7..22e2cd90a8e9d085b6deb51ee4c1ed4f3dba20a0 100644 --- a/lnet/klnds/qswlnd/qswlnd_cb.c +++ b/lnet/klnds/qswlnd/qswlnd_cb.c @@ -1341,12 +1341,6 @@ kqswnal_fwd_packet (void *arg, kpr_fwd_desc_t *fwd) if (nid == kqswnal_lib.libnal_ni.ni_pid.nid) /* gateway is me */ nid = fwd->kprfd_target_nid; /* target is final dest */ - if (kqswnal_nid2elanid (nid) < 0) { - CERROR("Can't forward [%p] to "LPX64": not a peer\n", fwd, nid); - rc = -EHOSTUNREACH; - goto out; - } - /* copy hdr into pre-mapped buffer */ memcpy(ktx->ktx_buffer, fwd->kprfd_hdr, sizeof(ptl_hdr_t)); @@ -1357,6 +1351,12 @@ kqswnal_fwd_packet (void *arg, kpr_fwd_desc_t *fwd) ktx->ktx_args[0] = fwd; ktx->ktx_nfrag = ktx->ktx_firsttmpfrag = 1; + if (kqswnal_nid2elanid (nid) < 0) { + CERROR("Can't forward [%p] to "LPX64": not a peer\n", fwd, nid); + rc = -EHOSTUNREACH; + goto out; + } + if (nob <= KQSW_TX_MAXCONTIG) { /* send payload from ktx's pre-mapped contiguous buffer */ diff --git a/lnet/klnds/viblnd/viblnd_cb.c b/lnet/klnds/viblnd/viblnd_cb.c index 83ea106fb5151fea29386d6df210ea29414ddf3e..8a9c8a43a9b6d874c771e3a67a691be2325ef430 100644 --- a/lnet/klnds/viblnd/viblnd_cb.c +++ b/lnet/klnds/viblnd/viblnd_cb.c @@ -1179,7 +1179,7 @@ kibnal_init_rdma (kib_tx_t *tx, int type, int nob, resid -= wrknob; if (wrknob < srcfrag->rf_nob) { kibnal_rf_set(srcfrag, - kibnal_rf_addr(srcfrag) + resid, + kibnal_rf_addr(srcfrag) + wrknob, srcfrag->rf_nob - wrknob); } else { srcfrag++; @@ -1188,7 +1188,7 @@ kibnal_init_rdma (kib_tx_t *tx, int type, int nob, if (wrknob < dstfrag->rf_nob) { kibnal_rf_set(dstfrag, - kibnal_rf_addr(dstfrag) + resid, + kibnal_rf_addr(dstfrag) + wrknob, dstfrag->rf_nob - wrknob); } else { dstfrag++;