• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/linux/linux-2.6.36/drivers/scsi/

Lines Matching refs:request_id

286 static int twl_post_command_packet(TW_Device_Extension *tw_dev, int request_id)
290 command_que_value = tw_dev->command_packet_phys[request_id];
298 tw_dev->state[request_id] = TW_S_POSTED;
307 static int twl_map_scsi_sg_data(TW_Device_Extension *tw_dev, int request_id)
310 struct scsi_cmnd *cmd = tw_dev->srb[request_id];
327 static int twl_scsiop_execute_scsi(TW_Device_Extension *tw_dev, int request_id, char *cdb, int use_sg, TW_SG_Entry_ISO *sglistarg)
336 if (tw_dev->srb[request_id]) {
337 srb = tw_dev->srb[request_id];
343 full_command_packet = tw_dev->command_packet_virt[request_id];
361 cpu_to_le16(TW_REQ_LUN_IN(srb->device->lun, request_id));
364 cpu_to_le16(TW_REQ_LUN_IN(0, request_id));
373 sg_count = twl_map_scsi_sg_data(tw_dev, request_id);
381 command_packet->sgl_entries__lunh = cpu_to_le16(TW_REQ_LUN_IN((srb->device->lun >> 4), scsi_sg_count(tw_dev->srb[request_id])));
403 retval = twl_post_command_packet(tw_dev, request_id);
410 static int twl_aen_read_queue(TW_Device_Extension *tw_dev, int request_id)
417 full_command_packet = tw_dev->command_packet_virt[request_id];
428 sglist[0].address = tw_dev->generic_buffer_phys[request_id];
431 tw_dev->srb[request_id] = NULL;
434 if (twl_scsiop_execute_scsi(tw_dev, request_id, cdb, 1, sglist)) {
444 static void twl_aen_sync_time(TW_Device_Extension *tw_dev, int request_id)
454 full_command_packet = tw_dev->command_packet_virt[request_id];
458 command_packet->request_id = request_id;
459 command_packet->byte8_offset.param.sgl[0].address = TW_CPU_TO_SGL(tw_dev->generic_buffer_phys[request_id]);
465 param = (TW_Param_Apache *)tw_dev->generic_buffer_virt[request_id];
481 tw_dev->srb[request_id] = NULL;
484 twl_post_command_packet(tw_dev, request_id);
488 static void twl_get_request_id(TW_Device_Extension *tw_dev, int *request_id)
490 *request_id = tw_dev->free_queue[tw_dev->free_head];
492 tw_dev->state[*request_id] = TW_S_STARTED;
496 static void twl_free_request_id(TW_Device_Extension *tw_dev, int request_id)
498 tw_dev->free_queue[tw_dev->free_tail] = request_id;
499 tw_dev->state[request_id] = TW_S_FINISHED;
504 static int twl_aen_complete(TW_Device_Extension *tw_dev, int request_id)
512 header = (TW_Command_Apache_Header *)tw_dev->generic_buffer_virt[request_id];
515 full_command_packet = tw_dev->command_packet_virt[request_id];
521 if (twl_aen_read_queue(tw_dev, request_id))
534 twl_aen_sync_time(tw_dev, request_id);
541 if (twl_aen_read_queue(tw_dev, request_id))
550 tw_dev->state[request_id] = TW_S_COMPLETED;
551 twl_free_request_id(tw_dev, request_id);
558 static int twl_poll_response(TW_Device_Extension *tw_dev, int request_id, int seconds)
579 if (TW_RESID_OUT(response) == request_id)
595 int request_id = 0;
609 full_command_packet = tw_dev->command_packet_virt[request_id];
620 sglist[0].address = tw_dev->generic_buffer_phys[request_id];
623 tw_dev->srb[request_id] = NULL;
627 if (twl_scsiop_execute_scsi(tw_dev, request_id, cdb, 1, sglist)) {
633 if (twl_poll_response(tw_dev, request_id, 30)) {
640 header = (TW_Command_Apache_Header *)tw_dev->generic_buffer_virt[request_id];
674 tw_dev->state[request_id] = TW_S_INITIAL;
716 static void twl_load_sgl(TW_Device_Extension *tw_dev, TW_Command_Full *full_command_packet, int request_id, dma_addr_t dma_handle, int length)
729 cpu_to_le16(TW_REQ_LUN_IN(TW_LUN_OUT(newcommand->request_id__lunl), request_id));
738 oldcommand->request_id = request_id;
758 int request_id = 0;
805 twl_get_request_id(tw_dev, &request_id);
808 tw_dev->srb[request_id] = NULL;
811 tw_dev->chrdev_request_id = request_id;
816 twl_load_sgl(tw_dev, full_command_packet, request_id, dma_handle, data_buffer_length_adjusted);
818 memcpy(tw_dev->command_packet_virt[request_id], &(tw_ioctl->firmware_command), sizeof(TW_Command_Full));
821 twl_post_command_packet(tw_dev, request_id);
841 memcpy(&(tw_ioctl->firmware_command), tw_dev->command_packet_virt[request_id], sizeof(TW_Command_Full));
846 tw_dev->state[request_id] = TW_S_COMPLETED;
847 twl_free_request_id(tw_dev, request_id);
897 static int twl_fill_sense(TW_Device_Extension *tw_dev, int i, int request_id, int copy_sense, int print_host)
906 full_command_packet = tw_dev->command_packet_virt[request_id];
930 memcpy(tw_dev->srb[request_id]->sense_buffer, header->sense_data, TW_SENSE_DATA_LENGTH);
931 tw_dev->srb[request_id]->result = (full_command_packet->command.newcommand.status << 1);
964 static void *twl_get_param(TW_Device_Extension *tw_dev, int request_id, int table_id, int parameter_id, int parameter_size_bytes)
972 full_command_packet = tw_dev->command_packet_virt[request_id];
978 command_packet->request_id = request_id;
982 param = (TW_Param_Apache *)tw_dev->generic_buffer_virt[request_id];
988 command_packet->byte8_offset.param.sgl[0].address = TW_CPU_TO_SGL(tw_dev->generic_buffer_phys[request_id]);
992 twl_post_command_packet(tw_dev, request_id);
995 if (twl_poll_response(tw_dev, request_id, 30))
1001 tw_dev->state[request_id] = TW_S_INITIAL;
1020 int request_id = 0, retval = 1;
1023 full_command_packet = tw_dev->command_packet_virt[request_id];
1029 tw_initconnect->request_id = request_id;
1048 twl_post_command_packet(tw_dev, request_id);
1051 if (twl_poll_response(tw_dev, request_id, 30)) {
1065 tw_dev->state[request_id] = TW_S_INITIAL;
1120 static void twl_unmap_scsi_data(TW_Device_Extension *tw_dev, int request_id)
1122 struct scsi_cmnd *cmd = tw_dev->srb[request_id];
1132 u32 request_id, doorbell;
1146 twl_get_request_id(tw_dev, &request_id);
1147 if (twl_aen_read_queue(tw_dev, request_id)) {
1148 tw_dev->state[request_id] = TW_S_COMPLETED;
1149 twl_free_request_id(tw_dev, request_id);
1172 u32 reg, regl, regh, response, request_id = 0;
1215 request_id = le16_to_cpu(tw_dev->sense_buffer_virt[i]->header_desc.request_id);
1216 if (tw_dev->srb[request_id] != NULL)
1217 error = twl_fill_sense(tw_dev, i, request_id, 1, 1);
1220 if (request_id != tw_dev->chrdev_request_id)
1221 error = twl_fill_sense(tw_dev, i, request_id, 0, 1);
1223 memcpy(tw_dev->command_packet_virt[request_id], tw_dev->sense_buffer_virt[i], sizeof(TW_Command_Apache_Header));
1233 request_id = TW_RESID_OUT(response);
1235 full_command_packet = tw_dev->command_packet_virt[request_id];
1238 if (tw_dev->state[request_id] != TW_S_POSTED) {
1239 if (tw_dev->srb[request_id] != NULL) {
1247 if (tw_dev->srb[request_id] == NULL) {
1248 if (request_id != tw_dev->chrdev_request_id) {
1249 if (twl_aen_complete(tw_dev, request_id))
1256 cmd = tw_dev->srb[request_id];
1263 if (full_command_packet->command.newcommand.sg_list[0].length < scsi_bufflen(tw_dev->srb[request_id]))
1268 tw_dev->state[request_id] = TW_S_COMPLETED;
1269 twl_free_request_id(tw_dev, request_id);
1271 tw_dev->srb[request_id]->scsi_done(tw_dev->srb[request_id]);
1272 twl_unmap_scsi_data(tw_dev, request_id);
1506 int request_id, retval;
1519 twl_get_request_id(tw_dev, &request_id);
1522 tw_dev->srb[request_id] = SCpnt;
1527 retval = twl_scsiop_execute_scsi(tw_dev, request_id, NULL, 0, NULL);
1529 tw_dev->state[request_id] = TW_S_COMPLETED;
1530 twl_free_request_id(tw_dev, request_id);