Lines Matching refs:cm

96 static void	aac_unmap_command(struct aac_command *cm);
119 static int aac_src_send_command(struct aac_softc *sc, struct aac_command *cm);
358 struct aac_command *cm; in aac_daemon() local
370 if (!aacraid_alloc_command(sc, &cm)) { in aac_daemon()
371 fib = cm->cm_fib; in aac_daemon()
372 cm->cm_timestamp = time_uptime; in aac_daemon()
373 cm->cm_datalen = 0; in aac_daemon()
374 cm->cm_flags |= AAC_CMD_WAIT; in aac_daemon()
390 aacraid_map_command_sg(cm, NULL, 0, 0); in aac_daemon()
391 aacraid_release_command(cm); in aac_daemon()
421 struct aac_command *cm; in aac_get_container_info() local
428 if (aacraid_alloc_command(sc, &cm)) { in aac_get_container_info()
433 fib = cm->cm_fib; in aac_get_container_info()
457 cm->cm_timestamp = time_uptime; in aac_get_container_info()
458 cm->cm_datalen = 0; in aac_get_container_info()
472 if (aacraid_wait_command(cm) != 0) { in aac_get_container_info()
474 aacraid_release_command(cm); in aac_get_container_info()
517 rval = aacraid_wait_command(cm); in aac_get_container_info()
523 aacraid_release_command(cm); in aac_get_container_info()
868 struct aac_command *cm; in aacraid_new_intr_type1() local
909 cm = sc->aac_sync_cm; in aacraid_new_intr_type1()
910 aac_unmap_command(cm); in aacraid_new_intr_type1()
911 cm->cm_flags |= AAC_CMD_COMPLETED; in aacraid_new_intr_type1()
912 aac_fib_header_toh(&cm->cm_fib->Header); in aacraid_new_intr_type1()
915 if (cm->cm_complete != NULL) { in aacraid_new_intr_type1()
916 cm->cm_complete(cm); in aacraid_new_intr_type1()
919 wakeup(cm); in aacraid_new_intr_type1()
958 cm = sc->aac_commands + (handle - 1); in aacraid_new_intr_type1()
959 fib = cm->cm_fib; in aacraid_new_intr_type1()
966 aac_remove_busy(cm); in aacraid_new_intr_type1()
967 aacraid_release_command(cm); in aacraid_new_intr_type1()
972 cm->cm_flags |= AAC_CMD_FASTRESP; in aacraid_new_intr_type1()
974 aac_remove_busy(cm); in aacraid_new_intr_type1()
975 aac_unmap_command(cm); in aacraid_new_intr_type1()
976 cm->cm_flags |= AAC_CMD_COMPLETED; in aacraid_new_intr_type1()
979 if (cm->cm_complete != NULL) { in aacraid_new_intr_type1()
980 cm->cm_complete(cm); in aacraid_new_intr_type1()
983 wakeup(cm); in aacraid_new_intr_type1()
1068 aacraid_wait_command(struct aac_command *cm) in aacraid_wait_command() argument
1073 sc = cm->cm_sc; in aacraid_wait_command()
1078 aac_enqueue_ready(cm); in aacraid_wait_command()
1080 error = msleep(cm, &sc->aac_io_lock, PRIBIO, "aacraid_wait", 0); in aacraid_wait_command()
1094 struct aac_command *cm; in aacraid_alloc_command() local
1098 if ((cm = aac_dequeue_free(sc)) == NULL) { in aacraid_alloc_command()
1106 *cmp = cm; in aacraid_alloc_command()
1114 aacraid_release_command(struct aac_command *cm) in aacraid_release_command() argument
1119 sc = cm->cm_sc; in aacraid_release_command()
1124 cm->cm_sgtable = NULL; in aacraid_release_command()
1125 cm->cm_flags = 0; in aacraid_release_command()
1126 cm->cm_complete = NULL; in aacraid_release_command()
1127 cm->cm_ccb = NULL; in aacraid_release_command()
1128 cm->cm_passthr_dmat = 0; in aacraid_release_command()
1129 cm->cm_fib->Header.XferState = AAC_FIBSTATE_EMPTY; in aacraid_release_command()
1130 cm->cm_fib->Header.StructType = AAC_FIBTYPE_TFIB; in aacraid_release_command()
1131 cm->cm_fib->Header.Unused = 0; in aacraid_release_command()
1132 cm->cm_fib->Header.SenderSize = cm->cm_sc->aac_max_fib_size; in aacraid_release_command()
1139 cm->cm_fib->Header.u.ReceiverFibAddress = (u_int32_t)cm->cm_fibphys; in aacraid_release_command()
1140 cm->cm_fib->Header.Handle = 0; in aacraid_release_command()
1142 aac_enqueue_free(cm); in aacraid_release_command()
1173 struct aac_command *cm; in aac_alloc_commands() local
1212 cm = sc->aac_commands + sc->total_fibs; in aac_alloc_commands()
1213 fm->aac_commands = cm; in aac_alloc_commands()
1214 cm->cm_sc = sc; in aac_alloc_commands()
1215 cm->cm_fib = (struct aac_fib *) in aac_alloc_commands()
1217 cm->cm_fibphys = fibphys + i * maxsize; in aac_alloc_commands()
1221 (cm->cm_fibphys + sizeof(struct aac_fib_xporthdr) + 31) & ~31; in aac_alloc_commands()
1222 cm->cm_fib = (struct aac_fib *) in aac_alloc_commands()
1223 ((u_int8_t *)cm->cm_fib + (fibphys_aligned - cm->cm_fibphys)); in aac_alloc_commands()
1224 cm->cm_fibphys = fibphys_aligned; in aac_alloc_commands()
1227 fibphys_aligned = (cm->cm_fibphys + 31) & ~31; in aac_alloc_commands()
1228 cm->cm_fib = (struct aac_fib *) in aac_alloc_commands()
1229 ((u_int8_t *)cm->cm_fib + (fibphys_aligned - cm->cm_fibphys)); in aac_alloc_commands()
1230 cm->cm_fibphys = fibphys_aligned; in aac_alloc_commands()
1232 cm->cm_index = sc->total_fibs; in aac_alloc_commands()
1235 &cm->cm_datamap)) != 0) in aac_alloc_commands()
1238 aacraid_release_command(cm); in aac_alloc_commands()
1261 struct aac_command *cm; in aac_free_commands() local
1273 cm = fm->aac_commands + i; in aac_free_commands()
1274 bus_dmamap_destroy(sc->aac_buffer_dmat, cm->cm_datamap); in aac_free_commands()
1289 struct aac_command *cm; in aacraid_map_command_sg() local
1293 cm = (struct aac_command *)arg; in aacraid_map_command_sg()
1294 sc = cm->cm_sc; in aacraid_map_command_sg()
1295 fib = cm->cm_fib; in aacraid_map_command_sg()
1303 if (cm->cm_sgtable != NULL) { in aacraid_map_command_sg()
1311 sg = (struct aac_sge_ieee1212 *)cm->cm_sgtable; in aacraid_map_command_sg()
1367 sg = (struct aac_sg_tableraw *)cm->cm_sgtable; in aacraid_map_command_sg()
1380 } else if ((cm->cm_sc->flags & AAC_FLAGS_SG_64BIT) == 0) { in aacraid_map_command_sg()
1382 sg = cm->cm_sgtable; in aacraid_map_command_sg()
1393 sg = (struct aac_sg_table64 *)cm->cm_sgtable; in aacraid_map_command_sg()
1410 cm->cm_fib->Header.SenderFibAddress = (cm->cm_index << 2); in aacraid_map_command_sg()
1411 cm->cm_fib->Header.u.ReceiverFibAddress = (u_int32_t)cm->cm_fibphys; in aacraid_map_command_sg()
1414 cm->cm_fib->Header.Handle += cm->cm_index + 1; in aacraid_map_command_sg()
1416 if (cm->cm_passthr_dmat == 0) { in aacraid_map_command_sg()
1417 if (cm->cm_flags & AAC_CMD_DATAIN) in aacraid_map_command_sg()
1418 bus_dmamap_sync(sc->aac_buffer_dmat, cm->cm_datamap, in aacraid_map_command_sg()
1420 if (cm->cm_flags & AAC_CMD_DATAOUT) in aacraid_map_command_sg()
1421 bus_dmamap_sync(sc->aac_buffer_dmat, cm->cm_datamap, in aacraid_map_command_sg()
1425 cm->cm_flags |= AAC_CMD_MAPPED; in aacraid_map_command_sg()
1427 if (cm->cm_flags & AAC_CMD_WAIT) { in aacraid_map_command_sg()
1430 cm->cm_fibphys, 0, 0, 0, NULL, NULL); in aacraid_map_command_sg()
1433 sc->aac_sync_cm = cm; in aacraid_map_command_sg()
1436 cm->cm_fibphys, 0, 0, 0, &wait, NULL); in aacraid_map_command_sg()
1439 while (AAC_SEND_COMMAND(sc, cm) != 0) { in aacraid_map_command_sg()
1441 aac_unmap_command(cm); in aacraid_map_command_sg()
1443 aac_requeue_ready(cm); in aacraid_map_command_sg()
1490 aac_unmap_command(struct aac_command *cm) in aac_unmap_command() argument
1494 sc = cm->cm_sc; in aac_unmap_command()
1497 if (!(cm->cm_flags & AAC_CMD_MAPPED)) in aac_unmap_command()
1500 if (cm->cm_datalen != 0 && cm->cm_passthr_dmat == 0) { in aac_unmap_command()
1501 if (cm->cm_flags & AAC_CMD_DATAIN) in aac_unmap_command()
1502 bus_dmamap_sync(sc->aac_buffer_dmat, cm->cm_datamap, in aac_unmap_command()
1504 if (cm->cm_flags & AAC_CMD_DATAOUT) in aac_unmap_command()
1505 bus_dmamap_sync(sc->aac_buffer_dmat, cm->cm_datamap, in aac_unmap_command()
1508 bus_dmamap_unload(sc->aac_buffer_dmat, cm->cm_datamap); in aac_unmap_command()
1510 cm->cm_flags &= ~AAC_CMD_MAPPED; in aac_unmap_command()
2164 struct aac_command *cm; in aac_timeout() local
2175 TAILQ_FOREACH(cm, &sc->aac_busy, cm_link) { in aac_timeout()
2176 if (cm->cm_timestamp < deadline) { in aac_timeout()
2179 cm, (int)(time_uptime-cm->cm_timestamp)); in aac_timeout()
2180 AAC_PRINT_FIB(sc, cm->cm_fib); in aac_timeout()
2384 aac_src_send_command(struct aac_softc *sc, struct aac_command *cm) in aac_src_send_command() argument
2392 if (sc->msi_enabled && cm->cm_fib->Header.Command != AifRequest && in aac_src_send_command()
2417 cm->cm_fib->Header.Handle += (vector_no << 16); in aac_src_send_command()
2422 fibsize = (cm->cm_fib->Header.Size + 127) / 128 - 1; in aac_src_send_command()
2424 address = cm->cm_fibphys; in aac_src_send_command()
2427 cm->cm_fib->Header.StructType = AAC_FIBTYPE_TFIB2; in aac_src_send_command()
2428 cm->cm_fib->Header.u.TimeStamp = 0L; in aac_src_send_command()
2430 cm->cm_fib->Header.StructType = AAC_FIBTYPE_TFIB2_64; in aac_src_send_command()
2431 cm->cm_fib->Header.u.SenderFibAddressHigh = high_addr; in aac_src_send_command()
2433 cm->cm_fib->Header.SenderFibAddress = (u_int32_t)address; in aac_src_send_command()
2437 cm->cm_fib->Header.Size + 127) / 128 - 1; in aac_src_send_command()
2440 ((unsigned char *)cm->cm_fib - sizeof(struct aac_fib_xporthdr)); in aac_src_send_command()
2441 pFibX->Handle = cm->cm_fib->Header.Handle; in aac_src_send_command()
2442 pFibX->HostAddress = cm->cm_fibphys; in aac_src_send_command()
2443 pFibX->Size = cm->cm_fib->Header.Size; in aac_src_send_command()
2445 address = cm->cm_fibphys - sizeof(struct aac_fib_xporthdr); in aac_src_send_command()
2449 aac_fib_header_tole(&cm->cm_fib->Header); in aac_src_send_command()
2453 aac_enqueue_busy(cm); in aac_src_send_command()
2777 struct aac_command *cm; in aac_ioctl_sendfib() local
2782 cm = NULL; in aac_ioctl_sendfib()
2788 if (aacraid_alloc_command(sc, &cm)) { in aac_ioctl_sendfib()
2800 event->ev_arg = &cm; in aac_ioctl_sendfib()
2802 msleep(cm, &sc->aac_io_lock, 0, "aacraid_ctlsfib", 0); in aac_ioctl_sendfib()
2809 if ((error = copyin(ufib, cm->cm_fib, in aac_ioctl_sendfib()
2812 size = cm->cm_fib->Header.Size + sizeof(struct aac_fib_header); in aac_ioctl_sendfib()
2818 if ((error = copyin(ufib, cm->cm_fib, size)) != 0) in aac_ioctl_sendfib()
2820 cm->cm_fib->Header.Size = size; in aac_ioctl_sendfib()
2821 cm->cm_timestamp = time_uptime; in aac_ioctl_sendfib()
2822 cm->cm_datalen = 0; in aac_ioctl_sendfib()
2828 error = aacraid_wait_command(cm); in aac_ioctl_sendfib()
2839 size = cm->cm_fib->Header.Size; in aac_ioctl_sendfib()
2845 error = copyout(cm->cm_fib, ufib, size); in aac_ioctl_sendfib()
2848 if (cm != NULL) { in aac_ioctl_sendfib()
2850 aacraid_release_command(cm); in aac_ioctl_sendfib()
2862 struct aac_command *cm; in aac_ioctl_send_raw_srb() local
2875 cm = NULL; in aac_ioctl_send_raw_srb()
2878 if (aacraid_alloc_command(sc, &cm)) { in aac_ioctl_send_raw_srb()
2890 event->ev_arg = &cm; in aac_ioctl_send_raw_srb()
2892 msleep(cm, &sc->aac_io_lock, 0, "aacraid_ctlsraw", 0); in aac_ioctl_send_raw_srb()
2896 cm->cm_data = NULL; in aac_ioctl_send_raw_srb()
2898 orig_map = cm->cm_datamap; in aac_ioctl_send_raw_srb()
2900 fib = cm->cm_fib; in aac_ioctl_send_raw_srb()
2972 &cm->cm_passthr_dmat)) { in aac_ioctl_send_raw_srb()
2976 if (bus_dmamem_alloc(cm->cm_passthr_dmat, (void **)&cm->cm_data, in aac_ioctl_send_raw_srb()
2977 BUS_DMA_NOWAIT, &cm->cm_datamap)) { in aac_ioctl_send_raw_srb()
2982 cm->cm_datalen = srb_sg_bytecount; in aac_ioctl_send_raw_srb()
2984 cm->cm_flags |= AAC_CMD_DATAIN; in aac_ioctl_send_raw_srb()
2986 cm->cm_flags |= AAC_CMD_DATAOUT; in aac_ioctl_send_raw_srb()
2990 cm->cm_data, cm->cm_datalen)) != 0) in aac_ioctl_send_raw_srb()
2993 bus_dmamap_sync(cm->cm_passthr_dmat, cm->cm_datamap, in aac_ioctl_send_raw_srb()
3012 cm->cm_sgtable = (struct aac_sg_table *)&srbcmd->sg_map; in aac_ioctl_send_raw_srb()
3018 bus_dmamap_load(cm->cm_passthr_dmat, in aac_ioctl_send_raw_srb()
3019 cm->cm_datamap, cm->cm_data, in aac_ioctl_send_raw_srb()
3020 cm->cm_datalen, in aac_ioctl_send_raw_srb()
3021 aacraid_map_command_sg, cm, 0); in aac_ioctl_send_raw_srb()
3023 aacraid_map_command_sg(cm, NULL, 0, 0); in aac_ioctl_send_raw_srb()
3028 while (!(cm->cm_flags & AAC_CMD_COMPLETED)) in aac_ioctl_send_raw_srb()
3029 msleep(cm, &sc->aac_io_lock, 0, "aacraid_ctlsrw2", 0); in aac_ioctl_send_raw_srb()
3034 if ((error = copyout(cm->cm_data, in aac_ioctl_send_raw_srb()
3036 cm->cm_datalen)) != 0) in aac_ioctl_send_raw_srb()
3039 bus_dmamap_sync(cm->cm_passthr_dmat, cm->cm_datamap, in aac_ioctl_send_raw_srb()
3048 if (cm && cm->cm_data) { in aac_ioctl_send_raw_srb()
3050 bus_dmamap_unload(cm->cm_passthr_dmat, cm->cm_datamap); in aac_ioctl_send_raw_srb()
3051 bus_dmamem_free(cm->cm_passthr_dmat, cm->cm_data, cm->cm_datamap); in aac_ioctl_send_raw_srb()
3052 cm->cm_datamap = orig_map; in aac_ioctl_send_raw_srb()
3054 if (cm && cm->cm_passthr_dmat) in aac_ioctl_send_raw_srb()
3055 bus_dma_tag_destroy(cm->cm_passthr_dmat); in aac_ioctl_send_raw_srb()
3056 if (cm) { in aac_ioctl_send_raw_srb()
3058 aacraid_release_command(cm); in aac_ioctl_send_raw_srb()
3070 struct aac_command *cm; in aac_request_aif() local
3075 if (aacraid_alloc_command(sc, &cm)) { in aac_request_aif()
3082 fib = cm->cm_fib; in aac_request_aif()
3097 aacraid_map_command_sg(cm, NULL, 0, 0); in aac_request_aif()
3780 struct aac_command *cm; in aac_reset_adapter() local
3802 while ((cm = aac_dequeue_busy(sc)) != NULL) { in aac_reset_adapter()
3803 cm->cm_flags |= AAC_CMD_RESET; in aac_reset_adapter()
3806 if (cm->cm_complete != NULL) { in aac_reset_adapter()
3807 cm->cm_complete(cm); in aac_reset_adapter()
3812 wakeup(cm); in aac_reset_adapter()
3817 while ((cm = aac_dequeue_ready(sc)) != NULL) { in aac_reset_adapter()
3818 cm->cm_flags |= AAC_CMD_RESET; in aac_reset_adapter()
3821 if (cm->cm_complete != NULL) { in aac_reset_adapter()
3822 cm->cm_complete(cm); in aac_reset_adapter()
3827 wakeup(cm); in aac_reset_adapter()