Lines Matching refs:sgc
759 static u32 get_physaddr_from_sgc(struct esas2r_sg_context *sgc, u64 *addr) in get_physaddr_from_sgc() argument
763 if (likely(sgc->cur_offset == sgc->exp_offset)) { in get_physaddr_from_sgc()
769 if (sgc->sgel_count < sgc->num_sgel) { in get_physaddr_from_sgc()
771 if (sgc->exp_offset > (u8 *)0) { in get_physaddr_from_sgc()
773 sgc->cur_sgel = sg_next(sgc->cur_sgel); in get_physaddr_from_sgc()
774 ++(sgc->sgel_count); in get_physaddr_from_sgc()
778 len = sg_dma_len(sgc->cur_sgel); in get_physaddr_from_sgc()
779 (*addr) = sg_dma_address(sgc->cur_sgel); in get_physaddr_from_sgc()
782 sgc->exp_offset += len; in get_physaddr_from_sgc()
787 } else if (sgc->cur_offset < sgc->exp_offset) { in get_physaddr_from_sgc()
793 len = sg_dma_len(sgc->cur_sgel); in get_physaddr_from_sgc()
794 (*addr) = sg_dma_address(sgc->cur_sgel); in get_physaddr_from_sgc()
796 sgc->exp_offset -= len; in get_physaddr_from_sgc()
800 (sgc->cur_offset - sgc->exp_offset); in get_physaddr_from_sgc()
802 sgc->exp_offset += len; in get_physaddr_from_sgc()
806 sgc->exp_offset - sgc->cur_offset); in get_physaddr_from_sgc()
823 struct esas2r_sg_context sgc; in esas2r_queuecommand() local
858 esas2r_sgc_init(&sgc, a, rq, NULL); in esas2r_queuecommand()
860 sgc.length = bufflen; in esas2r_queuecommand()
861 sgc.cur_offset = NULL; in esas2r_queuecommand()
863 sgc.cur_sgel = scsi_sglist(cmd); in esas2r_queuecommand()
864 sgc.exp_offset = NULL; in esas2r_queuecommand()
865 sgc.num_sgel = scsi_dma_map(cmd); in esas2r_queuecommand()
866 sgc.sgel_count = 0; in esas2r_queuecommand()
868 if (unlikely(sgc.num_sgel < 0)) { in esas2r_queuecommand()
873 sgc.get_phys_addr = (PGETPHYSADDR)get_physaddr_from_sgc; in esas2r_queuecommand()
875 if (unlikely(!esas2r_build_sg_list(a, rq, &sgc))) { in esas2r_queuecommand()