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

Commit 38a9a621 authored by James Bottomley's avatar James Bottomley
Browse files

Merge HEAD from ../scsi-misc-2.6-old

parents 27d1097d e75d5176
Loading
Loading
Loading
Loading
+25 −1
Original line number Diff line number Diff line
@@ -229,7 +229,7 @@ config SCSI_FC_ATTRS

config SCSI_ISCSI_ATTRS
	tristate "iSCSI Transport Attributes"
	depends on SCSI
	depends on SCSI && NET
	help
	  If you wish to export transport-specific information about
	  each attached iSCSI device to sysfs, say Y.
@@ -247,6 +247,30 @@ endmenu
menu "SCSI low-level drivers"
	depends on SCSI!=n

config ISCSI_TCP
	tristate "iSCSI Initiator over TCP/IP"
	depends on SCSI && INET
	select CRYPTO
	select CRYPTO_MD5
	select CRYPTO_CRC32C
	select SCSI_ISCSI_ATTRS
	help
	 The iSCSI Driver provides a host with the ability to access storage
	 through an IP network. The driver uses the iSCSI protocol to transport
	 SCSI requests and responses over a TCP/IP network between the host
	 (the "initiator") and "targets".  Architecturally, the iSCSI driver
	 combines with the host's TCP/IP stack, network drivers, and Network
	 Interface Card (NIC) to provide the same functions as a SCSI or a
	 Fibre Channel (FC) adapter driver with a Host Bus Adapter (HBA).

	 To compile this driver as a module, choose M here: the
	 module will be called iscsi_tcp.

	 The userspace component needed to initialize the driver, documentation,
	 and sample configuration files can be found here:

	 http://linux-iscsi.sf.net

config SGIWD93_SCSI
	tristate "SGI WD93C93 SCSI Driver"
	depends on SGI_IP22 && SCSI
+1 −0
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ obj-$(CONFIG_SCSI_FC_ATTRS) += scsi_transport_fc.o
obj-$(CONFIG_SCSI_ISCSI_ATTRS)	+= scsi_transport_iscsi.o
obj-$(CONFIG_SCSI_SAS_ATTRS)	+= scsi_transport_sas.o

obj-$(CONFIG_ISCSI_TCP) 	+= iscsi_tcp.o
obj-$(CONFIG_SCSI_AMIGA7XX)	+= amiga7xx.o	53c7xx.o
obj-$(CONFIG_A3000_SCSI)	+= a3000.o	wd33c93.o
obj-$(CONFIG_A2091_SCSI)	+= a2091.o	wd33c93.o
+42 −15
Original line number Diff line number Diff line
@@ -608,17 +608,43 @@ static char *container_types[] = {
 * files instead of in OS dependant driver source.
 */

static void setinqstr(int devtype, void *data, int tindex)
static void setinqstr(struct aac_dev *dev, void *data, int tindex)
{
	struct scsi_inq *str;
	struct aac_driver_ident *mp;

	mp = aac_get_driver_ident(devtype);

	str = (struct scsi_inq *)(data); /* cast data to scsi inq block */
	memset(str, ' ', sizeof(*str));

	if (dev->supplement_adapter_info.AdapterTypeText[0]) {
		char * cp = dev->supplement_adapter_info.AdapterTypeText;
		int c = sizeof(str->vid);
		while (*cp && *cp != ' ' && --c)
			++cp;
		c = *cp;
		*cp = '\0';
		inqstrcpy (dev->supplement_adapter_info.AdapterTypeText,
		  str->vid); 
		*cp = c;
		while (*cp && *cp != ' ')
			++cp;
		while (*cp == ' ')
			++cp;
		/* last six chars reserved for vol type */
		c = 0;
		if (strlen(cp) > sizeof(str->pid)) {
			c = cp[sizeof(str->pid)];
			cp[sizeof(str->pid)] = '\0';
		}
		inqstrcpy (cp, str->pid);
		if (c)
			cp[sizeof(str->pid)] = c;
	} else {
		struct aac_driver_ident *mp = aac_get_driver_ident(dev->cardtype);
   
		inqstrcpy (mp->vname, str->vid); 
	inqstrcpy (mp->model, str->pid); /* last six chars reserved for vol type */
		/* last six chars reserved for vol type */
		inqstrcpy (mp->model, str->pid);
	}

	if (tindex < (sizeof(container_types)/sizeof(char *))){
		char *findit = str->pid;
@@ -627,6 +653,8 @@ static void setinqstr(int devtype, void *data, int tindex)
		/* RAID is superfluous in the context of a RAID device */
		if (memcmp(findit-4, "RAID", 4) == 0)
			*(findit -= 4) = ' ';
		if (((findit - str->pid) + strlen(container_types[tindex]))
		 < (sizeof(str->pid) + sizeof(str->prl)))
			inqstrcpy (container_types[tindex], findit + 1);
	}
	inqstrcpy ("V1.0", str->prl);
@@ -822,12 +850,12 @@ int aac_get_adapter_info(struct aac_dev* dev)
		dev->dac_support = (dacmode!=0);
	}
	if(dev->dac_support != 0) {
		if (!pci_set_dma_mask(dev->pdev, 0xFFFFFFFFFFFFFFFFULL) &&
			!pci_set_consistent_dma_mask(dev->pdev, 0xFFFFFFFFFFFFFFFFULL)) {
		if (!pci_set_dma_mask(dev->pdev, DMA_64BIT_MASK) &&
			!pci_set_consistent_dma_mask(dev->pdev, DMA_64BIT_MASK)) {
			printk(KERN_INFO"%s%d: 64 Bit DAC enabled\n",
				dev->name, dev->id);
		} else if (!pci_set_dma_mask(dev->pdev, 0xFFFFFFFFULL) &&
			!pci_set_consistent_dma_mask(dev->pdev, 0xFFFFFFFFULL)) {
		} else if (!pci_set_dma_mask(dev->pdev, DMA_32BIT_MASK) &&
			!pci_set_consistent_dma_mask(dev->pdev, DMA_32BIT_MASK)) {
			printk(KERN_INFO"%s%d: DMA mask set failed, 64 Bit DAC disabled\n",
				dev->name, dev->id);
			dev->dac_support = 0;
@@ -1438,7 +1466,6 @@ int aac_scsi_cmd(struct scsi_cmnd * scsicmd)
	struct Scsi_Host *host = scsicmd->device->host;
	struct aac_dev *dev = (struct aac_dev *)host->hostdata;
	struct fsa_dev_info *fsa_dev_ptr = dev->fsa_dev;
	int cardtype = dev->cardtype;
	int ret;
	
	/*
@@ -1542,14 +1569,14 @@ int aac_scsi_cmd(struct scsi_cmnd * scsicmd)
		 *	see: <vendor>.c i.e. aac.c
		 */
		if (scsicmd->device->id == host->this_id) {
			setinqstr(cardtype, (void *) (inq_data.inqd_vid), (sizeof(container_types)/sizeof(char *)));
			setinqstr(dev, (void *) (inq_data.inqd_vid), (sizeof(container_types)/sizeof(char *)));
			inq_data.inqd_pdt = INQD_PDT_PROC;	/* Processor device */
			aac_internal_transfer(scsicmd, &inq_data, 0, sizeof(inq_data));
			scsicmd->result = DID_OK << 16 | COMMAND_COMPLETE << 8 | SAM_STAT_GOOD;
			scsicmd->scsi_done(scsicmd);
			return 0;
		}
		setinqstr(cardtype, (void *) (inq_data.inqd_vid), fsa_dev_ptr[cid].type);
		setinqstr(dev, (void *) (inq_data.inqd_vid), fsa_dev_ptr[cid].type);
		inq_data.inqd_pdt = INQD_PDT_DA;	/* Direct/random access device */
		aac_internal_transfer(scsicmd, &inq_data, 0, sizeof(inq_data));
		return aac_get_container_name(scsicmd, cid);
+1 −1
Original line number Diff line number Diff line
@@ -1560,7 +1560,7 @@ struct fib_ioctl

struct revision
{
	__le32 compat;
	u32 compat;
	__le32 version;
	__le32 build;
};
+3 −3
Original line number Diff line number Diff line
@@ -408,7 +408,7 @@ static int check_revision(struct aac_dev *dev, void __user *arg)
	char *driver_version = aac_driver_version;
	u32 version;

	response.compat = cpu_to_le32(1);
	response.compat = 1;
	version = (simple_strtol(driver_version, 
				&driver_version, 10) << 24) | 0x00000400;
	version += simple_strtol(driver_version + 1, &driver_version, 10) << 16;
@@ -574,7 +574,7 @@ static int aac_send_raw_srb(struct aac_dev* dev, void __user * arg)
				rcode = -ENOMEM;
				goto cleanup;
			}
			sg_user[i] = (void __user *)usg->sg[i].addr;
			sg_user[i] = (void __user *)(long)usg->sg[i].addr;
			sg_list[i] = p; // save so we can clean up later
			sg_indx = i;

@@ -624,7 +624,7 @@ static int aac_send_raw_srb(struct aac_dev* dev, void __user * arg)
				rcode = -ENOMEM;
				goto cleanup;
			}
			sg_user[i] = (void __user *)upsg->sg[i].addr;
			sg_user[i] = (void __user *)(long)upsg->sg[i].addr;
			sg_list[i] = p; // save so we can clean up later
			sg_indx = i;

Loading