Lines Matching refs:cm

418 mpr_init_sge(struct mpr_command *cm, void *req, void *sge)  in mpr_init_sge()  argument
422 space = (int)cm->cm_sc->reqframesz; in mpr_init_sge()
428 cm->cm_sge = sge; in mpr_init_sge()
429 cm->cm_sglsize = space - off; in mpr_init_sge()
436 mpi_pre_ioc_facts(struct mpr_command *cm, struct mpr_usr_command *cmd) in mpi_pre_ioc_facts() argument
438 MPI2_IOC_FACTS_REQUEST *req = (void *)cm->cm_req; in mpi_pre_ioc_facts()
446 cm->cm_sge = NULL; in mpi_pre_ioc_facts()
447 cm->cm_sglsize = 0; in mpi_pre_ioc_facts()
455 mpi_pre_port_facts(struct mpr_command *cm, struct mpr_usr_command *cmd) in mpi_pre_port_facts() argument
457 MPI2_PORT_FACTS_REQUEST *req = (void *)cm->cm_req; in mpi_pre_port_facts()
465 cm->cm_sge = NULL; in mpi_pre_port_facts()
466 cm->cm_sglsize = 0; in mpi_pre_port_facts()
474 mpi_pre_fw_download(struct mpr_command *cm, struct mpr_usr_command *cmd) in mpi_pre_fw_download() argument
476 MPI25_FW_DOWNLOAD_REQUEST *req = (void *)cm->cm_req; in mpi_pre_fw_download()
488 error = copyin(cmd->buf, cm->cm_data, cmd->len); in mpi_pre_fw_download()
492 mpr_init_sge(cm, req, &req->SGL); in mpi_pre_fw_download()
505 cm->cm_flags |= MPR_CM_FLAGS_DATAOUT; in mpi_pre_fw_download()
507 return (mpr_push_ieee_sge(cm, &req->SGL, 0)); in mpi_pre_fw_download()
514 mpi_pre_fw_upload(struct mpr_command *cm, struct mpr_usr_command *cmd) in mpi_pre_fw_upload() argument
516 MPI25_FW_UPLOAD_REQUEST *req = (void *)cm->cm_req; in mpi_pre_fw_upload()
524 mpr_init_sge(cm, req, &req->SGL); in mpi_pre_fw_upload()
533 cm->cm_flags |= MPR_CM_FLAGS_DATAIN; in mpi_pre_fw_upload()
535 return (mpr_push_ieee_sge(cm, &req->SGL, 0)); in mpi_pre_fw_upload()
542 mpi_pre_sata_passthrough(struct mpr_command *cm, struct mpr_usr_command *cmd) in mpi_pre_sata_passthrough() argument
544 MPI2_SATA_PASSTHROUGH_REQUEST *req = (void *)cm->cm_req; in mpi_pre_sata_passthrough()
552 mpr_init_sge(cm, req, &req->SGL); in mpi_pre_sata_passthrough()
560 mpi_pre_smp_passthrough(struct mpr_command *cm, struct mpr_usr_command *cmd) in mpi_pre_smp_passthrough() argument
562 MPI2_SMP_PASSTHROUGH_REQUEST *req = (void *)cm->cm_req; in mpi_pre_smp_passthrough()
570 mpr_init_sge(cm, req, &req->SGL); in mpi_pre_smp_passthrough()
578 mpi_pre_config(struct mpr_command *cm, struct mpr_usr_command *cmd) in mpi_pre_config() argument
580 MPI2_CONFIG_REQUEST *req = (void *)cm->cm_req; in mpi_pre_config()
588 mpr_init_sge(cm, req, &req->PageBufferSGE); in mpi_pre_config()
596 mpi_pre_sas_io_unit_control(struct mpr_command *cm, in mpi_pre_sas_io_unit_control() argument
600 cm->cm_sge = NULL; in mpi_pre_sas_io_unit_control()
601 cm->cm_sglsize = 0; in mpi_pre_sas_io_unit_control()
625 mpr_user_setup_request(struct mpr_command *cm, struct mpr_usr_command *cmd) in mpr_user_setup_request() argument
627 MPI2_REQUEST_HEADER *hdr = (MPI2_REQUEST_HEADER *)cm->cm_req; in mpr_user_setup_request()
632 return (f->f_pre(cm, cmd)); in mpr_user_setup_request()
643 struct mpr_command *cm = NULL; in mpr_user_command() local
648 cm = mpr_alloc_command(sc); in mpr_user_command()
650 if (cm == NULL) { in mpr_user_command()
657 hdr = (MPI2_REQUEST_HEADER *)cm->cm_req; in mpr_user_command()
675 cm->cm_data = buf; in mpr_user_command()
676 cm->cm_length = cmd->len; in mpr_user_command()
678 cm->cm_data = NULL; in mpr_user_command()
679 cm->cm_length = 0; in mpr_user_command()
682 cm->cm_flags = MPR_CM_FLAGS_SGE_SIMPLE; in mpr_user_command()
683 cm->cm_desc.Default.RequestFlags = MPI2_REQ_DESCRIPT_FLAGS_DEFAULT_TYPE; in mpr_user_command()
685 err = mpr_user_setup_request(cm, cmd); in mpr_user_command()
695 err = mpr_wait_command(sc, &cm, 30, CAN_SLEEP); in mpr_user_command()
697 if (err || (cm == NULL)) { in mpr_user_command()
703 if (cm != NULL) in mpr_user_command()
704 rpl = (MPI2_DEFAULT_REPLY *)cm->cm_reply; in mpr_user_command()
725 if (cm != NULL) in mpr_user_command()
726 mpr_free_command(sc, cm); in mpr_user_command()
740 struct mpr_command *cm = NULL; in mpr_user_pass_thru() local
816 cm = mprsas_alloc_tm(sc); in mpr_user_pass_thru()
817 if (cm == NULL) { in mpr_user_pass_thru()
823 task = (MPI2_SCSI_TASK_MANAGE_REQUEST *)cm->cm_req; in mpr_user_pass_thru()
825 task->TaskMID = cm->cm_desc.Default.SMID; in mpr_user_pass_thru()
827 cm->cm_data = NULL; in mpr_user_pass_thru()
828 cm->cm_complete = NULL; in mpr_user_pass_thru()
829 cm->cm_complete_data = NULL; in mpr_user_pass_thru()
839 mprsas_prepare_for_tm(sc, cm, targ, CAM_LUN_WILDCARD); in mpr_user_pass_thru()
840 err = mpr_wait_command(sc, &cm, 30, CAN_SLEEP); in mpr_user_pass_thru()
851 if (err == 0 && cm != NULL && cm->cm_reply != NULL) { in mpr_user_pass_thru()
852 rpl = (MPI2_DEFAULT_REPLY *)cm->cm_reply; in mpr_user_pass_thru()
861 err = copyout(cm->cm_reply, PTRIN(data->PtrReply), in mpr_user_pass_thru()
865 mprsas_free_tm(sc, cm); in mpr_user_pass_thru()
870 cm = mpr_alloc_command(sc); in mpr_user_pass_thru()
871 if (cm == NULL) { in mpr_user_pass_thru()
878 hdr = (MPI2_REQUEST_HEADER *)cm->cm_req; in mpr_user_pass_thru()
885 mpr_init_sge(cm, hdr, (void *)((uint8_t *)hdr + data->RequestSize)); in mpr_user_pass_thru()
896 cm->cm_data = NULL; in mpr_user_pass_thru()
897 cm->cm_length = MAX(data->DataSize, data->DataOutSize); in mpr_user_pass_thru()
898 cm->cm_out_len = data->DataOutSize; in mpr_user_pass_thru()
899 cm->cm_flags = 0; in mpr_user_pass_thru()
900 if (cm->cm_length != 0) { in mpr_user_pass_thru()
901 cm->cm_data = malloc(cm->cm_length, M_MPRUSER, M_WAITOK | in mpr_user_pass_thru()
903 cm->cm_flags = MPR_CM_FLAGS_DATAIN; in mpr_user_pass_thru()
905 cm->cm_flags |= MPR_CM_FLAGS_DATAOUT; in mpr_user_pass_thru()
907 cm->cm_data, data->DataOutSize); in mpr_user_pass_thru()
910 cm->cm_flags = MPR_CM_FLAGS_DATAOUT; in mpr_user_pass_thru()
912 cm->cm_data, data->DataSize); in mpr_user_pass_thru()
923 cm->cm_flags |= MPR_CM_FLAGS_SGE_SIMPLE; in mpr_user_pass_thru()
932 cm->cm_flags &= ~MPR_CM_FLAGS_SGE_SIMPLE; in mpr_user_pass_thru()
936 cm->cm_desc.Default.RequestFlags = MPI2_REQ_DESCRIPT_FLAGS_DEFAULT_TYPE; in mpr_user_pass_thru()
940 (Mpi26NVMeEncapsulatedRequest_t *)cm->cm_req; in mpr_user_pass_thru()
941 cm->cm_desc.Default.RequestFlags = in mpr_user_pass_thru()
953 cm->nvme_error_response = in mpr_user_pass_thru()
959 htole32((uint32_t)((uint64_t)cm->cm_sense_busaddr >> 32)); in mpr_user_pass_thru()
961 htole32(cm->cm_sense_busaddr); in mpr_user_pass_thru()
962 memset(cm->cm_sense, 0, NVME_ERROR_RESPONSE_SIZE); in mpr_user_pass_thru()
963 mpr_build_nvme_prp(sc, cm, nvme_encap_request, cm->cm_data, in mpr_user_pass_thru()
985 htole32(cm->cm_sense_busaddr); in mpr_user_pass_thru()
1013 cm->cm_desc.FastPathSCSIIO.RequestFlags = in mpr_user_pass_thru()
1016 cm->cm_desc.FastPathSCSIIO.DevHandle = in mpr_user_pass_thru()
1022 cm->cm_desc.SCSIIO.RequestFlags = in mpr_user_pass_thru()
1025 cm->cm_desc.SCSIIO.DevHandle = in mpr_user_pass_thru()
1043 err = mpr_wait_command(sc, &cm, 30, CAN_SLEEP); in mpr_user_pass_thru()
1045 if (err || (cm == NULL)) { in mpr_user_pass_thru()
1054 if (cm->cm_data != NULL) { in mpr_user_pass_thru()
1055 if (cm->cm_flags & MPR_CM_FLAGS_DATAIN) in mpr_user_pass_thru()
1057 else if (cm->cm_flags & MPR_CM_FLAGS_DATAOUT) in mpr_user_pass_thru()
1059 bus_dmamap_sync(sc->buffer_dmat, cm->cm_dmamap, dir); in mpr_user_pass_thru()
1060 bus_dmamap_unload(sc->buffer_dmat, cm->cm_dmamap); in mpr_user_pass_thru()
1062 if (cm->cm_flags & MPR_CM_FLAGS_DATAIN) { in mpr_user_pass_thru()
1064 err = copyout(cm->cm_data, in mpr_user_pass_thru()
1076 if (err == 0 && cm->cm_reply != NULL) { in mpr_user_pass_thru()
1077 rpl = (MPI2_DEFAULT_REPLY *)cm->cm_reply; in mpr_user_pass_thru()
1086 err = copyout(cm->cm_reply, PTRIN(data->PtrReply), in mpr_user_pass_thru()
1103 err = copyout(cm->cm_sense, in mpr_user_pass_thru()
1129 if (cm->nvme_error_response == NULL) { in mpr_user_pass_thru()
1138 (Mpi26NVMeEncapsulatedErrorReply_t *)cm->cm_reply; in mpr_user_pass_thru()
1142 err = copyout(cm->cm_sense, in mpr_user_pass_thru()
1158 if (cm != NULL) { in mpr_user_pass_thru()
1159 if (cm->cm_data) in mpr_user_pass_thru()
1160 free(cm->cm_data, M_MPRUSER); in mpr_user_pass_thru()
1161 mpr_free_command(sc, cm); in mpr_user_pass_thru()
1264 struct mpr_command *cm = NULL; in mpr_post_fw_diag_buffer() local
1285 cm = mpr_alloc_command(sc); in mpr_post_fw_diag_buffer()
1286 if (cm == NULL) { in mpr_post_fw_diag_buffer()
1294 req = (MPI2_DIAG_BUFFER_POST_REQUEST *)cm->cm_req; in mpr_post_fw_diag_buffer()
1302 cm->cm_data = NULL; in mpr_post_fw_diag_buffer()
1303 cm->cm_length = 0; in mpr_post_fw_diag_buffer()
1304 cm->cm_desc.Default.RequestFlags = MPI2_REQ_DESCRIPT_FLAGS_DEFAULT_TYPE; in mpr_post_fw_diag_buffer()
1305 cm->cm_complete_data = NULL; in mpr_post_fw_diag_buffer()
1310 status = mpr_wait_command(sc, &cm, 30, CAN_SLEEP); in mpr_post_fw_diag_buffer()
1311 if (status || (cm == NULL)) { in mpr_post_fw_diag_buffer()
1321 reply = (MPI2_DIAG_BUFFER_POST_REPLY *)cm->cm_reply; in mpr_post_fw_diag_buffer()
1349 if (cm != NULL) in mpr_post_fw_diag_buffer()
1350 mpr_free_command(sc, cm); in mpr_post_fw_diag_buffer()
1361 struct mpr_command *cm = NULL; in mpr_release_fw_diag_buffer() local
1384 cm = mpr_alloc_command(sc); in mpr_release_fw_diag_buffer()
1385 if (cm == NULL) { in mpr_release_fw_diag_buffer()
1393 req = (MPI2_DIAG_RELEASE_REQUEST *)cm->cm_req; in mpr_release_fw_diag_buffer()
1396 cm->cm_data = NULL; in mpr_release_fw_diag_buffer()
1397 cm->cm_length = 0; in mpr_release_fw_diag_buffer()
1398 cm->cm_desc.Default.RequestFlags = MPI2_REQ_DESCRIPT_FLAGS_DEFAULT_TYPE; in mpr_release_fw_diag_buffer()
1399 cm->cm_complete_data = NULL; in mpr_release_fw_diag_buffer()
1404 status = mpr_wait_command(sc, &cm, 30, CAN_SLEEP); in mpr_release_fw_diag_buffer()
1405 if (status || (cm == NULL)) { in mpr_release_fw_diag_buffer()
1415 reply = (MPI2_DIAG_RELEASE_REPLY *)cm->cm_reply; in mpr_release_fw_diag_buffer()
1446 if (cm != NULL) in mpr_release_fw_diag_buffer()
1447 mpr_free_command(sc, cm); in mpr_release_fw_diag_buffer()