Lines Matching refs:icmd
422 static void fcp_ipkt_sema_init(struct fcp_ipkt *icmd);
423 static int fcp_ipkt_sema_wait(struct fcp_ipkt *icmd);
425 static void fcp_ipkt_sema_cleanup(struct fcp_ipkt *icmd);
435 struct fcp_ipkt *icmd, uchar_t opcode, int lcount, int tcount, int cause);
448 static void fcp_icmd_free(struct fcp_port *pptr, struct fcp_ipkt *icmd);
449 static int fcp_alloc_dma(struct fcp_port *pptr, struct fcp_ipkt *icmd,
451 static void fcp_free_dma(struct fcp_port *pptr, struct fcp_ipkt *icmd);
462 static void fcp_handle_inquiry(fc_packet_t *fpkt, struct fcp_ipkt *icmd);
463 static void fcp_handle_reportlun(fc_packet_t *fpkt, struct fcp_ipkt *icmd);
576 static int fcp_is_retryable(struct fcp_ipkt *icmd);
582 struct fcp_tgt *ptgt, struct fcp_ipkt *icmd, int rval, caddr_t op);
2297 struct fcp_ipkt *icmd = NULL; in fcp_send_scsi_ioctl() local
2555 icmd = fcp_icmd_alloc(pptr, ptgt, in fcp_send_scsi_ioctl()
2565 if (icmd == NULL) { in fcp_send_scsi_ioctl()
2571 fcp_ipkt_sema_init(icmd); in fcp_send_scsi_ioctl()
2580 fpkt = icmd->ipkt_fpkt; in fcp_send_scsi_ioctl()
2612 icmd->ipkt_lun = plun; in fcp_send_scsi_ioctl()
2613 icmd->ipkt_restart = 0; in fcp_send_scsi_ioctl()
2614 icmd->ipkt_retries = 0; in fcp_send_scsi_ioctl()
2615 icmd->ipkt_opcode = 0; in fcp_send_scsi_ioctl()
2655 if (!FCP_TGT_STATE_CHANGED(ptgt, icmd)) { in fcp_send_scsi_ioctl()
2676 ret = fcp_ipkt_sema_wait(icmd); in fcp_send_scsi_ioctl()
2830 if (icmd != NULL) { in fcp_send_scsi_ioctl()
2831 fcp_ipkt_sema_cleanup(icmd); in fcp_send_scsi_ioctl()
3281 struct fcp_ipkt *icmd; in fcp_tgt_send_plogi() local
3297 icmd = fcp_icmd_alloc(pptr, ptgt, sizeof (la_els_logi_t), in fcp_tgt_send_plogi()
3302 if (icmd == NULL) { in fcp_tgt_send_plogi()
3308 fcp_ipkt_sema_init(icmd); in fcp_tgt_send_plogi()
3313 icmd->ipkt_lun = NULL; in fcp_tgt_send_plogi()
3314 icmd->ipkt_restart = 0; in fcp_tgt_send_plogi()
3315 icmd->ipkt_retries = 0; in fcp_tgt_send_plogi()
3316 icmd->ipkt_opcode = LA_ELS_PLOGI; in fcp_tgt_send_plogi()
3321 fpkt = icmd->ipkt_fpkt; in fcp_tgt_send_plogi()
3368 ret = fcp_ipkt_sema_wait(icmd); in fcp_tgt_send_plogi()
3380 if (icmd != NULL) { in fcp_tgt_send_plogi()
3381 fcp_ipkt_sema_cleanup(icmd); in fcp_tgt_send_plogi()
3421 fcp_ipkt_sema_init(struct fcp_ipkt *icmd) in fcp_ipkt_sema_init() argument
3425 fpkt = icmd->ipkt_fpkt; in fcp_ipkt_sema_init()
3428 sema_init(&(icmd->ipkt_sema), 0, NULL, SEMA_DRIVER, NULL); in fcp_ipkt_sema_init()
3453 fcp_ipkt_sema_wait(struct fcp_ipkt *icmd) in fcp_ipkt_sema_wait() argument
3459 fpkt = icmd->ipkt_fpkt; in fcp_ipkt_sema_wait()
3464 sema_p(&(icmd->ipkt_sema)); in fcp_ipkt_sema_wait()
3530 struct fcp_ipkt *icmd; in fcp_ipkt_sema_callback() local
3532 icmd = (struct fcp_ipkt *)fpkt->pkt_ulp_private; in fcp_ipkt_sema_callback()
3537 sema_v(&(icmd->ipkt_sema)); in fcp_ipkt_sema_callback()
3555 fcp_ipkt_sema_cleanup(struct fcp_ipkt *icmd) in fcp_ipkt_sema_cleanup() argument
3560 ptgt = icmd->ipkt_tgt; in fcp_ipkt_sema_cleanup()
3561 pptr = icmd->ipkt_port; in fcp_ipkt_sema_cleanup()
3571 sema_destroy(&(icmd->ipkt_sema)); in fcp_ipkt_sema_cleanup()
3577 fcp_icmd_free(pptr, icmd); in fcp_ipkt_sema_cleanup()
4943 struct fcp_ipkt *icmd; in fcp_handle_mapflags() local
5101 icmd = fcp_icmd_alloc(pptr, ptgt, alloc, alloc, 0, in fcp_handle_mapflags()
5105 if (icmd == NULL) { in fcp_handle_mapflags()
5118 if ((fcp_send_els(pptr, ptgt, icmd, opcode, in fcp_handle_mapflags()
5122 fcp_icmd_free(pptr, icmd); in fcp_handle_mapflags()
5149 struct fcp_ipkt *icmd, uchar_t opcode, int lcount, int tcount, int cause) in fcp_send_els() argument
5177 if (icmd == NULL) { in fcp_send_els()
5180 icmd = fcp_icmd_alloc(pptr, ptgt, alloc, alloc, 0, in fcp_send_els()
5183 if (icmd == NULL) { in fcp_send_els()
5189 fpkt = icmd->ipkt_fpkt; in fcp_send_els()
5194 icmd->ipkt_retries = 0; in fcp_send_els()
5243 icmd->ipkt_opcode = LA_ELS_PLOGI; in fcp_send_els()
5246 if (!FCP_TGT_STATE_CHANGED(ptgt, icmd)) { in fcp_send_els()
5258 res = fcp_handle_ipkt_errors(pptr, ptgt, icmd, in fcp_send_els()
5285 icmd->ipkt_opcode = LA_ELS_PRLI; in fcp_send_els()
5320 if (!FCP_TGT_STATE_CHANGED(ptgt, icmd)) { in fcp_send_els()
5332 res = fcp_handle_ipkt_errors(pptr, ptgt, icmd, in fcp_send_els()
5352 fcp_icmd_free(pptr, icmd); in fcp_send_els()
5552 struct fcp_ipkt *icmd = (struct fcp_ipkt *)fpkt->pkt_ulp_private; in fcp_unsol_callback() local
5553 struct fcp_port *pptr = icmd->ipkt_port; in fcp_unsol_callback()
5567 fcp_icmd_free(pptr, icmd); in fcp_unsol_callback()
5603 struct fcp_ipkt *icmd; in fcp_unsol_prli() local
5623 if ((icmd = fcp_icmd_alloc(pptr, ptgt, sizeof (la_els_prli_t), in fcp_unsol_prli()
5630 fpkt = icmd->ipkt_fpkt; in fcp_unsol_prli()
5638 icmd->ipkt_opcode = LA_ELS_PRLI; in fcp_unsol_prli()
5681 if (!FCP_LINK_STATE_CHANGED(pptr, icmd)) { in fcp_unsol_prli()
5693 fcp_icmd_free(pptr, icmd); in fcp_unsol_prli()
5698 fcp_icmd_free(pptr, icmd); in fcp_unsol_prli()
5740 struct fcp_ipkt *icmd = NULL; in fcp_icmd_alloc() local
5742 icmd = kmem_zalloc(sizeof (struct fcp_ipkt) + in fcp_icmd_alloc()
5745 if (icmd == NULL) { in fcp_icmd_alloc()
5754 icmd->ipkt_nodma = nodma; in fcp_icmd_alloc()
5755 icmd->ipkt_next = icmd->ipkt_prev = NULL; in fcp_icmd_alloc()
5756 icmd->ipkt_lun = NULL; in fcp_icmd_alloc()
5758 icmd->ipkt_link_cnt = lcount; in fcp_icmd_alloc()
5759 icmd->ipkt_change_cnt = tcount; in fcp_icmd_alloc()
5760 icmd->ipkt_cause = cause; in fcp_icmd_alloc()
5763 icmd->ipkt_port = pptr; in fcp_icmd_alloc()
5767 icmd->ipkt_cmdlen = cmd_len; in fcp_icmd_alloc()
5768 icmd->ipkt_resplen = resp_len; in fcp_icmd_alloc()
5769 icmd->ipkt_datalen = data_len; in fcp_icmd_alloc()
5772 icmd->ipkt_fpkt = (fc_packet_t *)(&icmd->ipkt_fc_packet); in fcp_icmd_alloc()
5775 icmd->ipkt_fpkt->pkt_ulp_private = (opaque_t)icmd; in fcp_icmd_alloc()
5778 icmd->ipkt_fpkt->pkt_fca_private = (opaque_t) in fcp_icmd_alloc()
5779 ((char *)icmd + sizeof (struct fcp_ipkt) + in fcp_icmd_alloc()
5783 fpkt = icmd->ipkt_fpkt; in fcp_icmd_alloc()
5784 fpkt->pkt_data_cookie = (ddi_dma_cookie_t *)((caddr_t)icmd + in fcp_icmd_alloc()
5788 icmd->ipkt_tgt = ptgt; in fcp_icmd_alloc()
5829 if (fcp_alloc_dma(pptr, icmd, nodma, KM_NOSLEEP) != FC_SUCCESS) { in fcp_icmd_alloc()
5886 return (icmd); in fcp_icmd_alloc()
5896 fcp_free_dma(pptr, icmd); in fcp_icmd_alloc()
5898 kmem_free(icmd, sizeof (struct fcp_ipkt) + pptr->port_priv_pkt_len + in fcp_icmd_alloc()
5915 fcp_icmd_free(struct fcp_port *pptr, struct fcp_ipkt *icmd) in fcp_icmd_free() argument
5917 struct fcp_tgt *ptgt = icmd->ipkt_tgt; in fcp_icmd_free()
5921 icmd->ipkt_fpkt); in fcp_icmd_free()
5923 if (icmd->ipkt_fpkt->pkt_ulp_rscn_infop) { in fcp_icmd_free()
5924 kmem_free(icmd->ipkt_fpkt->pkt_ulp_rscn_infop, in fcp_icmd_free()
5928 fcp_free_dma(pptr, icmd); in fcp_icmd_free()
5930 kmem_free(icmd, sizeof (struct fcp_ipkt) + pptr->port_priv_pkt_len + in fcp_icmd_free()
5960 fcp_alloc_dma(struct fcp_port *pptr, struct fcp_ipkt *icmd, in fcp_alloc_dma() argument
5973 fpkt = &icmd->ipkt_fc_packet; in fcp_alloc_dma()
5978 icmd->ipkt_nodma = nodma; in fcp_alloc_dma()
6098 fcp_free_dma(struct fcp_port *pptr, struct fcp_ipkt *icmd) in fcp_free_dma() argument
6100 fc_packet_t *fpkt = icmd->ipkt_fpkt; in fcp_free_dma()
6117 if (icmd->ipkt_nodma) { in fcp_free_dma()
6119 kmem_free(fpkt->pkt_cmd, icmd->ipkt_cmdlen); in fcp_free_dma()
6122 kmem_free(fpkt->pkt_resp, icmd->ipkt_resplen); in fcp_free_dma()
6203 struct fcp_ipkt *icmd; in fcp_icmd_callback() local
6217 icmd = (struct fcp_ipkt *)fpkt->pkt_ulp_private; in fcp_icmd_callback()
6220 pptr = icmd->ipkt_port; in fcp_icmd_callback()
6221 ptgt = icmd->ipkt_tgt; in fcp_icmd_callback()
6225 if (icmd->ipkt_opcode == LA_ELS_PRLI) { in fcp_icmd_callback()
6234 icmd->ipkt_opcode, fpkt->pkt_state, fpkt->pkt_reason, in fcp_icmd_callback()
6255 switch (icmd->ipkt_opcode) { in fcp_icmd_callback()
6264 FCP_TGT_TRACE(ptgt, icmd->ipkt_change_cnt, in fcp_icmd_callback()
6268 if (fcp_send_els(pptr, ptgt, icmd, LA_ELS_PRLI, in fcp_icmd_callback()
6269 icmd->ipkt_link_cnt, icmd->ipkt_change_cnt, in fcp_icmd_callback()
6270 icmd->ipkt_cause) != DDI_SUCCESS) { in fcp_icmd_callback()
6271 FCP_TGT_TRACE(ptgt, icmd->ipkt_change_cnt, in fcp_icmd_callback()
6282 FCP_TGT_TRACE(ptgt, icmd->ipkt_change_cnt, in fcp_icmd_callback()
6301 FCP_TGT_TRACE(ptgt, icmd->ipkt_change_cnt, in fcp_icmd_callback()
6313 if (!FCP_TGT_STATE_CHANGED(ptgt, icmd)) { in fcp_icmd_callback()
6370 if (icmd->ipkt_fpkt->pkt_ulp_rscn_infop != NULL) { in fcp_icmd_callback()
6372 (icmd->ipkt_fpkt->pkt_ulp_rscn_infop)) in fcp_icmd_callback()
6381 icmd->ipkt_link_cnt, icmd->ipkt_change_cnt, in fcp_icmd_callback()
6382 icmd->ipkt_cause, rscn_count) != DDI_SUCCESS) { in fcp_icmd_callback()
6384 if (!FCP_TGT_STATE_CHANGED(ptgt, icmd)) { in fcp_icmd_callback()
6398 FCP_TGT_TRACE(ptgt, icmd->ipkt_change_cnt, in fcp_icmd_callback()
6404 fcp_icmd_free(pptr, icmd); in fcp_icmd_callback()
6422 if (icmd->ipkt_opcode != LA_ELS_PLOGI) { in fcp_icmd_callback()
6423 if (fcp_is_retryable(icmd) && in fcp_icmd_callback()
6424 icmd->ipkt_retries++ < FCP_MAX_RETRIES) { in fcp_icmd_callback()
6442 if (!FCP_TGT_STATE_CHANGED(ptgt, icmd)) { in fcp_icmd_callback()
6447 ASSERT(icmd->ipkt_opcode != LA_ELS_PLOGI); in fcp_icmd_callback()
6469 " %s", icmd->ipkt_opcode, in fcp_icmd_callback()
6480 if (fcp_is_retryable(icmd) && in fcp_icmd_callback()
6481 icmd->ipkt_retries++ < FCP_MAX_RETRIES) { in fcp_icmd_callback()
6488 if (!FCP_TGT_STATE_CHANGED(ptgt, icmd) && in fcp_icmd_callback()
6503 (void) fcp_call_finish_init(pptr, ptgt, icmd->ipkt_link_cnt, in fcp_icmd_callback()
6504 icmd->ipkt_change_cnt, icmd->ipkt_cause); in fcp_icmd_callback()
6505 fcp_icmd_free(pptr, icmd); in fcp_icmd_callback()
6522 struct fcp_ipkt *icmd; in fcp_send_scsi() local
6544 icmd = fcp_icmd_alloc(pptr, ptgt, sizeof (struct fcp_cmd), in fcp_send_scsi()
6548 if (icmd == NULL) { in fcp_send_scsi()
6552 fpkt = icmd->ipkt_fpkt; in fcp_send_scsi()
6554 icmd->ipkt_retries = 0; in fcp_send_scsi()
6555 icmd->ipkt_opcode = opcode; in fcp_send_scsi()
6556 icmd->ipkt_lun = plun; in fcp_send_scsi()
6671 if (!FCP_TGT_STATE_CHANGED(ptgt, icmd)) { in fcp_send_scsi()
6676 fcp_icmd_free(pptr, icmd); in fcp_send_scsi()
6686 fcp_icmd_free(pptr, icmd); in fcp_send_scsi()
6702 struct fcp_ipkt *icmd = (struct fcp_ipkt *) in fcp_check_reportlun() local
6704 struct fcp_tgt *ptgt = icmd->ipkt_tgt; in fcp_check_reportlun()
6707 ASSERT(icmd->ipkt_opcode == SCMD_REPORT_LUN); in fcp_check_reportlun()
6714 if (icmd->ipkt_nodma) { in fcp_check_reportlun()
6753 if (icmd->ipkt_nodma) { in fcp_check_reportlun()
6777 if (icmd->ipkt_nodma) { in fcp_check_reportlun()
6807 if (icmd->ipkt_nodma) { in fcp_check_reportlun()
6902 struct fcp_ipkt *icmd = (struct fcp_ipkt *) in fcp_scsi_callback() local
6910 ptgt = icmd->ipkt_tgt; in fcp_scsi_callback()
6912 plun = icmd->ipkt_lun; in fcp_scsi_callback()
6914 if (icmd->ipkt_nodma) { in fcp_scsi_callback()
6926 fpkt->pkt_state, ptgt->tgt_d_id, icmd->ipkt_opcode, in fcp_scsi_callback()
6937 (icmd->ipkt_opcode == SCMD_INQUIRY_PAGE83) && in fcp_scsi_callback()
6955 (icmd->ipkt_opcode == SCMD_REPORT_LUN)) { in fcp_scsi_callback()
6970 if (icmd->ipkt_opcode == SCMD_INQUIRY_PAGE83) { in fcp_scsi_callback()
6971 (void) fcp_handle_page83(fpkt, icmd, 1); in fcp_scsi_callback()
6982 FCP_TGT_TRACE(ptgt, icmd->ipkt_change_cnt, in fcp_scsi_callback()
6987 if (!FCP_STATE_CHANGED(pptr, ptgt, icmd)) { in fcp_scsi_callback()
6999 (void) fcp_call_finish_init(pptr, ptgt, icmd->ipkt_link_cnt, in fcp_scsi_callback()
7000 icmd->ipkt_change_cnt, icmd->ipkt_cause); in fcp_scsi_callback()
7001 fcp_icmd_free(pptr, icmd); in fcp_scsi_callback()
7005 FCP_TGT_TRACE(ptgt, icmd->ipkt_change_cnt, FCP_TGT_TRACE_21); in fcp_scsi_callback()
7009 if (FCP_STATE_CHANGED(pptr, ptgt, icmd)) { in fcp_scsi_callback()
7016 (void) fcp_call_finish_init(pptr, ptgt, icmd->ipkt_link_cnt, in fcp_scsi_callback()
7017 icmd->ipkt_change_cnt, icmd->ipkt_cause); in fcp_scsi_callback()
7018 fcp_icmd_free(pptr, icmd); in fcp_scsi_callback()
7026 if (icmd->ipkt_nodma) { in fcp_scsi_callback()
7063 if ((icmd->ipkt_opcode == SCMD_INQUIRY_PAGE83) && in fcp_scsi_callback()
7089 (void) fcp_handle_page83(fpkt, icmd, 1); in fcp_scsi_callback()
7099 icmd->ipkt_link_cnt, icmd->ipkt_change_cnt, in fcp_scsi_callback()
7100 icmd->ipkt_cause); in fcp_scsi_callback()
7101 fcp_icmd_free(pptr, icmd); in fcp_scsi_callback()
7113 if (icmd->ipkt_opcode == SCMD_REPORT_LUN) { in fcp_scsi_callback()
7121 if (rval == DDI_SUCCESS && icmd->ipkt_nodma == 0) { in fcp_scsi_callback()
7133 icmd->ipkt_link_cnt, icmd->ipkt_change_cnt, in fcp_scsi_callback()
7134 icmd->ipkt_cause); in fcp_scsi_callback()
7135 fcp_icmd_free(pptr, icmd); in fcp_scsi_callback()
7143 if (icmd->ipkt_opcode == SCMD_REPORT_LUN) { in fcp_scsi_callback()
7156 switch (icmd->ipkt_opcode) { in fcp_scsi_callback()
7159 fcp_handle_inquiry(fpkt, icmd); in fcp_scsi_callback()
7163 FCP_TGT_TRACE(ptgt, icmd->ipkt_change_cnt, in fcp_scsi_callback()
7165 fcp_handle_reportlun(fpkt, icmd); in fcp_scsi_callback()
7170 (void) fcp_handle_page83(fpkt, icmd, 0); in fcp_scsi_callback()
7175 (void) fcp_call_finish_init(pptr, ptgt, icmd->ipkt_link_cnt, in fcp_scsi_callback()
7176 icmd->ipkt_change_cnt, icmd->ipkt_cause); in fcp_scsi_callback()
7177 fcp_icmd_free(pptr, icmd); in fcp_scsi_callback()
7186 struct fcp_ipkt *icmd = (struct fcp_ipkt *) in fcp_retry_scsi_cmd() local
7188 struct fcp_tgt *ptgt = icmd->ipkt_tgt; in fcp_retry_scsi_cmd()
7191 if (icmd->ipkt_retries < FCP_MAX_RETRIES && in fcp_retry_scsi_cmd()
7192 fcp_is_retryable(icmd)) { in fcp_retry_scsi_cmd()
7194 if (!FCP_TGT_STATE_CHANGED(ptgt, icmd)) { in fcp_retry_scsi_cmd()
7199 (icmd->ipkt_opcode == SCMD_REPORT_LUN) ? in fcp_retry_scsi_cmd()
7211 icmd->ipkt_link_cnt, icmd->ipkt_change_cnt, in fcp_retry_scsi_cmd()
7212 icmd->ipkt_cause); in fcp_retry_scsi_cmd()
7213 fcp_icmd_free(pptr, icmd); in fcp_retry_scsi_cmd()
7217 (void) fcp_call_finish_init(pptr, ptgt, icmd->ipkt_link_cnt, in fcp_retry_scsi_cmd()
7218 icmd->ipkt_change_cnt, icmd->ipkt_cause); in fcp_retry_scsi_cmd()
7219 fcp_icmd_free(pptr, icmd); in fcp_retry_scsi_cmd()
7237 fcp_handle_page83(fc_packet_t *fpkt, struct fcp_ipkt *icmd, in fcp_handle_page83() argument
7249 ASSERT(icmd != NULL && fpkt != NULL); in fcp_handle_page83()
7251 pptr = icmd->ipkt_port; in fcp_handle_page83()
7252 ptgt = icmd->ipkt_tgt; in fcp_handle_page83()
7253 plun = icmd->ipkt_lun; in fcp_handle_page83()
7351 icmd->ipkt_retries = 0; in fcp_handle_page83()
7423 (void) fcp_call_finish_init(pptr, ptgt, icmd->ipkt_link_cnt, in fcp_handle_page83()
7424 icmd->ipkt_change_cnt, icmd->ipkt_cause); in fcp_handle_page83()
7426 fcp_icmd_free(pptr, icmd); in fcp_handle_page83()
7441 fcp_handle_inquiry(fc_packet_t *fpkt, struct fcp_ipkt *icmd) in fcp_handle_inquiry() argument
7450 ASSERT(icmd != NULL && fpkt != NULL); in fcp_handle_inquiry()
7452 pptr = icmd->ipkt_port; in fcp_handle_inquiry()
7453 ptgt = icmd->ipkt_tgt; in fcp_handle_inquiry()
7454 plun = icmd->ipkt_lun; in fcp_handle_inquiry()
7485 (void) fcp_call_finish_init(pptr, ptgt, icmd->ipkt_link_cnt, in fcp_handle_inquiry()
7486 icmd->ipkt_change_cnt, icmd->ipkt_cause); in fcp_handle_inquiry()
7487 fcp_icmd_free(pptr, icmd); in fcp_handle_inquiry()
7520 if (FCP_TGT_STATE_CHANGED(ptgt, icmd)) { in fcp_handle_inquiry()
7529 icmd->ipkt_link_cnt, icmd->ipkt_change_cnt, in fcp_handle_inquiry()
7530 icmd->ipkt_cause); in fcp_handle_inquiry()
7531 fcp_icmd_free(pptr, icmd); in fcp_handle_inquiry()
7538 if (icmd->ipkt_fpkt->pkt_ulp_rscn_infop != NULL) { in fcp_handle_inquiry()
7540 (icmd->ipkt_fpkt->pkt_ulp_rscn_infop))->ulp_rscn_count; in fcp_handle_inquiry()
7547 icmd->ipkt_link_cnt, icmd->ipkt_change_cnt, in fcp_handle_inquiry()
7548 icmd->ipkt_cause, rscn_count) != DDI_SUCCESS) { in fcp_handle_inquiry()
7552 icmd->ipkt_link_cnt, icmd->ipkt_change_cnt, in fcp_handle_inquiry()
7553 icmd->ipkt_cause); in fcp_handle_inquiry()
7560 fcp_icmd_free(pptr, icmd); in fcp_handle_inquiry()
7575 fcp_handle_reportlun(fc_packet_t *fpkt, struct fcp_ipkt *icmd) in fcp_handle_reportlun() argument
7588 pptr = icmd->ipkt_port; in fcp_handle_reportlun()
7589 ptgt = icmd->ipkt_tgt; in fcp_handle_reportlun()
7594 (void) fcp_call_finish_init(pptr, ptgt, icmd->ipkt_link_cnt, in fcp_handle_reportlun()
7595 icmd->ipkt_change_cnt, icmd->ipkt_cause); in fcp_handle_reportlun()
7596 fcp_icmd_free(pptr, icmd); in fcp_handle_reportlun()
7629 (void) fcp_call_finish_init(pptr, ptgt, icmd->ipkt_link_cnt, in fcp_handle_reportlun()
7630 icmd->ipkt_change_cnt, icmd->ipkt_cause); in fcp_handle_reportlun()
7631 fcp_icmd_free(pptr, icmd); in fcp_handle_reportlun()
7660 if (icmd->ipkt_fpkt->pkt_ulp_rscn_infop != NULL) { in fcp_handle_reportlun()
7662 (icmd->ipkt_fpkt->pkt_ulp_rscn_infop))-> in fcp_handle_reportlun()
7668 if (fcp_send_scsi(icmd->ipkt_lun, SCMD_REPORT_LUN, in fcp_handle_reportlun()
7670 icmd->ipkt_link_cnt, icmd->ipkt_change_cnt, in fcp_handle_reportlun()
7671 icmd->ipkt_cause, rscn_count) != DDI_SUCCESS) { in fcp_handle_reportlun()
7673 icmd->ipkt_link_cnt, icmd->ipkt_change_cnt, in fcp_handle_reportlun()
7674 icmd->ipkt_cause); in fcp_handle_reportlun()
7677 fcp_icmd_free(pptr, icmd); in fcp_handle_reportlun()
7736 if (!FCP_STATE_CHANGED(pptr, ptgt, icmd)) { in fcp_handle_reportlun()
7762 icmd->ipkt_link_cnt, icmd->ipkt_change_cnt, in fcp_handle_reportlun()
7763 icmd->ipkt_cause); in fcp_handle_reportlun()
7764 fcp_icmd_free(pptr, icmd); in fcp_handle_reportlun()
7856 if (icmd->ipkt_fpkt->pkt_ulp_rscn_infop != NULL) { in fcp_handle_reportlun()
7858 (icmd->ipkt_fpkt->pkt_ulp_rscn_infop))-> in fcp_handle_reportlun()
7865 icmd->ipkt_link_cnt, icmd->ipkt_change_cnt, in fcp_handle_reportlun()
7866 icmd->ipkt_cause, rscn_count) != DDI_SUCCESS) { in fcp_handle_reportlun()
7869 if (!FCP_STATE_CHANGED(pptr, ptgt, icmd)) { in fcp_handle_reportlun()
7901 (void) fcp_call_finish_init(pptr, ptgt, icmd->ipkt_link_cnt, in fcp_handle_reportlun()
7902 icmd->ipkt_change_cnt, icmd->ipkt_cause); in fcp_handle_reportlun()
7908 (void) fcp_call_finish_init(pptr, ptgt, icmd->ipkt_link_cnt, in fcp_handle_reportlun()
7909 icmd->ipkt_change_cnt, icmd->ipkt_cause); in fcp_handle_reportlun()
7913 fcp_icmd_free(pptr, icmd); in fcp_handle_reportlun()
9494 struct fcp_ipkt *icmd = (struct fcp_ipkt *)fpkt->pkt_ulp_private; in fcp_queue_ipkt() local
9495 struct fcp_tgt *ptgt = icmd->ipkt_tgt; in fcp_queue_ipkt()
9499 if (FCP_STATE_CHANGED(pptr, ptgt, icmd)) { in fcp_queue_ipkt()
9506 (void) fcp_call_finish_init(pptr, ptgt, icmd->ipkt_link_cnt, in fcp_queue_ipkt()
9507 icmd->ipkt_change_cnt, icmd->ipkt_cause); in fcp_queue_ipkt()
9508 fcp_icmd_free(pptr, icmd); in fcp_queue_ipkt()
9513 icmd->ipkt_restart = fcp_watchdog_time + icmd->ipkt_retries++; in fcp_queue_ipkt()
9517 pptr->port_ipkt_list->ipkt_prev = icmd; in fcp_queue_ipkt()
9518 icmd->ipkt_next = pptr->port_ipkt_list; in fcp_queue_ipkt()
9519 pptr->port_ipkt_list = icmd; in fcp_queue_ipkt()
9520 icmd->ipkt_prev = NULL; in fcp_queue_ipkt()
9523 pptr->port_ipkt_list = icmd; in fcp_queue_ipkt()
9524 icmd->ipkt_next = NULL; in fcp_queue_ipkt()
9525 icmd->ipkt_prev = NULL; in fcp_queue_ipkt()
9598 struct fcp_ipkt *icmd; in fcp_transport() local
9600 icmd = (struct fcp_ipkt *)fpkt->pkt_ulp_private; in fcp_transport()
9601 switch (icmd->ipkt_opcode) { in fcp_transport()
9619 if (fcp_handle_ipkt_errors(icmd->ipkt_port, in fcp_transport()
9620 icmd->ipkt_tgt, icmd, rval, op) == DDI_SUCCESS) { in fcp_transport()
13485 struct fcp_ipkt *icmd; in fcp_watch() local
13644 for (icmd = pptr->port_ipkt_list; icmd != NULL; icmd = nicmd) { in fcp_watch()
13645 struct fcp_tgt *ptgt = icmd->ipkt_tgt; in fcp_watch()
13647 nicmd = icmd->ipkt_next; in fcp_watch()
13648 if ((icmd->ipkt_restart != 0) && in fcp_watch()
13649 (icmd->ipkt_restart >= fcp_watchdog_time)) { in fcp_watch()
13655 if (icmd == pptr->port_ipkt_list) { in fcp_watch()
13656 pptr->port_ipkt_list = icmd->ipkt_next; in fcp_watch()
13662 icmd->ipkt_prev->ipkt_next = icmd->ipkt_next; in fcp_watch()
13663 if (icmd->ipkt_next) { in fcp_watch()
13664 icmd->ipkt_next->ipkt_prev = in fcp_watch()
13665 icmd->ipkt_prev; in fcp_watch()
13668 icmd->ipkt_next = NULL; in fcp_watch()
13669 icmd->ipkt_prev = NULL; in fcp_watch()
13672 if (fcp_is_retryable(icmd)) { in fcp_watch()
13674 (fc_ulp_rscn_info_t *)icmd->ipkt_fpkt-> in fcp_watch()
13680 icmd->ipkt_opcode, in fcp_watch()
13681 icmd->ipkt_fpkt->pkt_cmd_fhdr.d_id); in fcp_watch()
13696 if (!FCP_STATE_CHANGED(pptr, ptgt, icmd)) { in fcp_watch()
13699 switch (icmd->ipkt_opcode) { in fcp_watch()
13704 &icmd->ipkt_fpkt, 1)) == in fcp_watch()
13711 pptr, ptgt, icmd, rval, in fcp_watch()
13722 icmd->ipkt_fpkt)) == in fcp_watch()
13729 pptr, ptgt, icmd, rval, in fcp_watch()
13740 icmd->ipkt_fpkt, 1)) == in fcp_watch()
13747 pptr, ptgt, icmd, rval, in fcp_watch()
13760 fcp_print_error(icmd->ipkt_fpkt); in fcp_watch()
13764 icmd->ipkt_link_cnt, icmd->ipkt_change_cnt, in fcp_watch()
13765 icmd->ipkt_cause); in fcp_watch()
13766 fcp_icmd_free(pptr, icmd); in fcp_watch()
14884 fcp_is_retryable(struct fcp_ipkt *icmd) in fcp_is_retryable() argument
14886 if (icmd->ipkt_port->port_state & (FCP_STATE_SUSPENDED | in fcp_is_retryable()
14891 return (((fcp_watchdog_time + icmd->ipkt_fpkt->pkt_timeout) < in fcp_is_retryable()
14892 icmd->ipkt_port->port_deadline) ? 1 : 0); in fcp_is_retryable()
15220 struct fcp_ipkt *icmd = (struct fcp_ipkt *) in fcp_print_error() local
15228 ptgt = icmd->ipkt_tgt; in fcp_print_error()
15229 plun = icmd->ipkt_lun; in fcp_print_error()
15237 switch (icmd->ipkt_opcode) { in fcp_print_error()
15271 if (icmd->ipkt_nodma) { in fcp_print_error()
15313 if (icmd->ipkt_nodma) { in fcp_print_error()
15377 struct fcp_ipkt *icmd, int rval, caddr_t op) in fcp_handle_ipkt_errors() argument
15399 icmd->ipkt_retries = 0; in fcp_handle_ipkt_errors()
15400 icmd->ipkt_port->port_deadline = fcp_watchdog_time + in fcp_handle_ipkt_errors()
15419 if (icmd->ipkt_retries < FCP_MAX_RETRIES && in fcp_handle_ipkt_errors()
15420 fcp_is_retryable(icmd)) { in fcp_handle_ipkt_errors()
15421 fcp_queue_ipkt(pptr, icmd->ipkt_fpkt); in fcp_handle_ipkt_errors()
15435 if (icmd->ipkt_opcode == LA_ELS_PRLI) { in fcp_handle_ipkt_errors()
15436 ret = fcp_send_els(icmd->ipkt_port, icmd->ipkt_tgt, in fcp_handle_ipkt_errors()
15437 icmd, LA_ELS_PLOGI, icmd->ipkt_link_cnt, in fcp_handle_ipkt_errors()
15438 icmd->ipkt_change_cnt, icmd->ipkt_cause); in fcp_handle_ipkt_errors()
15444 if (icmd->ipkt_retries < FCP_MAX_RETRIES && in fcp_handle_ipkt_errors()
15445 fcp_is_retryable(icmd)) { in fcp_handle_ipkt_errors()
15446 fcp_queue_ipkt(pptr, icmd->ipkt_fpkt); in fcp_handle_ipkt_errors()
15455 if (!FCP_STATE_CHANGED(pptr, ptgt, icmd)) { in fcp_handle_ipkt_errors()