• 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/drivers/scsi/

Lines Matching refs:request_id

160 static int tw_post_command_packet(TW_Device_Extension *tw_dev, int request_id)
166 command_que_value = tw_dev->command_packet_physical_address[request_id];
177 tw_dev->state[request_id] = TW_S_POSTED;
184 if (tw_dev->state[request_id] != TW_S_PENDING) {
185 tw_dev->state[request_id] = TW_S_PENDING;
190 tw_dev->pending_queue[tw_dev->pending_tail] = request_id;
204 static int tw_decode_sense(TW_Device_Extension *tw_dev, int request_id, int fill_sense)
210 command = (TW_Command *)tw_dev->command_packet_virtual_address[request_id];
221 tw_dev->srb[request_id]->sense_buffer[0] = (0x1 << 7 | 0x70);
224 tw_dev->srb[request_id]->sense_buffer[2] = tw_sense_table[i][1];
227 tw_dev->srb[request_id]->sense_buffer[7] = 0xa; /* 10 bytes */
230 tw_dev->srb[request_id]->sense_buffer[12] = tw_sense_table[i][2];
233 tw_dev->srb[request_id]->sense_buffer[13] = tw_sense_table[i][3];
235 tw_dev->srb[request_id]->result = (DID_OK << 16) | (CHECK_CONDITION << 1);
276 /* This function will free a request_id */
277 static void tw_state_request_finish(TW_Device_Extension *tw_dev, int request_id)
279 tw_dev->free_queue[tw_dev->free_tail] = request_id;
280 tw_dev->state[request_id] = TW_S_FINISHED;
284 /* This function will assign an available request_id */
285 static void tw_state_request_start(TW_Device_Extension *tw_dev, int *request_id)
287 *request_id = tw_dev->free_queue[tw_dev->free_head];
289 tw_dev->state[*request_id] = TW_S_STARTED;
357 static int tw_aen_read_queue(TW_Device_Extension *tw_dev, int request_id)
373 if (tw_dev->command_packet_virtual_address[request_id] == NULL) {
377 command_packet = (TW_Command *)tw_dev->command_packet_virtual_address[request_id];
381 command_packet->request_id = request_id;
385 command_que_value = tw_dev->command_packet_physical_address[request_id];
391 if (tw_dev->alignment_virtual_address[request_id] == NULL) {
395 param = (TW_Param *)tw_dev->alignment_virtual_address[request_id];
400 param_value = tw_dev->alignment_physical_address[request_id];
411 tw_dev->srb[request_id] = NULL; /* Flag internal command */
412 tw_dev->state[request_id] = TW_S_POSTED;
423 static int tw_aen_complete(TW_Device_Extension *tw_dev, int request_id)
430 if (tw_dev->alignment_virtual_address[request_id] == NULL) {
434 param = (TW_Param *)tw_dev->alignment_virtual_address[request_id];
472 error = tw_aen_read_queue(tw_dev, request_id);
475 tw_dev->state[request_id] = TW_S_COMPLETED;
476 tw_state_request_finish(tw_dev, request_id);
479 tw_dev->state[request_id] = TW_S_COMPLETED;
480 tw_state_request_finish(tw_dev, request_id);
491 int request_id = 0;
514 if (tw_dev->command_packet_virtual_address[request_id] == NULL) {
518 command_packet = (TW_Command *)tw_dev->command_packet_virtual_address[request_id];
522 command_packet->request_id = request_id;
526 command_que_value = tw_dev->command_packet_physical_address[request_id];
533 if (tw_dev->alignment_virtual_address[request_id] == NULL) {
537 param = (TW_Param *)tw_dev->alignment_virtual_address[request_id];
542 param_value = tw_dev->alignment_physical_address[request_id];
558 request_id = TW_RESID_OUT(response_queue.response_id);
560 if (request_id != 0) {
569 tw_decode_sense(tw_dev, request_id, 0);
689 int request_id;
768 tw_state_request_start(tw_dev, &request_id);
771 tw_dev->srb[request_id] = NULL;
774 tw_dev->chrdev_request_id = request_id;
776 tw_ioctl->firmware_command.request_id = request_id;
794 memcpy(tw_dev->command_packet_virtual_address[request_id], &(tw_ioctl->firmware_command), sizeof(TW_Command));
797 tw_post_command_packet(tw_dev, request_id);
817 memcpy(&(tw_ioctl->firmware_command), tw_dev->command_packet_virtual_address[request_id], sizeof(TW_Command));
822 tw_dev->state[request_id] = TW_S_COMPLETED;
823 tw_state_request_finish(tw_dev, request_id);
887 int request_id = 0;
892 if (tw_dev->command_packet_virtual_address[request_id] == NULL) {
897 command_packet = (TW_Command *)tw_dev->command_packet_virtual_address[request_id];
901 command_packet->request_id = request_id;
906 command_que_value = tw_dev->command_packet_physical_address[request_id];
919 request_id = TW_RESID_OUT(response_queue.response_id);
921 if (request_id != 0) {
928 tw_decode_sense(tw_dev, request_id, 0);
942 int request_id = 0;
947 if (tw_dev->command_packet_virtual_address[request_id] == NULL) {
951 command_packet = (TW_Command *)tw_dev->command_packet_virtual_address[request_id];
953 param = (TW_Param *)tw_dev->alignment_virtual_address[request_id];
961 param_value = tw_dev->alignment_physical_address[request_id];
964 tw_dev->state[request_id] = TW_S_COMPLETED;
965 tw_state_request_finish(tw_dev, request_id);
966 tw_dev->srb[request_id]->result = (DID_OK << 16);
967 tw_dev->srb[request_id]->scsi_done(tw_dev->srb[request_id]);
973 command_packet->request_id = request_id;
976 command_que_value = tw_dev->command_packet_physical_address[request_id];
988 request_id = TW_RESID_OUT(response_queue.response_id);
990 if (request_id != 0) {
997 tw_decode_sense(tw_dev, request_id, 0);
1228 static int tw_scsiop_inquiry(TW_Device_Extension *tw_dev, int request_id)
1238 command_packet = (TW_Command *)tw_dev->command_packet_virtual_address[request_id];
1246 command_packet->request_id = request_id;
1252 if (tw_dev->alignment_virtual_address[request_id] == NULL) {
1256 param = (TW_Param *)tw_dev->alignment_virtual_address[request_id];
1261 param_value = tw_dev->alignment_physical_address[request_id];
1269 command_que_value = tw_dev->command_packet_physical_address[request_id];
1276 tw_post_command_packet(tw_dev, request_id);
1281 static void tw_transfer_internal(TW_Device_Extension *tw_dev, int request_id,
1284 scsi_sg_copy_from_buffer(tw_dev->srb[request_id], data, len);
1288 static int tw_scsiop_inquiry_complete(TW_Device_Extension *tw_dev, int request_id)
1302 sprintf(&request_buffer[16], "Logical Disk %-2d ", tw_dev->srb[request_id]->device->id);
1304 tw_transfer_internal(tw_dev, request_id, request_buffer,
1307 param = (TW_Param *)tw_dev->alignment_virtual_address[request_id];
1314 if (is_unit_present[tw_dev->srb[request_id]->device->id] & TW_UNIT_ONLINE) {
1315 tw_dev->is_unit_present[tw_dev->srb[request_id]->device->id] = 1;
1317 tw_dev->is_unit_present[tw_dev->srb[request_id]->device->id] = 0;
1318 tw_dev->srb[request_id]->result = (DID_BAD_TARGET << 16);
1326 static int tw_scsiop_mode_sense(TW_Device_Extension *tw_dev, int request_id)
1336 if (tw_dev->srb[request_id]->cmnd[2] != 0x8) {
1337 tw_dev->state[request_id] = TW_S_COMPLETED;
1338 tw_state_request_finish(tw_dev, request_id);
1339 tw_dev->srb[request_id]->result = (DID_OK << 16);
1340 tw_dev->srb[request_id]->scsi_done(tw_dev->srb[request_id]);
1345 command_packet = (TW_Command *)tw_dev->command_packet_virtual_address[request_id];
1355 command_packet->request_id = request_id;
1361 if (tw_dev->alignment_virtual_address[request_id] == NULL) {
1366 param = (TW_Param *)tw_dev->alignment_virtual_address[request_id];
1368 param->table_id = TW_UNIT_INFORMATION_TABLE_BASE + tw_dev->srb[request_id]->device->id;
1371 param_value = tw_dev->alignment_physical_address[request_id];
1379 command_que_value = tw_dev->command_packet_physical_address[request_id];
1386 tw_post_command_packet(tw_dev, request_id);
1392 static int tw_scsiop_mode_sense_complete(TW_Device_Extension *tw_dev, int request_id)
1400 param = (TW_Param *)tw_dev->alignment_virtual_address[request_id];
1418 tw_transfer_internal(tw_dev, request_id, request_buffer,
1425 static int tw_scsiop_read_capacity(TW_Device_Extension *tw_dev, int request_id)
1435 command_packet = (TW_Command *)tw_dev->command_packet_virtual_address[request_id];
1444 command_packet->request_id = request_id;
1445 command_packet->unit__hostid = TW_UNITHOST_IN(0, tw_dev->srb[request_id]->device->id);
1451 if (tw_dev->alignment_virtual_address[request_id] == NULL) {
1455 param = (TW_Param *)tw_dev->alignment_virtual_address[request_id];
1458 tw_dev->srb[request_id]->device->id;
1461 param_value = tw_dev->alignment_physical_address[request_id];
1469 command_que_value = tw_dev->command_packet_physical_address[request_id];
1476 tw_post_command_packet(tw_dev, request_id);
1482 static int tw_scsiop_read_capacity_complete(TW_Device_Extension *tw_dev, int request_id)
1492 param = (TW_Param *)tw_dev->alignment_virtual_address[request_id];
1519 tw_transfer_internal(tw_dev, request_id, buff, sizeof(buff));
1525 static int tw_scsiop_read_write(TW_Device_Extension *tw_dev, int request_id)
1536 srb = tw_dev->srb[request_id];
1545 command_packet = (TW_Command *)tw_dev->command_packet_virtual_address[request_id];
1558 command_packet->request_id = request_id;
1585 use_sg = tw_map_scsi_sg_data(tw_dev->tw_pci_dev, tw_dev->srb[request_id]);
1589 scsi_for_each_sg(tw_dev->srb[request_id], sg, use_sg, i) {
1596 tw_dev->sgl_entries = scsi_sg_count(tw_dev->srb[request_id]);
1600 command_que_value = tw_dev->command_packet_physical_address[request_id];
1607 tw_post_command_packet(tw_dev, request_id);
1613 static int tw_scsiop_request_sense(TW_Device_Extension *tw_dev, int request_id)
1623 tw_transfer_internal(tw_dev, request_id, request_buffer,
1626 tw_dev->state[request_id] = TW_S_COMPLETED;
1627 tw_state_request_finish(tw_dev, request_id);
1630 tw_dev->srb[request_id]->result = (DID_ERROR << 16);
1631 tw_dev->srb[request_id]->scsi_done(tw_dev->srb[request_id]);
1637 static int tw_scsiop_synchronize_cache(TW_Device_Extension *tw_dev, int request_id)
1645 command_packet = (TW_Command *)tw_dev->command_packet_virtual_address[request_id];
1655 command_packet->request_id = request_id;
1656 command_packet->unit__hostid = TW_UNITHOST_IN(0, tw_dev->srb[request_id]->device->id);
1660 command_que_value = tw_dev->command_packet_physical_address[request_id];
1667 tw_post_command_packet(tw_dev, request_id);
1673 static int tw_scsiop_test_unit_ready(TW_Device_Extension *tw_dev, int request_id)
1683 command_packet = (TW_Command *)tw_dev->command_packet_virtual_address[request_id];
1691 command_packet->request_id = request_id;
1697 if (tw_dev->alignment_virtual_address[request_id] == NULL) {
1701 param = (TW_Param *)tw_dev->alignment_virtual_address[request_id];
1706 param_value = tw_dev->alignment_physical_address[request_id];
1714 command_que_value = tw_dev->command_packet_physical_address[request_id];
1721 tw_post_command_packet(tw_dev, request_id);
1727 static int tw_scsiop_test_unit_ready_complete(TW_Device_Extension *tw_dev, int request_id)
1734 param = (TW_Param *)tw_dev->alignment_virtual_address[request_id];
1741 if (is_unit_present[tw_dev->srb[request_id]->device->id] & TW_UNIT_ONLINE) {
1742 tw_dev->is_unit_present[tw_dev->srb[request_id]->device->id] = 1;
1744 tw_dev->is_unit_present[tw_dev->srb[request_id]->device->id] = 0;
1745 tw_dev->srb[request_id]->result = (DID_BAD_TARGET << 16);
1756 int request_id = 0;
1768 tw_state_request_start(tw_dev, &request_id);
1771 tw_dev->srb[request_id] = SCpnt;
1782 retval = tw_scsiop_read_write(tw_dev, request_id);
1786 retval = tw_scsiop_test_unit_ready(tw_dev, request_id);
1790 retval = tw_scsiop_inquiry(tw_dev, request_id);
1794 retval = tw_scsiop_read_capacity(tw_dev, request_id);
1798 retval = tw_scsiop_request_sense(tw_dev, request_id);
1802 retval = tw_scsiop_mode_sense(tw_dev, request_id);
1806 retval = tw_scsiop_synchronize_cache(tw_dev, request_id);
1813 tw_dev->state[request_id] = TW_S_COMPLETED;
1814 tw_state_request_finish(tw_dev, request_id);
1820 tw_dev->state[request_id] = TW_S_COMPLETED;
1821 tw_state_request_finish(tw_dev, request_id);
1832 int request_id;
1875 tw_state_request_start(tw_dev, &request_id);
1876 error = tw_aen_read_queue(tw_dev, request_id);
1879 tw_dev->state[request_id] = TW_S_COMPLETED;
1880 tw_state_request_finish(tw_dev, request_id);
1888 request_id = tw_dev->pending_queue[tw_dev->pending_head];
1889 if (tw_dev->state[request_id] != TW_S_PENDING) {
1893 if (tw_post_command_packet(tw_dev, request_id)==0) {
1916 request_id = TW_RESID_OUT(response_que.response_id);
1917 command_packet = (TW_Command *)tw_dev->command_packet_virtual_address[request_id];
1923 if (tw_dev->srb[request_id] == NULL) {
1924 tw_decode_sense(tw_dev, request_id, 0);
1926 error = tw_decode_sense(tw_dev, request_id, 1);
1931 if (tw_dev->state[request_id] != TW_S_POSTED) {
1932 if (tw_dev->srb[request_id] != NULL) {
1938 dprintk(KERN_NOTICE "3w-xxxx: tw_interrupt(): Response queue request id: %d.\n", request_id);
1941 if (tw_dev->srb[request_id] == NULL) {
1944 if (request_id != tw_dev->chrdev_request_id) {
1945 retval = tw_aen_complete(tw_dev, request_id);
1954 switch (tw_dev->srb[request_id]->cmnd[0]) {
1965 error = tw_scsiop_test_unit_ready_complete(tw_dev, request_id);
1969 error = tw_scsiop_inquiry_complete(tw_dev, request_id);
1973 error = tw_scsiop_read_capacity_complete(tw_dev, request_id);
1977 error = tw_scsiop_mode_sense_complete(tw_dev, request_id);
1989 tw_dev->srb[request_id]->result = (DID_OK << 16);
1995 tw_dev->srb[request_id]->result = (DID_OK << 16) | (CHECK_CONDITION << 1);
2000 tw_dev->state[request_id] = TW_S_COMPLETED;
2001 tw_state_request_finish(tw_dev, request_id);
2003 tw_dev->srb[request_id]->scsi_done(tw_dev->srb[request_id]);
2005 tw_unmap_scsi_data(tw_dev->tw_pci_dev, tw_dev->srb[request_id]);