• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500v2-V1.0.0.60_1.0.38/src/linux/linux-2.6/drivers/scsi/

Lines Matching defs:request_id

158 static int tw_post_command_packet(TW_Device_Extension *tw_dev, int request_id)
164 command_que_value = tw_dev->command_packet_physical_address[request_id];
175 tw_dev->state[request_id] = TW_S_POSTED;
182 if (tw_dev->state[request_id] != TW_S_PENDING) {
183 tw_dev->state[request_id] = TW_S_PENDING;
188 tw_dev->pending_queue[tw_dev->pending_tail] = request_id;
202 static int tw_decode_sense(TW_Device_Extension *tw_dev, int request_id, int fill_sense)
208 command = (TW_Command *)tw_dev->command_packet_virtual_address[request_id];
219 tw_dev->srb[request_id]->sense_buffer[0] = (0x1 << 7 | 0x70);
222 tw_dev->srb[request_id]->sense_buffer[2] = tw_sense_table[i][1];
225 tw_dev->srb[request_id]->sense_buffer[7] = 0xa; /* 10 bytes */
228 tw_dev->srb[request_id]->sense_buffer[12] = tw_sense_table[i][2];
231 tw_dev->srb[request_id]->sense_buffer[13] = tw_sense_table[i][3];
233 tw_dev->srb[request_id]->result = (DID_OK << 16) | (CHECK_CONDITION << 1);
274 /* This function will free a request_id */
275 static void tw_state_request_finish(TW_Device_Extension *tw_dev, int request_id)
277 tw_dev->free_queue[tw_dev->free_tail] = request_id;
278 tw_dev->state[request_id] = TW_S_FINISHED;
282 /* This function will assign an available request_id */
283 static void tw_state_request_start(TW_Device_Extension *tw_dev, int *request_id)
285 *request_id = tw_dev->free_queue[tw_dev->free_head];
287 tw_dev->state[*request_id] = TW_S_STARTED;
350 static int tw_aen_read_queue(TW_Device_Extension *tw_dev, int request_id)
366 if (tw_dev->command_packet_virtual_address[request_id] == NULL) {
370 command_packet = (TW_Command *)tw_dev->command_packet_virtual_address[request_id];
374 command_packet->request_id = request_id;
378 command_que_value = tw_dev->command_packet_physical_address[request_id];
384 if (tw_dev->alignment_virtual_address[request_id] == NULL) {
388 param = (TW_Param *)tw_dev->alignment_virtual_address[request_id];
393 param_value = tw_dev->alignment_physical_address[request_id];
404 tw_dev->srb[request_id] = NULL; /* Flag internal command */
405 tw_dev->state[request_id] = TW_S_POSTED;
416 static int tw_aen_complete(TW_Device_Extension *tw_dev, int request_id)
423 if (tw_dev->alignment_virtual_address[request_id] == NULL) {
427 param = (TW_Param *)tw_dev->alignment_virtual_address[request_id];
465 error = tw_aen_read_queue(tw_dev, request_id);
468 tw_dev->state[request_id] = TW_S_COMPLETED;
469 tw_state_request_finish(tw_dev, request_id);
472 tw_dev->state[request_id] = TW_S_COMPLETED;
473 tw_state_request_finish(tw_dev, request_id);
484 int request_id = 0;
507 if (tw_dev->command_packet_virtual_address[request_id] == NULL) {
511 command_packet = (TW_Command *)tw_dev->command_packet_virtual_address[request_id];
515 command_packet->request_id = request_id;
519 command_que_value = tw_dev->command_packet_physical_address[request_id];
526 if (tw_dev->alignment_virtual_address[request_id] == NULL) {
530 param = (TW_Param *)tw_dev->alignment_virtual_address[request_id];
535 param_value = tw_dev->alignment_physical_address[request_id];
551 request_id = TW_RESID_OUT(response_queue.response_id);
553 if (request_id != 0) {
562 tw_decode_sense(tw_dev, request_id, 0);
682 int request_id;
757 tw_state_request_start(tw_dev, &request_id);
760 tw_dev->srb[request_id] = NULL;
763 tw_dev->chrdev_request_id = request_id;
765 tw_ioctl->firmware_command.request_id = request_id;
783 memcpy(tw_dev->command_packet_virtual_address[request_id], &(tw_ioctl->firmware_command), sizeof(TW_Command));
786 tw_post_command_packet(tw_dev, request_id);
806 memcpy(&(tw_ioctl->firmware_command), tw_dev->command_packet_virtual_address[request_id], sizeof(TW_Command));
811 tw_dev->state[request_id] = TW_S_COMPLETED;
812 tw_state_request_finish(tw_dev, request_id);
873 int request_id = 0;
878 if (tw_dev->command_packet_virtual_address[request_id] == NULL) {
883 command_packet = (TW_Command *)tw_dev->command_packet_virtual_address[request_id];
887 command_packet->request_id = request_id;
892 command_que_value = tw_dev->command_packet_physical_address[request_id];
905 request_id = TW_RESID_OUT(response_queue.response_id);
907 if (request_id != 0) {
914 tw_decode_sense(tw_dev, request_id, 0);
928 int request_id = 0;
933 if (tw_dev->command_packet_virtual_address[request_id] == NULL) {
937 command_packet = (TW_Command *)tw_dev->command_packet_virtual_address[request_id];
939 param = (TW_Param *)tw_dev->alignment_virtual_address[request_id];
947 param_value = tw_dev->alignment_physical_address[request_id];
950 tw_dev->state[request_id] = TW_S_COMPLETED;
951 tw_state_request_finish(tw_dev, request_id);
952 tw_dev->srb[request_id]->result = (DID_OK << 16);
953 tw_dev->srb[request_id]->scsi_done(tw_dev->srb[request_id]);
959 command_packet->request_id = request_id;
962 command_que_value = tw_dev->command_packet_physical_address[request_id];
974 request_id = TW_RESID_OUT(response_queue.response_id);
976 if (request_id != 0) {
983 tw_decode_sense(tw_dev, request_id, 0);
1246 static int tw_scsiop_inquiry(TW_Device_Extension *tw_dev, int request_id)
1256 command_packet = (TW_Command *)tw_dev->command_packet_virtual_address[request_id];
1264 command_packet->request_id = request_id;
1270 if (tw_dev->alignment_virtual_address[request_id] == NULL) {
1274 param = (TW_Param *)tw_dev->alignment_virtual_address[request_id];
1279 param_value = tw_dev->alignment_physical_address[request_id];
1287 command_que_value = tw_dev->command_packet_physical_address[request_id];
1294 tw_post_command_packet(tw_dev, request_id);
1299 static void tw_transfer_internal(TW_Device_Extension *tw_dev, int request_id,
1302 struct scsi_cmnd *cmd = tw_dev->srb[request_id];
1330 static int tw_scsiop_inquiry_complete(TW_Device_Extension *tw_dev, int request_id)
1344 sprintf(&request_buffer[16], "Logical Disk %-2d ", tw_dev->srb[request_id]->device->id);
1346 tw_transfer_internal(tw_dev, request_id, request_buffer,
1349 param = (TW_Param *)tw_dev->alignment_virtual_address[request_id];
1356 if (is_unit_present[tw_dev->srb[request_id]->device->id] & TW_UNIT_ONLINE) {
1357 tw_dev->is_unit_present[tw_dev->srb[request_id]->device->id] = 1;
1359 tw_dev->is_unit_present[tw_dev->srb[request_id]->device->id] = 0;
1360 tw_dev->srb[request_id]->result = (DID_BAD_TARGET << 16);
1368 static int tw_scsiop_mode_sense(TW_Device_Extension *tw_dev, int request_id)
1378 if (tw_dev->srb[request_id]->cmnd[2] != 0x8) {
1379 tw_dev->state[request_id] = TW_S_COMPLETED;
1380 tw_state_request_finish(tw_dev, request_id);
1381 tw_dev->srb[request_id]->result = (DID_OK << 16);
1382 tw_dev->srb[request_id]->scsi_done(tw_dev->srb[request_id]);
1387 command_packet = (TW_Command *)tw_dev->command_packet_virtual_address[request_id];
1397 command_packet->request_id = request_id;
1403 if (tw_dev->alignment_virtual_address[request_id] == NULL) {
1408 param = (TW_Param *)tw_dev->alignment_virtual_address[request_id];
1410 param->table_id = TW_UNIT_INFORMATION_TABLE_BASE + tw_dev->srb[request_id]->device->id;
1413 param_value = tw_dev->alignment_physical_address[request_id];
1421 command_que_value = tw_dev->command_packet_physical_address[request_id];
1428 tw_post_command_packet(tw_dev, request_id);
1434 static int tw_scsiop_mode_sense_complete(TW_Device_Extension *tw_dev, int request_id)
1442 param = (TW_Param *)tw_dev->alignment_virtual_address[request_id];
1460 tw_transfer_internal(tw_dev, request_id, request_buffer,
1467 static int tw_scsiop_read_capacity(TW_Device_Extension *tw_dev, int request_id)
1477 command_packet = (TW_Command *)tw_dev->command_packet_virtual_address[request_id];
1486 command_packet->request_id = request_id;
1487 command_packet->unit__hostid = TW_UNITHOST_IN(0, tw_dev->srb[request_id]->device->id);
1493 if (tw_dev->alignment_virtual_address[request_id] == NULL) {
1497 param = (TW_Param *)tw_dev->alignment_virtual_address[request_id];
1500 tw_dev->srb[request_id]->device->id;
1503 param_value = tw_dev->alignment_physical_address[request_id];
1511 command_que_value = tw_dev->command_packet_physical_address[request_id];
1518 tw_post_command_packet(tw_dev, request_id);
1524 static int tw_scsiop_read_capacity_complete(TW_Device_Extension *tw_dev, int request_id)
1534 param = (TW_Param *)tw_dev->alignment_virtual_address[request_id];
1561 tw_transfer_internal(tw_dev, request_id, buff, sizeof(buff));
1567 static int tw_scsiop_read_write(TW_Device_Extension *tw_dev, int request_id)
1578 if (tw_dev->srb[request_id]->request_buffer == NULL) {
1582 sglist = (struct scatterlist *)tw_dev->srb[request_id]->request_buffer;
1583 srb = tw_dev->srb[request_id];
1586 command_packet = (TW_Command *)tw_dev->command_packet_virtual_address[request_id];
1599 command_packet->request_id = request_id;
1627 if (tw_dev->srb[request_id]->use_sg == 0) {
1629 buffaddr = tw_map_scsi_single_data(tw_dev->tw_pci_dev, tw_dev->srb[request_id]);
1634 command_packet->byte8.io.sgl[0].length = tw_dev->srb[request_id]->request_bufflen;
1639 if (tw_dev->srb[request_id]->use_sg > 0) {
1640 use_sg = tw_map_scsi_sg_data(tw_dev->tw_pci_dev, tw_dev->srb[request_id]);
1652 tw_dev->sgl_entries = tw_dev->srb[request_id]->use_sg;
1656 command_que_value = tw_dev->command_packet_physical_address[request_id];
1663 tw_post_command_packet(tw_dev, request_id);
1669 static int tw_scsiop_request_sense(TW_Device_Extension *tw_dev, int request_id)
1679 tw_transfer_internal(tw_dev, request_id, request_buffer,
1682 tw_dev->state[request_id] = TW_S_COMPLETED;
1683 tw_state_request_finish(tw_dev, request_id);
1686 tw_dev->srb[request_id]->result = (DID_ERROR << 16);
1687 tw_dev->srb[request_id]->scsi_done(tw_dev->srb[request_id]);
1693 static int tw_scsiop_synchronize_cache(TW_Device_Extension *tw_dev, int request_id)
1701 command_packet = (TW_Command *)tw_dev->command_packet_virtual_address[request_id];
1711 command_packet->request_id = request_id;
1712 command_packet->unit__hostid = TW_UNITHOST_IN(0, tw_dev->srb[request_id]->device->id);
1716 command_que_value = tw_dev->command_packet_physical_address[request_id];
1723 tw_post_command_packet(tw_dev, request_id);
1729 static int tw_scsiop_test_unit_ready(TW_Device_Extension *tw_dev, int request_id)
1739 command_packet = (TW_Command *)tw_dev->command_packet_virtual_address[request_id];
1747 command_packet->request_id = request_id;
1753 if (tw_dev->alignment_virtual_address[request_id] == NULL) {
1757 param = (TW_Param *)tw_dev->alignment_virtual_address[request_id];
1762 param_value = tw_dev->alignment_physical_address[request_id];
1770 command_que_value = tw_dev->command_packet_physical_address[request_id];
1777 tw_post_command_packet(tw_dev, request_id);
1783 static int tw_scsiop_test_unit_ready_complete(TW_Device_Extension *tw_dev, int request_id)
1790 param = (TW_Param *)tw_dev->alignment_virtual_address[request_id];
1797 if (is_unit_present[tw_dev->srb[request_id]->device->id] & TW_UNIT_ONLINE) {
1798 tw_dev->is_unit_present[tw_dev->srb[request_id]->device->id] = 1;
1800 tw_dev->is_unit_present[tw_dev->srb[request_id]->device->id] = 0;
1801 tw_dev->srb[request_id]->result = (DID_BAD_TARGET << 16);
1812 int request_id = 0;
1824 tw_state_request_start(tw_dev, &request_id);
1827 tw_dev->srb[request_id] = SCpnt;
1838 retval = tw_scsiop_read_write(tw_dev, request_id);
1842 retval = tw_scsiop_test_unit_ready(tw_dev, request_id);
1846 retval = tw_scsiop_inquiry(tw_dev, request_id);
1850 retval = tw_scsiop_read_capacity(tw_dev, request_id);
1854 retval = tw_scsiop_request_sense(tw_dev, request_id);
1858 retval = tw_scsiop_mode_sense(tw_dev, request_id);
1862 retval = tw_scsiop_synchronize_cache(tw_dev, request_id);
1869 tw_dev->state[request_id] = TW_S_COMPLETED;
1870 tw_state_request_finish(tw_dev, request_id);
1876 tw_dev->state[request_id] = TW_S_COMPLETED;
1877 tw_state_request_finish(tw_dev, request_id);
1888 int request_id;
1931 tw_state_request_start(tw_dev, &request_id);
1932 error = tw_aen_read_queue(tw_dev, request_id);
1935 tw_dev->state[request_id] = TW_S_COMPLETED;
1936 tw_state_request_finish(tw_dev, request_id);
1944 request_id = tw_dev->pending_queue[tw_dev->pending_head];
1945 if (tw_dev->state[request_id] != TW_S_PENDING) {
1949 if (tw_post_command_packet(tw_dev, request_id)==0) {
1972 request_id = TW_RESID_OUT(response_que.response_id);
1973 command_packet = (TW_Command *)tw_dev->command_packet_virtual_address[request_id];
1979 if (tw_dev->srb[request_id] == NULL) {
1980 tw_decode_sense(tw_dev, request_id, 0);
1982 error = tw_decode_sense(tw_dev, request_id, 1);
1987 if (tw_dev->state[request_id] != TW_S_POSTED) {
1988 if (tw_dev->srb[request_id] != NULL) {
1994 dprintk(KERN_NOTICE "3w-xxxx: tw_interrupt(): Response queue request id: %d.\n", request_id);
1997 if (tw_dev->srb[request_id] == NULL) {
2000 if (request_id != tw_dev->chrdev_request_id) {
2001 retval = tw_aen_complete(tw_dev, request_id);
2010 switch (tw_dev->srb[request_id]->cmnd[0]) {
2021 error = tw_scsiop_test_unit_ready_complete(tw_dev, request_id);
2025 error = tw_scsiop_inquiry_complete(tw_dev, request_id);
2029 error = tw_scsiop_read_capacity_complete(tw_dev, request_id);
2033 error = tw_scsiop_mode_sense_complete(tw_dev, request_id);
2045 tw_dev->srb[request_id]->result = (DID_OK << 16);
2051 tw_dev->srb[request_id]->result = (DID_OK << 16) | (CHECK_CONDITION << 1);
2056 tw_dev->state[request_id] = TW_S_COMPLETED;
2057 tw_state_request_finish(tw_dev, request_id);
2059 tw_dev->srb[request_id]->scsi_done(tw_dev->srb[request_id]);
2061 tw_unmap_scsi_data(tw_dev->tw_pci_dev, tw_dev->srb[request_id]);