Lines Matching refs:rctxt
422 static bool xdr_count_read_segments(struct svc_rdma_recv_ctxt *rctxt, __be32 *p) in xdr_count_read_segments() argument
424 rctxt->rc_call_pcl.cl_count = 0; in xdr_count_read_segments()
425 rctxt->rc_read_pcl.cl_count = 0; in xdr_count_read_segments()
430 p = xdr_inline_decode(&rctxt->rc_stream, in xdr_count_read_segments()
440 ++rctxt->rc_read_pcl.cl_count; in xdr_count_read_segments()
442 ++rctxt->rc_call_pcl.cl_count; in xdr_count_read_segments()
445 p = xdr_inline_decode(&rctxt->rc_stream, sizeof(*p)); in xdr_count_read_segments()
464 static bool xdr_check_read_list(struct svc_rdma_recv_ctxt *rctxt) in xdr_check_read_list() argument
468 p = xdr_inline_decode(&rctxt->rc_stream, sizeof(*p)); in xdr_check_read_list()
471 if (!xdr_count_read_segments(rctxt, p)) in xdr_check_read_list()
473 if (!pcl_alloc_call(rctxt, p)) in xdr_check_read_list()
475 return pcl_alloc_read(rctxt, p); in xdr_check_read_list()
478 static bool xdr_check_write_chunk(struct svc_rdma_recv_ctxt *rctxt) in xdr_check_write_chunk() argument
483 if (xdr_stream_decode_u32(&rctxt->rc_stream, &segcount)) in xdr_check_write_chunk()
487 p = xdr_inline_decode(&rctxt->rc_stream, in xdr_check_write_chunk()
507 static bool xdr_count_write_chunks(struct svc_rdma_recv_ctxt *rctxt, __be32 *p) in xdr_count_write_chunks() argument
509 rctxt->rc_write_pcl.cl_count = 0; in xdr_count_write_chunks()
511 if (!xdr_check_write_chunk(rctxt)) in xdr_count_write_chunks()
513 ++rctxt->rc_write_pcl.cl_count; in xdr_count_write_chunks()
514 p = xdr_inline_decode(&rctxt->rc_stream, sizeof(*p)); in xdr_count_write_chunks()
536 static bool xdr_check_write_list(struct svc_rdma_recv_ctxt *rctxt) in xdr_check_write_list() argument
540 p = xdr_inline_decode(&rctxt->rc_stream, sizeof(*p)); in xdr_check_write_list()
543 if (!xdr_count_write_chunks(rctxt, p)) in xdr_check_write_list()
545 if (!pcl_alloc_write(rctxt, &rctxt->rc_write_pcl, p)) in xdr_check_write_list()
548 rctxt->rc_cur_result_payload = pcl_first_chunk(&rctxt->rc_write_pcl); in xdr_check_write_list()
564 static bool xdr_check_reply_chunk(struct svc_rdma_recv_ctxt *rctxt) in xdr_check_reply_chunk() argument
568 p = xdr_inline_decode(&rctxt->rc_stream, sizeof(*p)); in xdr_check_reply_chunk()
574 if (!xdr_check_write_chunk(rctxt)) in xdr_check_reply_chunk()
577 rctxt->rc_reply_pcl.cl_count = 1; in xdr_check_reply_chunk()
578 return pcl_alloc_write(rctxt, &rctxt->rc_reply_pcl, p); in xdr_check_reply_chunk()
653 struct svc_rdma_recv_ctxt *rctxt) in svc_rdma_xdr_decode_req() argument
659 xdr_init_decode(&rctxt->rc_stream, rq_arg, rdma_argp, NULL); in svc_rdma_xdr_decode_req()
661 p = xdr_inline_decode(&rctxt->rc_stream, in svc_rdma_xdr_decode_req()
669 rctxt->rc_msgtype = *p; in svc_rdma_xdr_decode_req()
670 switch (rctxt->rc_msgtype) { in svc_rdma_xdr_decode_req()
683 if (!xdr_check_read_list(rctxt)) in svc_rdma_xdr_decode_req()
685 if (!xdr_check_write_list(rctxt)) in svc_rdma_xdr_decode_req()
687 if (!xdr_check_reply_chunk(rctxt)) in svc_rdma_xdr_decode_req()
690 rq_arg->head[0].iov_base = rctxt->rc_stream.p; in svc_rdma_xdr_decode_req()
691 hdr_len = xdr_stream_pos(&rctxt->rc_stream); in svc_rdma_xdr_decode_req()
694 trace_svcrdma_decode_rqst(rctxt, rdma_argp, hdr_len); in svc_rdma_xdr_decode_req()
698 trace_svcrdma_decode_short_err(rctxt, rq_arg->len); in svc_rdma_xdr_decode_req()
702 trace_svcrdma_decode_badvers_err(rctxt, rdma_argp); in svc_rdma_xdr_decode_req()
706 trace_svcrdma_decode_drop_err(rctxt, rdma_argp); in svc_rdma_xdr_decode_req()
710 trace_svcrdma_decode_badproc_err(rctxt, rdma_argp); in svc_rdma_xdr_decode_req()
714 trace_svcrdma_decode_parse_err(rctxt, rdma_argp); in svc_rdma_xdr_decode_req()
719 struct svc_rdma_recv_ctxt *rctxt, in svc_rdma_send_error() argument
727 svc_rdma_send_error_msg(rdma, sctxt, rctxt, status); in svc_rdma_send_error()
736 struct svc_rdma_recv_ctxt *rctxt) in svc_rdma_is_reverse_direction_reply() argument
738 __be32 *p = rctxt->rc_recv_buf; in svc_rdma_is_reverse_direction_reply()
743 if (rctxt->rc_msgtype != rdma_msg) in svc_rdma_is_reverse_direction_reply()
746 if (!pcl_is_empty(&rctxt->rc_call_pcl)) in svc_rdma_is_reverse_direction_reply()
748 if (!pcl_is_empty(&rctxt->rc_read_pcl)) in svc_rdma_is_reverse_direction_reply()
750 if (!pcl_is_empty(&rctxt->rc_write_pcl)) in svc_rdma_is_reverse_direction_reply()
752 if (!pcl_is_empty(&rctxt->rc_reply_pcl)) in svc_rdma_is_reverse_direction_reply()