Lines Matching defs:cm

417 mpi_init_sge(struct mps_command *cm, void *req, void *sge)
421 space = (int)cm->cm_sc->facts->IOCRequestFrameSize * 4;
427 cm->cm_sge = sge;
428 cm->cm_sglsize = space - off;
435 mpi_pre_ioc_facts(struct mps_command *cm, struct mps_usr_command *cmd)
437 MPI2_IOC_FACTS_REQUEST *req = (void *)cm->cm_req;
445 cm->cm_sge = NULL;
446 cm->cm_sglsize = 0;
454 mpi_pre_port_facts(struct mps_command *cm, struct mps_usr_command *cmd)
456 MPI2_PORT_FACTS_REQUEST *req = (void *)cm->cm_req;
464 cm->cm_sge = NULL;
465 cm->cm_sglsize = 0;
473 mpi_pre_fw_download(struct mps_command *cm, struct mps_usr_command *cmd)
475 MPI2_FW_DOWNLOAD_REQUEST *req = (void *)cm->cm_req;
494 error = copyin(cmd->buf, cm->cm_data, cmd->len);
498 mpi_init_sge(cm, req, &req->SGL);
518 cm->cm_flags |= MPS_CM_FLAGS_DATAOUT;
520 return (mps_push_sge(cm, &tc, sizeof tc, 0));
527 mpi_pre_fw_upload(struct mps_command *cm, struct mps_usr_command *cmd)
529 MPI2_FW_UPLOAD_REQUEST *req = (void *)cm->cm_req;
544 mpi_init_sge(cm, req, &req->SGL);
560 cm->cm_flags |= MPS_CM_FLAGS_DATAIN;
562 return (mps_push_sge(cm, &tc, sizeof tc, 0));
569 mpi_pre_sata_passthrough(struct mps_command *cm, struct mps_usr_command *cmd)
571 MPI2_SATA_PASSTHROUGH_REQUEST *req = (void *)cm->cm_req;
579 mpi_init_sge(cm, req, &req->SGL);
587 mpi_pre_smp_passthrough(struct mps_command *cm, struct mps_usr_command *cmd)
589 MPI2_SMP_PASSTHROUGH_REQUEST *req = (void *)cm->cm_req;
597 mpi_init_sge(cm, req, &req->SGL);
605 mpi_pre_config(struct mps_command *cm, struct mps_usr_command *cmd)
607 MPI2_CONFIG_REQUEST *req = (void *)cm->cm_req;
615 mpi_init_sge(cm, req, &req->PageBufferSGE);
623 mpi_pre_sas_io_unit_control(struct mps_command *cm,
627 cm->cm_sge = NULL;
628 cm->cm_sglsize = 0;
652 mps_user_setup_request(struct mps_command *cm, struct mps_usr_command *cmd)
654 MPI2_REQUEST_HEADER *hdr = (MPI2_REQUEST_HEADER *)cm->cm_req;
659 return (f->f_pre(cm, cmd));
670 struct mps_command *cm = NULL;
675 cm = mps_alloc_command(sc);
677 if (cm == NULL) {
684 hdr = (MPI2_REQUEST_HEADER *)cm->cm_req;
702 cm->cm_data = buf;
703 cm->cm_length = cmd->len;
705 cm->cm_data = NULL;
706 cm->cm_length = 0;
709 cm->cm_flags = MPS_CM_FLAGS_SGE_SIMPLE;
710 cm->cm_desc.Default.RequestFlags = MPI2_REQ_DESCRIPT_FLAGS_DEFAULT_TYPE;
712 err = mps_user_setup_request(cm, cmd);
722 err = mps_wait_command(sc, cm, 60, CAN_SLEEP);
730 rpl = (MPI2_DEFAULT_REPLY *)cm->cm_reply;
750 if (cm != NULL)
751 mps_free_command(sc, cm);
764 struct mps_command *cm = NULL;
838 cm = mpssas_alloc_tm(sc);
839 if (cm == NULL) {
845 task = (MPI2_SCSI_TASK_MANAGE_REQUEST *)cm->cm_req;
847 task->TaskMID = cm->cm_desc.Default.SMID;
849 cm->cm_data = NULL;
850 cm->cm_desc.HighPriority.RequestFlags =
852 cm->cm_complete = NULL;
853 cm->cm_complete_data = NULL;
863 mpssas_prepare_for_tm(sc, cm, targ, CAM_LUN_WILDCARD);
864 err = mps_wait_command(sc, cm, 30, CAN_SLEEP);
875 if (cm->cm_reply != NULL) {
876 rpl = (MPI2_DEFAULT_REPLY *)cm->cm_reply;
885 copyout(cm->cm_reply, PTRIN(data->PtrReply),
889 mpssas_free_tm(sc, cm);
894 cm = mps_alloc_command(sc);
896 if (cm == NULL) {
903 hdr = (MPI2_REQUEST_HEADER *)cm->cm_req;
910 mpi_init_sge(cm, hdr, (void *)((uint8_t *)hdr + data->RequestSize));
921 cm->cm_data = NULL;
922 cm->cm_length = MAX(data->DataSize, data->DataOutSize);
923 cm->cm_out_len = data->DataOutSize;
924 cm->cm_flags = 0;
925 if (cm->cm_length != 0) {
926 cm->cm_data = malloc(cm->cm_length, M_MPSUSER, M_WAITOK |
928 cm->cm_flags = MPS_CM_FLAGS_DATAIN;
930 cm->cm_flags |= MPS_CM_FLAGS_DATAOUT;
932 cm->cm_data, data->DataOutSize);
935 cm->cm_flags = MPS_CM_FLAGS_DATAOUT;
937 cm->cm_data, data->DataSize);
943 cm->cm_flags |= MPS_CM_FLAGS_SGE_SIMPLE;
944 cm->cm_desc.Default.RequestFlags = MPI2_REQ_DESCRIPT_FLAGS_DEFAULT_TYPE;
963 scsi_io_req->SenseBufferLowAddress = htole32(cm->cm_sense_busaddr);
979 cm->cm_desc.SCSIIO.RequestFlags =
981 cm->cm_desc.SCSIIO.DevHandle = scsi_io_req->DevHandle;
996 err = mps_wait_command(sc, cm, 30, CAN_SLEEP);
1008 if (cm->cm_data != NULL) {
1009 if (cm->cm_flags & MPS_CM_FLAGS_DATAIN)
1011 else if (cm->cm_flags & MPS_CM_FLAGS_DATAOUT)
1013 bus_dmamap_sync(sc->buffer_dmat, cm->cm_dmamap, dir);
1014 bus_dmamap_unload(sc->buffer_dmat, cm->cm_dmamap);
1016 if (cm->cm_flags & MPS_CM_FLAGS_DATAIN) {
1018 err = copyout(cm->cm_data,
1030 if (cm->cm_reply != NULL) {
1031 rpl = (MPI2_DEFAULT_REPLY *)cm->cm_reply;
1040 copyout(cm->cm_reply, PTRIN(data->PtrReply), data->ReplySize);
1051 copyout(cm->cm_sense, cm->cm_req + 64, sense_len);
1061 if (cm != NULL) {
1062 if (cm->cm_data)
1063 free(cm->cm_data, M_MPSUSER);
1064 mps_free_command(sc, cm);
1165 struct mps_command *cm = NULL;
1186 cm = mps_alloc_command(sc);
1187 if (cm == NULL) {
1195 req = (MPI2_DIAG_BUFFER_POST_REQUEST *)cm->cm_req;
1203 cm->cm_data = NULL;
1204 cm->cm_length = 0;
1205 cm->cm_desc.Default.RequestFlags = MPI2_REQ_DESCRIPT_FLAGS_DEFAULT_TYPE;
1206 cm->cm_complete_data = NULL;
1211 status = mps_wait_command(sc, cm, 30, CAN_SLEEP);
1222 reply = (MPI2_DIAG_BUFFER_POST_REPLY *)cm->cm_reply;
1243 mps_free_command(sc, cm);
1254 struct mps_command *cm = NULL;
1277 cm = mps_alloc_command(sc);
1278 if (cm == NULL) {
1286 req = (MPI2_DIAG_RELEASE_REQUEST *)cm->cm_req;
1289 cm->cm_data = NULL;
1290 cm->cm_length = 0;
1291 cm->cm_desc.Default.RequestFlags = MPI2_REQ_DESCRIPT_FLAGS_DEFAULT_TYPE;
1292 cm->cm_complete_data = NULL;
1297 status = mps_wait_command(sc, cm, 30, CAN_SLEEP);
1308 reply = (MPI2_DIAG_RELEASE_REPLY *)cm->cm_reply;