aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/aic7xxx
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/aic7xxx')
-rw-r--r--drivers/scsi/aic7xxx/aic7xxx.h1
-rw-r--r--drivers/scsi/aic7xxx/aic7xxx_osm.c18
-rw-r--r--drivers/scsi/aic7xxx/aic7xxx_osm.h31
3 files changed, 3 insertions, 47 deletions
diff --git a/drivers/scsi/aic7xxx/aic7xxx.h b/drivers/scsi/aic7xxx/aic7xxx.h
index d094e7371734..0948d50ae75c 100644
--- a/drivers/scsi/aic7xxx/aic7xxx.h
+++ b/drivers/scsi/aic7xxx/aic7xxx.h
@@ -346,7 +346,6 @@ typedef enum {
346 * controller. 346 * controller.
347 */ 347 */
348 AHC_NEWEEPROM_FMT = 0x4000, 348 AHC_NEWEEPROM_FMT = 0x4000,
349 AHC_RESOURCE_SHORTAGE = 0x8000,
350 AHC_TQINFIFO_BLOCKED = 0x10000, /* Blocked waiting for ATIOs */ 349 AHC_TQINFIFO_BLOCKED = 0x10000, /* Blocked waiting for ATIOs */
351 AHC_INT50_SPEEDFLEX = 0x20000, /* 350 AHC_INT50_SPEEDFLEX = 0x20000, /*
352 * Internal 50pin connector 351 * Internal 50pin connector
diff --git a/drivers/scsi/aic7xxx/aic7xxx_osm.c b/drivers/scsi/aic7xxx/aic7xxx_osm.c
index 34e486aba46b..3287f8df1801 100644
--- a/drivers/scsi/aic7xxx/aic7xxx_osm.c
+++ b/drivers/scsi/aic7xxx/aic7xxx_osm.c
@@ -501,17 +501,6 @@ ahc_linux_detect(struct scsi_host_template *template)
501 int found = 0; 501 int found = 0;
502 502
503 /* 503 /*
504 * Sanity checking of Linux SCSI data structures so
505 * that some of our hacks^H^H^H^H^Hassumptions aren't
506 * violated.
507 */
508 if (offsetof(struct ahc_cmd_internal, end)
509 > offsetof(struct scsi_cmnd, host_scribble)) {
510 printf("ahc_linux_detect: SCSI data structures changed.\n");
511 printf("ahc_linux_detect: Unable to attach\n");
512 return (0);
513 }
514 /*
515 * If we've been passed any parameters, process them now. 504 * If we've been passed any parameters, process them now.
516 */ 505 */
517 if (aic7xxx) 506 if (aic7xxx)
@@ -1587,10 +1576,9 @@ ahc_linux_run_command(struct ahc_softc *ahc, struct ahc_linux_device *dev,
1587 /* 1576 /*
1588 * Get an scb to use. 1577 * Get an scb to use.
1589 */ 1578 */
1590 if ((scb = ahc_get_scb(ahc)) == NULL) { 1579 scb = ahc_get_scb(ahc);
1591 ahc->flags |= AHC_RESOURCE_SHORTAGE; 1580 if (!scb)
1592 return SCSI_MLQUEUE_HOST_BUSY; 1581 return SCSI_MLQUEUE_HOST_BUSY;
1593 }
1594 1582
1595 scb->io_ctx = cmd; 1583 scb->io_ctx = cmd;
1596 scb->platform_data->dev = dev; 1584 scb->platform_data->dev = dev;
diff --git a/drivers/scsi/aic7xxx/aic7xxx_osm.h b/drivers/scsi/aic7xxx/aic7xxx_osm.h
index 46c3a796e6b1..b97f718dfe54 100644
--- a/drivers/scsi/aic7xxx/aic7xxx_osm.h
+++ b/drivers/scsi/aic7xxx/aic7xxx_osm.h
@@ -268,35 +268,6 @@ ahc_scb_timer_reset(struct scb *scb, u_int usec)
268 268
269#define AIC7XXX_DRIVER_VERSION "6.2.36" 269#define AIC7XXX_DRIVER_VERSION "6.2.36"
270 270
271/**************************** Front End Queues ********************************/
272/*
273 * Data structure used to cast the Linux struct scsi_cmnd to something
274 * that allows us to use the queue macros. The linux structure has
275 * plenty of space to hold the links fields as required by the queue
276 * macros, but the queue macors require them to have the correct type.
277 */
278struct ahc_cmd_internal {
279 /* Area owned by the Linux scsi layer. */
280 uint8_t private[offsetof(struct scsi_cmnd, SCp.Status)];
281 union {
282 STAILQ_ENTRY(ahc_cmd) ste;
283 LIST_ENTRY(ahc_cmd) le;
284 TAILQ_ENTRY(ahc_cmd) tqe;
285 } links;
286 uint32_t end;
287};
288
289struct ahc_cmd {
290 union {
291 struct ahc_cmd_internal icmd;
292 struct scsi_cmnd scsi_cmd;
293 } un;
294};
295
296#define acmd_icmd(cmd) ((cmd)->un.icmd)
297#define acmd_scsi_cmd(cmd) ((cmd)->un.scsi_cmd)
298#define acmd_links un.icmd.links
299
300/*************************** Device Data Structures ***************************/ 271/*************************** Device Data Structures ***************************/
301/* 272/*
302 * A per probed device structure used to deal with some error recovery 273 * A per probed device structure used to deal with some error recovery
@@ -305,7 +276,6 @@ struct ahc_cmd {
305 * after a successfully completed inquiry command to the target when 276 * after a successfully completed inquiry command to the target when
306 * that inquiry data indicates a lun is present. 277 * that inquiry data indicates a lun is present.
307 */ 278 */
308TAILQ_HEAD(ahc_busyq, ahc_cmd);
309typedef enum { 279typedef enum {
310 AHC_DEV_FREEZE_TIL_EMPTY = 0x02, /* Freeze queue until active == 0 */ 280 AHC_DEV_FREEZE_TIL_EMPTY = 0x02, /* Freeze queue until active == 0 */
311 AHC_DEV_Q_BASIC = 0x10, /* Allow basic device queuing */ 281 AHC_DEV_Q_BASIC = 0x10, /* Allow basic device queuing */
@@ -900,7 +870,6 @@ ahc_notify_xfer_settings_change(struct ahc_softc *ahc,
900static __inline void 870static __inline void
901ahc_platform_scb_free(struct ahc_softc *ahc, struct scb *scb) 871ahc_platform_scb_free(struct ahc_softc *ahc, struct scb *scb)
902{ 872{
903 ahc->flags &= ~AHC_RESOURCE_SHORTAGE;
904} 873}
905 874
906int ahc_platform_alloc(struct ahc_softc *ahc, void *platform_arg); 875int ahc_platform_alloc(struct ahc_softc *ahc, void *platform_arg);