Lines Matching refs:seq

54 static int32_t ocs_unsol_process(ocs_t *ocs, ocs_hw_sequence_t *seq);
55 static int32_t ocs_dispatch_fcp_cmd(ocs_node_t *node, ocs_hw_sequence_t *seq);
56 static int32_t ocs_dispatch_fcp_cmd_auto_xfer_rdy(ocs_node_t *node, ocs_hw_sequence_t *seq);
57 static int32_t ocs_dispatch_fcp_data(ocs_node_t *node, ocs_hw_sequence_t *seq);
58 static int32_t ocs_domain_dispatch_frame(void *arg, ocs_hw_sequence_t *seq);
59 static int32_t ocs_node_dispatch_frame(void *arg, ocs_hw_sequence_t *seq);
65 static int32_t ocs_sframe_send_task_set_full_or_busy(ocs_node_t *node, ocs_hw_sequence_t *seq);
81 ocs_hw_sequence_t *seq; in ocs_unsol_rq_thread() local
86 seq = ocs_cbuf_get(thread_data->seq_cbuf, 100000); in ocs_unsol_rq_thread()
87 if (seq == NULL) { in ocs_unsol_rq_thread()
94 ocs_unsol_process((ocs_t*)seq->hw->os, seq); in ocs_unsol_rq_thread()
159 ocs_unsolicited_cb(void *arg, ocs_hw_sequence_t *seq) in ocs_unsolicited_cb() argument
168 rc = ocs_unsol_process(ocs, seq); in ocs_unsolicited_cb()
171 fc_header_t *hdr = seq->header->dma.virt; in ocs_unsolicited_cb()
175 rc = ocs_cbuf_put(xport->rq_thread_info[thr_index].seq_cbuf, seq); in ocs_unsolicited_cb()
179 ocs_hw_sequence_free(&ocs->hw, seq); in ocs_unsolicited_cb()
198 ocs_unsol_process(ocs_t *ocs, ocs_hw_sequence_t *seq) in ocs_unsol_process() argument
202 uint8_t seq_fcfi = seq->fcfi; in ocs_unsol_process()
218 ocs_log_test(ocs, "FCFI %d is not valid, dropping frame\n", seq->fcfi); in ocs_unsol_process()
219 if (seq->hio != NULL) { in ocs_unsol_process()
220 ocs_port_owned_abort(ocs, seq->hio); in ocs_unsol_process()
223 ocs_hw_sequence_free(&ocs->hw, seq); in ocs_unsol_process()
237 ocs_list_add_tail(&xport_fcfi->pend_frames, seq); in ocs_unsol_process()
249 if (ocs_domain_dispatch_frame(domain, seq)) { in ocs_unsol_process()
250 if (seq->hio != NULL) { in ocs_unsol_process()
251 ocs_port_owned_abort(ocs, seq->hio); in ocs_unsol_process()
253 ocs_hw_sequence_free(&ocs->hw, seq); in ocs_unsol_process()
276 ocs_hw_sequence_t *seq = NULL; in ocs_process_node_pending() local
290 seq = ocs_list_remove_head(&node->pend_frames); in ocs_process_node_pending()
291 if (seq == NULL) { in ocs_process_node_pending()
301 if (ocs_node_dispatch_frame(node, seq)) { in ocs_process_node_pending()
302 if (seq->hio != NULL) { in ocs_process_node_pending()
303 ocs_port_owned_abort(ocs, seq->hio); in ocs_process_node_pending()
305 ocs_hw_sequence_free(&ocs->hw, seq); in ocs_process_node_pending()
335 ocs_hw_sequence_t *seq = NULL; in ocs_domain_process_pending() local
352 seq = ocs_list_remove_head(&xport_fcfi->pend_frames); in ocs_domain_process_pending()
353 if (seq == NULL) { in ocs_domain_process_pending()
363 if (ocs_domain_dispatch_frame(domain, seq)) { in ocs_domain_process_pending()
364 if (seq->hio != NULL) { in ocs_domain_process_pending()
365 ocs_port_owned_abort(ocs, seq->hio); in ocs_domain_process_pending()
367 ocs_hw_sequence_free(&ocs->hw, seq); in ocs_domain_process_pending()
572 ocs_domain_dispatch_frame(void *arg, ocs_hw_sequence_t *seq) in ocs_domain_dispatch_frame() argument
582 ocs_assert(seq->header, -1); in ocs_domain_dispatch_frame()
583 ocs_assert(seq->header->dma.virt, -1); in ocs_domain_dispatch_frame()
584 ocs_assert(seq->payload->dma.virt, -1); in ocs_domain_dispatch_frame()
586 hdr = seq->header->dma.virt; in ocs_domain_dispatch_frame()
642 ocs_list_add_tail(&node->pend_frames, seq); in ocs_domain_dispatch_frame()
649 return ocs_node_dispatch_frame(node, seq); in ocs_domain_dispatch_frame()
666 ocs_node_dispatch_frame(void *arg, ocs_hw_sequence_t *seq) in ocs_node_dispatch_frame() argument
669 fc_header_t *hdr = seq->header->dma.virt; in ocs_node_dispatch_frame()
686 rc = ocs_node_recv_els_frame(node, seq); in ocs_node_dispatch_frame()
692 rc = ocs_node_recv_abts_frame(node, seq); in ocs_node_dispatch_frame()
694 rc = ocs_node_recv_bls_no_sit(node, seq); in ocs_node_dispatch_frame()
704 rc = ocs_dispatch_fcp_cmd(node, seq); in ocs_node_dispatch_frame()
707 rc = ocs_dispatch_fcp_cmd_auto_xfer_rdy(node, seq); in ocs_node_dispatch_frame()
710 rc = ocs_node_recv_fcp_cmd(node, seq); in ocs_node_dispatch_frame()
714 rc = ocs_dispatch_fcp_data(node, seq); in ocs_node_dispatch_frame()
720 rc = ocs_node_recv_ct_frame(node, seq); in ocs_node_dispatch_frame()
788 ocs_validate_fcp_cmd(ocs_t *ocs, ocs_hw_sequence_t *seq) in ocs_validate_fcp_cmd() argument
791 fcp_cmnd_iu_t *cmnd = seq->payload->dma.virt; in ocs_validate_fcp_cmd()
799 if (seq->payload->dma.len < exp_payload_len) { in ocs_validate_fcp_cmd()
800 fc_header_t *fchdr = seq->header->dma.virt; in ocs_validate_fcp_cmd()
802 ocs_be16toh(fchdr->ox_id), seq->payload->dma.len, in ocs_validate_fcp_cmd()
880 ocs_dispatch_fcp_cmd(ocs_node_t *node, ocs_hw_sequence_t *seq) in ocs_dispatch_fcp_cmd() argument
883 fc_header_t *fchdr = seq->header->dma.virt; in ocs_dispatch_fcp_cmd()
891 ocs_assert(seq->payload, -1); in ocs_dispatch_fcp_cmd()
892 cmnd = seq->payload->dma.virt; in ocs_dispatch_fcp_cmd()
895 if (ocs_validate_fcp_cmd(ocs, seq)) { in ocs_dispatch_fcp_cmd()
911 rc = ocs_sframe_send_task_set_full_or_busy(node, seq); in ocs_dispatch_fcp_cmd()
921 io->hw_priv = seq->hw_priv; in ocs_dispatch_fcp_cmd()
959 ocs_hw_sequence_free(&ocs->hw, seq); in ocs_dispatch_fcp_cmd()
978 ocs_dispatch_fcp_cmd_auto_xfer_rdy(ocs_node_t *node, ocs_hw_sequence_t *seq) in ocs_dispatch_fcp_cmd_auto_xfer_rdy() argument
981 fc_header_t *fchdr = seq->header->dma.virt; in ocs_dispatch_fcp_cmd_auto_xfer_rdy()
987 ocs_assert(seq->payload, -1); in ocs_dispatch_fcp_cmd_auto_xfer_rdy()
988 cmnd = seq->payload->dma.virt; in ocs_dispatch_fcp_cmd_auto_xfer_rdy()
991 if (ocs_validate_fcp_cmd(ocs, seq)) { in ocs_dispatch_fcp_cmd_auto_xfer_rdy()
996 if (!seq->auto_xrdy) { in ocs_dispatch_fcp_cmd_auto_xfer_rdy()
1012 rc = ocs_sframe_send_task_set_full_or_busy(node, seq); in ocs_dispatch_fcp_cmd_auto_xfer_rdy()
1022 io->hw_priv = seq->hw_priv; in ocs_dispatch_fcp_cmd_auto_xfer_rdy()
1036 ocs_hw_io_activate_port_owned(&ocs->hw, seq->hio); in ocs_dispatch_fcp_cmd_auto_xfer_rdy()
1037 io->hio = seq->hio; in ocs_dispatch_fcp_cmd_auto_xfer_rdy()
1038 seq->hio->ul_io = io; in ocs_dispatch_fcp_cmd_auto_xfer_rdy()
1039 io->tgt_task_tag = seq->hio->indicator; in ocs_dispatch_fcp_cmd_auto_xfer_rdy()
1049 ocs_hw_sequence_free(&ocs->hw, seq); in ocs_dispatch_fcp_cmd_auto_xfer_rdy()
1069 ocs_dispatch_fcp_data(ocs_node_t *node, ocs_hw_sequence_t *seq) in ocs_dispatch_fcp_data() argument
1073 ocs_hw_io_t *hio = seq->hio; in ocs_dispatch_fcp_data()
1077 ocs_assert(seq->payload, -1); in ocs_dispatch_fcp_data()
1091 if (!ocs_hw_is_io_port_owned(hw, seq->hio)) { in ocs_dispatch_fcp_data()
1098 if (seq->status != OCS_HW_UNSOL_SUCCESS) { in ocs_dispatch_fcp_data()
1100 seq->status, hio->indicator); in ocs_dispatch_fcp_data()
1107 ocs_port_owned_abort(ocs, seq->hio); in ocs_dispatch_fcp_data()
1121 fburst[0] = seq->payload->dma; in ocs_dispatch_fcp_data()
1124 io->transferred = seq->payload->dma.len; in ocs_dispatch_fcp_data()
1133 ocs_hw_sequence_free(&ocs->hw, seq); in ocs_dispatch_fcp_data()
1204 ocs_hw_sequence_free(hw, ctx->seq); in ocs_sframe_common_send_cb()
1227 ocs_sframe_common_send(ocs_node_t *node, ocs_hw_sequence_t *seq, uint8_t r_ctl, uint8_t info, uint3… in ocs_sframe_common_send() argument
1233 fc_header_t *behdr = seq->header->dma.virt; in ocs_sframe_common_send()
1241 uint32_t heap_size = seq->payload->dma.size; in ocs_sframe_common_send()
1242 uintptr_t heap_phys_base = seq->payload->dma.phys; in ocs_sframe_common_send()
1243 uint8_t *heap_virt_base = seq->payload->dma.virt; in ocs_sframe_common_send()
1275 ctx->seq = seq; in ocs_sframe_common_send()
1311 ocs_sframe_send_fcp_rsp(ocs_node_t *node, ocs_hw_sequence_t *seq, void *rsp, uint32_t rsp_len) in ocs_sframe_send_fcp_rsp() argument
1313 return ocs_sframe_common_send(node, seq, in ocs_sframe_send_fcp_rsp()
1335 ocs_sframe_send_task_set_full_or_busy(ocs_node_t *node, ocs_hw_sequence_t *seq) in ocs_sframe_send_task_set_full_or_busy() argument
1338 fcp_cmnd_iu_t *fcpcmd = seq->payload->dma.virt; in ocs_sframe_send_task_set_full_or_busy()
1356 rc = ocs_sframe_send_fcp_rsp(node, seq, &fcprsp, sizeof(fcprsp) - sizeof(fcprsp.data)); in ocs_sframe_send_task_set_full_or_busy()
1374 ocs_sframe_send_bls_acc(ocs_node_t *node, ocs_hw_sequence_t *seq) in ocs_sframe_send_bls_acc() argument
1376 fc_header_t *behdr = seq->header->dma.virt; in ocs_sframe_send_bls_acc()
1386 return ocs_sframe_common_send(node, seq, in ocs_sframe_send_bls_acc()