]> git.openfabrics.org - ~ardavis/dapl.git/commitdiff
Bug fix: the calculation of 'total_offset' could be wrong if a segmented sge is not...
authorJianxin Xiong <jianxin.xiong@intel.com>
Thu, 16 Aug 2012 19:34:30 +0000 (12:34 -0700)
committerJianxin Xiong <jianxin.xiong@intel.com>
Thu, 16 Aug 2012 20:08:29 +0000 (13:08 -0700)
dapl/svc/mpxyd.c

index 0cd43f9a8846a9d9faef9866e895e5d77e0b1cf4..23c2d6eb45b474189eaac10f699f8b14cace9e07 100644 (file)
@@ -2770,12 +2770,12 @@ static int mix_post_write(mcm_scif_dev_t *smd, dat_mix_send_t *pmsg, int *data)
                        mlog(1, " local sge[%d] addr %p len %d lkey 0x%x\n",
                             i, m_sge->addr, m_sge->length, m_sge->lkey);
 
-                       m_sge++;
                        l_len -= seg_len;
                        r_off += seg_len;
-                       total_len += (seg_len - cacheln_off);
-                       len -= (seg_len - cacheln_off);
+                       total_len += m_sge->length;
+                       len -= m_sge->length;
                        cacheln_off = 0; /* only apply to the first segment of a sge */
+                       m_sge++;
 
                        /* if enough for this WR, then set up DMA signal, and move to next WR */
                        if (seg_len == m_qp->m_seg || i ==  pmsg->wr.num_sge - 1) {