diff options
author | Linus Torvalds <torvalds@g5.osdl.org> | 2006-10-04 21:57:35 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-10-04 21:57:35 -0400 |
commit | 97d41e90fe61399b99d74820cb7f2d6e0fbac91d (patch) | |
tree | f759371424a26963b04badbb4433e360be4e8750 /drivers/scsi/aic7xxx_old.c | |
parent | 3bdc9d0b408e01c4e556daba0035ba37f603e920 (diff) | |
parent | afaf5a2d341d33b66b47c2716a263ce593460a08 (diff) |
Merge master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6
* master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6: (54 commits)
[SCSI] Initial Commit of qla4xxx
[SCSI] raid class: handle component-add errors
[SCSI] SCSI megaraid_sas: handle thrown errors
[SCSI] SCSI aic94xx: handle sysfs errors
[SCSI] SCSI st: fix error handling in module init, sysfs
[SCSI] SCSI sd: fix module init/exit error handling
[SCSI] SCSI osst: add error handling to module init, sysfs
[SCSI] scsi: remove hosts.h
[SCSI] scsi: Scsi_Cmnd convertion in aic7xxx_old.c
[SCSI] megaraid_sas: sets ioctl timeout and updates version,changelog
[SCSI] megaraid_sas: adds tasklet for cmd completion
[SCSI] megaraid_sas: prints pending cmds before setting hw_crit_error
[SCSI] megaraid_sas: function pointer for disable interrupt
[SCSI] megaraid_sas: frame count optimization
[SCSI] megaraid_sas: FW transition and q size changes
[SCSI] qla2xxx: Update version number to 8.01.07-k2.
[SCSI] qla2xxx: Stall mid-layer error handlers while rport is blocked.
[SCSI] qla2xxx: Add MODULE_FIRMWARE tags.
[SCSI] qla2xxx: Add support for host port state FC transport attribute.
[SCSI] qla2xxx: Add support for fabric name FC transport attribute.
...
Diffstat (limited to 'drivers/scsi/aic7xxx_old.c')
-rw-r--r-- | drivers/scsi/aic7xxx_old.c | 298 |
1 files changed, 144 insertions, 154 deletions
diff --git a/drivers/scsi/aic7xxx_old.c b/drivers/scsi/aic7xxx_old.c index 10353379a074..3eae8062a02e 100644 --- a/drivers/scsi/aic7xxx_old.c +++ b/drivers/scsi/aic7xxx_old.c | |||
@@ -780,24 +780,26 @@ typedef enum { | |||
780 | } ahc_bugs; | 780 | } ahc_bugs; |
781 | 781 | ||
782 | struct aic7xxx_scb { | 782 | struct aic7xxx_scb { |
783 | struct aic7xxx_hwscb *hscb; /* corresponding hardware scb */ | 783 | struct aic7xxx_hwscb *hscb; /* corresponding hardware scb */ |
784 | Scsi_Cmnd *cmd; /* Scsi_Cmnd for this scb */ | 784 | struct scsi_cmnd *cmd; /* scsi_cmnd for this scb */ |
785 | struct aic7xxx_scb *q_next; /* next scb in queue */ | 785 | struct aic7xxx_scb *q_next; /* next scb in queue */ |
786 | volatile scb_flag_type flags; /* current state of scb */ | 786 | volatile scb_flag_type flags; /* current state of scb */ |
787 | struct hw_scatterlist *sg_list; /* SG list in adapter format */ | 787 | struct hw_scatterlist *sg_list; /* SG list in adapter format */ |
788 | unsigned char tag_action; | 788 | unsigned char tag_action; |
789 | unsigned char sg_count; | 789 | unsigned char sg_count; |
790 | unsigned char *sense_cmd; /* | 790 | unsigned char *sense_cmd; /* |
791 | * Allocate 6 characters for | 791 | * Allocate 6 characters for |
792 | * sense command. | 792 | * sense command. |
793 | */ | 793 | */ |
794 | unsigned char *cmnd; | 794 | unsigned char *cmnd; |
795 | unsigned int sg_length; /* We init this during buildscb so we | 795 | unsigned int sg_length; /* |
796 | * don't have to calculate anything | 796 | * We init this during |
797 | * during underflow/overflow/stat code | 797 | * buildscb so we don't have |
798 | */ | 798 | * to calculate anything during |
799 | void *kmalloc_ptr; | 799 | * underflow/overflow/stat code |
800 | struct aic7xxx_scb_dma *scb_dma; | 800 | */ |
801 | void *kmalloc_ptr; | ||
802 | struct aic7xxx_scb_dma *scb_dma; | ||
801 | }; | 803 | }; |
802 | 804 | ||
803 | /* | 805 | /* |
@@ -918,79 +920,77 @@ struct aic7xxx_host { | |||
918 | * We are grouping things here....first, items that get either read or | 920 | * We are grouping things here....first, items that get either read or |
919 | * written with nearly every interrupt | 921 | * written with nearly every interrupt |
920 | */ | 922 | */ |
921 | volatile long flags; | 923 | volatile long flags; |
922 | ahc_feature features; /* chip features */ | 924 | ahc_feature features; /* chip features */ |
923 | unsigned long base; /* card base address */ | 925 | unsigned long base; /* card base address */ |
924 | volatile unsigned char __iomem *maddr; /* memory mapped address */ | 926 | volatile unsigned char __iomem *maddr; /* memory mapped address */ |
925 | unsigned long isr_count; /* Interrupt count */ | 927 | unsigned long isr_count; /* Interrupt count */ |
926 | unsigned long spurious_int; | 928 | unsigned long spurious_int; |
927 | scb_data_type *scb_data; | 929 | scb_data_type *scb_data; |
928 | struct aic7xxx_cmd_queue { | 930 | struct aic7xxx_cmd_queue { |
929 | Scsi_Cmnd *head; | 931 | struct scsi_cmnd *head; |
930 | Scsi_Cmnd *tail; | 932 | struct scsi_cmnd *tail; |
931 | } completeq; | 933 | } completeq; |
932 | 934 | ||
933 | /* | 935 | /* |
934 | * Things read/written on nearly every entry into aic7xxx_queue() | 936 | * Things read/written on nearly every entry into aic7xxx_queue() |
935 | */ | 937 | */ |
936 | volatile scb_queue_type waiting_scbs; | 938 | volatile scb_queue_type waiting_scbs; |
937 | unsigned char unpause; /* unpause value for HCNTRL */ | 939 | unsigned char unpause; /* unpause value for HCNTRL */ |
938 | unsigned char pause; /* pause value for HCNTRL */ | 940 | unsigned char pause; /* pause value for HCNTRL */ |
939 | volatile unsigned char qoutfifonext; | 941 | volatile unsigned char qoutfifonext; |
940 | volatile unsigned char activescbs; /* active scbs */ | 942 | volatile unsigned char activescbs; /* active scbs */ |
941 | volatile unsigned char max_activescbs; | 943 | volatile unsigned char max_activescbs; |
942 | volatile unsigned char qinfifonext; | 944 | volatile unsigned char qinfifonext; |
943 | volatile unsigned char *untagged_scbs; | 945 | volatile unsigned char *untagged_scbs; |
944 | volatile unsigned char *qoutfifo; | 946 | volatile unsigned char *qoutfifo; |
945 | volatile unsigned char *qinfifo; | 947 | volatile unsigned char *qinfifo; |
946 | 948 | ||
947 | unsigned char dev_last_queue_full[MAX_TARGETS]; | 949 | unsigned char dev_last_queue_full[MAX_TARGETS]; |
948 | unsigned char dev_last_queue_full_count[MAX_TARGETS]; | 950 | unsigned char dev_last_queue_full_count[MAX_TARGETS]; |
949 | unsigned short ultraenb; /* Gets downloaded to card as a | 951 | unsigned short ultraenb; /* Gets downloaded to card as a bitmap */ |
950 | bitmap */ | 952 | unsigned short discenable; /* Gets downloaded to card as a bitmap */ |
951 | unsigned short discenable; /* Gets downloaded to card as a | 953 | transinfo_type user[MAX_TARGETS]; |
952 | bitmap */ | 954 | |
953 | transinfo_type user[MAX_TARGETS]; | 955 | unsigned char msg_buf[13]; /* The message for the target */ |
954 | 956 | unsigned char msg_type; | |
955 | unsigned char msg_buf[13]; /* The message for the target */ | ||
956 | unsigned char msg_type; | ||
957 | #define MSG_TYPE_NONE 0x00 | 957 | #define MSG_TYPE_NONE 0x00 |
958 | #define MSG_TYPE_INITIATOR_MSGOUT 0x01 | 958 | #define MSG_TYPE_INITIATOR_MSGOUT 0x01 |
959 | #define MSG_TYPE_INITIATOR_MSGIN 0x02 | 959 | #define MSG_TYPE_INITIATOR_MSGIN 0x02 |
960 | unsigned char msg_len; /* Length of message */ | 960 | unsigned char msg_len; /* Length of message */ |
961 | unsigned char msg_index; /* Index into msg_buf array */ | 961 | unsigned char msg_index; /* Index into msg_buf array */ |
962 | 962 | ||
963 | 963 | ||
964 | /* | 964 | /* |
965 | * We put the less frequently used host structure items after the more | 965 | * We put the less frequently used host structure items |
966 | * frequently used items to try and ease the burden on the cache subsystem. | 966 | * after the more frequently used items to try and ease |
967 | * These entries are not *commonly* accessed, whereas the preceding entries | 967 | * the burden on the cache subsystem. |
968 | * are accessed very often. | 968 | * These entries are not *commonly* accessed, whereas |
969 | */ | 969 | * the preceding entries are accessed very often. |
970 | 970 | */ | |
971 | unsigned int irq; /* IRQ for this adapter */ | ||
972 | int instance; /* aic7xxx instance number */ | ||
973 | int scsi_id; /* host adapter SCSI ID */ | ||
974 | int scsi_id_b; /* channel B for twin adapters */ | ||
975 | unsigned int bios_address; | ||
976 | int board_name_index; | ||
977 | unsigned short bios_control; /* bios control - SEEPROM */ | ||
978 | unsigned short adapter_control; /* adapter control - SEEPROM */ | ||
979 | struct pci_dev *pdev; | ||
980 | unsigned char pci_bus; | ||
981 | unsigned char pci_device_fn; | ||
982 | struct seeprom_config sc; | ||
983 | unsigned short sc_type; | ||
984 | unsigned short sc_size; | ||
985 | struct aic7xxx_host *next; /* allow for multiple IRQs */ | ||
986 | struct Scsi_Host *host; /* pointer to scsi host */ | ||
987 | struct list_head aic_devs; /* all aic_dev structs on host */ | ||
988 | int host_no; /* SCSI host number */ | ||
989 | unsigned long mbase; /* I/O memory address */ | ||
990 | ahc_chip chip; /* chip type */ | ||
991 | ahc_bugs bugs; | ||
992 | dma_addr_t fifo_dma; /* DMA handle for fifo arrays */ | ||
993 | 971 | ||
972 | unsigned int irq; /* IRQ for this adapter */ | ||
973 | int instance; /* aic7xxx instance number */ | ||
974 | int scsi_id; /* host adapter SCSI ID */ | ||
975 | int scsi_id_b; /* channel B for twin adapters */ | ||
976 | unsigned int bios_address; | ||
977 | int board_name_index; | ||
978 | unsigned short bios_control; /* bios control - SEEPROM */ | ||
979 | unsigned short adapter_control; /* adapter control - SEEPROM */ | ||
980 | struct pci_dev *pdev; | ||
981 | unsigned char pci_bus; | ||
982 | unsigned char pci_device_fn; | ||
983 | struct seeprom_config sc; | ||
984 | unsigned short sc_type; | ||
985 | unsigned short sc_size; | ||
986 | struct aic7xxx_host *next; /* allow for multiple IRQs */ | ||
987 | struct Scsi_Host *host; /* pointer to scsi host */ | ||
988 | struct list_head aic_devs; /* all aic_dev structs on host */ | ||
989 | int host_no; /* SCSI host number */ | ||
990 | unsigned long mbase; /* I/O memory address */ | ||
991 | ahc_chip chip; /* chip type */ | ||
992 | ahc_bugs bugs; | ||
993 | dma_addr_t fifo_dma; /* DMA handle for fifo arrays */ | ||
994 | }; | 994 | }; |
995 | 995 | ||
996 | /* | 996 | /* |
@@ -1271,7 +1271,7 @@ static void aic7xxx_set_syncrate(struct aic7xxx_host *p, | |||
1271 | static void aic7xxx_set_width(struct aic7xxx_host *p, int target, int channel, | 1271 | static void aic7xxx_set_width(struct aic7xxx_host *p, int target, int channel, |
1272 | int lun, unsigned int width, unsigned int type, | 1272 | int lun, unsigned int width, unsigned int type, |
1273 | struct aic_dev_data *aic_dev); | 1273 | struct aic_dev_data *aic_dev); |
1274 | static void aic7xxx_panic_abort(struct aic7xxx_host *p, Scsi_Cmnd *cmd); | 1274 | static void aic7xxx_panic_abort(struct aic7xxx_host *p, struct scsi_cmnd *cmd); |
1275 | static void aic7xxx_print_card(struct aic7xxx_host *p); | 1275 | static void aic7xxx_print_card(struct aic7xxx_host *p); |
1276 | static void aic7xxx_print_scratch_ram(struct aic7xxx_host *p); | 1276 | static void aic7xxx_print_scratch_ram(struct aic7xxx_host *p); |
1277 | static void aic7xxx_print_sequencer(struct aic7xxx_host *p, int downloaded); | 1277 | static void aic7xxx_print_sequencer(struct aic7xxx_host *p, int downloaded); |
@@ -2626,7 +2626,7 @@ aic7xxx_allocate_scb(struct aic7xxx_host *p) | |||
2626 | * we're finished. This function queues the completed commands. | 2626 | * we're finished. This function queues the completed commands. |
2627 | *-F*************************************************************************/ | 2627 | *-F*************************************************************************/ |
2628 | static void | 2628 | static void |
2629 | aic7xxx_queue_cmd_complete(struct aic7xxx_host *p, Scsi_Cmnd *cmd) | 2629 | aic7xxx_queue_cmd_complete(struct aic7xxx_host *p, struct scsi_cmnd *cmd) |
2630 | { | 2630 | { |
2631 | aic7xxx_position(cmd) = SCB_LIST_NULL; | 2631 | aic7xxx_position(cmd) = SCB_LIST_NULL; |
2632 | cmd->host_scribble = (char *)p->completeq.head; | 2632 | cmd->host_scribble = (char *)p->completeq.head; |
@@ -2640,18 +2640,16 @@ aic7xxx_queue_cmd_complete(struct aic7xxx_host *p, Scsi_Cmnd *cmd) | |||
2640 | * Description: | 2640 | * Description: |
2641 | * Process the completed command queue. | 2641 | * Process the completed command queue. |
2642 | *-F*************************************************************************/ | 2642 | *-F*************************************************************************/ |
2643 | static void | 2643 | static void aic7xxx_done_cmds_complete(struct aic7xxx_host *p) |
2644 | aic7xxx_done_cmds_complete(struct aic7xxx_host *p) | ||
2645 | { | 2644 | { |
2646 | Scsi_Cmnd *cmd; | 2645 | struct scsi_cmnd *cmd; |
2647 | 2646 | ||
2648 | while (p->completeq.head != NULL) | 2647 | while (p->completeq.head != NULL) { |
2649 | { | 2648 | cmd = p->completeq.head; |
2650 | cmd = p->completeq.head; | 2649 | p->completeq.head = (struct scsi_Cmnd *) cmd->host_scribble; |
2651 | p->completeq.head = (Scsi_Cmnd *)cmd->host_scribble; | 2650 | cmd->host_scribble = NULL; |
2652 | cmd->host_scribble = NULL; | 2651 | cmd->scsi_done(cmd); |
2653 | cmd->scsi_done(cmd); | 2652 | } |
2654 | } | ||
2655 | } | 2653 | } |
2656 | 2654 | ||
2657 | /*+F************************************************************************* | 2655 | /*+F************************************************************************* |
@@ -2687,11 +2685,11 @@ aic7xxx_free_scb(struct aic7xxx_host *p, struct aic7xxx_scb *scb) | |||
2687 | static void | 2685 | static void |
2688 | aic7xxx_done(struct aic7xxx_host *p, struct aic7xxx_scb *scb) | 2686 | aic7xxx_done(struct aic7xxx_host *p, struct aic7xxx_scb *scb) |
2689 | { | 2687 | { |
2690 | Scsi_Cmnd *cmd = scb->cmd; | 2688 | struct scsi_cmnd *cmd = scb->cmd; |
2691 | struct aic_dev_data *aic_dev = cmd->device->hostdata; | 2689 | struct aic_dev_data *aic_dev = cmd->device->hostdata; |
2692 | int tindex = TARGET_INDEX(cmd); | 2690 | int tindex = TARGET_INDEX(cmd); |
2693 | struct aic7xxx_scb *scbp; | 2691 | struct aic7xxx_scb *scbp; |
2694 | unsigned char queue_depth; | 2692 | unsigned char queue_depth; |
2695 | 2693 | ||
2696 | if (cmd->use_sg > 1) | 2694 | if (cmd->use_sg > 1) |
2697 | { | 2695 | { |
@@ -2891,7 +2889,7 @@ aic7xxx_done(struct aic7xxx_host *p, struct aic7xxx_scb *scb) | |||
2891 | * aic7xxx_run_done_queue | 2889 | * aic7xxx_run_done_queue |
2892 | * | 2890 | * |
2893 | * Description: | 2891 | * Description: |
2894 | * Calls the aic7xxx_done() for the Scsi_Cmnd of each scb in the | 2892 | * Calls the aic7xxx_done() for the scsi_cmnd of each scb in the |
2895 | * aborted list, and adds each scb to the free list. If complete | 2893 | * aborted list, and adds each scb to the free list. If complete |
2896 | * is TRUE, we also process the commands complete list. | 2894 | * is TRUE, we also process the commands complete list. |
2897 | *-F*************************************************************************/ | 2895 | *-F*************************************************************************/ |
@@ -3826,9 +3824,9 @@ aic7xxx_construct_wdtr(struct aic7xxx_host *p, unsigned char bus_width) | |||
3826 | static void | 3824 | static void |
3827 | aic7xxx_calculate_residual (struct aic7xxx_host *p, struct aic7xxx_scb *scb) | 3825 | aic7xxx_calculate_residual (struct aic7xxx_host *p, struct aic7xxx_scb *scb) |
3828 | { | 3826 | { |
3829 | struct aic7xxx_hwscb *hscb; | 3827 | struct aic7xxx_hwscb *hscb; |
3830 | Scsi_Cmnd *cmd; | 3828 | struct scsi_cmnd *cmd; |
3831 | int actual, i; | 3829 | int actual, i; |
3832 | 3830 | ||
3833 | cmd = scb->cmd; | 3831 | cmd = scb->cmd; |
3834 | hscb = scb->hscb; | 3832 | hscb = scb->hscb; |
@@ -4219,20 +4217,20 @@ aic7xxx_handle_seqint(struct aic7xxx_host *p, unsigned char intstat) | |||
4219 | 4217 | ||
4220 | case BAD_STATUS: | 4218 | case BAD_STATUS: |
4221 | { | 4219 | { |
4222 | unsigned char scb_index; | 4220 | unsigned char scb_index; |
4223 | struct aic7xxx_hwscb *hscb; | 4221 | struct aic7xxx_hwscb *hscb; |
4224 | Scsi_Cmnd *cmd; | 4222 | struct scsi_cmnd *cmd; |
4225 | 4223 | ||
4226 | /* The sequencer will notify us when a command has an error that | 4224 | /* The sequencer will notify us when a command has an error that |
4227 | * would be of interest to the kernel. This allows us to leave | 4225 | * would be of interest to the kernel. This allows us to leave |
4228 | * the sequencer running in the common case of command completes | 4226 | * the sequencer running in the common case of command completes |
4229 | * without error. The sequencer will have DMA'd the SCB back | 4227 | * without error. The sequencer will have DMA'd the SCB back |
4230 | * up to us, so we can reference the drivers SCB array. | 4228 | * up to us, so we can reference the drivers SCB array. |
4231 | * | 4229 | * |
4232 | * Set the default return value to 0 indicating not to send | 4230 | * Set the default return value to 0 indicating not to send |
4233 | * sense. The sense code will change this if needed and this | 4231 | * sense. The sense code will change this if needed and this |
4234 | * reduces code duplication. | 4232 | * reduces code duplication. |
4235 | */ | 4233 | */ |
4236 | aic_outb(p, 0, RETURN_1); | 4234 | aic_outb(p, 0, RETURN_1); |
4237 | scb_index = aic_inb(p, SCB_TAG); | 4235 | scb_index = aic_inb(p, SCB_TAG); |
4238 | if (scb_index > p->scb_data->numscbs) | 4236 | if (scb_index > p->scb_data->numscbs) |
@@ -5800,9 +5798,9 @@ aic7xxx_handle_scsiint(struct aic7xxx_host *p, unsigned char intstat) | |||
5800 | } | 5798 | } |
5801 | else if ((status & SELTO) != 0) | 5799 | else if ((status & SELTO) != 0) |
5802 | { | 5800 | { |
5803 | unsigned char scbptr; | 5801 | unsigned char scbptr; |
5804 | unsigned char nextscb; | 5802 | unsigned char nextscb; |
5805 | Scsi_Cmnd *cmd; | 5803 | struct scsi_cmnd *cmd; |
5806 | 5804 | ||
5807 | scbptr = aic_inb(p, WAITING_SCBH); | 5805 | scbptr = aic_inb(p, WAITING_SCBH); |
5808 | if (scbptr > p->scb_data->maxhscbs) | 5806 | if (scbptr > p->scb_data->maxhscbs) |
@@ -5941,11 +5939,11 @@ aic7xxx_handle_scsiint(struct aic7xxx_host *p, unsigned char intstat) | |||
5941 | /* | 5939 | /* |
5942 | * Determine the bus phase and queue an appropriate message. | 5940 | * Determine the bus phase and queue an appropriate message. |
5943 | */ | 5941 | */ |
5944 | char *phase; | 5942 | char *phase; |
5945 | Scsi_Cmnd *cmd; | 5943 | struct scsi_cmnd *cmd; |
5946 | unsigned char mesg_out = MSG_NOOP; | 5944 | unsigned char mesg_out = MSG_NOOP; |
5947 | unsigned char lastphase = aic_inb(p, LASTPHASE); | 5945 | unsigned char lastphase = aic_inb(p, LASTPHASE); |
5948 | unsigned char sstat2 = aic_inb(p, SSTAT2); | 5946 | unsigned char sstat2 = aic_inb(p, SSTAT2); |
5949 | 5947 | ||
5950 | cmd = scb->cmd; | 5948 | cmd = scb->cmd; |
5951 | switch (lastphase) | 5949 | switch (lastphase) |
@@ -6248,10 +6246,10 @@ aic7xxx_check_scbs(struct aic7xxx_host *p, char *buffer) | |||
6248 | static void | 6246 | static void |
6249 | aic7xxx_handle_command_completion_intr(struct aic7xxx_host *p) | 6247 | aic7xxx_handle_command_completion_intr(struct aic7xxx_host *p) |
6250 | { | 6248 | { |
6251 | struct aic7xxx_scb *scb = NULL; | 6249 | struct aic7xxx_scb *scb = NULL; |
6252 | struct aic_dev_data *aic_dev; | 6250 | struct aic_dev_data *aic_dev; |
6253 | Scsi_Cmnd *cmd; | 6251 | struct scsi_cmnd *cmd; |
6254 | unsigned char scb_index, tindex; | 6252 | unsigned char scb_index, tindex; |
6255 | 6253 | ||
6256 | #ifdef AIC7XXX_VERBOSE_DEBUGGING | 6254 | #ifdef AIC7XXX_VERBOSE_DEBUGGING |
6257 | if( (p->isr_count < 16) && (aic7xxx_verbose > 0xffff) ) | 6255 | if( (p->isr_count < 16) && (aic7xxx_verbose > 0xffff) ) |
@@ -10131,9 +10129,8 @@ skip_pci_controller: | |||
10131 | * Description: | 10129 | * Description: |
10132 | * Build a SCB. | 10130 | * Build a SCB. |
10133 | *-F*************************************************************************/ | 10131 | *-F*************************************************************************/ |
10134 | static void | 10132 | static void aic7xxx_buildscb(struct aic7xxx_host *p, struct scsi_cmnd *cmd, |
10135 | aic7xxx_buildscb(struct aic7xxx_host *p, Scsi_Cmnd *cmd, | 10133 | struct aic7xxx_scb *scb) |
10136 | struct aic7xxx_scb *scb) | ||
10137 | { | 10134 | { |
10138 | unsigned short mask; | 10135 | unsigned short mask; |
10139 | struct aic7xxx_hwscb *hscb; | 10136 | struct aic7xxx_hwscb *hscb; |
@@ -10285,8 +10282,7 @@ aic7xxx_buildscb(struct aic7xxx_host *p, Scsi_Cmnd *cmd, | |||
10285 | * Description: | 10282 | * Description: |
10286 | * Queue a SCB to the controller. | 10283 | * Queue a SCB to the controller. |
10287 | *-F*************************************************************************/ | 10284 | *-F*************************************************************************/ |
10288 | static int | 10285 | static int aic7xxx_queue(struct scsi_cmnd *cmd, void (*fn)(struct scsi_cmnd *)) |
10289 | aic7xxx_queue(Scsi_Cmnd *cmd, void (*fn)(Scsi_Cmnd *)) | ||
10290 | { | 10286 | { |
10291 | struct aic7xxx_host *p; | 10287 | struct aic7xxx_host *p; |
10292 | struct aic7xxx_scb *scb; | 10288 | struct aic7xxx_scb *scb; |
@@ -10319,11 +10315,11 @@ aic7xxx_queue(Scsi_Cmnd *cmd, void (*fn)(Scsi_Cmnd *)) | |||
10319 | } | 10315 | } |
10320 | scb->cmd = cmd; | 10316 | scb->cmd = cmd; |
10321 | 10317 | ||
10322 | /* | 10318 | /* |
10323 | * Make sure the Scsi_Cmnd pointer is saved, the struct it points to | 10319 | * Make sure the scsi_cmnd pointer is saved, the struct it points to |
10324 | * is set up properly, and the parity error flag is reset, then send | 10320 | * is set up properly, and the parity error flag is reset, then send |
10325 | * the SCB to the sequencer and watch the fun begin. | 10321 | * the SCB to the sequencer and watch the fun begin. |
10326 | */ | 10322 | */ |
10327 | aic7xxx_position(cmd) = scb->hscb->tag; | 10323 | aic7xxx_position(cmd) = scb->hscb->tag; |
10328 | cmd->scsi_done = fn; | 10324 | cmd->scsi_done = fn; |
10329 | cmd->result = DID_OK; | 10325 | cmd->result = DID_OK; |
@@ -10356,8 +10352,7 @@ aic7xxx_queue(Scsi_Cmnd *cmd, void (*fn)(Scsi_Cmnd *)) | |||
10356 | * aborted, then we will reset the channel and have all devices renegotiate. | 10352 | * aborted, then we will reset the channel and have all devices renegotiate. |
10357 | * Returns an enumerated type that indicates the status of the operation. | 10353 | * Returns an enumerated type that indicates the status of the operation. |
10358 | *-F*************************************************************************/ | 10354 | *-F*************************************************************************/ |
10359 | static int | 10355 | static int __aic7xxx_bus_device_reset(struct scsi_cmnd *cmd) |
10360 | __aic7xxx_bus_device_reset(Scsi_Cmnd *cmd) | ||
10361 | { | 10356 | { |
10362 | struct aic7xxx_host *p; | 10357 | struct aic7xxx_host *p; |
10363 | struct aic7xxx_scb *scb; | 10358 | struct aic7xxx_scb *scb; |
@@ -10550,8 +10545,7 @@ __aic7xxx_bus_device_reset(Scsi_Cmnd *cmd) | |||
10550 | return SUCCESS; | 10545 | return SUCCESS; |
10551 | } | 10546 | } |
10552 | 10547 | ||
10553 | static int | 10548 | static int aic7xxx_bus_device_reset(struct scsi_cmnd *cmd) |
10554 | aic7xxx_bus_device_reset(Scsi_Cmnd *cmd) | ||
10555 | { | 10549 | { |
10556 | int rc; | 10550 | int rc; |
10557 | 10551 | ||
@@ -10570,8 +10564,7 @@ aic7xxx_bus_device_reset(Scsi_Cmnd *cmd) | |||
10570 | * Description: | 10564 | * Description: |
10571 | * Abort the current SCSI command(s). | 10565 | * Abort the current SCSI command(s). |
10572 | *-F*************************************************************************/ | 10566 | *-F*************************************************************************/ |
10573 | static void | 10567 | static void aic7xxx_panic_abort(struct aic7xxx_host *p, struct scsi_cmnd *cmd) |
10574 | aic7xxx_panic_abort(struct aic7xxx_host *p, Scsi_Cmnd *cmd) | ||
10575 | { | 10568 | { |
10576 | 10569 | ||
10577 | printk("aic7xxx driver version %s\n", AIC7XXX_C_VERSION); | 10570 | printk("aic7xxx driver version %s\n", AIC7XXX_C_VERSION); |
@@ -10595,8 +10588,7 @@ aic7xxx_panic_abort(struct aic7xxx_host *p, Scsi_Cmnd *cmd) | |||
10595 | * Description: | 10588 | * Description: |
10596 | * Abort the current SCSI command(s). | 10589 | * Abort the current SCSI command(s). |
10597 | *-F*************************************************************************/ | 10590 | *-F*************************************************************************/ |
10598 | static int | 10591 | static int __aic7xxx_abort(struct scsi_cmnd *cmd) |
10599 | __aic7xxx_abort(Scsi_Cmnd *cmd) | ||
10600 | { | 10592 | { |
10601 | struct aic7xxx_scb *scb = NULL; | 10593 | struct aic7xxx_scb *scb = NULL; |
10602 | struct aic7xxx_host *p; | 10594 | struct aic7xxx_host *p; |
@@ -10813,8 +10805,7 @@ success: | |||
10813 | return SUCCESS; | 10805 | return SUCCESS; |
10814 | } | 10806 | } |
10815 | 10807 | ||
10816 | static int | 10808 | static int aic7xxx_abort(struct scsi_cmnd *cmd) |
10817 | aic7xxx_abort(Scsi_Cmnd *cmd) | ||
10818 | { | 10809 | { |
10819 | int rc; | 10810 | int rc; |
10820 | 10811 | ||
@@ -10836,8 +10827,7 @@ aic7xxx_abort(Scsi_Cmnd *cmd) | |||
10836 | * DEVICE RESET message - on the offending target before pulling | 10827 | * DEVICE RESET message - on the offending target before pulling |
10837 | * the SCSI bus reset line. | 10828 | * the SCSI bus reset line. |
10838 | *-F*************************************************************************/ | 10829 | *-F*************************************************************************/ |
10839 | static int | 10830 | static int aic7xxx_reset(struct scsi_cmnd *cmd) |
10840 | aic7xxx_reset(Scsi_Cmnd *cmd) | ||
10841 | { | 10831 | { |
10842 | struct aic7xxx_scb *scb; | 10832 | struct aic7xxx_scb *scb; |
10843 | struct aic7xxx_host *p; | 10833 | struct aic7xxx_host *p; |