Lines Matching refs:sge
120 struct rvt_sge sge; /* progress state for the current SGE */ member
138 rvt_put_mr(ss->sge.mr); in rvt_put_ss()
140 ss->sge = *ss->sg_list++; in rvt_put_ss()
144 static inline u32 rvt_get_sge_length(struct rvt_sge *sge, u32 length) in rvt_get_sge_length() argument
146 u32 len = sge->length; in rvt_get_sge_length()
150 if (len > sge->sge_length) in rvt_get_sge_length()
151 len = sge->sge_length; in rvt_get_sge_length()
159 struct rvt_sge *sge = &ss->sge; in rvt_update_sge() local
161 sge->vaddr += length; in rvt_update_sge()
162 sge->length -= length; in rvt_update_sge()
163 sge->sge_length -= length; in rvt_update_sge()
164 if (sge->sge_length == 0) { in rvt_update_sge()
166 rvt_put_mr(sge->mr); in rvt_update_sge()
168 *sge = *ss->sg_list++; in rvt_update_sge()
169 } else if (sge->length == 0 && sge->mr->lkey) { in rvt_update_sge()
170 if (++sge->n >= RVT_SEGSZ) { in rvt_update_sge()
171 if (++sge->m >= sge->mr->mapsz) in rvt_update_sge()
173 sge->n = 0; in rvt_update_sge()
175 sge->vaddr = sge->mr->map[sge->m]->segs[sge->n].vaddr; in rvt_update_sge()
176 sge->length = sge->mr->map[sge->m]->segs[sge->n].length; in rvt_update_sge()
183 struct rvt_sge *sge = &ss->sge; in rvt_skip_sge() local
186 u32 len = rvt_get_sge_length(sge, length); in rvt_skip_sge()