Lines Matching refs:sgc

188 			      struct esas2r_sg_context *sgc)
190 struct esas2r_request *rq = sgc->first_req;
193 while (sgc->length) {
198 len = (*sgc->get_phys_addr)(sgc, &addr);
204 if (unlikely(len > sgc->length))
205 len = sgc->length;
222 if (unlikely(sgc->sge.a64.curr > sgc->sge.a64.limit)) {
237 sgelen = (u8)((u8 *)sgc->sge.a64.curr
238 - (u8 *)sgc->sge.a64.last);
244 memcpy(sgl->virt_addr, sgc->sge.a64.last, sgelen);
247 sgc->sge.a64.curr =
252 sgc->sge.a64.limit =
257 sgc->sge.a64.last->length = cpu_to_le32(
259 sgc->sge.a64.last->address =
268 if (sgc->sge.a64.chain) {
269 sgc->sge.a64.chain->length |=
271 ((u8 *)(sgc->sge.a64.
279 ((u8 *)sgc->
299 sgc->sge.a64.chain = sgc->sge.a64.last;
306 sgc->sge.a64.last = sgc->sge.a64.curr;
309 sgc->sge.a64.curr->length = cpu_to_le32(SGE_ADDR_64 | len);
310 sgc->sge.a64.curr->address = cpu_to_le32(addr);
311 sgc->sge.a64.curr++;
312 sgc->cur_offset += len;
313 sgc->length -= len;
328 sgc->sge.a64.last->length |= cpu_to_le32(SGE_LAST);
334 if (sgc->sge.a64.chain) {
335 sgc->sge.a64.chain->length |= cpu_to_le32(
336 ((u8 *)(sgc->sge.a64.curr) -
346 ((u16)((u8 *)sgc->sge.a64.last - (u8 *)vrq)
371 struct esas2r_sg_context *sgc)
373 struct esas2r_request *rq = sgc->first_req;
380 while (sgc->length) {
383 len = (*sgc->get_phys_addr)(sgc, &addr);
390 if (unlikely(len > sgc->length))
391 len = sgc->length;
409 if (sgc->sge.prd.sge_cnt == 0) {
410 if (len == sgc->length) {
418 sgc->sge.prd.curr->ctl_len = cpu_to_le32(
420 sgc->sge.prd.curr->address = cpu_to_le64(addr);
423 sgc->cur_offset += len;
424 sgc->length -= len;
432 if (sgc->sge.prd.chain) {
439 sgc->sge.prd.chain->ctl_len |= cpu_to_le32(
440 sgc->sge.prd.sgl_max_cnt);
467 sgc->sge.prd.chain = sgc->sge.prd.curr;
469 sgc->sge.prd.chain->ctl_len = cpu_to_le32(PRD_CHAIN);
470 sgc->sge.prd.chain->address =
478 sgc->sge.prd.curr =
482 sgc->sge.prd.sge_cnt = sgc->sge.prd.sgl_max_cnt - 1;
485 sgc->sge.prd.sge_cnt--;
487 sgc->sge.prd.curr->ctl_len = cpu_to_le32(PRD_DATA | len);
488 sgc->sge.prd.curr->address = cpu_to_le64(addr);
492 sgc->sge.prd.curr++;
496 sgc->cur_offset += len;
497 sgc->length -= len;
513 if (sgc->sge.prd.chain) {
514 sgc->sge.prd.chain->ctl_len |=
515 cpu_to_le32(sgc->sge.prd.sgl_max_cnt
516 - sgc->sge.prd.sge_cnt
525 struct esas2r_sg_context *sgc)
527 struct esas2r_request *rq = sgc->first_req;
528 u32 len = sgc->length;
596 sgc->length = startlba * t->block_size;
602 if (sgc->length > len)
603 sgc->length = len;
605 sgc->length = len;
608 sgc->length = len;
614 (struct atto_physical_region_description *)sgc->sge.a64.curr;
616 sgc->sge.prd.sgl_max_cnt = sgl_page_size /
623 sgc->sge.prd.sge_cnt = 0;
624 sgc->sge.prd.chain = NULL;
625 sgc->sge.prd.curr = curr_iblk_chn;
629 len -= sgc->length;
633 if (unlikely(!esas2r_build_prd_iblk(a, sgc)))
642 sgc->length = t->inter_byte;
644 sgc->length = len;