提交 60a13213 编写于 作者: H Hannes Reinecke 提交者: James Bottomley

[SCSI] aic79xx: Remove busyq

From: Jeff Garzik <jgarzik@pobox.com>

This patch removes the busyq in aic79xx and uses the command-queue from 
the midlayer instead. Additionally some dead code is removed.
Signed-off-by: NHannes Reinecke <hare@suse.de>

Fixed rejections
Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
上级 8d6810d3
...@@ -9039,7 +9039,6 @@ ahd_dump_card_state(struct ahd_softc *ahd) ...@@ -9039,7 +9039,6 @@ ahd_dump_card_state(struct ahd_softc *ahd)
ahd_outb(ahd, STACK, (ahd->saved_stack[i] >> 8) & 0xFF); ahd_outb(ahd, STACK, (ahd->saved_stack[i] >> 8) & 0xFF);
} }
printf("\n<<<<<<<<<<<<<<<<< Dump Card State Ends >>>>>>>>>>>>>>>>>>\n"); printf("\n<<<<<<<<<<<<<<<<< Dump Card State Ends >>>>>>>>>>>>>>>>>>\n");
ahd_platform_dump_card_state(ahd);
ahd_restore_modes(ahd, saved_modes); ahd_restore_modes(ahd, saved_modes);
if (paused == 0) if (paused == 0)
ahd_unpause(ahd); ahd_unpause(ahd);
......
此差异已折叠。
...@@ -252,11 +252,7 @@ ahd_scb_timer_reset(struct scb *scb, u_int usec) ...@@ -252,11 +252,7 @@ ahd_scb_timer_reset(struct scb *scb, u_int usec)
/***************************** SMP support ************************************/ /***************************** SMP support ************************************/
#include <linux/spinlock.h> #include <linux/spinlock.h>
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0) || defined(SCSI_HAS_HOST_LOCK))
#define AHD_SCSI_HAS_HOST_LOCK 1 #define AHD_SCSI_HAS_HOST_LOCK 1
#else
#define AHD_SCSI_HAS_HOST_LOCK 0
#endif
#define AIC79XX_DRIVER_VERSION "1.3.11" #define AIC79XX_DRIVER_VERSION "1.3.11"
...@@ -297,12 +293,11 @@ struct ahd_cmd { ...@@ -297,12 +293,11 @@ struct ahd_cmd {
* after a successfully completed inquiry command to the target when * after a successfully completed inquiry command to the target when
* that inquiry data indicates a lun is present. * that inquiry data indicates a lun is present.
*/ */
TAILQ_HEAD(ahd_busyq, ahd_cmd);
typedef enum { typedef enum {
AHD_DEV_UNCONFIGURED = 0x01, AHD_DEV_UNCONFIGURED = 0x01,
AHD_DEV_FREEZE_TIL_EMPTY = 0x02, /* Freeze queue until active == 0 */ AHD_DEV_FREEZE_TIL_EMPTY = 0x02, /* Freeze queue until active == 0 */
AHD_DEV_TIMER_ACTIVE = 0x04, /* Our timer is active */ AHD_DEV_TIMER_ACTIVE = 0x04, /* Our timer is active */
AHD_DEV_ON_RUN_LIST = 0x08, /* Queued to be run later */
AHD_DEV_Q_BASIC = 0x10, /* Allow basic device queuing */ AHD_DEV_Q_BASIC = 0x10, /* Allow basic device queuing */
AHD_DEV_Q_TAGGED = 0x20, /* Allow full SCSI2 command queueing */ AHD_DEV_Q_TAGGED = 0x20, /* Allow full SCSI2 command queueing */
AHD_DEV_PERIODIC_OTAG = 0x40, /* Send OTAG to prevent starvation */ AHD_DEV_PERIODIC_OTAG = 0x40, /* Send OTAG to prevent starvation */
...@@ -312,7 +307,6 @@ typedef enum { ...@@ -312,7 +307,6 @@ typedef enum {
struct ahd_linux_target; struct ahd_linux_target;
struct ahd_linux_device { struct ahd_linux_device {
TAILQ_ENTRY(ahd_linux_device) links; TAILQ_ENTRY(ahd_linux_device) links;
struct ahd_busyq busyq;
/* /*
* The number of transactions currently * The number of transactions currently
...@@ -453,18 +447,7 @@ struct ahd_linux_target { ...@@ -453,18 +447,7 @@ struct ahd_linux_target {
* manner and are allocated below 4GB, the number of S/G segments is * manner and are allocated below 4GB, the number of S/G segments is
* unrestricted. * unrestricted.
*/ */
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
/*
* We dynamically adjust the number of segments in pre-2.5 kernels to
* avoid fragmentation issues in the SCSI mid-layer's private memory
* allocator. See aic79xx_osm.c ahd_linux_size_nseg() for details.
*/
extern u_int ahd_linux_nseg;
#define AHD_NSEG ahd_linux_nseg
#define AHD_LINUX_MIN_NSEG 64
#else
#define AHD_NSEG 128 #define AHD_NSEG 128
#endif
/* /*
* Per-SCB OSM storage. * Per-SCB OSM storage.
...@@ -502,11 +485,9 @@ struct ahd_platform_data { ...@@ -502,11 +485,9 @@ struct ahd_platform_data {
* Fields accessed from interrupt context. * Fields accessed from interrupt context.
*/ */
struct ahd_linux_target *targets[AHD_NUM_TARGETS]; struct ahd_linux_target *targets[AHD_NUM_TARGETS];
TAILQ_HEAD(, ahd_linux_device) device_runq;
struct ahd_completeq completeq; struct ahd_completeq completeq;
spinlock_t spin_lock; spinlock_t spin_lock;
struct tasklet_struct runq_tasklet;
u_int qfrozen; u_int qfrozen;
pid_t dv_pid; pid_t dv_pid;
struct timer_list completeq_timer; struct timer_list completeq_timer;
...@@ -925,12 +906,8 @@ ahd_flush_device_writes(struct ahd_softc *ahd) ...@@ -925,12 +906,8 @@ ahd_flush_device_writes(struct ahd_softc *ahd)
} }
/**************************** Proc FS Support *********************************/ /**************************** Proc FS Support *********************************/
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
int ahd_linux_proc_info(char *, char **, off_t, int, int, int);
#else
int ahd_linux_proc_info(struct Scsi_Host *, char *, char **, int ahd_linux_proc_info(struct Scsi_Host *, char *, char **,
off_t, int, int); off_t, int, int);
#endif
/*************************** Domain Validation ********************************/ /*************************** Domain Validation ********************************/
#define AHD_DV_CMD(cmd) ((cmd)->scsi_done == ahd_linux_dv_complete) #define AHD_DV_CMD(cmd) ((cmd)->scsi_done == ahd_linux_dv_complete)
...@@ -1117,7 +1094,6 @@ void ahd_done(struct ahd_softc*, struct scb*); ...@@ -1117,7 +1094,6 @@ void ahd_done(struct ahd_softc*, struct scb*);
void ahd_send_async(struct ahd_softc *, char channel, void ahd_send_async(struct ahd_softc *, char channel,
u_int target, u_int lun, ac_code, void *); u_int target, u_int lun, ac_code, void *);
void ahd_print_path(struct ahd_softc *, struct scb *); void ahd_print_path(struct ahd_softc *, struct scb *);
void ahd_platform_dump_card_state(struct ahd_softc *ahd);
#ifdef CONFIG_PCI #ifdef CONFIG_PCI
#define AHD_PCI_CONFIG 1 #define AHD_PCI_CONFIG 1
......
...@@ -278,13 +278,8 @@ ahd_proc_write_seeprom(struct ahd_softc *ahd, char *buffer, int length) ...@@ -278,13 +278,8 @@ ahd_proc_write_seeprom(struct ahd_softc *ahd, char *buffer, int length)
* Return information to handle /proc support for the driver. * Return information to handle /proc support for the driver.
*/ */
int int
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
ahd_linux_proc_info(char *buffer, char **start, off_t offset,
int length, int hostno, int inout)
#else
ahd_linux_proc_info(struct Scsi_Host *shost, char *buffer, char **start, ahd_linux_proc_info(struct Scsi_Host *shost, char *buffer, char **start,
off_t offset, int length, int inout) off_t offset, int length, int inout)
#endif
{ {
struct ahd_softc *ahd; struct ahd_softc *ahd;
struct info_str info; struct info_str info;
...@@ -296,14 +291,7 @@ ahd_linux_proc_info(struct Scsi_Host *shost, char *buffer, char **start, ...@@ -296,14 +291,7 @@ ahd_linux_proc_info(struct Scsi_Host *shost, char *buffer, char **start,
retval = -EINVAL; retval = -EINVAL;
ahd_list_lock(&l); ahd_list_lock(&l);
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
TAILQ_FOREACH(ahd, &ahd_tailq, links) {
if (ahd->platform_data->host->host_no == hostno)
break;
}
#else
ahd = ahd_find_softc(*(struct ahd_softc **)shost->hostdata); ahd = ahd_find_softc(*(struct ahd_softc **)shost->hostdata);
#endif
if (ahd == NULL) if (ahd == NULL)
goto done; goto done;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册