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++;