Lines Matching refs:ic
150 icl_cxgbei_conn_pdu_free(struct icl_conn *ic, struct icl_pdu *ip) in icl_cxgbei_conn_pdu_free() argument
157 MPASS(ic == ip->ip_conn); in icl_cxgbei_conn_pdu_free()
165 if (__predict_true(ic != NULL)) in icl_cxgbei_conn_pdu_free()
166 refcount_release(&ic->ic_outstanding_pdus); in icl_cxgbei_conn_pdu_free()
207 icl_cxgbei_new_pdu_set_conn(struct icl_pdu *ip, struct icl_conn *ic) in icl_cxgbei_new_pdu_set_conn() argument
210 ip->ip_conn = ic; in icl_cxgbei_new_pdu_set_conn()
212 refcount_acquire(&ic->ic_outstanding_pdus); in icl_cxgbei_new_pdu_set_conn()
220 icl_cxgbei_conn_new_pdu(struct icl_conn *ic, int flags) in icl_cxgbei_conn_new_pdu() argument
227 icl_cxgbei_new_pdu_set_conn(ip, ic); in icl_cxgbei_conn_new_pdu()
247 icl_cxgbei_conn_pdu_data_segment_length(struct icl_conn *ic, in icl_cxgbei_conn_pdu_data_segment_length() argument
255 icl_conn_build_tasktag(struct icl_conn *ic, uint32_t tag) in icl_conn_build_tasktag() argument
311 refcount_release(&icc->ic.ic_outstanding_pdus); in finalize_pdu()
318 icl_cxgbei_conn_pdu_append_data(struct icl_conn *ic, struct icl_pdu *ip, in icl_cxgbei_conn_pdu_append_data() argument
327 MPASS(ic == ip->ip_conn); in icl_cxgbei_conn_pdu_append_data()
353 icl_cxgbei_conn_pdu_get_data(struct icl_conn *ic, struct icl_pdu *ip, in icl_cxgbei_conn_pdu_get_data() argument
364 icl_cxgbei_conn_pdu_queue(struct icl_conn *ic, struct icl_pdu *ip) in icl_cxgbei_conn_pdu_queue() argument
366 struct icl_cxgbei_conn *icc = ic_to_icc(ic); in icl_cxgbei_conn_pdu_queue()
368 struct socket *so = ic->ic_socket; in icl_cxgbei_conn_pdu_queue()
373 MPASS(ic == ip->ip_conn); in icl_cxgbei_conn_pdu_queue()
378 ICL_CONN_LOCK_ASSERT(ic); in icl_cxgbei_conn_pdu_queue()
380 if (ic->ic_disconnecting || so == NULL || !sowriteable(so)) { in icl_cxgbei_conn_pdu_queue()
381 icl_cxgbei_conn_pdu_free(ic, ip); in icl_cxgbei_conn_pdu_queue()
410 struct icl_conn *ic; in icl_cxgbei_new_conn() local
419 ic = &icc->ic; in icl_cxgbei_new_conn()
420 ic->ic_lock = lock; in icl_cxgbei_new_conn()
423 STAILQ_INIT(&ic->ic_to_send); in icl_cxgbei_new_conn()
424 cv_init(&ic->ic_send_cv, "icl_cxgbei_tx"); in icl_cxgbei_new_conn()
425 cv_init(&ic->ic_receive_cv, "icl_cxgbei_rx"); in icl_cxgbei_new_conn()
427 refcount_init(&ic->ic_outstanding_pdus, 0); in icl_cxgbei_new_conn()
429 ic->ic_max_data_segment_length = CXGBEI_MAX_DSL; in icl_cxgbei_new_conn()
430 ic->ic_name = name; in icl_cxgbei_new_conn()
431 ic->ic_offload = "cxgbei"; in icl_cxgbei_new_conn()
435 return (ic); in icl_cxgbei_new_conn()
439 icl_cxgbei_conn_free(struct icl_conn *ic) in icl_cxgbei_conn_free() argument
441 struct icl_cxgbei_conn *icc = ic_to_icc(ic); in icl_cxgbei_conn_free()
447 cv_destroy(&ic->ic_send_cv); in icl_cxgbei_conn_free()
448 cv_destroy(&ic->ic_receive_cv); in icl_cxgbei_conn_free()
455 icl_cxgbei_setsockopt(struct icl_conn *ic, struct socket *so) in icl_cxgbei_setsockopt() argument
470 minspace = sizeof(struct iscsi_bhs) + ic->ic_max_data_segment_length + in icl_cxgbei_setsockopt()
479 icl_cxgbei_conn_close(ic); in icl_cxgbei_setsockopt()
500 icl_cxgbei_conn_close(ic); in icl_cxgbei_setsockopt()
609 icl_cxgbei_conn_handoff(struct icl_conn *ic, int fd) in icl_cxgbei_conn_handoff() argument
611 struct icl_cxgbei_conn *icc = ic_to_icc(ic); in icl_cxgbei_conn_handoff()
622 ICL_CONN_LOCK_ASSERT_NOT(ic); in icl_cxgbei_conn_handoff()
642 ICL_CONN_LOCK(ic); in icl_cxgbei_conn_handoff()
643 if (ic->ic_socket != NULL) { in icl_cxgbei_conn_handoff()
644 ICL_CONN_UNLOCK(ic); in icl_cxgbei_conn_handoff()
648 ic->ic_disconnecting = false; in icl_cxgbei_conn_handoff()
649 ic->ic_socket = so; in icl_cxgbei_conn_handoff()
653 ICL_CONN_UNLOCK(ic); in icl_cxgbei_conn_handoff()
663 error = icl_cxgbei_setsockopt(ic, so); in icl_cxgbei_conn_handoff()
684 if (ic->ic_header_crc32c) in icl_cxgbei_conn_handoff()
686 if (ic->ic_data_crc32c) in icl_cxgbei_conn_handoff()
693 set_ulp_mode_iscsi(icc->sc, toep, ic->ic_header_crc32c, in icl_cxgbei_conn_handoff()
694 ic->ic_data_crc32c); in icl_cxgbei_conn_handoff()
703 icl_cxgbei_conn_close(struct icl_conn *ic) in icl_cxgbei_conn_close() argument
705 struct icl_cxgbei_conn *icc = ic_to_icc(ic); in icl_cxgbei_conn_close()
713 ICL_CONN_LOCK_ASSERT_NOT(ic); in icl_cxgbei_conn_close()
715 ICL_CONN_LOCK(ic); in icl_cxgbei_conn_close()
716 so = ic->ic_socket; in icl_cxgbei_conn_close()
717 if (ic->ic_disconnecting || so == NULL) { in icl_cxgbei_conn_close()
719 __func__, icc, ic->ic_disconnecting, so); in icl_cxgbei_conn_close()
720 ICL_CONN_UNLOCK(ic); in icl_cxgbei_conn_close()
723 ic->ic_disconnecting = true; in icl_cxgbei_conn_close()
726 MPASS(STAILQ_EMPTY(&ic->ic_to_send)); in icl_cxgbei_conn_close()
727 MPASS(ic->ic_receive_pdu == NULL); in icl_cxgbei_conn_close()
730 KASSERT(ic->ic_outstanding_pdus == 0, in icl_cxgbei_conn_close()
732 ic->ic_outstanding_pdus)); in icl_cxgbei_conn_close()
734 ICL_CONN_UNLOCK(ic); in icl_cxgbei_conn_close()
761 icl_cxgbei_conn_pdu_free(ic, ip); in icl_cxgbei_conn_close()
767 ICL_CONN_LOCK(ic); in icl_cxgbei_conn_close()
768 ic->ic_socket = NULL; in icl_cxgbei_conn_close()
769 ICL_CONN_UNLOCK(ic); in icl_cxgbei_conn_close()
780 icl_cxgbei_conn_task_setup(struct icl_conn *ic, struct ccb_scsiio *csio, in icl_cxgbei_conn_task_setup() argument
785 *task_tagp = icl_conn_build_tasktag(ic, *task_tagp); in icl_cxgbei_conn_task_setup()
793 cxgbei_conn_task_reserve_itt(ic, prvp, csio, task_tagp); in icl_cxgbei_conn_task_setup()
799 icl_cxgbei_conn_task_done(struct icl_conn *ic, void *prv) in icl_cxgbei_conn_task_done() argument
802 cxgbei_cleanup_task(ic, prv); in icl_cxgbei_conn_task_done()
807 icl_cxgbei_conn_transfer_setup(struct icl_conn *ic, union ctl_io *io, in icl_cxgbei_conn_transfer_setup() argument
812 *transfer_tag = icl_conn_build_tasktag(ic, *transfer_tag); in icl_cxgbei_conn_transfer_setup()
820 cxgbei_conn_transfer_reserve_ttt(ic, prvp, io, transfer_tag); in icl_cxgbei_conn_transfer_setup()
826 icl_cxgbei_conn_transfer_done(struct icl_conn *ic, void *prv) in icl_cxgbei_conn_transfer_done() argument
828 cxgbei_cleanup_task(ic, prv); in icl_cxgbei_conn_transfer_done()