• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-12-stable/sys/dev/ocs_fc/

Lines Matching refs:xport

68 	ocs_xport_t *xport;
71 xport = ocs_malloc(ocs, sizeof(*xport), OCS_M_ZERO);
72 if (xport != NULL) {
73 xport->ocs = ocs;
75 return xport;
84 * @param xport Pointer to transport object
89 ocs_xport_rq_threads_teardown(ocs_xport_t *xport)
91 ocs_t *ocs = xport->ocs;
94 if (xport->num_rq_threads == 0 ||
95 xport->rq_thread_info == NULL) {
100 for (i = 0; i < xport->num_rq_threads; i++) {
101 if (xport->rq_thread_info[i].thread_started) {
102 ocs_thread_terminate(&xport->rq_thread_info[i].thread);
105 while (xport->rq_thread_info[i].thread_started) {
110 if (xport->rq_thread_info[i].seq_cbuf != NULL) {
111 ocs_cbuf_free(xport->rq_thread_info[i].seq_cbuf);
112 xport->rq_thread_info[i].seq_cbuf = NULL;
123 * @param xport Pointer to transport object.
130 ocs_xport_rq_threads_create(ocs_xport_t *xport, uint32_t num_rq_threads)
132 ocs_t *ocs = xport->ocs;
136 xport->num_rq_threads = num_rq_threads;
143 xport->rq_thread_info = ocs_malloc(ocs, sizeof(ocs_xport_rq_thread_info_t) * num_rq_threads, OCS_M_ZERO);
144 if (xport->rq_thread_info == NULL) {
151 xport->rq_thread_info[i].ocs = ocs;
152 xport->rq_thread_info[i].seq_cbuf = ocs_cbuf_alloc(ocs, OCS_HW_RQ_NUM_HDR);
153 if (xport->rq_thread_info[i].seq_cbuf == NULL) {
157 ocs_snprintf(xport->rq_thread_info[i].thread_name,
158 sizeof(xport->rq_thread_info[i].thread_name),
160 rc = ocs_thread_create(ocs, &xport->rq_thread_info[i].thread, ocs_unsol_rq_thread,
161 xport->rq_thread_info[i].thread_name,
162 &xport->rq_thread_info[i], OCS_THREAD_RUN);
167 xport->rq_thread_info[i].thread_started = TRUE;
172 ocs_xport_rq_threads_teardown(xport);
182 * @param xport Pointer to transport object.
187 ocs_xport_attach(ocs_xport_t *xport)
189 ocs_t *ocs = xport->ocs;
205 xport->fcfi[i].hold_frames = 1;
206 ocs_lock_init(ocs, &xport->fcfi[i].pend_frames_lock, "xport pend_frames[%d]", i);
207 ocs_list_init(&xport->fcfi[i].pend_frames, ocs_hw_sequence_t, link);
266 xport->io_pool = ocs_io_pool_create(ocs, ocs->num_scsi_ios,
268 if (xport->io_pool == NULL) {
278 if (ocs_xport_rq_threads_create(xport, ocs->rq_threads) != 0) {
288 ocs_io_pool_free(xport->io_pool);
296 ocs_xport_rq_threads_teardown(xport);
306 * @param xport Pointer to transport object.
311 ocs_xport_initialize_auto_xfer_ready(ocs_xport_t *xport)
313 ocs_t *ocs = xport->ocs;
384 * @param xport Pointer to transport object.
389 ocs_xport_initialize(ocs_xport_t *xport)
391 ocs_t *ocs = xport->ocs;
441 if (ocs_xport_initialize_auto_xfer_ready(xport)) {
511 ocs_list_init(&xport->vport_list, ocs_vport_spec_t, link);
512 ocs_lock_init(ocs, &xport->io_pending_lock, "io_pending_lock[%d]", ocs->instance_index);
513 ocs_list_init(&xport->io_pending_list, ocs_io_t, io_pending_link);
514 ocs_atomic_init(&xport->io_active_count, 0);
515 ocs_atomic_init(&xport->io_pending_count, 0);
516 ocs_atomic_init(&xport->io_total_free, 0);
517 ocs_atomic_init(&xport->io_total_pending, 0);
518 ocs_atomic_init(&xport->io_alloc_failed_count, 0);
519 ocs_atomic_init(&xport->io_pending_recursing, 0);
597 * @param xport Pointer to transport object.
602 ocs_xport_detach(ocs_xport_t *xport)
604 ocs_t *ocs = xport->ocs;
614 if (ocs_timer_pending(&ocs->xport->stats_timer))
615 ocs_del_timer(&ocs->xport->stats_timer);
683 * @param xport Pointer to transport object.
689 ocs_xport_force_free(ocs_xport_t *xport)
691 ocs_t *ocs = xport->ocs;
710 * @param xport pointer to transport object.
713 * ocs_xport_control(ocs_xport_t *xport, OCS_XPORT_PORT_ONLINE)
714 * ocs_xport_control(ocs_xport_t *xport, OCS_XPORT_PORT_OFFLINE)
715 * ocs_xport_control(ocs_xport_t *xport, OCS_XPORT_PORT_SHUTDOWN)
716 * ocs_xport_control(ocs_xport_t *xport, OCS_XPORT_POST_NODE_EVENT, ocs_node_t *node, ocs_sm_event_t, void *context)
722 ocs_xport_control(ocs_xport_t *xport, ocs_xport_ctrl_e cmd, ...)
728 ocs_assert(xport, -1);
729 ocs_assert(xport->ocs, -1);
730 ocs = xport->ocs;
739 xport->configured_link_state = cmd;
747 xport->configured_link_state = cmd;
766 ocs_xport_force_free(xport);
774 ocs_xport_force_free(xport);
781 ocs_xport_force_free(xport);
863 xport->req_wwnn = wwnn;
879 xport->req_wwpn = wwpn;
897 * @param xport Pointer to transport object.
901 * ocs_xport_status(ocs_xport_t *xport, OCS_XPORT_PORT_STATUS)
902 * ocs_xport_status(ocs_xport_t *xport, OCS_XPORT_LINK_SPEED, ocs_xport_stats_t *result)
904 * ocs_xport_status(ocs_xport_t *xport, OCS_XPORT_IS_SUPPORTED_LINK_SPEED, ocs_xport_stats_t *result)
907 * ocs_xport_status(ocs_xport_t *xport, OCS_XPORT_LINK_STATISTICS, ocs_xport_stats_t *result)
909 * ocs_xport_status(ocs_xport_t *xport, OCS_XPORT_LINK_STAT_RESET, ocs_xport_stats_t *result)
917 ocs_xport_status(ocs_xport_t *xport, ocs_xport_status_e cmd, ocs_xport_stats_t *result)
924 ocs_assert(xport, -1);
925 ocs_assert(xport->ocs, -1);
927 ocs = xport->ocs;
932 if (xport->configured_link_state == 0) {
935 xport->configured_link_state = OCS_XPORT_PORT_OFFLINE;
937 result->value = xport->configured_link_state;
995 ocs_memcpy((void *)result, &ocs->xport->fc_xport_stats, sizeof(ocs_xport_stats_t));
1081 * @param xport Pointer to transport object.
1087 ocs_xport_free(ocs_xport_t *xport)
1092 if (xport) {
1093 ocs = xport->ocs;
1094 ocs_io_pool_free(xport->io_pool);
1096 if(mtx_initialized(&xport->io_pending_lock.lock))
1097 ocs_lock_free(&xport->io_pending_lock);
1100 ocs_lock_free(&xport->fcfi[i].pend_frames_lock);
1103 ocs_xport_rq_threads_teardown(xport);
1105 ocs_free(ocs, xport, sizeof(*xport));