if (attr_mask & IB_QP_AV) {
                priv->s_sc = ah_to_sc(ibqp->device, &qp->remote_ah_attr);
                priv->s_sde = qp_to_sdma_engine(qp, priv->s_sc);
+               priv->s_sendcontext = qp_to_send_context(qp, priv->s_sc);
        }
 
        if (attr_mask & IB_QP_PATH_MIG_STATE &&
                qp->s_flags |= RVT_S_AHG_CLEAR;
                priv->s_sc = ah_to_sc(ibqp->device, &qp->remote_ah_attr);
                priv->s_sde = qp_to_sdma_engine(qp, priv->s_sc);
+               priv->s_sendcontext = qp_to_send_context(qp, priv->s_sc);
        }
 }
 
 
 
        /* vl15 special case taken care of in ud.c */
        sc5 = priv->s_sc;
-       sc = qp_to_send_context(qp, sc5);
+       sc = ps->s_txreq->psc;
 
-       if (!sc) {
-               ret = -EINVAL;
-               goto bail;
-       }
        if (likely(pbc == 0)) {
                u8 vl = sc_to_vlt(dd_from_ibdev(qp->ibqp.device), sc5);
                /* set PBC_DC_INFO bit (aka SC[4]) in pbc_flags */