Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 60a13213 authored by Hannes Reinecke's avatar Hannes Reinecke Committed by James Bottomley
Browse files

[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: default avatarHannes Reinecke <hare@suse.de>

Fixed rejections

Signed-off-by: default avatarJames Bottomley <James.Bottomley@SteelEye.com>
parent 8d6810d3
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -9039,7 +9039,6 @@ ahd_dump_card_state(struct ahd_softc *ahd)
		ahd_outb(ahd, STACK, (ahd->saved_stack[i] >> 8) & 0xFF);
	}
	printf("\n<<<<<<<<<<<<<<<<< Dump Card State Ends >>>>>>>>>>>>>>>>>>\n");
	ahd_platform_dump_card_state(ahd);
	ahd_restore_modes(ahd, saved_modes);
	if (paused == 0)
		ahd_unpause(ahd);
+138 −686

File changed.

Preview size limit exceeded, changes collapsed.

+1 −25
Original line number Diff line number Diff line
@@ -252,11 +252,7 @@ ahd_scb_timer_reset(struct scb *scb, u_int usec)
/***************************** SMP support ************************************/
#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
#else
#define AHD_SCSI_HAS_HOST_LOCK 0
#endif

#define AIC79XX_DRIVER_VERSION "1.3.11"

@@ -297,12 +293,11 @@ struct ahd_cmd {
 * after a successfully completed inquiry command to the target when
 * that inquiry data indicates a lun is present.
 */
TAILQ_HEAD(ahd_busyq, ahd_cmd);

typedef enum {
	AHD_DEV_UNCONFIGURED	 = 0x01,
	AHD_DEV_FREEZE_TIL_EMPTY = 0x02, /* Freeze queue until active == 0 */
	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_TAGGED	 = 0x20, /* Allow full SCSI2 command queueing */
	AHD_DEV_PERIODIC_OTAG	 = 0x40, /* Send OTAG to prevent starvation */
@@ -312,7 +307,6 @@ typedef enum {
struct ahd_linux_target;
struct ahd_linux_device {
	TAILQ_ENTRY(ahd_linux_device) links;
	struct			ahd_busyq busyq;

	/*
	 * The number of transactions currently
@@ -453,18 +447,7 @@ struct ahd_linux_target {
 * manner and are allocated below 4GB, the number of S/G segments is
 * 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
#endif

/*
 * Per-SCB OSM storage.
@@ -502,11 +485,9 @@ struct ahd_platform_data {
	 * Fields accessed from interrupt context.
	 */
	struct ahd_linux_target *targets[AHD_NUM_TARGETS]; 
	TAILQ_HEAD(, ahd_linux_device) device_runq;
	struct ahd_completeq	 completeq;

	spinlock_t		 spin_lock;
	struct tasklet_struct	 runq_tasklet;
	u_int			 qfrozen;
	pid_t			 dv_pid;
	struct timer_list	 completeq_timer;
@@ -925,12 +906,8 @@ ahd_flush_device_writes(struct ahd_softc *ahd)
}

/**************************** 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 **,
			    off_t, int, int);
#endif

/*************************** Domain Validation ********************************/
#define AHD_DV_CMD(cmd) ((cmd)->scsi_done == ahd_linux_dv_complete)
@@ -1117,7 +1094,6 @@ void ahd_done(struct ahd_softc*, struct scb*);
void	ahd_send_async(struct ahd_softc *, char channel,
		       u_int target, u_int lun, ac_code, void *);
void	ahd_print_path(struct ahd_softc *, struct scb *);
void	ahd_platform_dump_card_state(struct ahd_softc *ahd);

#ifdef CONFIG_PCI
#define AHD_PCI_CONFIG 1
+0 −12
Original line number Diff line number Diff line
@@ -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.
 */
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,
		    off_t offset, int length, int inout)
#endif
{
	struct	ahd_softc *ahd;
	struct	info_str info;
@@ -296,14 +291,7 @@ ahd_linux_proc_info(struct Scsi_Host *shost, char *buffer, char **start,

	retval = -EINVAL;
	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);
#endif

	if (ahd == NULL)
		goto done;