cciss_scsi.h
上传用户:ajay2009
上传日期:2009-05-22
资源大小:495k
文件大小:3k
源码类别:

驱动编程

开发平台:

Unix_Linux

  1. /*
  2.  *    Disk Array driver for Compaq SA53xx Controllers, SCSI Tape module
  3.  *    Copyright 2001 Compaq Computer Corporation
  4.  *
  5.  *    This program is free software; you can redistribute it and/or modify
  6.  *    it under the terms of the GNU General Public License as published by
  7.  *    the Free Software Foundation; either version 2 of the License, or
  8.  *    (at your option) any later version.
  9.  *
  10.  *    This program is distributed in the hope that it will be useful,
  11.  *    but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.  *    MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
  13.  *    NON INFRINGEMENT.  See the GNU General Public License for more details.
  14.  *
  15.  *    You should have received a copy of the GNU General Public License
  16.  *    along with this program; if not, write to the Free Software
  17.  *    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  18.  *
  19.  *    Questions/Comments/Bugfixes to iss_storagedev@hp.com
  20.  *
  21.  */
  22. #ifdef CONFIG_CISS_SCSI_TAPE
  23. #ifndef _CCISS_SCSI_H_
  24. #define _CCISS_SCSI_H_
  25. #include <scsi/scsicam.h> /* possibly irrelevant, since we don't show disks */
  26. // the scsi id of the adapter...
  27. #define SELF_SCSI_ID 15
  28. // 15 is somewhat arbitrary, since the scsi-2 bus
  29. // that's presented by the driver to the OS is
  30. // fabricated.  The "real" scsi-3 bus the 
  31. // hardware presents is fabricated too.
  32. // The actual, honest-to-goodness physical
  33. // bus that the devices are attached to is not 
  34. // addressible natively, and may in fact turn
  35. // out to be not scsi at all.
  36. #define SCSI_CCISS_CAN_QUEUE 2
  37. /* 
  38. Note, cmd_per_lun could give us some trouble, so I'm setting it very low.
  39. Likewise, SCSI_CCISS_CAN_QUEUE is set very conservatively.
  40. If the upper scsi layer tries to track how many commands we have 
  41. outstanding, it will be operating under the misapprehension that it is
  42. the only one sending us requests.  We also have the block interface,
  43. which is where most requests must surely come from, so the upper layer's
  44. notion of how many requests we have outstanding will be wrong most or
  45. all of the time. 
  46. Note, the normal SCSI mid-layer error handling doesn't work well
  47. for this driver because 1) it takes the io_request_lock before
  48. calling error handlers and uses a local variable to store flags,
  49. so the io_request_lock cannot be released and interrupts enabled
  50. inside the error handlers, and, the error handlers cannot poll
  51. for command completion because they might get commands from the
  52. block half of the driver completing, and not know what to do
  53. with them.  That's what we get for making a hybrid scsi/block
  54. driver, I suppose.
  55. */
  56. struct cciss_scsi_dev_t {
  57. int devtype;
  58. int bus, target, lun; /* as presented to the OS */
  59. unsigned char scsi3addr[8]; /* as presented to the HW */
  60. };
  61. struct cciss_scsi_hba_t {
  62. char *name;
  63. int ndevices;
  64. #define CCISS_MAX_SCSI_DEVS_PER_HBA 16
  65. struct cciss_scsi_dev_t dev[CCISS_MAX_SCSI_DEVS_PER_HBA];
  66. };
  67. #endif /* _CCISS_SCSI_H_ */
  68. #endif /* CONFIG_CISS_SCSI_TAPE */