Lines Matching defs:sgc
762 static u32 get_physaddr_from_sgc(struct esas2r_sg_context *sgc, u64 *addr)
766 if (likely(sgc->cur_offset == sgc->exp_offset)) {
772 if (sgc->sgel_count < sgc->num_sgel) {
774 if (sgc->exp_offset > (u8 *)0) {
776 sgc->cur_sgel = sg_next(sgc->cur_sgel);
777 ++(sgc->sgel_count);
781 len = sg_dma_len(sgc->cur_sgel);
782 (*addr) = sg_dma_address(sgc->cur_sgel);
785 sgc->exp_offset += len;
790 } else if (sgc->cur_offset < sgc->exp_offset) {
796 len = sg_dma_len(sgc->cur_sgel);
797 (*addr) = sg_dma_address(sgc->cur_sgel);
799 sgc->exp_offset -= len;
803 (sgc->cur_offset - sgc->exp_offset);
805 sgc->exp_offset += len;
809 sgc->exp_offset - sgc->cur_offset);
810 } else { /* if ( sgc->cur_offset > sgc->exp_offset ) */
826 struct esas2r_sg_context sgc;
861 esas2r_sgc_init(&sgc, a, rq, NULL);
863 sgc.length = bufflen;
864 sgc.cur_offset = NULL;
866 sgc.cur_sgel = scsi_sglist(cmd);
867 sgc.exp_offset = NULL;
868 sgc.num_sgel = scsi_dma_map(cmd);
869 sgc.sgel_count = 0;
871 if (unlikely(sgc.num_sgel < 0)) {
876 sgc.get_phys_addr = (PGETPHYSADDR)get_physaddr_from_sgc;
878 if (unlikely(!esas2r_build_sg_list(a, rq, &sgc))) {