Lines Matching refs:cm

417 mpr_init_sge(struct mpr_command *cm, void *req, void *sge)  in mpr_init_sge()  argument
421 space = (int)cm->cm_sc->reqframesz; in mpr_init_sge()
427 cm->cm_sge = sge; in mpr_init_sge()
428 cm->cm_sglsize = space - off; in mpr_init_sge()
435 mpi_pre_ioc_facts(struct mpr_command *cm, struct mpr_usr_command *cmd) in mpi_pre_ioc_facts() argument
437 MPI2_IOC_FACTS_REQUEST *req = (void *)cm->cm_req; in mpi_pre_ioc_facts()
445 cm->cm_sge = NULL; in mpi_pre_ioc_facts()
446 cm->cm_sglsize = 0; in mpi_pre_ioc_facts()
454 mpi_pre_port_facts(struct mpr_command *cm, struct mpr_usr_command *cmd) in mpi_pre_port_facts() argument
456 MPI2_PORT_FACTS_REQUEST *req = (void *)cm->cm_req; in mpi_pre_port_facts()
464 cm->cm_sge = NULL; in mpi_pre_port_facts()
465 cm->cm_sglsize = 0; in mpi_pre_port_facts()
473 mpi_pre_fw_download(struct mpr_command *cm, struct mpr_usr_command *cmd) in mpi_pre_fw_download() argument
475 MPI25_FW_DOWNLOAD_REQUEST *req = (void *)cm->cm_req; in mpi_pre_fw_download()
487 error = copyin(cmd->buf, cm->cm_data, cmd->len); in mpi_pre_fw_download()
491 mpr_init_sge(cm, req, &req->SGL); in mpi_pre_fw_download()
504 cm->cm_flags |= MPR_CM_FLAGS_DATAOUT; in mpi_pre_fw_download()
506 return (mpr_push_ieee_sge(cm, &req->SGL, 0)); in mpi_pre_fw_download()
513 mpi_pre_fw_upload(struct mpr_command *cm, struct mpr_usr_command *cmd) in mpi_pre_fw_upload() argument
515 MPI25_FW_UPLOAD_REQUEST *req = (void *)cm->cm_req; in mpi_pre_fw_upload()
523 mpr_init_sge(cm, req, &req->SGL); in mpi_pre_fw_upload()
532 cm->cm_flags |= MPR_CM_FLAGS_DATAIN; in mpi_pre_fw_upload()
534 return (mpr_push_ieee_sge(cm, &req->SGL, 0)); in mpi_pre_fw_upload()
541 mpi_pre_sata_passthrough(struct mpr_command *cm, struct mpr_usr_command *cmd) in mpi_pre_sata_passthrough() argument
543 MPI2_SATA_PASSTHROUGH_REQUEST *req = (void *)cm->cm_req; in mpi_pre_sata_passthrough()
551 mpr_init_sge(cm, req, &req->SGL); in mpi_pre_sata_passthrough()
559 mpi_pre_smp_passthrough(struct mpr_command *cm, struct mpr_usr_command *cmd) in mpi_pre_smp_passthrough() argument
561 MPI2_SMP_PASSTHROUGH_REQUEST *req = (void *)cm->cm_req; in mpi_pre_smp_passthrough()
569 mpr_init_sge(cm, req, &req->SGL); in mpi_pre_smp_passthrough()
577 mpi_pre_config(struct mpr_command *cm, struct mpr_usr_command *cmd) in mpi_pre_config() argument
579 MPI2_CONFIG_REQUEST *req = (void *)cm->cm_req; in mpi_pre_config()
587 mpr_init_sge(cm, req, &req->PageBufferSGE); in mpi_pre_config()
595 mpi_pre_sas_io_unit_control(struct mpr_command *cm, in mpi_pre_sas_io_unit_control() argument
599 cm->cm_sge = NULL; in mpi_pre_sas_io_unit_control()
600 cm->cm_sglsize = 0; in mpi_pre_sas_io_unit_control()
624 mpr_user_setup_request(struct mpr_command *cm, struct mpr_usr_command *cmd) in mpr_user_setup_request() argument
626 MPI2_REQUEST_HEADER *hdr = (MPI2_REQUEST_HEADER *)cm->cm_req; in mpr_user_setup_request()
631 return (f->f_pre(cm, cmd)); in mpr_user_setup_request()
642 struct mpr_command *cm = NULL; in mpr_user_command() local
647 cm = mpr_alloc_command(sc); in mpr_user_command()
649 if (cm == NULL) { in mpr_user_command()
656 hdr = (MPI2_REQUEST_HEADER *)cm->cm_req; in mpr_user_command()
674 cm->cm_data = buf; in mpr_user_command()
675 cm->cm_length = cmd->len; in mpr_user_command()
677 cm->cm_data = NULL; in mpr_user_command()
678 cm->cm_length = 0; in mpr_user_command()
681 cm->cm_flags = MPR_CM_FLAGS_SGE_SIMPLE; in mpr_user_command()
682 cm->cm_desc.Default.RequestFlags = MPI2_REQ_DESCRIPT_FLAGS_DEFAULT_TYPE; in mpr_user_command()
684 err = mpr_user_setup_request(cm, cmd); in mpr_user_command()
694 err = mpr_wait_command(sc, &cm, 30, CAN_SLEEP); in mpr_user_command()
696 if (err || (cm == NULL)) { in mpr_user_command()
702 if (cm != NULL) in mpr_user_command()
703 rpl = (MPI2_DEFAULT_REPLY *)cm->cm_reply; in mpr_user_command()
724 if (cm != NULL) in mpr_user_command()
725 mpr_free_command(sc, cm); in mpr_user_command()
739 struct mpr_command *cm = NULL; in mpr_user_pass_thru() local
815 cm = mprsas_alloc_tm(sc); in mpr_user_pass_thru()
816 if (cm == NULL) { in mpr_user_pass_thru()
822 task = (MPI2_SCSI_TASK_MANAGE_REQUEST *)cm->cm_req; in mpr_user_pass_thru()
824 task->TaskMID = cm->cm_desc.Default.SMID; in mpr_user_pass_thru()
826 cm->cm_data = NULL; in mpr_user_pass_thru()
827 cm->cm_complete = NULL; in mpr_user_pass_thru()
828 cm->cm_complete_data = NULL; in mpr_user_pass_thru()
838 mprsas_prepare_for_tm(sc, cm, targ, CAM_LUN_WILDCARD); in mpr_user_pass_thru()
839 err = mpr_wait_command(sc, &cm, 30, CAN_SLEEP); in mpr_user_pass_thru()
850 if (err == 0 && cm != NULL && cm->cm_reply != NULL) { in mpr_user_pass_thru()
851 rpl = (MPI2_DEFAULT_REPLY *)cm->cm_reply; in mpr_user_pass_thru()
860 err = copyout(cm->cm_reply, PTRIN(data->PtrReply), in mpr_user_pass_thru()
864 mprsas_free_tm(sc, cm); in mpr_user_pass_thru()
869 cm = mpr_alloc_command(sc); in mpr_user_pass_thru()
870 if (cm == NULL) { in mpr_user_pass_thru()
877 hdr = (MPI2_REQUEST_HEADER *)cm->cm_req; in mpr_user_pass_thru()
884 mpr_init_sge(cm, hdr, (void *)((uint8_t *)hdr + data->RequestSize)); in mpr_user_pass_thru()
895 cm->cm_data = NULL; in mpr_user_pass_thru()
896 cm->cm_length = MAX(data->DataSize, data->DataOutSize); in mpr_user_pass_thru()
897 cm->cm_out_len = data->DataOutSize; in mpr_user_pass_thru()
898 cm->cm_flags = 0; in mpr_user_pass_thru()
899 if (cm->cm_length != 0) { in mpr_user_pass_thru()
900 cm->cm_data = malloc(cm->cm_length, M_MPRUSER, M_WAITOK | in mpr_user_pass_thru()
902 cm->cm_flags = MPR_CM_FLAGS_DATAIN; in mpr_user_pass_thru()
904 cm->cm_flags |= MPR_CM_FLAGS_DATAOUT; in mpr_user_pass_thru()
906 cm->cm_data, data->DataOutSize); in mpr_user_pass_thru()
909 cm->cm_flags = MPR_CM_FLAGS_DATAOUT; in mpr_user_pass_thru()
911 cm->cm_data, data->DataSize); in mpr_user_pass_thru()
922 cm->cm_flags |= MPR_CM_FLAGS_SGE_SIMPLE; in mpr_user_pass_thru()
931 cm->cm_flags &= ~MPR_CM_FLAGS_SGE_SIMPLE; in mpr_user_pass_thru()
935 cm->cm_desc.Default.RequestFlags = MPI2_REQ_DESCRIPT_FLAGS_DEFAULT_TYPE; in mpr_user_pass_thru()
939 (Mpi26NVMeEncapsulatedRequest_t *)cm->cm_req; in mpr_user_pass_thru()
940 cm->cm_desc.Default.RequestFlags = in mpr_user_pass_thru()
952 cm->nvme_error_response = in mpr_user_pass_thru()
958 htole32((uint32_t)((uint64_t)cm->cm_sense_busaddr >> 32)); in mpr_user_pass_thru()
960 htole32(cm->cm_sense_busaddr); in mpr_user_pass_thru()
961 memset(cm->cm_sense, 0, NVME_ERROR_RESPONSE_SIZE); in mpr_user_pass_thru()
962 mpr_build_nvme_prp(sc, cm, nvme_encap_request, cm->cm_data, in mpr_user_pass_thru()
984 htole32(cm->cm_sense_busaddr); in mpr_user_pass_thru()
1012 cm->cm_desc.FastPathSCSIIO.RequestFlags = in mpr_user_pass_thru()
1015 cm->cm_desc.FastPathSCSIIO.DevHandle = in mpr_user_pass_thru()
1021 cm->cm_desc.SCSIIO.RequestFlags = in mpr_user_pass_thru()
1024 cm->cm_desc.SCSIIO.DevHandle = in mpr_user_pass_thru()
1042 err = mpr_wait_command(sc, &cm, 30, CAN_SLEEP); in mpr_user_pass_thru()
1044 if (err || (cm == NULL)) { in mpr_user_pass_thru()
1053 if (cm->cm_data != NULL) { in mpr_user_pass_thru()
1054 if (cm->cm_flags & MPR_CM_FLAGS_DATAIN) in mpr_user_pass_thru()
1056 else if (cm->cm_flags & MPR_CM_FLAGS_DATAOUT) in mpr_user_pass_thru()
1058 bus_dmamap_sync(sc->buffer_dmat, cm->cm_dmamap, dir); in mpr_user_pass_thru()
1059 bus_dmamap_unload(sc->buffer_dmat, cm->cm_dmamap); in mpr_user_pass_thru()
1061 if (cm->cm_flags & MPR_CM_FLAGS_DATAIN) { in mpr_user_pass_thru()
1063 err = copyout(cm->cm_data, in mpr_user_pass_thru()
1075 if (err == 0 && cm->cm_reply != NULL) { in mpr_user_pass_thru()
1076 rpl = (MPI2_DEFAULT_REPLY *)cm->cm_reply; in mpr_user_pass_thru()
1085 err = copyout(cm->cm_reply, PTRIN(data->PtrReply), in mpr_user_pass_thru()
1102 err = copyout(cm->cm_sense, in mpr_user_pass_thru()
1128 if (cm->nvme_error_response == NULL) { in mpr_user_pass_thru()
1137 (Mpi26NVMeEncapsulatedErrorReply_t *)cm->cm_reply; in mpr_user_pass_thru()
1141 err = copyout(cm->cm_sense, in mpr_user_pass_thru()
1157 if (cm != NULL) { in mpr_user_pass_thru()
1158 if (cm->cm_data) in mpr_user_pass_thru()
1159 free(cm->cm_data, M_MPRUSER); in mpr_user_pass_thru()
1160 mpr_free_command(sc, cm); in mpr_user_pass_thru()
1263 struct mpr_command *cm = NULL; in mpr_post_fw_diag_buffer() local
1284 cm = mpr_alloc_command(sc); in mpr_post_fw_diag_buffer()
1285 if (cm == NULL) { in mpr_post_fw_diag_buffer()
1293 req = (MPI2_DIAG_BUFFER_POST_REQUEST *)cm->cm_req; in mpr_post_fw_diag_buffer()
1301 cm->cm_data = NULL; in mpr_post_fw_diag_buffer()
1302 cm->cm_length = 0; in mpr_post_fw_diag_buffer()
1303 cm->cm_desc.Default.RequestFlags = MPI2_REQ_DESCRIPT_FLAGS_DEFAULT_TYPE; in mpr_post_fw_diag_buffer()
1304 cm->cm_complete_data = NULL; in mpr_post_fw_diag_buffer()
1309 status = mpr_wait_command(sc, &cm, 30, CAN_SLEEP); in mpr_post_fw_diag_buffer()
1310 if (status || (cm == NULL)) { in mpr_post_fw_diag_buffer()
1320 reply = (MPI2_DIAG_BUFFER_POST_REPLY *)cm->cm_reply; in mpr_post_fw_diag_buffer()
1348 if (cm != NULL) in mpr_post_fw_diag_buffer()
1349 mpr_free_command(sc, cm); in mpr_post_fw_diag_buffer()
1360 struct mpr_command *cm = NULL; in mpr_release_fw_diag_buffer() local
1383 cm = mpr_alloc_command(sc); in mpr_release_fw_diag_buffer()
1384 if (cm == NULL) { in mpr_release_fw_diag_buffer()
1392 req = (MPI2_DIAG_RELEASE_REQUEST *)cm->cm_req; in mpr_release_fw_diag_buffer()
1395 cm->cm_data = NULL; in mpr_release_fw_diag_buffer()
1396 cm->cm_length = 0; in mpr_release_fw_diag_buffer()
1397 cm->cm_desc.Default.RequestFlags = MPI2_REQ_DESCRIPT_FLAGS_DEFAULT_TYPE; in mpr_release_fw_diag_buffer()
1398 cm->cm_complete_data = NULL; in mpr_release_fw_diag_buffer()
1403 status = mpr_wait_command(sc, &cm, 30, CAN_SLEEP); in mpr_release_fw_diag_buffer()
1404 if (status || (cm == NULL)) { in mpr_release_fw_diag_buffer()
1414 reply = (MPI2_DIAG_RELEASE_REPLY *)cm->cm_reply; in mpr_release_fw_diag_buffer()
1445 if (cm != NULL) in mpr_release_fw_diag_buffer()
1446 mpr_free_command(sc, cm); in mpr_release_fw_diag_buffer()