Merge tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi
Pull SCSI updates from James Bottomley: "This patch set consists of the usual driver updates (ufs, storvsc, pm8001 hpsa). It also has removal of the user space target driver code (everyone is using LIO now), a partial PCI MSI-X update, more multi-queue updates, conversion to 64 bit LUNs (so we could theoretically cope with any LUN returned by a device) and placeholder support for the ZBC device type (Shingle drives), plus an assortment of minor updates and bug fixes" * tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi: (143 commits) scsi: do not issue SCSI RSOC command to Promise Vtrak E610f vmw_pvscsi: Use pci_enable_msix_exact() instead of pci_enable_msix() pm8001: Fix invalid return when request_irq() failed lpfc: Remove superfluous call to pci_disable_msix() isci: Use pci_enable_msix_exact() instead of pci_enable_msix() bfa: Use pci_enable_msix_exact() instead of pci_enable_msix() bfa: Cleanup bfad_setup_intr() function bfa: Do not call pci_enable_msix() after it failed once fnic: Use pci_enable_msix_exact() instead of pci_enable_msix() scsi: use short driver name for per-driver cmd slab caches scsi_debug: support scsi-mq, queues and locks Drivers: add blist flags scsi: ufs: fix endianness sparse warnings scsi: ufs: make undeclared functions static bnx2i: Update driver version to 2.7.10.1 pm8001: fix a memory leak in nvmd_resp pm8001: fix update_flash pm8001: fix a memory leak in flash_update pm8001: Cleaning up uninitialized variables pm8001: Fix to remove null pointer checks that could never happen ...
This commit is contained in:
@@ -317,8 +317,6 @@ Each of the parameters is a number, containing the described information:
|
||||
4 0x10 16 Immediate return on BIOS seek command. (Not used)
|
||||
(*)5 0x20 32 Check for LUNs >= 1.
|
||||
|
||||
The default for LUN Check depends on CONFIG_SCSI_MULTI_LUN.
|
||||
|
||||
* TaggedCmnds is a number indicating the maximum number of Tagged Commands.
|
||||
It is the binary logarithm - 1 of the actual number. Max is 4 (32).
|
||||
Value Number of Tagged Commands
|
||||
|
||||
+2
-2
@@ -2022,13 +2022,13 @@ S: Supported
|
||||
F: drivers/net/wireless/brcm80211/
|
||||
|
||||
BROADCOM BNX2FC 10 GIGABIT FCOE DRIVER
|
||||
M: Eddie Wai <eddie.wai@broadcom.com>
|
||||
M: QLogic-Storage-Upstream@qlogic.com
|
||||
L: linux-scsi@vger.kernel.org
|
||||
S: Supported
|
||||
F: drivers/scsi/bnx2fc/
|
||||
|
||||
BROADCOM BNX2I 1/10 GIGABIT iSCSI DRIVER
|
||||
M: Eddie Wai <eddie.wai@broadcom.com>
|
||||
M: QLogic-Storage-Upstream@qlogic.com
|
||||
L: linux-scsi@vger.kernel.org
|
||||
S: Supported
|
||||
F: drivers/scsi/bnx2i/
|
||||
|
||||
@@ -45,7 +45,6 @@ CONFIG_RFKILL=y
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_SCSI_TGT=y
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_CHR_DEV_SG=y
|
||||
CONFIG_CHR_DEV_SCH=y
|
||||
|
||||
@@ -225,7 +225,6 @@ CONFIG_BLK_DEV_IDECD=y
|
||||
CONFIG_BLK_DEV_IDETAPE=m
|
||||
CONFIG_BLK_DEV_PLATFORM=y
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_SCSI_TGT=m
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_CHR_DEV_ST=m
|
||||
CONFIG_BLK_DEV_SR=m
|
||||
|
||||
@@ -257,7 +257,6 @@ CONFIG_BLK_DEV_GAYLE=y
|
||||
CONFIG_BLK_DEV_BUDDHA=y
|
||||
CONFIG_RAID_ATTRS=m
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_SCSI_TGT=m
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_CHR_DEV_ST=m
|
||||
CONFIG_CHR_DEV_OSST=m
|
||||
|
||||
@@ -244,7 +244,6 @@ CONFIG_ATA_OVER_ETH=m
|
||||
CONFIG_DUMMY_IRQ=m
|
||||
CONFIG_RAID_ATTRS=m
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_SCSI_TGT=m
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_CHR_DEV_ST=m
|
||||
CONFIG_CHR_DEV_OSST=m
|
||||
|
||||
@@ -251,7 +251,6 @@ CONFIG_BLK_DEV_IDECD=y
|
||||
CONFIG_BLK_DEV_FALCON_IDE=y
|
||||
CONFIG_RAID_ATTRS=m
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_SCSI_TGT=m
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_CHR_DEV_ST=m
|
||||
CONFIG_CHR_DEV_OSST=m
|
||||
|
||||
@@ -242,7 +242,6 @@ CONFIG_ATA_OVER_ETH=m
|
||||
CONFIG_DUMMY_IRQ=m
|
||||
CONFIG_RAID_ATTRS=m
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_SCSI_TGT=m
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_CHR_DEV_ST=m
|
||||
CONFIG_CHR_DEV_OSST=m
|
||||
|
||||
@@ -244,7 +244,6 @@ CONFIG_ATA_OVER_ETH=m
|
||||
CONFIG_DUMMY_IRQ=m
|
||||
CONFIG_RAID_ATTRS=m
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_SCSI_TGT=m
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_CHR_DEV_ST=m
|
||||
CONFIG_CHR_DEV_OSST=m
|
||||
|
||||
@@ -251,7 +251,6 @@ CONFIG_BLK_DEV_IDECD=y
|
||||
CONFIG_BLK_DEV_MAC_IDE=y
|
||||
CONFIG_RAID_ATTRS=m
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_SCSI_TGT=m
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_CHR_DEV_ST=m
|
||||
CONFIG_CHR_DEV_OSST=m
|
||||
|
||||
@@ -273,7 +273,6 @@ CONFIG_BLK_DEV_MAC_IDE=y
|
||||
CONFIG_BLK_DEV_Q40IDE=y
|
||||
CONFIG_RAID_ATTRS=m
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_SCSI_TGT=m
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_CHR_DEV_ST=m
|
||||
CONFIG_CHR_DEV_OSST=m
|
||||
|
||||
@@ -241,7 +241,6 @@ CONFIG_ATA_OVER_ETH=m
|
||||
CONFIG_DUMMY_IRQ=m
|
||||
CONFIG_RAID_ATTRS=m
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_SCSI_TGT=m
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_CHR_DEV_ST=m
|
||||
CONFIG_CHR_DEV_OSST=m
|
||||
|
||||
@@ -242,7 +242,6 @@ CONFIG_ATA_OVER_ETH=m
|
||||
CONFIG_DUMMY_IRQ=m
|
||||
CONFIG_RAID_ATTRS=m
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_SCSI_TGT=m
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_CHR_DEV_ST=m
|
||||
CONFIG_CHR_DEV_OSST=m
|
||||
|
||||
@@ -249,7 +249,6 @@ CONFIG_BLK_DEV_IDECD=y
|
||||
CONFIG_BLK_DEV_Q40IDE=y
|
||||
CONFIG_RAID_ATTRS=m
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_SCSI_TGT=m
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_CHR_DEV_ST=m
|
||||
CONFIG_CHR_DEV_OSST=m
|
||||
|
||||
@@ -239,7 +239,6 @@ CONFIG_ATA_OVER_ETH=m
|
||||
CONFIG_DUMMY_IRQ=m
|
||||
CONFIG_RAID_ATTRS=m
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_SCSI_TGT=m
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_CHR_DEV_ST=m
|
||||
CONFIG_CHR_DEV_OSST=m
|
||||
|
||||
@@ -239,7 +239,6 @@ CONFIG_ATA_OVER_ETH=m
|
||||
CONFIG_DUMMY_IRQ=m
|
||||
CONFIG_RAID_ATTRS=m
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_SCSI_TGT=m
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_CHR_DEV_ST=m
|
||||
CONFIG_CHR_DEV_OSST=m
|
||||
|
||||
@@ -116,7 +116,6 @@ CONFIG_MTD_NAND_PLATFORM=y
|
||||
CONFIG_MTD_SPI_NOR=y
|
||||
CONFIG_EEPROM_AT24=y
|
||||
CONFIG_EEPROM_AT25=y
|
||||
CONFIG_SCSI_TGT=y
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_CHR_DEV_SG=y
|
||||
CONFIG_SCSI_MULTI_LUN=y
|
||||
|
||||
@@ -45,7 +45,6 @@ CONFIG_VLAN_8021Q=m
|
||||
CONFIG_CONNECTOR=m
|
||||
CONFIG_BLK_DEV_LOOP=m
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_SCSI_TGT=m
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_CHR_DEV_ST=m
|
||||
CONFIG_BLK_DEV_SR=m
|
||||
|
||||
@@ -219,7 +219,6 @@ CONFIG_ATA_OVER_ETH=m
|
||||
# CONFIG_MISC_DEVICES is not set
|
||||
CONFIG_RAID_ATTRS=m
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_SCSI_TGT=m
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_CHR_DEV_ST=y
|
||||
CONFIG_BLK_DEV_SR=y
|
||||
|
||||
@@ -106,7 +106,6 @@ CONFIG_CDROM_PKTCDVD=m
|
||||
CONFIG_ATA_OVER_ETH=m
|
||||
# CONFIG_MISC_DEVICES is not set
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_SCSI_TGT=m
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_CHR_DEV_ST=y
|
||||
CONFIG_BLK_DEV_SR=m
|
||||
|
||||
@@ -54,7 +54,6 @@ CONFIG_BLK_DEV_NBD=m
|
||||
CONFIG_SGI_IOC4=y
|
||||
CONFIG_RAID_ATTRS=y
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_SCSI_TGT=y
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_BLK_DEV_SR=y
|
||||
CONFIG_BLK_DEV_SR_VENDOR=y
|
||||
|
||||
@@ -208,7 +208,6 @@ CONFIG_CDROM_PKTCDVD=m
|
||||
CONFIG_ATA_OVER_ETH=m
|
||||
CONFIG_RAID_ATTRS=m
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_SCSI_TGT=m
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_CHR_DEV_ST=m
|
||||
CONFIG_BLK_DEV_SR=m
|
||||
|
||||
@@ -120,7 +120,6 @@ CONFIG_BLK_DEV_CRYPTOLOOP=y
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_SIZE=8192
|
||||
CONFIG_RAID_ATTRS=m
|
||||
CONFIG_SCSI_TGT=y
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_BLK_DEV_SR=y
|
||||
CONFIG_CHR_DEV_SG=y
|
||||
|
||||
@@ -253,7 +253,6 @@ CONFIG_BLK_DEV_IT8213=m
|
||||
CONFIG_BLK_DEV_TC86C001=m
|
||||
CONFIG_RAID_ATTRS=m
|
||||
CONFIG_SCSI=m
|
||||
CONFIG_SCSI_TGT=m
|
||||
CONFIG_BLK_DEV_SD=m
|
||||
CONFIG_CHR_DEV_ST=m
|
||||
CONFIG_CHR_DEV_OSST=m
|
||||
|
||||
@@ -254,7 +254,6 @@ CONFIG_BLK_DEV_IT8213=m
|
||||
CONFIG_BLK_DEV_TC86C001=m
|
||||
CONFIG_RAID_ATTRS=m
|
||||
CONFIG_SCSI=m
|
||||
CONFIG_SCSI_TGT=m
|
||||
CONFIG_BLK_DEV_SD=m
|
||||
CONFIG_CHR_DEV_ST=m
|
||||
CONFIG_CHR_DEV_OSST=m
|
||||
|
||||
@@ -254,7 +254,6 @@ CONFIG_BLK_DEV_IT8213=m
|
||||
CONFIG_BLK_DEV_TC86C001=m
|
||||
CONFIG_RAID_ATTRS=m
|
||||
CONFIG_SCSI=m
|
||||
CONFIG_SCSI_TGT=m
|
||||
CONFIG_BLK_DEV_SD=m
|
||||
CONFIG_CHR_DEV_ST=m
|
||||
CONFIG_CHR_DEV_OSST=m
|
||||
|
||||
@@ -134,7 +134,6 @@ CONFIG_BLK_DEV_LOOP=m
|
||||
CONFIG_BLK_DEV_CRYPTOLOOP=m
|
||||
CONFIG_SGI_IOC4=m
|
||||
CONFIG_SCSI=m
|
||||
CONFIG_SCSI_TGT=m
|
||||
# CONFIG_SCSI_PROC_FS is not set
|
||||
CONFIG_BLK_DEV_SD=m
|
||||
CONFIG_CHR_DEV_SG=m
|
||||
|
||||
@@ -334,7 +334,6 @@ CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_SIZE=65536
|
||||
CONFIG_CDROM_PKTCDVD=y
|
||||
CONFIG_RAID_ATTRS=m
|
||||
CONFIG_SCSI_TGT=m
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_CHR_DEV_ST=m
|
||||
CONFIG_CHR_DEV_OSST=m
|
||||
@@ -346,10 +345,8 @@ CONFIG_SCSI_CONSTANTS=y
|
||||
CONFIG_SCSI_LOGGING=y
|
||||
CONFIG_SCSI_SCAN_ASYNC=y
|
||||
CONFIG_SCSI_SPI_ATTRS=m
|
||||
CONFIG_SCSI_FC_TGT_ATTRS=y
|
||||
CONFIG_SCSI_SAS_LIBSAS=m
|
||||
CONFIG_SCSI_SRP_ATTRS=m
|
||||
CONFIG_SCSI_SRP_TGT_ATTRS=y
|
||||
CONFIG_ISCSI_TCP=m
|
||||
CONFIG_LIBFCOE=m
|
||||
CONFIG_SCSI_DEBUG=m
|
||||
|
||||
@@ -311,7 +311,6 @@ CONFIG_CDROM_PKTCDVD=y
|
||||
CONFIG_MISC_DEVICES=y
|
||||
CONFIG_RAID_ATTRS=m
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_SCSI_TGT=m
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_CHR_DEV_ST=m
|
||||
CONFIG_CHR_DEV_OSST=m
|
||||
@@ -323,10 +322,8 @@ CONFIG_SCSI_CONSTANTS=y
|
||||
CONFIG_SCSI_LOGGING=y
|
||||
CONFIG_SCSI_SCAN_ASYNC=y
|
||||
CONFIG_SCSI_SPI_ATTRS=m
|
||||
CONFIG_SCSI_FC_TGT_ATTRS=y
|
||||
CONFIG_SCSI_SAS_LIBSAS=m
|
||||
CONFIG_SCSI_SRP_ATTRS=m
|
||||
CONFIG_SCSI_SRP_TGT_ATTRS=y
|
||||
CONFIG_ISCSI_TCP=m
|
||||
CONFIG_LIBFCOE=m
|
||||
CONFIG_SCSI_DEBUG=m
|
||||
|
||||
@@ -221,7 +221,6 @@ CONFIG_ATA_OVER_ETH=m
|
||||
CONFIG_SGI_IOC4=m
|
||||
CONFIG_RAID_ATTRS=m
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_SCSI_TGT=m
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_CHR_DEV_ST=m
|
||||
CONFIG_BLK_DEV_SR=m
|
||||
|
||||
@@ -39,7 +39,6 @@ CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_XIP=y
|
||||
# CONFIG_MISC_DEVICES is not set
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_SCSI_TGT=m
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_SCSI_MULTI_LUN=y
|
||||
CONFIG_SCSI_SCAN_ASYNC=y
|
||||
|
||||
@@ -44,7 +44,6 @@ CONFIG_BLK_DEV_NBD=m
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_XIP=y
|
||||
# CONFIG_MISC_DEVICES is not set
|
||||
CONFIG_SCSI_TGT=m
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_SCSI_SCAN_ASYNC=y
|
||||
# CONFIG_SCSI_LOWLEVEL is not set
|
||||
|
||||
@@ -43,7 +43,6 @@ CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_SIZE=32768
|
||||
CONFIG_MISC_DEVICES=y
|
||||
CONFIG_EEPROM_LEGACY=y
|
||||
CONFIG_SCSI_TGT=y
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_CHR_DEV_SG=y
|
||||
CONFIG_ATA=y
|
||||
|
||||
@@ -54,7 +54,6 @@ CONFIG_BLK_DEV_LOOP=y
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_SIZE=131072
|
||||
CONFIG_IDE=y
|
||||
CONFIG_SCSI_TGT=y
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_CHR_DEV_SG=y
|
||||
CONFIG_ATA=y
|
||||
|
||||
@@ -47,7 +47,6 @@ CONFIG_BLK_DEV_LOOP=y
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_SIZE=32768
|
||||
CONFIG_EEPROM_AT24=y
|
||||
CONFIG_SCSI_TGT=y
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_CHR_DEV_SG=y
|
||||
CONFIG_ATA=y
|
||||
|
||||
@@ -425,10 +425,8 @@ CONFIG_SCSI_LOGGING=y
|
||||
CONFIG_SCSI_SCAN_ASYNC=y
|
||||
CONFIG_SCSI_SPI_ATTRS=m
|
||||
CONFIG_SCSI_SRP_ATTRS=m
|
||||
CONFIG_SCSI_SRP_TGT_ATTRS=y
|
||||
CONFIG_SCSI_MESH=m
|
||||
CONFIG_SCSI_MAC53C94=m
|
||||
CONFIG_SCSI_SRP=m
|
||||
CONFIG_SCSI_LOWLEVEL_PCMCIA=y
|
||||
CONFIG_SCSI_DH=y
|
||||
CONFIG_SCSI_DH_RDAC=m
|
||||
|
||||
@@ -366,7 +366,6 @@ CONFIG_VIRTIO_BLK=y
|
||||
CONFIG_ENCLOSURE_SERVICES=m
|
||||
CONFIG_RAID_ATTRS=m
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_SCSI_TGT=m
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_CHR_DEV_ST=m
|
||||
CONFIG_CHR_DEV_OSST=m
|
||||
@@ -380,7 +379,6 @@ CONFIG_SCSI_LOGGING=y
|
||||
CONFIG_SCSI_SPI_ATTRS=m
|
||||
CONFIG_SCSI_SAS_LIBSAS=m
|
||||
CONFIG_SCSI_SRP_ATTRS=m
|
||||
CONFIG_SCSI_SRP_TGT_ATTRS=y
|
||||
CONFIG_ISCSI_TCP=m
|
||||
CONFIG_LIBFCOE=m
|
||||
CONFIG_SCSI_DEBUG=m
|
||||
|
||||
@@ -363,7 +363,6 @@ CONFIG_VIRTIO_BLK=y
|
||||
CONFIG_ENCLOSURE_SERVICES=m
|
||||
CONFIG_RAID_ATTRS=m
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_SCSI_TGT=m
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_CHR_DEV_ST=m
|
||||
CONFIG_CHR_DEV_OSST=m
|
||||
@@ -377,7 +376,6 @@ CONFIG_SCSI_LOGGING=y
|
||||
CONFIG_SCSI_SPI_ATTRS=m
|
||||
CONFIG_SCSI_SAS_LIBSAS=m
|
||||
CONFIG_SCSI_SRP_ATTRS=m
|
||||
CONFIG_SCSI_SRP_TGT_ATTRS=y
|
||||
CONFIG_ISCSI_TCP=m
|
||||
CONFIG_LIBFCOE=m
|
||||
CONFIG_SCSI_DEBUG=m
|
||||
|
||||
@@ -361,7 +361,6 @@ CONFIG_VIRTIO_BLK=y
|
||||
CONFIG_ENCLOSURE_SERVICES=m
|
||||
CONFIG_RAID_ATTRS=m
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_SCSI_TGT=m
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_CHR_DEV_ST=m
|
||||
CONFIG_CHR_DEV_OSST=m
|
||||
@@ -375,7 +374,6 @@ CONFIG_SCSI_LOGGING=y
|
||||
CONFIG_SCSI_SPI_ATTRS=m
|
||||
CONFIG_SCSI_SAS_LIBSAS=m
|
||||
CONFIG_SCSI_SRP_ATTRS=m
|
||||
CONFIG_SCSI_SRP_TGT_ATTRS=y
|
||||
CONFIG_ISCSI_TCP=m
|
||||
CONFIG_LIBFCOE=m
|
||||
CONFIG_SCSI_DEBUG=m
|
||||
|
||||
@@ -52,7 +52,6 @@ CONFIG_CDROM_PKTCDVD=y
|
||||
# CONFIG_MISC_DEVICES is not set
|
||||
CONFIG_RAID_ATTRS=y
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_SCSI_TGT=y
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_BLK_DEV_SR=y
|
||||
CONFIG_CHR_DEV_SG=y
|
||||
|
||||
@@ -170,7 +170,6 @@ CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_SIZE=16384
|
||||
CONFIG_ATA_OVER_ETH=m
|
||||
CONFIG_RAID_ATTRS=m
|
||||
CONFIG_SCSI_TGT=m
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_SCSI_CONSTANTS=y
|
||||
CONFIG_SCSI_LOGGING=y
|
||||
|
||||
@@ -301,7 +301,6 @@ CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_SIZE=16384
|
||||
CONFIG_ATA_OVER_ETH=m
|
||||
CONFIG_RAID_ATTRS=m
|
||||
CONFIG_SCSI_TGT=m
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_SCSI_CONSTANTS=y
|
||||
CONFIG_SCSI_LOGGING=y
|
||||
|
||||
@@ -3945,7 +3945,7 @@ void ata_scsi_hotplug(struct work_struct *work)
|
||||
* Zero.
|
||||
*/
|
||||
int ata_scsi_user_scan(struct Scsi_Host *shost, unsigned int channel,
|
||||
unsigned int id, unsigned int lun)
|
||||
unsigned int id, u64 lun)
|
||||
{
|
||||
struct ata_port *ap = ata_shost_to_port(shost);
|
||||
unsigned long flags;
|
||||
|
||||
@@ -144,7 +144,7 @@ extern void ata_schedule_scsi_eh(struct Scsi_Host *shost);
|
||||
extern void ata_scsi_dev_rescan(struct work_struct *work);
|
||||
extern int ata_bus_probe(struct ata_port *ap);
|
||||
extern int ata_scsi_user_scan(struct Scsi_Host *shost, unsigned int channel,
|
||||
unsigned int id, unsigned int lun);
|
||||
unsigned int id, u64 lun);
|
||||
|
||||
|
||||
/* libata-eh.c */
|
||||
|
||||
@@ -649,12 +649,10 @@ mptbase_reply(MPT_ADAPTER *ioc, MPT_FRAME_HDR *req, MPT_FRAME_HDR *reply)
|
||||
case MPI_FUNCTION_CONFIG:
|
||||
case MPI_FUNCTION_SAS_IO_UNIT_CONTROL:
|
||||
ioc->mptbase_cmds.status |= MPT_MGMT_STATUS_COMMAND_GOOD;
|
||||
if (reply) {
|
||||
ioc->mptbase_cmds.status |= MPT_MGMT_STATUS_RF_VALID;
|
||||
memcpy(ioc->mptbase_cmds.reply, reply,
|
||||
min(MPT_DEFAULT_FRAME_SIZE,
|
||||
4 * reply->u.reply.MsgLength));
|
||||
}
|
||||
ioc->mptbase_cmds.status |= MPT_MGMT_STATUS_RF_VALID;
|
||||
memcpy(ioc->mptbase_cmds.reply, reply,
|
||||
min(MPT_DEFAULT_FRAME_SIZE,
|
||||
4 * reply->u.reply.MsgLength));
|
||||
if (ioc->mptbase_cmds.status & MPT_MGMT_STATUS_PENDING) {
|
||||
ioc->mptbase_cmds.status &= ~MPT_MGMT_STATUS_PENDING;
|
||||
complete(&ioc->mptbase_cmds.done);
|
||||
@@ -1408,8 +1406,8 @@ mpt_verify_adapter(int iocid, MPT_ADAPTER **iocpp)
|
||||
* in /proc/mpt/summary and /sysfs/class/scsi_host/host<X>/version_product
|
||||
*
|
||||
**/
|
||||
static void
|
||||
mpt_get_product_name(u16 vendor, u16 device, u8 revision, char *prod_name)
|
||||
static const char*
|
||||
mpt_get_product_name(u16 vendor, u16 device, u8 revision)
|
||||
{
|
||||
char *product_str = NULL;
|
||||
|
||||
@@ -1635,8 +1633,7 @@ mpt_get_product_name(u16 vendor, u16 device, u8 revision, char *prod_name)
|
||||
}
|
||||
|
||||
out:
|
||||
if (product_str)
|
||||
sprintf(prod_name, "%s", product_str);
|
||||
return product_str;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1887,8 +1884,8 @@ mpt_attach(struct pci_dev *pdev, const struct pci_device_id *id)
|
||||
dinitprintk(ioc, printk(MYIOC_s_INFO_FMT "facts @ %p, pfacts[0] @ %p\n",
|
||||
ioc->name, &ioc->facts, &ioc->pfacts[0]));
|
||||
|
||||
mpt_get_product_name(pdev->vendor, pdev->device, pdev->revision,
|
||||
ioc->prod_name);
|
||||
ioc->prod_name = mpt_get_product_name(pdev->vendor, pdev->device,
|
||||
pdev->revision);
|
||||
|
||||
switch (pdev->device)
|
||||
{
|
||||
@@ -7007,7 +7004,7 @@ EXPORT_SYMBOL(mpt_halt_firmware);
|
||||
* IOC doesn't reply to any outstanding request. This will transfer IOC
|
||||
* to READY state.
|
||||
**/
|
||||
int
|
||||
static int
|
||||
mpt_SoftResetHandler(MPT_ADAPTER *ioc, int sleepFlag)
|
||||
{
|
||||
int rc;
|
||||
|
||||
@@ -405,7 +405,7 @@ typedef struct _VirtTarget {
|
||||
typedef struct _VirtDevice {
|
||||
VirtTarget *vtarget;
|
||||
u8 configured_lun;
|
||||
int lun;
|
||||
u64 lun;
|
||||
} VirtDevice;
|
||||
|
||||
/*
|
||||
@@ -605,7 +605,7 @@ typedef struct _MPT_ADAPTER
|
||||
int id; /* Unique adapter id N {0,1,2,...} */
|
||||
int pci_irq; /* This irq */
|
||||
char name[MPT_NAME_LENGTH]; /* "iocN" */
|
||||
char prod_name[MPT_NAME_LENGTH]; /* "LSIFC9x9" */
|
||||
const char *prod_name; /* "LSIFC9x9" */
|
||||
#ifdef CONFIG_FUSION_LOGGING
|
||||
/* used in mpt_display_event_info */
|
||||
char evStr[EVENT_DESCR_STR_SZ];
|
||||
|
||||
@@ -1261,19 +1261,11 @@ mptctl_getiocinfo (unsigned long arg, unsigned int data_size)
|
||||
else
|
||||
return -EFAULT;
|
||||
|
||||
karg = kmalloc(data_size, GFP_KERNEL);
|
||||
if (karg == NULL) {
|
||||
printk(KERN_ERR MYNAM "%s::mpt_ioctl_iocinfo() @%d - no memory available!\n",
|
||||
__FILE__, __LINE__);
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
if (copy_from_user(karg, uarg, data_size)) {
|
||||
printk(KERN_ERR MYNAM "%s@%d::mptctl_getiocinfo - "
|
||||
"Unable to read in mpt_ioctl_iocinfo struct @ %p\n",
|
||||
__FILE__, __LINE__, uarg);
|
||||
kfree(karg);
|
||||
return -EFAULT;
|
||||
karg = memdup_user(uarg, data_size);
|
||||
if (IS_ERR(karg)) {
|
||||
printk(KERN_ERR MYNAM "%s@%d::mpt_ioctl_iocinfo() - memdup_user returned error [%ld]\n",
|
||||
__FILE__, __LINE__, PTR_ERR(karg));
|
||||
return PTR_ERR(karg);
|
||||
}
|
||||
|
||||
if (((iocnum = mpt_verify_adapter(karg->hdr.iocnum, &ioc)) < 0) ||
|
||||
|
||||
@@ -204,7 +204,7 @@ mptfc_block_error_handler(struct scsi_cmnd *SCpnt,
|
||||
|| (loops > 0 && ioc->active == 0)) {
|
||||
spin_unlock_irqrestore(shost->host_lock, flags);
|
||||
dfcprintk (ioc, printk(MYIOC_s_DEBUG_FMT
|
||||
"mptfc_block_error_handler.%d: %d:%d, port status is "
|
||||
"mptfc_block_error_handler.%d: %d:%llu, port status is "
|
||||
"%x, active flag %d, deferring %s recovery.\n",
|
||||
ioc->name, ioc->sh->host_no,
|
||||
SCpnt->device->id, SCpnt->device->lun,
|
||||
@@ -218,7 +218,7 @@ mptfc_block_error_handler(struct scsi_cmnd *SCpnt,
|
||||
if (ready == DID_NO_CONNECT || !SCpnt->device->hostdata
|
||||
|| ioc->active == 0) {
|
||||
dfcprintk (ioc, printk(MYIOC_s_DEBUG_FMT
|
||||
"%s.%d: %d:%d, failing recovery, "
|
||||
"%s.%d: %d:%llu, failing recovery, "
|
||||
"port state %x, active %d, vdevice %p.\n", caller,
|
||||
ioc->name, ioc->sh->host_no,
|
||||
SCpnt->device->id, SCpnt->device->lun, ready,
|
||||
@@ -226,7 +226,7 @@ mptfc_block_error_handler(struct scsi_cmnd *SCpnt,
|
||||
return FAILED;
|
||||
}
|
||||
dfcprintk (ioc, printk(MYIOC_s_DEBUG_FMT
|
||||
"%s.%d: %d:%d, executing recovery.\n", caller,
|
||||
"%s.%d: %d:%llu, executing recovery.\n", caller,
|
||||
ioc->name, ioc->sh->host_no,
|
||||
SCpnt->device->id, SCpnt->device->lun));
|
||||
return (*func)(SCpnt);
|
||||
@@ -525,8 +525,7 @@ mptfc_target_destroy(struct scsi_target *starget)
|
||||
if (ri) /* better be! */
|
||||
ri->starget = NULL;
|
||||
}
|
||||
if (starget->hostdata)
|
||||
kfree(starget->hostdata);
|
||||
kfree(starget->hostdata);
|
||||
starget->hostdata = NULL;
|
||||
}
|
||||
|
||||
|
||||
@@ -990,11 +990,10 @@ mptsas_queue_device_delete(MPT_ADAPTER *ioc,
|
||||
MpiEventDataSasDeviceStatusChange_t *sas_event_data)
|
||||
{
|
||||
struct fw_event_work *fw_event;
|
||||
int sz;
|
||||
|
||||
sz = offsetof(struct fw_event_work, event_data) +
|
||||
sizeof(MpiEventDataSasDeviceStatusChange_t);
|
||||
fw_event = kzalloc(sz, GFP_ATOMIC);
|
||||
fw_event = kzalloc(sizeof(*fw_event) +
|
||||
sizeof(MpiEventDataSasDeviceStatusChange_t),
|
||||
GFP_ATOMIC);
|
||||
if (!fw_event) {
|
||||
printk(MYIOC_s_WARN_FMT "%s: failed at (line=%d)\n",
|
||||
ioc->name, __func__, __LINE__);
|
||||
@@ -1011,10 +1010,8 @@ static void
|
||||
mptsas_queue_rescan(MPT_ADAPTER *ioc)
|
||||
{
|
||||
struct fw_event_work *fw_event;
|
||||
int sz;
|
||||
|
||||
sz = offsetof(struct fw_event_work, event_data);
|
||||
fw_event = kzalloc(sz, GFP_ATOMIC);
|
||||
fw_event = kzalloc(sizeof(*fw_event), GFP_ATOMIC);
|
||||
if (!fw_event) {
|
||||
printk(MYIOC_s_WARN_FMT "%s: failed at (line=%d)\n",
|
||||
ioc->name, __func__, __LINE__);
|
||||
@@ -1206,27 +1203,28 @@ mptsas_taskmgmt_complete(MPT_ADAPTER *ioc, MPT_FRAME_HDR *mf, MPT_FRAME_HDR *mr)
|
||||
"(mf = %p, mr = %p)\n", ioc->name, mf, mr));
|
||||
|
||||
pScsiTmReply = (SCSITaskMgmtReply_t *)mr;
|
||||
if (pScsiTmReply) {
|
||||
dtmprintk(ioc, printk(MYIOC_s_DEBUG_FMT
|
||||
"\tTaskMgmt completed: fw_channel = %d, fw_id = %d,\n"
|
||||
"\ttask_type = 0x%02X, iocstatus = 0x%04X "
|
||||
"loginfo = 0x%08X,\n\tresponse_code = 0x%02X, "
|
||||
"term_cmnds = %d\n", ioc->name,
|
||||
pScsiTmReply->Bus, pScsiTmReply->TargetID,
|
||||
pScsiTmReply->TaskType,
|
||||
le16_to_cpu(pScsiTmReply->IOCStatus),
|
||||
le32_to_cpu(pScsiTmReply->IOCLogInfo),
|
||||
pScsiTmReply->ResponseCode,
|
||||
le32_to_cpu(pScsiTmReply->TerminationCount)));
|
||||
if (!pScsiTmReply)
|
||||
return 0;
|
||||
|
||||
if (pScsiTmReply->ResponseCode)
|
||||
mptscsih_taskmgmt_response_code(ioc,
|
||||
pScsiTmReply->ResponseCode);
|
||||
}
|
||||
dtmprintk(ioc, printk(MYIOC_s_DEBUG_FMT
|
||||
"\tTaskMgmt completed: fw_channel = %d, fw_id = %d,\n"
|
||||
"\ttask_type = 0x%02X, iocstatus = 0x%04X "
|
||||
"loginfo = 0x%08X,\n\tresponse_code = 0x%02X, "
|
||||
"term_cmnds = %d\n", ioc->name,
|
||||
pScsiTmReply->Bus, pScsiTmReply->TargetID,
|
||||
pScsiTmReply->TaskType,
|
||||
le16_to_cpu(pScsiTmReply->IOCStatus),
|
||||
le32_to_cpu(pScsiTmReply->IOCLogInfo),
|
||||
pScsiTmReply->ResponseCode,
|
||||
le32_to_cpu(pScsiTmReply->TerminationCount)));
|
||||
|
||||
if (pScsiTmReply && (pScsiTmReply->TaskType ==
|
||||
if (pScsiTmReply->ResponseCode)
|
||||
mptscsih_taskmgmt_response_code(ioc,
|
||||
pScsiTmReply->ResponseCode);
|
||||
|
||||
if (pScsiTmReply->TaskType ==
|
||||
MPI_SCSITASKMGMT_TASKTYPE_QUERY_TASK || pScsiTmReply->TaskType ==
|
||||
MPI_SCSITASKMGMT_TASKTYPE_ABRT_TASK_SET)) {
|
||||
MPI_SCSITASKMGMT_TASKTYPE_ABRT_TASK_SET) {
|
||||
ioc->taskmgmt_cmds.status |= MPT_MGMT_STATUS_COMMAND_GOOD;
|
||||
ioc->taskmgmt_cmds.status |= MPT_MGMT_STATUS_RF_VALID;
|
||||
memcpy(ioc->taskmgmt_cmds.reply, mr,
|
||||
@@ -1575,7 +1573,7 @@ mptsas_del_end_device(MPT_ADAPTER *ioc, struct mptsas_phyinfo *phy_info)
|
||||
mptsas_port_delete(ioc, phy_info->port_details);
|
||||
}
|
||||
|
||||
struct mptsas_phyinfo *
|
||||
static struct mptsas_phyinfo *
|
||||
mptsas_refreshing_device_handles(MPT_ADAPTER *ioc,
|
||||
struct mptsas_devinfo *sas_device)
|
||||
{
|
||||
@@ -3648,7 +3646,7 @@ mptsas_send_expander_event(struct fw_event_work *fw_event)
|
||||
* @handle:
|
||||
*
|
||||
*/
|
||||
struct mptsas_portinfo *
|
||||
static struct mptsas_portinfo *
|
||||
mptsas_expander_add(MPT_ADAPTER *ioc, u16 handle)
|
||||
{
|
||||
struct mptsas_portinfo buffer, *port_info;
|
||||
@@ -3763,7 +3761,7 @@ mptsas_send_link_status_event(struct fw_event_work *fw_event)
|
||||
printk(MYIOC_s_DEBUG_FMT
|
||||
"SDEV OUTSTANDING CMDS"
|
||||
"%d\n", ioc->name,
|
||||
sdev->device_busy));
|
||||
atomic_read(&sdev->device_busy)));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -3856,10 +3854,8 @@ retry_page:
|
||||
phy_info = mptsas_find_phyinfo_by_sas_address(ioc,
|
||||
sas_info->sas_address);
|
||||
|
||||
if (phy_info) {
|
||||
mptsas_del_end_device(ioc, phy_info);
|
||||
goto redo_device_scan;
|
||||
}
|
||||
mptsas_del_end_device(ioc, phy_info);
|
||||
goto redo_device_scan;
|
||||
} else
|
||||
mptsas_volume_delete(ioc, sas_info->fw.id);
|
||||
}
|
||||
@@ -3870,9 +3866,8 @@ retry_page:
|
||||
redo_expander_scan:
|
||||
list_for_each_entry(port_info, &ioc->sas_topology, list) {
|
||||
|
||||
if (port_info->phy_info &&
|
||||
(!(port_info->phy_info[0].identify.device_info &
|
||||
MPI_SAS_DEVICE_INFO_SMP_TARGET)))
|
||||
if (!(port_info->phy_info[0].identify.device_info &
|
||||
MPI_SAS_DEVICE_INFO_SMP_TARGET))
|
||||
continue;
|
||||
found_expander = 0;
|
||||
handle = 0xFFFF;
|
||||
@@ -4983,7 +4978,7 @@ static int
|
||||
mptsas_event_process(MPT_ADAPTER *ioc, EventNotificationReply_t *reply)
|
||||
{
|
||||
u32 event = le32_to_cpu(reply->Event);
|
||||
int sz, event_data_sz;
|
||||
int event_data_sz;
|
||||
struct fw_event_work *fw_event;
|
||||
unsigned long delay;
|
||||
|
||||
@@ -5093,8 +5088,7 @@ mptsas_event_process(MPT_ADAPTER *ioc, EventNotificationReply_t *reply)
|
||||
|
||||
event_data_sz = ((reply->MsgLength * 4) -
|
||||
offsetof(EventNotificationReply_t, Data));
|
||||
sz = offsetof(struct fw_event_work, event_data) + event_data_sz;
|
||||
fw_event = kzalloc(sz, GFP_ATOMIC);
|
||||
fw_event = kzalloc(sizeof(*fw_event) + event_data_sz, GFP_ATOMIC);
|
||||
if (!fw_event) {
|
||||
printk(MYIOC_s_WARN_FMT "%s: failed at (line=%d)\n", ioc->name,
|
||||
__func__, __LINE__);
|
||||
@@ -5321,7 +5315,7 @@ mptsas_probe(struct pci_dev *pdev, const struct pci_device_id *id)
|
||||
return error;
|
||||
}
|
||||
|
||||
void
|
||||
static void
|
||||
mptsas_shutdown(struct pci_dev *pdev)
|
||||
{
|
||||
MPT_ADAPTER *ioc = pci_get_drvdata(pdev);
|
||||
|
||||
@@ -110,7 +110,7 @@ struct fw_event_work {
|
||||
MPT_ADAPTER *ioc;
|
||||
u32 event;
|
||||
u8 retries;
|
||||
u8 __attribute__((aligned(4))) event_data[1];
|
||||
char event_data[0] __aligned(4);
|
||||
};
|
||||
|
||||
struct mptsas_discovery_event {
|
||||
|
||||
@@ -95,7 +95,7 @@ static void mptscsih_freeChainBuffers(MPT_ADAPTER *ioc, int req_idx);
|
||||
static void mptscsih_copy_sense_data(struct scsi_cmnd *sc, MPT_SCSI_HOST *hd, MPT_FRAME_HDR *mf, SCSIIOReply_t *pScsiReply);
|
||||
|
||||
int mptscsih_IssueTaskMgmt(MPT_SCSI_HOST *hd, u8 type, u8 channel, u8 id,
|
||||
int lun, int ctx2abort, ulong timeout);
|
||||
u64 lun, int ctx2abort, ulong timeout);
|
||||
|
||||
int mptscsih_ioc_reset(MPT_ADAPTER *ioc, int post_reset);
|
||||
int mptscsih_event_process(MPT_ADAPTER *ioc, EventNotificationReply_t *pEvReply);
|
||||
@@ -536,7 +536,7 @@ mptscsih_info_scsiio(MPT_ADAPTER *ioc, struct scsi_cmnd *sc, SCSIIOReply_t * pSc
|
||||
}
|
||||
|
||||
scsi_print_command(sc);
|
||||
printk(MYIOC_s_DEBUG_FMT "\tfw_channel = %d, fw_id = %d, lun = %d\n",
|
||||
printk(MYIOC_s_DEBUG_FMT "\tfw_channel = %d, fw_id = %d, lun = %llu\n",
|
||||
ioc->name, pScsiReply->Bus, pScsiReply->TargetID, sc->device->lun);
|
||||
printk(MYIOC_s_DEBUG_FMT "\trequest_len = %d, underflow = %d, "
|
||||
"resid = %d\n", ioc->name, scsi_bufflen(sc), sc->underflow,
|
||||
@@ -692,7 +692,7 @@ mptscsih_io_done(MPT_ADAPTER *ioc, MPT_FRAME_HDR *mf, MPT_FRAME_HDR *mr)
|
||||
*/
|
||||
if (scsi_state & MPI_SCSI_STATE_RESPONSE_INFO_VALID &&
|
||||
pScsiReply->ResponseInfo) {
|
||||
printk(MYIOC_s_NOTE_FMT "[%d:%d:%d:%d] "
|
||||
printk(MYIOC_s_NOTE_FMT "[%d:%d:%d:%llu] "
|
||||
"FCP_ResponseInfo=%08xh\n", ioc->name,
|
||||
sc->device->host->host_no, sc->device->channel,
|
||||
sc->device->id, sc->device->lun,
|
||||
@@ -1155,7 +1155,7 @@ mptscsih_report_queue_full(struct scsi_cmnd *sc, SCSIIOReply_t *pScsiReply, SCSI
|
||||
return;
|
||||
ioc = hd->ioc;
|
||||
if (time - hd->last_queue_full > 10 * HZ) {
|
||||
dprintk(ioc, printk(MYIOC_s_WARN_FMT "Device (%d:%d:%d) reported QUEUE_FULL!\n",
|
||||
dprintk(ioc, printk(MYIOC_s_WARN_FMT "Device (%d:%d:%llu) reported QUEUE_FULL!\n",
|
||||
ioc->name, 0, sc->device->id, sc->device->lun));
|
||||
hd->last_queue_full = time;
|
||||
}
|
||||
@@ -1271,15 +1271,13 @@ mptscsih_info(struct Scsi_Host *SChost)
|
||||
|
||||
h = shost_priv(SChost);
|
||||
|
||||
if (h) {
|
||||
if (h->info_kbuf == NULL)
|
||||
if ((h->info_kbuf = kmalloc(0x1000 /* 4Kb */, GFP_KERNEL)) == NULL)
|
||||
return h->info_kbuf;
|
||||
h->info_kbuf[0] = '\0';
|
||||
if (h->info_kbuf == NULL)
|
||||
if ((h->info_kbuf = kmalloc(0x1000 /* 4Kb */, GFP_KERNEL)) == NULL)
|
||||
return h->info_kbuf;
|
||||
h->info_kbuf[0] = '\0';
|
||||
|
||||
mpt_print_ioc_summary(h->ioc, h->info_kbuf, &size, 0, 0);
|
||||
h->info_kbuf[size-1] = '\0';
|
||||
}
|
||||
mpt_print_ioc_summary(h->ioc, h->info_kbuf, &size, 0, 0);
|
||||
h->info_kbuf[size-1] = '\0';
|
||||
|
||||
return h->info_kbuf;
|
||||
}
|
||||
@@ -1368,8 +1366,7 @@ mptscsih_qcmd(struct scsi_cmnd *SCpnt)
|
||||
/* Default to untagged. Once a target structure has been allocated,
|
||||
* use the Inquiry data to determine if device supports tagged.
|
||||
*/
|
||||
if (vdevice
|
||||
&& (vdevice->vtarget->tflags & MPT_TARGET_FLAGS_Q_YES)
|
||||
if ((vdevice->vtarget->tflags & MPT_TARGET_FLAGS_Q_YES)
|
||||
&& (SCpnt->device->tagged_supported)) {
|
||||
scsictl = scsidir | MPI_SCSIIO_CONTROL_SIMPLEQ;
|
||||
if (SCpnt->request && SCpnt->request->ioprio) {
|
||||
@@ -1518,7 +1515,7 @@ mptscsih_freeChainBuffers(MPT_ADAPTER *ioc, int req_idx)
|
||||
*
|
||||
**/
|
||||
int
|
||||
mptscsih_IssueTaskMgmt(MPT_SCSI_HOST *hd, u8 type, u8 channel, u8 id, int lun,
|
||||
mptscsih_IssueTaskMgmt(MPT_SCSI_HOST *hd, u8 type, u8 channel, u8 id, u64 lun,
|
||||
int ctx2abort, ulong timeout)
|
||||
{
|
||||
MPT_FRAME_HDR *mf;
|
||||
@@ -2380,7 +2377,7 @@ mptscsih_slave_configure(struct scsi_device *sdev)
|
||||
vdevice = sdev->hostdata;
|
||||
|
||||
dsprintk(ioc, printk(MYIOC_s_DEBUG_FMT
|
||||
"device @ %p, channel=%d, id=%d, lun=%d\n",
|
||||
"device @ %p, channel=%d, id=%d, lun=%llu\n",
|
||||
ioc->name, sdev, sdev->channel, sdev->id, sdev->lun));
|
||||
if (ioc->bus_type == SPI)
|
||||
dsprintk(ioc, printk(MYIOC_s_DEBUG_FMT
|
||||
@@ -2971,7 +2968,7 @@ mptscsih_do_cmd(MPT_SCSI_HOST *hd, INTERNAL_CMD *io)
|
||||
+ (my_idx * MPT_SENSE_BUFFER_ALLOC));
|
||||
|
||||
devtprintk(ioc, printk(MYIOC_s_DEBUG_FMT
|
||||
"%s: Sending Command 0x%02x for fw_channel=%d fw_id=%d lun=%d\n",
|
||||
"%s: Sending Command 0x%02x for fw_channel=%d fw_id=%d lun=%llu\n",
|
||||
ioc->name, __func__, cmd, io->channel, io->id, io->lun));
|
||||
|
||||
if (dir == MPI_SCSIIO_CONTROL_READ)
|
||||
|
||||
@@ -98,7 +98,7 @@ typedef struct _internal_cmd {
|
||||
u8 cmd; /* SCSI Op Code */
|
||||
u8 channel; /* bus number */
|
||||
u8 id; /* SCSI ID (virtual) */
|
||||
int lun;
|
||||
u64 lun;
|
||||
u8 flags; /* Bit Field - See above */
|
||||
u8 physDiskNum; /* Phys disk number, -1 else */
|
||||
u8 rsvd2;
|
||||
@@ -115,7 +115,7 @@ extern int mptscsih_show_info(struct seq_file *, struct Scsi_Host *);
|
||||
extern const char * mptscsih_info(struct Scsi_Host *SChost);
|
||||
extern int mptscsih_qcmd(struct scsi_cmnd *SCpnt);
|
||||
extern int mptscsih_IssueTaskMgmt(MPT_SCSI_HOST *hd, u8 type, u8 channel,
|
||||
u8 id, int lun, int ctx2abort, ulong timeout);
|
||||
u8 id, u64 lun, int ctx2abort, ulong timeout);
|
||||
extern void mptscsih_slave_destroy(struct scsi_device *device);
|
||||
extern int mptscsih_slave_configure(struct scsi_device *device);
|
||||
extern int mptscsih_abort(struct scsi_cmnd * SCpnt);
|
||||
|
||||
@@ -461,8 +461,7 @@ static int mptspi_target_alloc(struct scsi_target *starget)
|
||||
static void
|
||||
mptspi_target_destroy(struct scsi_target *starget)
|
||||
{
|
||||
if (starget->hostdata)
|
||||
kfree(starget->hostdata);
|
||||
kfree(starget->hostdata);
|
||||
starget->hostdata = NULL;
|
||||
}
|
||||
|
||||
@@ -620,7 +619,7 @@ static void mptspi_read_parameters(struct scsi_target *starget)
|
||||
spi_width(starget) = (nego & MPI_SCSIDEVPAGE0_NP_WIDE) ? 1 : 0;
|
||||
}
|
||||
|
||||
int
|
||||
static int
|
||||
mptscsih_quiesce_raid(MPT_SCSI_HOST *hd, int quiesce, u8 channel, u8 id)
|
||||
{
|
||||
MPT_ADAPTER *ioc = hd->ioc;
|
||||
|
||||
@@ -78,7 +78,7 @@ static unsigned int i2o_scsi_max_lun = 255;
|
||||
struct i2o_scsi_host {
|
||||
struct Scsi_Host *scsi_host; /* pointer to the SCSI host */
|
||||
struct i2o_controller *iop; /* pointer to the I2O controller */
|
||||
unsigned int lun; /* lun's used for block devices */
|
||||
u64 lun; /* lun's used for block devices */
|
||||
struct i2o_device *channel[0]; /* channel->i2o_dev mapping table */
|
||||
};
|
||||
|
||||
@@ -287,9 +287,8 @@ static int i2o_scsi_probe(struct device *dev)
|
||||
}
|
||||
|
||||
if (le64_to_cpu(lun) >= scsi_host->max_lun) {
|
||||
osm_warn("SCSI device lun (%lu) >= max_lun of I2O host (%d)",
|
||||
(long unsigned int)le64_to_cpu(lun),
|
||||
scsi_host->max_lun);
|
||||
osm_warn("SCSI device lun (%llu) >= max_lun of I2O host (%llu)",
|
||||
le64_to_cpu(lun), scsi_host->max_lun);
|
||||
return -EFAULT;
|
||||
}
|
||||
|
||||
@@ -308,9 +307,9 @@ static int i2o_scsi_probe(struct device *dev)
|
||||
if (rc)
|
||||
goto err;
|
||||
|
||||
osm_info("device added (TID: %03x) channel: %d, id: %d, lun: %ld\n",
|
||||
osm_info("device added (TID: %03x) channel: %d, id: %d, lun: %llu\n",
|
||||
i2o_dev->lct_data.tid, channel, le32_to_cpu(id),
|
||||
(long unsigned int)le64_to_cpu(lun));
|
||||
le64_to_cpu(lun));
|
||||
|
||||
return 0;
|
||||
|
||||
|
||||
@@ -418,7 +418,8 @@ void zfcp_dbf_scsi(char *tag, struct scsi_cmnd *sc, struct zfcp_fsf_req *fsf)
|
||||
rec->scsi_retries = sc->retries;
|
||||
rec->scsi_allowed = sc->allowed;
|
||||
rec->scsi_id = sc->device->id;
|
||||
rec->scsi_lun = sc->device->lun;
|
||||
/* struct zfcp_dbf_scsi needs to be updated to handle 64bit LUNs */
|
||||
rec->scsi_lun = (u32)sc->device->lun;
|
||||
rec->host_scribble = (unsigned long)sc->host_scribble;
|
||||
|
||||
memcpy(rec->scsi_opcode, sc->cmnd,
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
void zfcp_unit_scsi_scan(struct zfcp_unit *unit)
|
||||
{
|
||||
struct fc_rport *rport = unit->port->rport;
|
||||
unsigned int lun;
|
||||
u64 lun;
|
||||
|
||||
lun = scsilun_to_int((struct scsi_lun *) &unit->fcp_lun);
|
||||
|
||||
@@ -188,7 +188,7 @@ struct scsi_device *zfcp_unit_sdev(struct zfcp_unit *unit)
|
||||
{
|
||||
struct Scsi_Host *shost;
|
||||
struct zfcp_port *port;
|
||||
unsigned int lun;
|
||||
u64 lun;
|
||||
|
||||
lun = scsilun_to_int((struct scsi_lun *) &unit->fcp_lun);
|
||||
port = unit->port;
|
||||
|
||||
@@ -392,6 +392,8 @@ typedef struct TAG_TW_Passthru
|
||||
unsigned char padding[12];
|
||||
} TW_Passthru;
|
||||
|
||||
#pragma pack()
|
||||
|
||||
typedef struct TAG_TW_Device_Extension {
|
||||
u32 base_addr;
|
||||
unsigned long *alignment_virtual_address[TW_Q_LENGTH];
|
||||
@@ -430,6 +432,4 @@ typedef struct TAG_TW_Device_Extension {
|
||||
wait_queue_head_t ioctl_wqueue;
|
||||
} TW_Device_Extension;
|
||||
|
||||
#pragma pack()
|
||||
|
||||
#endif /* _3W_XXXX_H */
|
||||
|
||||
@@ -1005,7 +1005,7 @@ process_script_interrupt(__u32 dsps, __u32 dsp, struct scsi_cmnd *SCp,
|
||||
DMA_TO_DEVICE);
|
||||
|
||||
cmnd[0] = REQUEST_SENSE;
|
||||
cmnd[1] = (SCp->device->lun & 0x7) << 5;
|
||||
cmnd[1] = (lun & 0x7) << 5;
|
||||
cmnd[2] = 0;
|
||||
cmnd[3] = 0;
|
||||
cmnd[4] = SCSI_SENSE_BUFFERSIZE;
|
||||
@@ -1396,7 +1396,8 @@ NCR_700_start_command(struct scsi_cmnd *SCp)
|
||||
struct NCR_700_Host_Parameters *hostdata =
|
||||
(struct NCR_700_Host_Parameters *)SCp->device->host->hostdata[0];
|
||||
__u16 count = 1; /* for IDENTIFY message */
|
||||
|
||||
u8 lun = SCp->device->lun;
|
||||
|
||||
if(hostdata->state != NCR_700_HOST_FREE) {
|
||||
/* keep this inside the lock to close the race window where
|
||||
* the running command finishes on another CPU while we don't
|
||||
@@ -1415,7 +1416,7 @@ NCR_700_start_command(struct scsi_cmnd *SCp)
|
||||
|
||||
hostdata->msgout[0] = NCR_700_identify((SCp->cmnd[0] != REQUEST_SENSE &&
|
||||
slot->flags != NCR_700_FLAG_AUTOSENSE),
|
||||
SCp->device->lun);
|
||||
lun);
|
||||
/* for INQUIRY or REQUEST_SENSE commands, we cannot be sure
|
||||
* if the negotiated transfer parameters still hold, so
|
||||
* always renegotiate them */
|
||||
|
||||
+1
-60
@@ -40,13 +40,6 @@ config SCSI_DMA
|
||||
bool
|
||||
default n
|
||||
|
||||
config SCSI_TGT
|
||||
tristate "SCSI target support"
|
||||
depends on SCSI
|
||||
---help---
|
||||
If you want to use SCSI target mode drivers enable this option.
|
||||
If you choose M, the module will be called scsi_tgt.
|
||||
|
||||
config SCSI_NETLINK
|
||||
bool
|
||||
default n
|
||||
@@ -197,20 +190,6 @@ config SCSI_ENCLOSURE
|
||||
it has an enclosure device. Selecting this option will just allow
|
||||
certain enclosure conditions to be reported and is not required.
|
||||
|
||||
config SCSI_MULTI_LUN
|
||||
bool "Probe all LUNs on each SCSI device"
|
||||
depends on SCSI
|
||||
help
|
||||
Some devices support more than one LUN (Logical Unit Number) in order
|
||||
to allow access to several media, e.g. CD jukebox, USB card reader,
|
||||
mobile phone in mass storage mode. This option forces the kernel to
|
||||
probe for all LUNs by default. This setting can be overridden by
|
||||
max_luns boot/module parameter. Note that this option does not affect
|
||||
devices conforming to SCSI-3 or higher as they can explicitly report
|
||||
their number of LUNs. It is safe to say Y here unless you have one of
|
||||
those rare devices which reacts in an unexpected way when probed for
|
||||
multiple LUNs.
|
||||
|
||||
config SCSI_CONSTANTS
|
||||
bool "Verbose SCSI error reporting (kernel size +=12K)"
|
||||
depends on SCSI
|
||||
@@ -285,13 +264,6 @@ config SCSI_FC_ATTRS
|
||||
each attached FiberChannel device to sysfs, say Y.
|
||||
Otherwise, say N.
|
||||
|
||||
config SCSI_FC_TGT_ATTRS
|
||||
bool "SCSI target support for FiberChannel Transport Attributes"
|
||||
depends on SCSI_FC_ATTRS
|
||||
depends on SCSI_TGT = y || SCSI_TGT = SCSI_FC_ATTRS
|
||||
help
|
||||
If you want to use SCSI target mode drivers enable this option.
|
||||
|
||||
config SCSI_ISCSI_ATTRS
|
||||
tristate "iSCSI Transport Attributes"
|
||||
depends on SCSI && NET
|
||||
@@ -318,13 +290,6 @@ config SCSI_SRP_ATTRS
|
||||
If you wish to export transport-specific information about
|
||||
each attached SRP device to sysfs, say Y.
|
||||
|
||||
config SCSI_SRP_TGT_ATTRS
|
||||
bool "SCSI target support for SRP Transport Attributes"
|
||||
depends on SCSI_SRP_ATTRS
|
||||
depends on SCSI_TGT = y || SCSI_TGT = SCSI_SRP_ATTRS
|
||||
help
|
||||
If you want to use SCSI target mode drivers enable this option.
|
||||
|
||||
endmenu
|
||||
|
||||
menuconfig SCSI_LOWLEVEL
|
||||
@@ -528,7 +493,7 @@ config SCSI_DPT_I2O
|
||||
|
||||
config SCSI_ADVANSYS
|
||||
tristate "AdvanSys SCSI support"
|
||||
depends on SCSI && VIRT_TO_BUS
|
||||
depends on SCSI && VIRT_TO_BUS && !ARM
|
||||
depends on ISA || EISA || PCI
|
||||
help
|
||||
This is a driver for all SCSI host adapters manufactured by
|
||||
@@ -848,20 +813,6 @@ config SCSI_IBMVSCSI
|
||||
To compile this driver as a module, choose M here: the
|
||||
module will be called ibmvscsi.
|
||||
|
||||
config SCSI_IBMVSCSIS
|
||||
tristate "IBM Virtual SCSI Server support"
|
||||
depends on PPC_PSERIES && SCSI_SRP && SCSI_SRP_TGT_ATTRS
|
||||
help
|
||||
This is the SRP target driver for IBM pSeries virtual environments.
|
||||
|
||||
The userspace component needed to initialize the driver and
|
||||
documentation can be found:
|
||||
|
||||
http://stgt.berlios.de/
|
||||
|
||||
To compile this driver as a module, choose M here: the
|
||||
module will be called ibmvstgt.
|
||||
|
||||
config SCSI_IBMVFC
|
||||
tristate "IBM Virtual FC support"
|
||||
depends on PPC_PSERIES && SCSI
|
||||
@@ -1750,16 +1701,6 @@ config SCSI_PM8001
|
||||
This driver supports PMC-Sierra PCIE SAS/SATA 8x6G SPC 8001 chip
|
||||
based host adapters.
|
||||
|
||||
config SCSI_SRP
|
||||
tristate "SCSI RDMA Protocol helper library"
|
||||
depends on SCSI && PCI
|
||||
select SCSI_TGT
|
||||
help
|
||||
If you wish to use SRP target drivers, say Y.
|
||||
|
||||
To compile this driver as a module, choose M here: the
|
||||
module will be called libsrp.
|
||||
|
||||
config SCSI_BFA_FC
|
||||
tristate "Brocade BFA Fibre Channel Support"
|
||||
depends on PCI && SCSI
|
||||
|
||||
@@ -20,7 +20,6 @@ CFLAGS_gdth.o = # -DDEBUG_GDTH=2 -D__SERIAL__ -D__COM2__ -DGDTH_STATISTICS
|
||||
obj-$(CONFIG_PCMCIA) += pcmcia/
|
||||
|
||||
obj-$(CONFIG_SCSI) += scsi_mod.o
|
||||
obj-$(CONFIG_SCSI_TGT) += scsi_tgt.o
|
||||
|
||||
obj-$(CONFIG_RAID_ATTRS) += raid_class.o
|
||||
|
||||
@@ -127,9 +126,7 @@ obj-$(CONFIG_SCSI_LASI700) += 53c700.o lasi700.o
|
||||
obj-$(CONFIG_SCSI_SNI_53C710) += 53c700.o sni_53c710.o
|
||||
obj-$(CONFIG_SCSI_NSP32) += nsp32.o
|
||||
obj-$(CONFIG_SCSI_IPR) += ipr.o
|
||||
obj-$(CONFIG_SCSI_SRP) += libsrp.o
|
||||
obj-$(CONFIG_SCSI_IBMVSCSI) += ibmvscsi/
|
||||
obj-$(CONFIG_SCSI_IBMVSCSIS) += ibmvscsi/
|
||||
obj-$(CONFIG_SCSI_IBMVFC) += ibmvscsi/
|
||||
obj-$(CONFIG_SCSI_HPTIOP) += hptiop.o
|
||||
obj-$(CONFIG_SCSI_STEX) += stex.o
|
||||
@@ -173,8 +170,6 @@ scsi_mod-$(CONFIG_PM) += scsi_pm.o
|
||||
|
||||
hv_storvsc-y := storvsc_drv.o
|
||||
|
||||
scsi_tgt-y += scsi_tgt_lib.o scsi_tgt_if.o
|
||||
|
||||
sd_mod-objs := sd.o
|
||||
sd_mod-$(CONFIG_BLK_DEV_INTEGRITY) += sd_dif.o
|
||||
|
||||
|
||||
+16
-15
@@ -762,7 +762,7 @@ static int __maybe_unused NCR5380_show_info(struct seq_file *m,
|
||||
|
||||
static void lprint_Scsi_Cmnd(Scsi_Cmnd * cmd, struct seq_file *m)
|
||||
{
|
||||
SPRINTF("scsi%d : destination target %d, lun %d\n", cmd->device->host->host_no, cmd->device->id, cmd->device->lun);
|
||||
SPRINTF("scsi%d : destination target %d, lun %llu\n", cmd->device->host->host_no, cmd->device->id, cmd->device->lun);
|
||||
SPRINTF(" command = ");
|
||||
lprint_command(cmd->cmnd, m);
|
||||
}
|
||||
@@ -1039,9 +1039,10 @@ static void NCR5380_main(struct work_struct *work)
|
||||
for (tmp = (Scsi_Cmnd *) hostdata->issue_queue, prev = NULL; tmp; prev = tmp, tmp = (Scsi_Cmnd *) tmp->host_scribble)
|
||||
{
|
||||
if (prev != tmp)
|
||||
dprintk(NDEBUG_LISTS, "MAIN tmp=%p target=%d busy=%d lun=%d\n", tmp, tmp->device->id, hostdata->busy[tmp->device->id], tmp->device->lun);
|
||||
dprintk(NDEBUG_LISTS, "MAIN tmp=%p target=%d busy=%d lun=%llu\n", tmp, tmp->device->id, hostdata->busy[tmp->device->id], tmp->device->lun);
|
||||
/* When we find one, remove it from the issue queue. */
|
||||
if (!(hostdata->busy[tmp->device->id] & (1 << tmp->device->lun))) {
|
||||
if (!(hostdata->busy[tmp->device->id] &
|
||||
(1 << (u8)(tmp->device->lun & 0xff)))) {
|
||||
if (prev) {
|
||||
REMOVE(prev, prev->host_scribble, tmp, tmp->host_scribble);
|
||||
prev->host_scribble = tmp->host_scribble;
|
||||
@@ -1057,7 +1058,7 @@ static void NCR5380_main(struct work_struct *work)
|
||||
* On failure, we must add the command back to the
|
||||
* issue queue so we can keep trying.
|
||||
*/
|
||||
dprintk(NDEBUG_MAIN|NDEBUG_QUEUES, "scsi%d : main() : command for target %d lun %d removed from issue_queue\n", instance->host_no, tmp->device->id, tmp->device->lun);
|
||||
dprintk(NDEBUG_MAIN|NDEBUG_QUEUES, "scsi%d : main() : command for target %d lun %llu removed from issue_queue\n", instance->host_no, tmp->device->id, tmp->device->lun);
|
||||
|
||||
/*
|
||||
* A successful selection is defined as one that
|
||||
@@ -1524,7 +1525,7 @@ part2:
|
||||
dprintk(NDEBUG_SELECTION, "scsi%d : nexus established.\n", instance->host_no);
|
||||
/* XXX need to handle errors here */
|
||||
hostdata->connected = cmd;
|
||||
hostdata->busy[cmd->device->id] |= (1 << cmd->device->lun);
|
||||
hostdata->busy[cmd->device->id] |= (1 << (cmd->device->lun & 0xFF));
|
||||
|
||||
initialize_SCp(cmd);
|
||||
|
||||
@@ -2210,14 +2211,14 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance) {
|
||||
case LINKED_FLG_CMD_COMPLETE:
|
||||
/* Accept message by clearing ACK */
|
||||
NCR5380_write(INITIATOR_COMMAND_REG, ICR_BASE);
|
||||
dprintk(NDEBUG_LINKED, "scsi%d : target %d lun %d linked command complete.\n", instance->host_no, cmd->device->id, cmd->device->lun);
|
||||
dprintk(NDEBUG_LINKED, "scsi%d : target %d lun %llu linked command complete.\n", instance->host_no, cmd->device->id, cmd->device->lun);
|
||||
/*
|
||||
* Sanity check : A linked command should only terminate with
|
||||
* one of these messages if there are more linked commands
|
||||
* available.
|
||||
*/
|
||||
if (!cmd->next_link) {
|
||||
printk("scsi%d : target %d lun %d linked command complete, no next_link\n" instance->host_no, cmd->device->id, cmd->device->lun);
|
||||
printk("scsi%d : target %d lun %llu linked command complete, no next_link\n" instance->host_no, cmd->device->id, cmd->device->lun);
|
||||
sink = 1;
|
||||
do_abort(instance);
|
||||
return;
|
||||
@@ -2226,7 +2227,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance) {
|
||||
/* The next command is still part of this process */
|
||||
cmd->next_link->tag = cmd->tag;
|
||||
cmd->result = cmd->SCp.Status | (cmd->SCp.Message << 8);
|
||||
dprintk(NDEBUG_LINKED, "scsi%d : target %d lun %d linked request done, calling scsi_done().\n", instance->host_no, cmd->device->id, cmd->device->lun);
|
||||
dprintk(NDEBUG_LINKED, "scsi%d : target %d lun %llu linked request done, calling scsi_done().\n", instance->host_no, cmd->device->id, cmd->device->lun);
|
||||
collect_stats(hostdata, cmd);
|
||||
cmd->scsi_done(cmd);
|
||||
cmd = hostdata->connected;
|
||||
@@ -2238,8 +2239,8 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance) {
|
||||
sink = 1;
|
||||
NCR5380_write(INITIATOR_COMMAND_REG, ICR_BASE);
|
||||
hostdata->connected = NULL;
|
||||
dprintk(NDEBUG_QUEUES, "scsi%d : command for target %d, lun %d completed\n", instance->host_no, cmd->device->id, cmd->device->lun);
|
||||
hostdata->busy[cmd->device->id] &= ~(1 << cmd->device->lun);
|
||||
dprintk(NDEBUG_QUEUES, "scsi%d : command for target %d, lun %llu completed\n", instance->host_no, cmd->device->id, cmd->device->lun);
|
||||
hostdata->busy[cmd->device->id] &= ~(1 << (cmd->device->lun & 0xFF));
|
||||
|
||||
/*
|
||||
* I'm not sure what the correct thing to do here is :
|
||||
@@ -2304,7 +2305,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance) {
|
||||
case ORDERED_QUEUE_TAG:
|
||||
case SIMPLE_QUEUE_TAG:
|
||||
cmd->device->simple_tags = 0;
|
||||
hostdata->busy[cmd->device->id] |= (1 << cmd->device->lun);
|
||||
hostdata->busy[cmd->device->id] |= (1 << (cmd->device->lun & 0xFF));
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -2318,7 +2319,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance) {
|
||||
hostdata->disconnected_queue;
|
||||
hostdata->connected = NULL;
|
||||
hostdata->disconnected_queue = cmd;
|
||||
dprintk(NDEBUG_QUEUES, "scsi%d : command for target %d lun %d was moved from connected to" " the disconnected_queue\n", instance->host_no, cmd->device->id, cmd->device->lun);
|
||||
dprintk(NDEBUG_QUEUES, "scsi%d : command for target %d lun %llu was moved from connected to" " the disconnected_queue\n", instance->host_no, cmd->device->id, cmd->device->lun);
|
||||
/*
|
||||
* Restore phase bits to 0 so an interrupted selection,
|
||||
* arbitration can resume.
|
||||
@@ -2426,7 +2427,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance) {
|
||||
hostdata->last_message = msgout;
|
||||
NCR5380_transfer_pio(instance, &phase, &len, &data);
|
||||
if (msgout == ABORT) {
|
||||
hostdata->busy[cmd->device->id] &= ~(1 << cmd->device->lun);
|
||||
hostdata->busy[cmd->device->id] &= ~(1 << (cmd->device->lun & 0xFF));
|
||||
hostdata->connected = NULL;
|
||||
cmd->result = DID_ERROR << 16;
|
||||
collect_stats(hostdata, cmd);
|
||||
@@ -2562,7 +2563,7 @@ static void NCR5380_reselect(struct Scsi_Host *instance) {
|
||||
|
||||
|
||||
for (tmp = (Scsi_Cmnd *) hostdata->disconnected_queue, prev = NULL; tmp; prev = tmp, tmp = (Scsi_Cmnd *) tmp->host_scribble)
|
||||
if ((target_mask == (1 << tmp->device->id)) && (lun == tmp->device->lun)
|
||||
if ((target_mask == (1 << tmp->device->id)) && (lun == (u8)tmp->device->lun)
|
||||
) {
|
||||
if (prev) {
|
||||
REMOVE(prev, prev->host_scribble, tmp, tmp->host_scribble);
|
||||
@@ -2588,7 +2589,7 @@ static void NCR5380_reselect(struct Scsi_Host *instance) {
|
||||
do_abort(instance);
|
||||
} else {
|
||||
hostdata->connected = tmp;
|
||||
dprintk(NDEBUG_RESELECTION, "scsi%d : nexus established, target = %d, lun = %d, tag = %d\n", instance->host_no, tmp->device->id, tmp->device->lun, tmp->tag);
|
||||
dprintk(NDEBUG_RESELECTION, "scsi%d : nexus established, target = %d, lun = %llu, tag = %d\n", instance->host_no, tmp->device->id, tmp->device->lun, tmp->tag);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -595,7 +595,7 @@ static int NCR53c406a_release(struct Scsi_Host *shost)
|
||||
{
|
||||
if (shost->irq)
|
||||
free_irq(shost->irq, NULL);
|
||||
#ifdef USE_DMA
|
||||
#if USE_DMA
|
||||
if (shost->dma_channel != 0xff)
|
||||
free_dma(shost->dma_channel);
|
||||
#endif
|
||||
@@ -698,7 +698,7 @@ static int NCR53c406a_queue_lck(Scsi_Cmnd * SCpnt, void (*done) (Scsi_Cmnd *))
|
||||
int i;
|
||||
|
||||
VDEB(printk("NCR53c406a_queue called\n"));
|
||||
DEB(printk("cmd=%02x, cmd_len=%02x, target=%02x, lun=%02x, bufflen=%d\n", SCpnt->cmnd[0], SCpnt->cmd_len, SCpnt->target, SCpnt->lun, scsi_bufflen(SCpnt)));
|
||||
DEB(printk("cmd=%02x, cmd_len=%02x, target=%02x, lun=%02x, bufflen=%d\n", SCpnt->cmnd[0], SCpnt->cmd_len, SCpnt->device->target, (u8)SCpnt->device->lun, scsi_bufflen(SCpnt)));
|
||||
|
||||
#if 0
|
||||
VDEB(for (i = 0; i < SCpnt->cmd_len; i++)
|
||||
|
||||
@@ -891,7 +891,7 @@ static int inia100_build_scb(struct orc_host * host, struct orc_scb * scb, struc
|
||||
printk("max cdb length= %x\b", cmd->cmd_len);
|
||||
scb->cdb_len = IMAX_CDB;
|
||||
}
|
||||
scb->ident = cmd->device->lun | DISC_ALLOW;
|
||||
scb->ident = (u8)(cmd->device->lun & 0xff) | DISC_ALLOW;
|
||||
if (cmd->device->tagged_supported) { /* Tag Support */
|
||||
scb->tag_msg = SIMPLE_QUEUE_TAG; /* Do simple tag only */
|
||||
} else {
|
||||
|
||||
@@ -551,7 +551,7 @@ static int aac_eh_abort(struct scsi_cmnd* cmd)
|
||||
int count;
|
||||
int ret = FAILED;
|
||||
|
||||
printk(KERN_ERR "%s: Host adapter abort request (%d,%d,%d,%d)\n",
|
||||
printk(KERN_ERR "%s: Host adapter abort request (%d,%d,%d,%llu)\n",
|
||||
AAC_DRIVERNAME,
|
||||
host->host_no, sdev_channel(dev), sdev_id(dev), dev->lun);
|
||||
switch (cmd->cmnd[0]) {
|
||||
|
||||
@@ -2512,7 +2512,7 @@ static void asc_prt_scsi_host(struct Scsi_Host *s)
|
||||
|
||||
printk("Scsi_Host at addr 0x%p, device %s\n", s, dev_name(boardp->dev));
|
||||
printk(" host_busy %u, host_no %d,\n",
|
||||
s->host_busy, s->host_no);
|
||||
atomic_read(&s->host_busy), s->host_no);
|
||||
|
||||
printk(" base 0x%lx, io_port 0x%lx, irq %d,\n",
|
||||
(ulong)s->base, (ulong)s->io_port, boardp->irq);
|
||||
@@ -3345,8 +3345,8 @@ static void asc_prt_driver_conf(struct seq_file *m, struct Scsi_Host *shost)
|
||||
shost->host_no);
|
||||
|
||||
seq_printf(m,
|
||||
" host_busy %u, max_id %u, max_lun %u, max_channel %u\n",
|
||||
shost->host_busy, shost->max_id,
|
||||
" host_busy %u, max_id %u, max_lun %llu, max_channel %u\n",
|
||||
atomic_read(&shost->host_busy), shost->max_id,
|
||||
shost->max_lun, shost->max_channel);
|
||||
|
||||
seq_printf(m,
|
||||
|
||||
@@ -321,7 +321,7 @@ static LIST_HEAD(aha152x_host_list);
|
||||
#define CMDINFO(cmd) \
|
||||
(cmd) ? ((cmd)->device->host->host_no) : -1, \
|
||||
(cmd) ? ((cmd)->device->id & 0x0f) : -1, \
|
||||
(cmd) ? ((cmd)->device->lun & 0x07) : -1
|
||||
(cmd) ? ((u8)(cmd)->device->lun & 0x07) : -1
|
||||
|
||||
static inline void
|
||||
CMD_INC_RESID(struct scsi_cmnd *cmd, int inc)
|
||||
@@ -1602,7 +1602,7 @@ static void busfree_run(struct Scsi_Host *shpnt)
|
||||
#if defined(AHA152X_DEBUG)
|
||||
int hostno=DONE_SC->device->host->host_no;
|
||||
int id=DONE_SC->device->id & 0xf;
|
||||
int lun=DONE_SC->device->lun & 0x7;
|
||||
int lun=((u8)DONE_SC->device->lun) & 0x7;
|
||||
#endif
|
||||
Scsi_Cmnd *ptr = DONE_SC;
|
||||
DONE_SC=NULL;
|
||||
@@ -2984,7 +2984,7 @@ static void get_command(struct seq_file *m, Scsi_Cmnd * ptr)
|
||||
int i;
|
||||
|
||||
SPRINTF("%p: target=%d; lun=%d; cmnd=( ",
|
||||
ptr, ptr->device->id, ptr->device->lun);
|
||||
ptr, ptr->device->id, (u8)ptr->device->lun);
|
||||
|
||||
for (i = 0; i < COMMAND_SIZE(ptr->cmnd[0]); i++)
|
||||
SPRINTF("0x%02x ", ptr->cmnd[i]);
|
||||
|
||||
@@ -85,10 +85,9 @@ aic7770_probe(struct device *dev)
|
||||
int error;
|
||||
|
||||
sprintf(buf, "ahc_eisa:%d", eisaBase >> 12);
|
||||
name = kmalloc(strlen(buf) + 1, GFP_ATOMIC);
|
||||
name = kstrdup(buf, GFP_ATOMIC);
|
||||
if (name == NULL)
|
||||
return (ENOMEM);
|
||||
strcpy(name, buf);
|
||||
ahc = ahc_alloc(&aic7xxx_driver_template, name);
|
||||
if (ahc == NULL)
|
||||
return (ENOMEM);
|
||||
|
||||
@@ -115,7 +115,7 @@ struct scb_platform_data;
|
||||
#endif
|
||||
|
||||
#define AHD_BUILD_COL_IDX(target, lun) \
|
||||
(((lun) << 4) | target)
|
||||
((((u8)lun) << 4) | target)
|
||||
|
||||
#define AHD_GET_SCB_COL_IDX(ahd, scb) \
|
||||
((SCB_GET_LUN(scb) << 4) | SCB_GET_TARGET(ahd, scb))
|
||||
|
||||
@@ -2137,7 +2137,7 @@ ahd_linux_queue_cmd_complete(struct ahd_softc *ahd, struct scsi_cmnd *cmd)
|
||||
if (do_fallback) {
|
||||
printk("%s: device overrun (status %x) on %d:%d:%d\n",
|
||||
ahd_name(ahd), status, cmd->device->channel,
|
||||
cmd->device->id, cmd->device->lun);
|
||||
cmd->device->id, (u8)cmd->device->lun);
|
||||
}
|
||||
|
||||
ahd_cmd_set_transaction_status(cmd, new_status);
|
||||
@@ -2253,13 +2253,13 @@ ahd_linux_queue_abort_cmd(struct scsi_cmnd *cmd)
|
||||
disconnected = TRUE;
|
||||
if (ahd_search_qinfifo(ahd, cmd->device->id,
|
||||
cmd->device->channel + 'A',
|
||||
cmd->device->lun,
|
||||
cmd->device->lun,
|
||||
pending_scb->hscb->tag,
|
||||
ROLE_INITIATOR, CAM_REQ_ABORTED,
|
||||
SEARCH_COMPLETE) > 0) {
|
||||
printk("%s:%d:%d:%d: Cmd aborted from QINFIFO\n",
|
||||
ahd_name(ahd), cmd->device->channel,
|
||||
cmd->device->id, cmd->device->lun);
|
||||
cmd->device->id, (u8)cmd->device->lun);
|
||||
retval = SUCCESS;
|
||||
goto done;
|
||||
}
|
||||
|
||||
@@ -178,10 +178,9 @@ ahd_linux_pci_dev_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
||||
ahd_get_pci_bus(pci),
|
||||
ahd_get_pci_slot(pci),
|
||||
ahd_get_pci_function(pci));
|
||||
name = kmalloc(strlen(buf) + 1, GFP_ATOMIC);
|
||||
name = kstrdup(buf, GFP_ATOMIC);
|
||||
if (name == NULL)
|
||||
return (-ENOMEM);
|
||||
strcpy(name, buf);
|
||||
ahd = ahd_alloc(NULL, name);
|
||||
if (ahd == NULL)
|
||||
return (-ENOMEM);
|
||||
|
||||
@@ -197,7 +197,7 @@ ahd_dump_device_state(struct seq_file *m, struct scsi_device *sdev)
|
||||
|
||||
seq_printf(m, "\tChannel %c Target %d Lun %d Settings\n",
|
||||
sdev->sdev_target->channel + 'A',
|
||||
sdev->sdev_target->id, sdev->lun);
|
||||
sdev->sdev_target->id, (u8)sdev->lun);
|
||||
|
||||
seq_printf(m, "\t\tCommands Queued %ld\n", dev->commands_issued);
|
||||
seq_printf(m, "\t\tCommands Active %d\n", dev->active);
|
||||
|
||||
@@ -2110,7 +2110,7 @@ ahc_linux_queue_recovery_cmd(struct scsi_cmnd *cmd, scb_flag flag)
|
||||
*/
|
||||
printk("%s:%d:%d:%d: Is not an active device\n",
|
||||
ahc_name(ahc), cmd->device->channel, cmd->device->id,
|
||||
cmd->device->lun);
|
||||
(u8)cmd->device->lun);
|
||||
retval = SUCCESS;
|
||||
goto no_cmd;
|
||||
}
|
||||
@@ -2118,11 +2118,11 @@ ahc_linux_queue_recovery_cmd(struct scsi_cmnd *cmd, scb_flag flag)
|
||||
if ((dev->flags & (AHC_DEV_Q_BASIC|AHC_DEV_Q_TAGGED)) == 0
|
||||
&& ahc_search_untagged_queues(ahc, cmd, cmd->device->id,
|
||||
cmd->device->channel + 'A',
|
||||
cmd->device->lun,
|
||||
(u8)cmd->device->lun,
|
||||
CAM_REQ_ABORTED, SEARCH_COMPLETE) != 0) {
|
||||
printk("%s:%d:%d:%d: Command found on untagged queue\n",
|
||||
ahc_name(ahc), cmd->device->channel, cmd->device->id,
|
||||
cmd->device->lun);
|
||||
(u8)cmd->device->lun);
|
||||
retval = SUCCESS;
|
||||
goto done;
|
||||
}
|
||||
@@ -2188,13 +2188,14 @@ ahc_linux_queue_recovery_cmd(struct scsi_cmnd *cmd, scb_flag flag)
|
||||
SEARCH_COMPLETE) > 0) {
|
||||
printk("%s:%d:%d:%d: Cmd aborted from QINFIFO\n",
|
||||
ahc_name(ahc), cmd->device->channel,
|
||||
cmd->device->id, cmd->device->lun);
|
||||
cmd->device->id, (u8)cmd->device->lun);
|
||||
retval = SUCCESS;
|
||||
goto done;
|
||||
}
|
||||
} else if (ahc_search_qinfifo(ahc, cmd->device->id,
|
||||
cmd->device->channel + 'A',
|
||||
cmd->device->lun, pending_scb->hscb->tag,
|
||||
cmd->device->lun,
|
||||
pending_scb->hscb->tag,
|
||||
ROLE_INITIATOR, /*status*/0,
|
||||
SEARCH_COUNT) > 0) {
|
||||
disconnected = FALSE;
|
||||
|
||||
@@ -225,10 +225,9 @@ ahc_linux_pci_dev_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
||||
ahc_get_pci_bus(pci),
|
||||
ahc_get_pci_slot(pci),
|
||||
ahc_get_pci_function(pci));
|
||||
name = kmalloc(strlen(buf) + 1, GFP_ATOMIC);
|
||||
name = kstrdup(buf, GFP_ATOMIC);
|
||||
if (name == NULL)
|
||||
return (-ENOMEM);
|
||||
strcpy(name, buf);
|
||||
ahc = ahc_alloc(NULL, name);
|
||||
if (ahc == NULL)
|
||||
return (-ENOMEM);
|
||||
|
||||
@@ -175,7 +175,7 @@ ahc_dump_device_state(struct seq_file *m, struct scsi_device *sdev)
|
||||
|
||||
seq_printf(m, "\tChannel %c Target %d Lun %d Settings\n",
|
||||
sdev->sdev_target->channel + 'A',
|
||||
sdev->sdev_target->id, sdev->lun);
|
||||
sdev->sdev_target->id, (u8)sdev->lun);
|
||||
|
||||
seq_printf(m, "\t\tCommands Queued %ld\n", dev->commands_issued);
|
||||
seq_printf(m, "\t\tCommands Active %d\n", dev->active);
|
||||
|
||||
@@ -2335,7 +2335,7 @@ static int arcmsr_polling_hba_ccbdone(struct AdapterControlBlock *acb,
|
||||
" poll command abort successfully \n"
|
||||
, acb->host->host_no
|
||||
, ccb->pcmd->device->id
|
||||
, ccb->pcmd->device->lun
|
||||
, (u32)ccb->pcmd->device->lun
|
||||
, ccb);
|
||||
ccb->pcmd->result = DID_ABORT << 16;
|
||||
arcmsr_ccb_complete(ccb);
|
||||
@@ -2399,7 +2399,7 @@ static int arcmsr_polling_hbb_ccbdone(struct AdapterControlBlock *acb,
|
||||
" poll command abort successfully \n"
|
||||
,acb->host->host_no
|
||||
,ccb->pcmd->device->id
|
||||
,ccb->pcmd->device->lun
|
||||
,(u32)ccb->pcmd->device->lun
|
||||
,ccb);
|
||||
ccb->pcmd->result = DID_ABORT << 16;
|
||||
arcmsr_ccb_complete(ccb);
|
||||
@@ -2456,7 +2456,7 @@ polling_hbc_ccb_retry:
|
||||
" poll command abort successfully \n"
|
||||
, acb->host->host_no
|
||||
, pCCB->pcmd->device->id
|
||||
, pCCB->pcmd->device->lun
|
||||
, (u32)pCCB->pcmd->device->lun
|
||||
, pCCB);
|
||||
pCCB->pcmd->result = DID_ABORT << 16;
|
||||
arcmsr_ccb_complete(pCCB);
|
||||
@@ -3058,7 +3058,7 @@ static int arcmsr_abort(struct scsi_cmnd *cmd)
|
||||
int rtn = FAILED;
|
||||
printk(KERN_NOTICE
|
||||
"arcmsr%d: abort device command of scsi id = %d lun = %d \n",
|
||||
acb->host->host_no, cmd->device->id, cmd->device->lun);
|
||||
acb->host->host_no, cmd->device->id, (u32)cmd->device->lun);
|
||||
acb->acb_flags |= ACB_F_ABORT;
|
||||
acb->num_aborts++;
|
||||
/*
|
||||
|
||||
@@ -760,7 +760,8 @@ intr_ret_t acornscsi_kick(AS_Host *host)
|
||||
SCpnt->tag = SCpnt->device->current_tag;
|
||||
} else
|
||||
#endif
|
||||
set_bit(SCpnt->device->id * 8 + SCpnt->device->lun, host->busyluns);
|
||||
set_bit(SCpnt->device->id * 8 +
|
||||
(u8)(SCpnt->device->lun & 0x07), host->busyluns);
|
||||
|
||||
host->stats.removes += 1;
|
||||
|
||||
@@ -863,7 +864,8 @@ static void acornscsi_done(AS_Host *host, struct scsi_cmnd **SCpntp,
|
||||
if (!SCpnt->scsi_done)
|
||||
panic("scsi%d.H: null scsi_done function in acornscsi_done", host->host->host_no);
|
||||
|
||||
clear_bit(SCpnt->device->id * 8 + SCpnt->device->lun, host->busyluns);
|
||||
clear_bit(SCpnt->device->id * 8 +
|
||||
(u8)(SCpnt->device->lun & 0x7), host->busyluns);
|
||||
|
||||
SCpnt->scsi_done(SCpnt);
|
||||
} else
|
||||
@@ -1576,7 +1578,8 @@ void acornscsi_message(AS_Host *host)
|
||||
printk(KERN_NOTICE "scsi%d.%c: disabling tagged queueing\n",
|
||||
host->host->host_no, acornscsi_target(host));
|
||||
host->SCpnt->device->simple_tags = 0;
|
||||
set_bit(host->SCpnt->device->id * 8 + host->SCpnt->device->lun, host->busyluns);
|
||||
set_bit(host->SCpnt->device->id * 8 +
|
||||
(u8)(host->SCpnt->device->lun & 0x7), host->busyluns);
|
||||
break;
|
||||
#endif
|
||||
case EXTENDED_MESSAGE | (EXTENDED_SDTR << 8):
|
||||
@@ -2671,7 +2674,8 @@ int acornscsi_abort(struct scsi_cmnd *SCpnt)
|
||||
//#if (DEBUG & DEBUG_ABORT)
|
||||
printk("clear ");
|
||||
//#endif
|
||||
clear_bit(SCpnt->device->id * 8 + SCpnt->device->lun, host->busyluns);
|
||||
clear_bit(SCpnt->device->id * 8 +
|
||||
(u8)(SCpnt->device->lun & 0x7), host->busyluns);
|
||||
|
||||
/*
|
||||
* We found the command, and cleared it out. Either
|
||||
@@ -2853,7 +2857,7 @@ static int acornscsi_show_info(struct seq_file *m, struct Scsi_Host *instance)
|
||||
|
||||
shost_for_each_device(scd, instance) {
|
||||
seq_printf(m, "Device/Lun TaggedQ Sync\n");
|
||||
seq_printf(m, " %d/%d ", scd->id, scd->lun);
|
||||
seq_printf(m, " %d/%llu ", scd->id, scd->lun);
|
||||
if (scd->tagged_supported)
|
||||
seq_printf(m, "%3sabled(%3d) ",
|
||||
scd->simple_tags ? "en" : "dis",
|
||||
|
||||
@@ -1821,7 +1821,8 @@ static void fas216_allocate_tag(FAS216_Info *info, struct scsi_cmnd *SCpnt)
|
||||
SCpnt->tag = SCpnt->device->current_tag;
|
||||
} else
|
||||
#endif
|
||||
set_bit(SCpnt->device->id * 8 + SCpnt->device->lun, info->busyluns);
|
||||
set_bit(SCpnt->device->id * 8 +
|
||||
(u8)(SCpnt->device->lun & 0x7), info->busyluns);
|
||||
|
||||
info->stats.removes += 1;
|
||||
switch (SCpnt->cmnd[0]) {
|
||||
@@ -2171,7 +2172,8 @@ static void fas216_done(FAS216_Info *info, unsigned int result)
|
||||
* status.
|
||||
*/
|
||||
info->device[SCpnt->device->id].parity_check = 0;
|
||||
clear_bit(SCpnt->device->id * 8 + SCpnt->device->lun, info->busyluns);
|
||||
clear_bit(SCpnt->device->id * 8 +
|
||||
(u8)(SCpnt->device->lun & 0x7), info->busyluns);
|
||||
|
||||
fn = (void (*)(FAS216_Info *, struct scsi_cmnd *, unsigned int))SCpnt->host_scribble;
|
||||
fn(info, SCpnt, result);
|
||||
@@ -2398,7 +2400,8 @@ static enum res_find fas216_find_command(FAS216_Info *info,
|
||||
* been set.
|
||||
*/
|
||||
info->origSCpnt = NULL;
|
||||
clear_bit(SCpnt->device->id * 8 + SCpnt->device->lun, info->busyluns);
|
||||
clear_bit(SCpnt->device->id * 8 +
|
||||
(u8)(SCpnt->device->lun & 0x7), info->busyluns);
|
||||
printk("waiting for execution ");
|
||||
res = res_success;
|
||||
} else
|
||||
@@ -3000,7 +3003,7 @@ void fas216_print_devices(FAS216_Info *info, struct seq_file *m)
|
||||
|
||||
shost_for_each_device(scd, info->host) {
|
||||
dev = &info->device[scd->id];
|
||||
seq_printf(m, " %d/%d ", scd->id, scd->lun);
|
||||
seq_printf(m, " %d/%llu ", scd->id, scd->lun);
|
||||
if (scd->tagged_supported)
|
||||
seq_printf(m, "%3sabled(%3d) ",
|
||||
scd->simple_tags ? "en" : "dis",
|
||||
|
||||
@@ -167,7 +167,8 @@ struct scsi_cmnd *queue_remove_exclude(Queue_t *queue, unsigned long *exclude)
|
||||
spin_lock_irqsave(&queue->queue_lock, flags);
|
||||
list_for_each(l, &queue->head) {
|
||||
QE_t *q = list_entry(l, QE_t, list);
|
||||
if (!test_bit(q->SCpnt->device->id * 8 + q->SCpnt->device->lun, exclude)) {
|
||||
if (!test_bit(q->SCpnt->device->id * 8 +
|
||||
(u8)(q->SCpnt->device->lun & 0x7), exclude)) {
|
||||
SCpnt = __queue_remove(queue, l);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -361,17 +361,18 @@ static void __init init_tags(void)
|
||||
|
||||
static int is_lun_busy(Scsi_Cmnd *cmd, int should_be_tagged)
|
||||
{
|
||||
u8 lun = cmd->device->lun;
|
||||
SETUP_HOSTDATA(cmd->device->host);
|
||||
|
||||
if (hostdata->busy[cmd->device->id] & (1 << cmd->device->lun))
|
||||
if (hostdata->busy[cmd->device->id] & (1 << lun))
|
||||
return 1;
|
||||
if (!should_be_tagged ||
|
||||
!setup_use_tagged_queuing || !cmd->device->tagged_supported)
|
||||
return 0;
|
||||
if (TagAlloc[cmd->device->id][cmd->device->lun].nr_allocated >=
|
||||
TagAlloc[cmd->device->id][cmd->device->lun].queue_size) {
|
||||
if (TagAlloc[cmd->device->id][lun].nr_allocated >=
|
||||
TagAlloc[cmd->device->id][lun].queue_size) {
|
||||
dprintk(NDEBUG_TAGS, "scsi%d: target %d lun %d: no free tags\n",
|
||||
H_NO(cmd), cmd->device->id, cmd->device->lun);
|
||||
H_NO(cmd), cmd->device->id, lun);
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
@@ -385,6 +386,7 @@ static int is_lun_busy(Scsi_Cmnd *cmd, int should_be_tagged)
|
||||
|
||||
static void cmd_get_tag(Scsi_Cmnd *cmd, int should_be_tagged)
|
||||
{
|
||||
u8 lun = cmd->device->lun;
|
||||
SETUP_HOSTDATA(cmd->device->host);
|
||||
|
||||
/* If we or the target don't support tagged queuing, allocate the LUN for
|
||||
@@ -393,11 +395,11 @@ static void cmd_get_tag(Scsi_Cmnd *cmd, int should_be_tagged)
|
||||
if (!should_be_tagged ||
|
||||
!setup_use_tagged_queuing || !cmd->device->tagged_supported) {
|
||||
cmd->tag = TAG_NONE;
|
||||
hostdata->busy[cmd->device->id] |= (1 << cmd->device->lun);
|
||||
hostdata->busy[cmd->device->id] |= (1 << lun);
|
||||
dprintk(NDEBUG_TAGS, "scsi%d: target %d lun %d now allocated by untagged "
|
||||
"command\n", H_NO(cmd), cmd->device->id, cmd->device->lun);
|
||||
"command\n", H_NO(cmd), cmd->device->id, lun);
|
||||
} else {
|
||||
TAG_ALLOC *ta = &TagAlloc[cmd->device->id][cmd->device->lun];
|
||||
TAG_ALLOC *ta = &TagAlloc[cmd->device->id][lun];
|
||||
|
||||
cmd->tag = find_first_zero_bit(ta->allocated, MAX_TAGS);
|
||||
set_bit(cmd->tag, ta->allocated);
|
||||
@@ -405,7 +407,7 @@ static void cmd_get_tag(Scsi_Cmnd *cmd, int should_be_tagged)
|
||||
dprintk(NDEBUG_TAGS, "scsi%d: using tag %d for target %d lun %d "
|
||||
"(now %d tags in use)\n",
|
||||
H_NO(cmd), cmd->tag, cmd->device->id,
|
||||
cmd->device->lun, ta->nr_allocated);
|
||||
lun, ta->nr_allocated);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -416,21 +418,22 @@ static void cmd_get_tag(Scsi_Cmnd *cmd, int should_be_tagged)
|
||||
|
||||
static void cmd_free_tag(Scsi_Cmnd *cmd)
|
||||
{
|
||||
u8 lun = cmd->device->lun;
|
||||
SETUP_HOSTDATA(cmd->device->host);
|
||||
|
||||
if (cmd->tag == TAG_NONE) {
|
||||
hostdata->busy[cmd->device->id] &= ~(1 << cmd->device->lun);
|
||||
hostdata->busy[cmd->device->id] &= ~(1 << lun);
|
||||
dprintk(NDEBUG_TAGS, "scsi%d: target %d lun %d untagged cmd finished\n",
|
||||
H_NO(cmd), cmd->device->id, cmd->device->lun);
|
||||
H_NO(cmd), cmd->device->id, lun);
|
||||
} else if (cmd->tag >= MAX_TAGS) {
|
||||
printk(KERN_NOTICE "scsi%d: trying to free bad tag %d!\n",
|
||||
H_NO(cmd), cmd->tag);
|
||||
} else {
|
||||
TAG_ALLOC *ta = &TagAlloc[cmd->device->id][cmd->device->lun];
|
||||
TAG_ALLOC *ta = &TagAlloc[cmd->device->id][lun];
|
||||
clear_bit(cmd->tag, ta->allocated);
|
||||
ta->nr_allocated--;
|
||||
dprintk(NDEBUG_TAGS, "scsi%d: freed tag %d for target %d lun %d\n",
|
||||
H_NO(cmd), cmd->tag, cmd->device->id, cmd->device->lun);
|
||||
H_NO(cmd), cmd->tag, cmd->device->id, lun);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -713,7 +716,7 @@ static void lprint_Scsi_Cmnd(Scsi_Cmnd *cmd)
|
||||
{
|
||||
int i, s;
|
||||
unsigned char *command;
|
||||
printk("scsi%d: destination target %d, lun %d\n",
|
||||
printk("scsi%d: destination target %d, lun %llu\n",
|
||||
H_NO(cmd), cmd->device->id, cmd->device->lun);
|
||||
printk(KERN_CONT " command = ");
|
||||
command = cmd->cmnd;
|
||||
@@ -759,7 +762,7 @@ static void show_Scsi_Cmnd(Scsi_Cmnd *cmd, struct seq_file *m)
|
||||
{
|
||||
int i, s;
|
||||
unsigned char *command;
|
||||
seq_printf(m, "scsi%d: destination target %d, lun %d\n",
|
||||
seq_printf(m, "scsi%d: destination target %d, lun %llu\n",
|
||||
H_NO(cmd), cmd->device->id, cmd->device->lun);
|
||||
seq_printf(m, " command = ");
|
||||
command = cmd->cmnd;
|
||||
@@ -1060,12 +1063,13 @@ static void NCR5380_main(struct work_struct *work)
|
||||
#endif
|
||||
for (tmp = (Scsi_Cmnd *) hostdata->issue_queue,
|
||||
prev = NULL; tmp; prev = tmp, tmp = NEXT(tmp)) {
|
||||
u8 lun = tmp->device->lun;
|
||||
|
||||
#if (NDEBUG & NDEBUG_LISTS)
|
||||
if (prev != tmp)
|
||||
printk("MAIN tmp=%p target=%d busy=%d lun=%d\n",
|
||||
printk("MAIN tmp=%p target=%d busy=%d lun=%llu\n",
|
||||
tmp, tmp->device->id, hostdata->busy[tmp->device->id],
|
||||
tmp->device->lun);
|
||||
lun);
|
||||
#endif
|
||||
/* When we find one, remove it from the issue queue. */
|
||||
/* ++guenther: possible race with Falcon locking */
|
||||
@@ -1073,7 +1077,7 @@ static void NCR5380_main(struct work_struct *work)
|
||||
#ifdef SUPPORT_TAGS
|
||||
!is_lun_busy( tmp, tmp->cmnd[0] != REQUEST_SENSE)
|
||||
#else
|
||||
!(hostdata->busy[tmp->device->id] & (1 << tmp->device->lun))
|
||||
!(hostdata->busy[tmp->device->id] & (1 << lun))
|
||||
#endif
|
||||
) {
|
||||
/* ++guenther: just to be sure, this must be atomic */
|
||||
@@ -1099,7 +1103,7 @@ static void NCR5380_main(struct work_struct *work)
|
||||
*/
|
||||
dprintk(NDEBUG_MAIN, "scsi%d: main(): command for target %d "
|
||||
"lun %d removed from issue_queue\n",
|
||||
HOSTNO, tmp->device->id, tmp->device->lun);
|
||||
HOSTNO, tmp->device->id, lun);
|
||||
/*
|
||||
* REQUEST SENSE commands are issued without tagged
|
||||
* queueing, even on SCSI-II devices because the
|
||||
@@ -2061,7 +2065,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance)
|
||||
* accesses to this device will use the
|
||||
* polled-IO. */
|
||||
printk(KERN_NOTICE "scsi%d: switching target %d "
|
||||
"lun %d to slow handshake\n", HOSTNO,
|
||||
"lun %llu to slow handshake\n", HOSTNO,
|
||||
cmd->device->id, cmd->device->lun);
|
||||
cmd->device->borken = 1;
|
||||
NCR5380_write(INITIATOR_COMMAND_REG, ICR_BASE |
|
||||
@@ -2113,7 +2117,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance)
|
||||
/* Accept message by clearing ACK */
|
||||
NCR5380_write(INITIATOR_COMMAND_REG, ICR_BASE);
|
||||
|
||||
dprintk(NDEBUG_LINKED, "scsi%d: target %d lun %d linked command "
|
||||
dprintk(NDEBUG_LINKED, "scsi%d: target %d lun %llu linked command "
|
||||
"complete.\n", HOSTNO, cmd->device->id, cmd->device->lun);
|
||||
|
||||
/* Enable reselect interrupts */
|
||||
@@ -2125,7 +2129,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance)
|
||||
*/
|
||||
|
||||
if (!cmd->next_link) {
|
||||
printk(KERN_NOTICE "scsi%d: target %d lun %d "
|
||||
printk(KERN_NOTICE "scsi%d: target %d lun %llu "
|
||||
"linked command complete, no next_link\n",
|
||||
HOSTNO, cmd->device->id, cmd->device->lun);
|
||||
sink = 1;
|
||||
@@ -2138,7 +2142,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance)
|
||||
* and don't free it! */
|
||||
cmd->next_link->tag = cmd->tag;
|
||||
cmd->result = cmd->SCp.Status | (cmd->SCp.Message << 8);
|
||||
dprintk(NDEBUG_LINKED, "scsi%d: target %d lun %d linked request "
|
||||
dprintk(NDEBUG_LINKED, "scsi%d: target %d lun %llu linked request "
|
||||
"done, calling scsi_done().\n",
|
||||
HOSTNO, cmd->device->id, cmd->device->lun);
|
||||
#ifdef NCR5380_STATS
|
||||
@@ -2155,7 +2159,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance)
|
||||
/* ++guenther: possible race with Falcon locking */
|
||||
falcon_dont_release++;
|
||||
hostdata->connected = NULL;
|
||||
dprintk(NDEBUG_QUEUES, "scsi%d: command for target %d, lun %d "
|
||||
dprintk(NDEBUG_QUEUES, "scsi%d: command for target %d, lun %llu "
|
||||
"completed\n", HOSTNO, cmd->device->id, cmd->device->lun);
|
||||
#ifdef SUPPORT_TAGS
|
||||
cmd_free_tag(cmd);
|
||||
@@ -2169,7 +2173,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance)
|
||||
/* ++Andreas: the mid level code knows about
|
||||
QUEUE_FULL now. */
|
||||
TAG_ALLOC *ta = &TagAlloc[cmd->device->id][cmd->device->lun];
|
||||
dprintk(NDEBUG_TAGS, "scsi%d: target %d lun %d returned "
|
||||
dprintk(NDEBUG_TAGS, "scsi%d: target %d lun %llu returned "
|
||||
"QUEUE_FULL after %d commands\n",
|
||||
HOSTNO, cmd->device->id, cmd->device->lun,
|
||||
ta->nr_allocated);
|
||||
@@ -2267,7 +2271,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance)
|
||||
cmd->device->tagged_supported = 0;
|
||||
hostdata->busy[cmd->device->id] |= (1 << cmd->device->lun);
|
||||
cmd->tag = TAG_NONE;
|
||||
dprintk(NDEBUG_TAGS, "scsi%d: target %d lun %d rejected "
|
||||
dprintk(NDEBUG_TAGS, "scsi%d: target %d lun %llu rejected "
|
||||
"QUEUE_TAG message; tagged queuing "
|
||||
"disabled\n",
|
||||
HOSTNO, cmd->device->id, cmd->device->lun);
|
||||
@@ -2284,7 +2288,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance)
|
||||
hostdata->connected = NULL;
|
||||
hostdata->disconnected_queue = cmd;
|
||||
local_irq_restore(flags);
|
||||
dprintk(NDEBUG_QUEUES, "scsi%d: command for target %d lun %d was "
|
||||
dprintk(NDEBUG_QUEUES, "scsi%d: command for target %d lun %llu was "
|
||||
"moved from connected to the "
|
||||
"disconnected_queue\n", HOSTNO,
|
||||
cmd->device->id, cmd->device->lun);
|
||||
@@ -2385,12 +2389,12 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance)
|
||||
printk("\n");
|
||||
} else if (tmp != EXTENDED_MESSAGE)
|
||||
printk(KERN_DEBUG "scsi%d: rejecting unknown "
|
||||
"message %02x from target %d, lun %d\n",
|
||||
"message %02x from target %d, lun %llu\n",
|
||||
HOSTNO, tmp, cmd->device->id, cmd->device->lun);
|
||||
else
|
||||
printk(KERN_DEBUG "scsi%d: rejecting unknown "
|
||||
"extended message "
|
||||
"code %02x, length %d from target %d, lun %d\n",
|
||||
"code %02x, length %d from target %d, lun %llu\n",
|
||||
HOSTNO, extended_msg[1], extended_msg[0],
|
||||
cmd->device->id, cmd->device->lun);
|
||||
|
||||
@@ -2588,7 +2592,7 @@ static void NCR5380_reselect(struct Scsi_Host *instance)
|
||||
NCR5380_write(INITIATOR_COMMAND_REG, ICR_BASE);
|
||||
|
||||
hostdata->connected = tmp;
|
||||
dprintk(NDEBUG_RESELECTION, "scsi%d: nexus established, target = %d, lun = %d, tag = %d\n",
|
||||
dprintk(NDEBUG_RESELECTION, "scsi%d: nexus established, target = %d, lun = %llu, tag = %d\n",
|
||||
HOSTNO, tmp->device->id, tmp->device->lun, tmp->tag);
|
||||
falcon_dont_release--;
|
||||
}
|
||||
|
||||
@@ -914,7 +914,7 @@ void beiscsi_conn_get_stats(struct iscsi_cls_conn *cls_conn,
|
||||
stats->r2t_pdus = conn->r2t_pdus_cnt;
|
||||
stats->digest_err = 0;
|
||||
stats->timeout_err = 0;
|
||||
stats->custom_length = 0;
|
||||
stats->custom_length = 1;
|
||||
strcpy(stats->custom[0].desc, "eh_abort_cnt");
|
||||
stats->custom[0].value = conn->eh_abort_cnt;
|
||||
}
|
||||
|
||||
@@ -1015,7 +1015,7 @@ int mgmt_set_ip(struct beiscsi_hba *phba,
|
||||
if (if_info->dhcp_state) {
|
||||
beiscsi_log(phba, KERN_WARNING, BEISCSI_LOG_CONFIG,
|
||||
"BG_%d : DHCP Already Enabled\n");
|
||||
return 0;
|
||||
goto exit;
|
||||
}
|
||||
/* The ip_param->len is 1 in DHCP case. Setting
|
||||
proper IP len as this it is used while
|
||||
@@ -1033,7 +1033,7 @@ int mgmt_set_ip(struct beiscsi_hba *phba,
|
||||
sizeof(*reldhcp));
|
||||
|
||||
if (rc)
|
||||
return rc;
|
||||
goto exit;
|
||||
|
||||
reldhcp = nonemb_cmd.va;
|
||||
reldhcp->interface_hndl = phba->interface_handle;
|
||||
@@ -1044,7 +1044,7 @@ int mgmt_set_ip(struct beiscsi_hba *phba,
|
||||
beiscsi_log(phba, KERN_WARNING,
|
||||
BEISCSI_LOG_CONFIG,
|
||||
"BG_%d : Failed to Delete existing dhcp\n");
|
||||
return rc;
|
||||
goto exit;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1054,7 +1054,7 @@ int mgmt_set_ip(struct beiscsi_hba *phba,
|
||||
rc = mgmt_static_ip_modify(phba, if_info, ip_param, NULL,
|
||||
IP_ACTION_DEL);
|
||||
if (rc)
|
||||
return rc;
|
||||
goto exit;
|
||||
}
|
||||
|
||||
/* Delete the Gateway settings if mode change is to DHCP */
|
||||
@@ -1064,7 +1064,7 @@ int mgmt_set_ip(struct beiscsi_hba *phba,
|
||||
if (rc) {
|
||||
beiscsi_log(phba, KERN_WARNING, BEISCSI_LOG_CONFIG,
|
||||
"BG_%d : Failed to Get Gateway Addr\n");
|
||||
return rc;
|
||||
goto exit;
|
||||
}
|
||||
|
||||
if (gtway_addr_set.ip_addr.addr[0]) {
|
||||
@@ -1076,7 +1076,7 @@ int mgmt_set_ip(struct beiscsi_hba *phba,
|
||||
beiscsi_log(phba, KERN_WARNING,
|
||||
BEISCSI_LOG_CONFIG,
|
||||
"BG_%d : Failed to clear Gateway Addr Set\n");
|
||||
return rc;
|
||||
goto exit;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1087,7 +1087,7 @@ int mgmt_set_ip(struct beiscsi_hba *phba,
|
||||
OPCODE_COMMON_ISCSI_NTWK_CONFIG_STATELESS_IP_ADDR,
|
||||
sizeof(*dhcpreq));
|
||||
if (rc)
|
||||
return rc;
|
||||
goto exit;
|
||||
|
||||
dhcpreq = nonemb_cmd.va;
|
||||
dhcpreq->flags = BLOCKING;
|
||||
@@ -1095,12 +1095,14 @@ int mgmt_set_ip(struct beiscsi_hba *phba,
|
||||
dhcpreq->interface_hndl = phba->interface_handle;
|
||||
dhcpreq->ip_type = BE2_DHCP_V4;
|
||||
|
||||
return mgmt_exec_nonemb_cmd(phba, &nonemb_cmd, NULL, 0);
|
||||
rc = mgmt_exec_nonemb_cmd(phba, &nonemb_cmd, NULL, 0);
|
||||
} else {
|
||||
return mgmt_static_ip_modify(phba, if_info, ip_param,
|
||||
rc = mgmt_static_ip_modify(phba, if_info, ip_param,
|
||||
subnet_param, IP_ACTION_ADD);
|
||||
}
|
||||
|
||||
exit:
|
||||
kfree(if_info);
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
||||
@@ -81,7 +81,7 @@ bfa_fcs_attach(struct bfa_fcs_s *fcs, struct bfa_s *bfa, struct bfad_s *bfad,
|
||||
bfa->fcs = BFA_TRUE;
|
||||
fcbuild_init();
|
||||
|
||||
for (i = 0; i < sizeof(fcs_modules) / sizeof(fcs_modules[0]); i++) {
|
||||
for (i = 0; i < ARRAY_SIZE(fcs_modules); i++) {
|
||||
mod = &fcs_modules[i];
|
||||
if (mod->attach)
|
||||
mod->attach(fcs);
|
||||
@@ -97,7 +97,7 @@ bfa_fcs_init(struct bfa_fcs_s *fcs)
|
||||
int i;
|
||||
struct bfa_fcs_mod_s *mod;
|
||||
|
||||
for (i = 0; i < sizeof(fcs_modules) / sizeof(fcs_modules[0]); i++) {
|
||||
for (i = 0; i < ARRAY_SIZE(fcs_modules); i++) {
|
||||
mod = &fcs_modules[i];
|
||||
if (mod->modinit)
|
||||
mod->modinit(fcs);
|
||||
@@ -184,7 +184,7 @@ bfa_fcs_exit(struct bfa_fcs_s *fcs)
|
||||
|
||||
bfa_wc_init(&fcs->wc, bfa_fcs_exit_comp, fcs);
|
||||
|
||||
nmods = sizeof(fcs_modules) / sizeof(fcs_modules[0]);
|
||||
nmods = ARRAY_SIZE(fcs_modules);
|
||||
|
||||
for (i = 0; i < nmods; i++) {
|
||||
|
||||
|
||||
@@ -72,7 +72,7 @@ struct bfa_sge_s {
|
||||
} while (0)
|
||||
|
||||
#define bfa_swap_words(_x) ( \
|
||||
((_x) << 32) | ((_x) >> 32))
|
||||
((u64)(_x) << 32) | ((u64)(_x) >> 32))
|
||||
|
||||
#ifdef __BIG_ENDIAN
|
||||
#define bfa_sge_to_be(_x)
|
||||
|
||||
+25
-37
@@ -1219,7 +1219,7 @@ bfad_install_msix_handler(struct bfad_s *bfad)
|
||||
int
|
||||
bfad_setup_intr(struct bfad_s *bfad)
|
||||
{
|
||||
int error = 0;
|
||||
int error;
|
||||
u32 mask = 0, i, num_bit = 0, max_bit = 0;
|
||||
struct msix_entry msix_entries[MAX_MSIX_ENTRY];
|
||||
struct pci_dev *pdev = bfad->pcidev;
|
||||
@@ -1234,34 +1234,24 @@ bfad_setup_intr(struct bfad_s *bfad)
|
||||
if ((bfa_asic_id_ctc(pdev->device) && !msix_disable_ct) ||
|
||||
(bfa_asic_id_cb(pdev->device) && !msix_disable_cb)) {
|
||||
|
||||
error = pci_enable_msix(bfad->pcidev, msix_entries, bfad->nvec);
|
||||
if (error) {
|
||||
/* In CT1 & CT2, try to allocate just one vector */
|
||||
if (bfa_asic_id_ctc(pdev->device)) {
|
||||
printk(KERN_WARNING "bfa %s: trying one msix "
|
||||
"vector failed to allocate %d[%d]\n",
|
||||
bfad->pci_name, bfad->nvec, error);
|
||||
bfad->nvec = 1;
|
||||
error = pci_enable_msix(bfad->pcidev,
|
||||
msix_entries, bfad->nvec);
|
||||
}
|
||||
error = pci_enable_msix_exact(bfad->pcidev,
|
||||
msix_entries, bfad->nvec);
|
||||
/* In CT1 & CT2, try to allocate just one vector */
|
||||
if (error == -ENOSPC && bfa_asic_id_ctc(pdev->device)) {
|
||||
printk(KERN_WARNING "bfa %s: trying one msix "
|
||||
"vector failed to allocate %d[%d]\n",
|
||||
bfad->pci_name, bfad->nvec, error);
|
||||
bfad->nvec = 1;
|
||||
error = pci_enable_msix_exact(bfad->pcidev,
|
||||
msix_entries, 1);
|
||||
}
|
||||
|
||||
/*
|
||||
* Only error number of vector is available.
|
||||
* We don't have a mechanism to map multiple
|
||||
* interrupts into one vector, so even if we
|
||||
* can try to request less vectors, we don't
|
||||
* know how to associate interrupt events to
|
||||
* vectors. Linux doesn't duplicate vectors
|
||||
* in the MSIX table for this case.
|
||||
*/
|
||||
if (error) {
|
||||
printk(KERN_WARNING "bfad%d: "
|
||||
"pci_enable_msix failed (%d), "
|
||||
"use line based.\n",
|
||||
bfad->inst_no, error);
|
||||
goto line_based;
|
||||
}
|
||||
if (error) {
|
||||
printk(KERN_WARNING "bfad%d: "
|
||||
"pci_enable_msix_exact failed (%d), "
|
||||
"use line based.\n",
|
||||
bfad->inst_no, error);
|
||||
goto line_based;
|
||||
}
|
||||
|
||||
/* Disable INTX in MSI-X mode */
|
||||
@@ -1281,20 +1271,18 @@ bfad_setup_intr(struct bfad_s *bfad)
|
||||
|
||||
bfad->bfad_flags |= BFAD_MSIX_ON;
|
||||
|
||||
return error;
|
||||
return 0;
|
||||
}
|
||||
|
||||
line_based:
|
||||
error = 0;
|
||||
if (request_irq
|
||||
(bfad->pcidev->irq, (irq_handler_t) bfad_intx, BFAD_IRQ_FLAGS,
|
||||
BFAD_DRIVER_NAME, bfad) != 0) {
|
||||
/* Enable interrupt handler failed */
|
||||
return 1;
|
||||
}
|
||||
error = request_irq(bfad->pcidev->irq, (irq_handler_t)bfad_intx,
|
||||
BFAD_IRQ_FLAGS, BFAD_DRIVER_NAME, bfad);
|
||||
if (error)
|
||||
return error;
|
||||
|
||||
bfad->bfad_flags |= BFAD_INTX_ON;
|
||||
|
||||
return error;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
@@ -26,7 +26,6 @@ int
|
||||
bfad_iocmd_ioc_enable(struct bfad_s *bfad, void *cmd)
|
||||
{
|
||||
struct bfa_bsg_gen_s *iocmd = (struct bfa_bsg_gen_s *)cmd;
|
||||
int rc = 0;
|
||||
unsigned long flags;
|
||||
|
||||
spin_lock_irqsave(&bfad->bfad_lock, flags);
|
||||
@@ -34,7 +33,7 @@ bfad_iocmd_ioc_enable(struct bfad_s *bfad, void *cmd)
|
||||
if (!bfa_ioc_is_disabled(&bfad->bfa.ioc)) {
|
||||
spin_unlock_irqrestore(&bfad->bfad_lock, flags);
|
||||
iocmd->status = BFA_STATUS_OK;
|
||||
return rc;
|
||||
return 0;
|
||||
}
|
||||
|
||||
init_completion(&bfad->enable_comp);
|
||||
@@ -43,21 +42,20 @@ bfad_iocmd_ioc_enable(struct bfad_s *bfad, void *cmd)
|
||||
spin_unlock_irqrestore(&bfad->bfad_lock, flags);
|
||||
wait_for_completion(&bfad->enable_comp);
|
||||
|
||||
return rc;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
bfad_iocmd_ioc_disable(struct bfad_s *bfad, void *cmd)
|
||||
{
|
||||
struct bfa_bsg_gen_s *iocmd = (struct bfa_bsg_gen_s *)cmd;
|
||||
int rc = 0;
|
||||
unsigned long flags;
|
||||
|
||||
spin_lock_irqsave(&bfad->bfad_lock, flags);
|
||||
if (bfa_ioc_is_disabled(&bfad->bfa.ioc)) {
|
||||
spin_unlock_irqrestore(&bfad->bfad_lock, flags);
|
||||
iocmd->status = BFA_STATUS_OK;
|
||||
return rc;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (bfad->disable_active) {
|
||||
@@ -74,7 +72,7 @@ bfad_iocmd_ioc_disable(struct bfad_s *bfad, void *cmd)
|
||||
bfad->disable_active = BFA_FALSE;
|
||||
iocmd->status = BFA_STATUS_OK;
|
||||
|
||||
return rc;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
@@ -3270,13 +3268,13 @@ bfad_fcxp_map_sg(struct bfad_s *bfad, void *payload_kbuf,
|
||||
/* Allocate dma coherent memory */
|
||||
buf_info = buf_base;
|
||||
buf_info->size = payload_len;
|
||||
buf_info->virt = dma_alloc_coherent(&bfad->pcidev->dev, buf_info->size,
|
||||
&buf_info->phys, GFP_KERNEL);
|
||||
buf_info->virt = dma_zalloc_coherent(&bfad->pcidev->dev,
|
||||
buf_info->size, &buf_info->phys,
|
||||
GFP_KERNEL);
|
||||
if (!buf_info->virt)
|
||||
goto out_free_mem;
|
||||
|
||||
/* copy the linear bsg buffer to buf_info */
|
||||
memset(buf_info->virt, 0, buf_info->size);
|
||||
memcpy(buf_info->virt, payload_kbuf, buf_info->size);
|
||||
|
||||
/*
|
||||
|
||||
@@ -1,3 +1,16 @@
|
||||
/* 57xx_hsi_bnx2fc.h: QLogic NetXtreme II Linux FCoE offload driver.
|
||||
* Handles operations such as session offload/upload etc, and manages
|
||||
* session resources such as connection id and qp resources.
|
||||
*
|
||||
* Copyright (c) 2008 - 2013 Broadcom Corporation
|
||||
* Copyright (c) 2014, QLogic Corporation
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __57XX_FCOE_HSI_LINUX_LE__
|
||||
#define __57XX_FCOE_HSI_LINUX_LE__
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
config SCSI_BNX2X_FCOE
|
||||
tristate "Broadcom NetXtreme II FCoE support"
|
||||
tristate "QLogic NetXtreme II FCoE support"
|
||||
depends on PCI
|
||||
select NETDEVICES
|
||||
select ETHERNET
|
||||
@@ -8,5 +8,5 @@ config SCSI_BNX2X_FCOE
|
||||
select LIBFCOE
|
||||
select CNIC
|
||||
---help---
|
||||
This driver supports FCoE offload for the Broadcom NetXtreme II
|
||||
This driver supports FCoE offload for the QLogic NetXtreme II
|
||||
devices.
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
#ifndef _BNX2FC_H_
|
||||
#define _BNX2FC_H_
|
||||
/* bnx2fc.h: Broadcom NetXtreme II Linux FCoE offload driver.
|
||||
/* bnx2fc.h: QLogic NetXtreme II Linux FCoE offload driver.
|
||||
*
|
||||
* Copyright (c) 2008 - 2013 Broadcom Corporation
|
||||
* Copyright (c) 2014, QLogic Corporation
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@@ -11,6 +10,8 @@
|
||||
* Written by: Bhanu Prakash Gollapudi (bprakash@broadcom.com)
|
||||
*/
|
||||
|
||||
#ifndef _BNX2FC_H_
|
||||
#define _BNX2FC_H_
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include <linux/module.h>
|
||||
|
||||
@@ -1,3 +1,16 @@
|
||||
/* bnx2fc_constants.h: QLogic NetXtreme II Linux FCoE offload driver.
|
||||
* Handles operations such as session offload/upload etc, and manages
|
||||
* session resources such as connection id and qp resources.
|
||||
*
|
||||
* Copyright (c) 2008 - 2013 Broadcom Corporation
|
||||
* Copyright (c) 2014, QLogic Corporation
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __BNX2FC_CONSTANTS_H_
|
||||
#define __BNX2FC_CONSTANTS_H_
|
||||
|
||||
|
||||
@@ -1,3 +1,16 @@
|
||||
/* bnx2fc_debug.c: QLogic NetXtreme II Linux FCoE offload driver.
|
||||
* Handles operations such as session offload/upload etc, and manages
|
||||
* session resources such as connection id and qp resources.
|
||||
*
|
||||
* Copyright (c) 2008 - 2013 Broadcom Corporation
|
||||
* Copyright (c) 2014, QLogic Corporation
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation.
|
||||
*
|
||||
*/
|
||||
|
||||
#include "bnx2fc.h"
|
||||
|
||||
void BNX2FC_IO_DBG(const struct bnx2fc_cmd *io_req, const char *fmt, ...)
|
||||
|
||||
@@ -1,3 +1,16 @@
|
||||
/* bnx2fc_debug.h: QLogic NetXtreme II Linux FCoE offload driver.
|
||||
* Handles operations such as session offload/upload etc, and manages
|
||||
* session resources such as connection id and qp resources.
|
||||
*
|
||||
* Copyright (c) 2008 - 2013 Broadcom Corporation
|
||||
* Copyright (c) 2014, QLogic Corporation
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __BNX2FC_DEBUG__
|
||||
#define __BNX2FC_DEBUG__
|
||||
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
/*
|
||||
* bnx2fc_els.c: Broadcom NetXtreme II Linux FCoE offload driver.
|
||||
* bnx2fc_els.c: QLogic NetXtreme II Linux FCoE offload driver.
|
||||
* This file contains helper routines that handle ELS requests
|
||||
* and responses.
|
||||
*
|
||||
* Copyright (c) 2008 - 2013 Broadcom Corporation
|
||||
* Copyright (c) 2014, QLogic Corporation
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
/* bnx2fc_fcoe.c: Broadcom NetXtreme II Linux FCoE offload driver.
|
||||
/* bnx2fc_fcoe.c: QLogic NetXtreme II Linux FCoE offload driver.
|
||||
* This file contains the code that interacts with libfc, libfcoe,
|
||||
* cnic modules to create FCoE instances, send/receive non-offloaded
|
||||
* FIP/FCoE packets, listen to link events etc.
|
||||
*
|
||||
* Copyright (c) 2008 - 2013 Broadcom Corporation
|
||||
* Copyright (c) 2014, QLogic Corporation
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@@ -26,12 +27,12 @@ DEFINE_PER_CPU(struct bnx2fc_percpu_s, bnx2fc_percpu);
|
||||
|
||||
|
||||
static char version[] =
|
||||
"Broadcom NetXtreme II FCoE Driver " DRV_MODULE_NAME \
|
||||
"QLogic NetXtreme II FCoE Driver " DRV_MODULE_NAME \
|
||||
" v" DRV_MODULE_VERSION " (" DRV_MODULE_RELDATE ")\n";
|
||||
|
||||
|
||||
MODULE_AUTHOR("Bhanu Prakash Gollapudi <bprakash@broadcom.com>");
|
||||
MODULE_DESCRIPTION("Broadcom NetXtreme II BCM57710 FCoE Driver");
|
||||
MODULE_DESCRIPTION("QLogic NetXtreme II BCM57710 FCoE Driver");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_VERSION(DRV_MODULE_VERSION);
|
||||
|
||||
@@ -692,7 +693,7 @@ static int bnx2fc_shost_config(struct fc_lport *lport, struct device *dev)
|
||||
if (!lport->vport)
|
||||
fc_host_max_npiv_vports(lport->host) = USHRT_MAX;
|
||||
snprintf(fc_host_symbolic_name(lport->host), 256,
|
||||
"%s (Broadcom %s) v%s over %s",
|
||||
"%s (QLogic %s) v%s over %s",
|
||||
BNX2FC_NAME, hba->chip_num, BNX2FC_VERSION,
|
||||
interface->netdev->name);
|
||||
|
||||
@@ -2775,7 +2776,7 @@ static struct fc_function_template bnx2fc_vport_xport_function = {
|
||||
*/
|
||||
static struct scsi_host_template bnx2fc_shost_template = {
|
||||
.module = THIS_MODULE,
|
||||
.name = "Broadcom Offload FCoE Initiator",
|
||||
.name = "QLogic Offload FCoE Initiator",
|
||||
.queuecommand = bnx2fc_queuecommand,
|
||||
.eh_abort_handler = bnx2fc_eh_abort, /* abts */
|
||||
.eh_device_reset_handler = bnx2fc_eh_device_reset, /* lun reset */
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
/* bnx2fc_hwi.c: Broadcom NetXtreme II Linux FCoE offload driver.
|
||||
/* bnx2fc_hwi.c: QLogic NetXtreme II Linux FCoE offload driver.
|
||||
* This file contains the code that low level functions that interact
|
||||
* with 57712 FCoE firmware.
|
||||
*
|
||||
* Copyright (c) 2008 - 2013 Broadcom Corporation
|
||||
* Copyright (c) 2014, QLogic Corporation
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
/* bnx2fc_io.c: Broadcom NetXtreme II Linux FCoE offload driver.
|
||||
/* bnx2fc_io.c: QLogic NetXtreme II Linux FCoE offload driver.
|
||||
* IO manager and SCSI IO processing.
|
||||
*
|
||||
* Copyright (c) 2008 - 2013 Broadcom Corporation
|
||||
* Copyright (c) 2014, QLogic Corporation
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@@ -1450,9 +1451,9 @@ static void bnx2fc_lun_reset_cmpl(struct bnx2fc_cmd *io_req)
|
||||
struct scsi_cmnd *sc_cmd = io_req->sc_cmd;
|
||||
struct bnx2fc_rport *tgt = io_req->tgt;
|
||||
struct bnx2fc_cmd *cmd, *tmp;
|
||||
int tm_lun = sc_cmd->device->lun;
|
||||
u64 tm_lun = sc_cmd->device->lun;
|
||||
u64 lun;
|
||||
int rc = 0;
|
||||
int lun;
|
||||
|
||||
/* called with tgt_lock held */
|
||||
BNX2FC_IO_DBG(io_req, "Entered bnx2fc_lun_reset_cmpl\n");
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
/* bnx2fc_tgt.c: Broadcom NetXtreme II Linux FCoE offload driver.
|
||||
/* bnx2fc_tgt.c: QLogic NetXtreme II Linux FCoE offload driver.
|
||||
* Handles operations such as session offload/upload etc, and manages
|
||||
* session resources such as connection id and qp resources.
|
||||
*
|
||||
* Copyright (c) 2008 - 2013 Broadcom Corporation
|
||||
* Copyright (c) 2014, QLogic Corporation
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -1,13 +1,15 @@
|
||||
/* 57xx_iscsi_constants.h: Broadcom NetXtreme II iSCSI HSI
|
||||
/* 57xx_iscsi_constants.h: QLogic NetXtreme II iSCSI HSI
|
||||
*
|
||||
* Copyright (c) 2006 - 2013 Broadcom Corporation
|
||||
* Copyright (c) 2014, QLogic Corporation
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation.
|
||||
*
|
||||
* Written by: Anil Veerabhadrappa (anilgv@broadcom.com)
|
||||
* Maintained by: Eddie Wai (eddie.wai@broadcom.com)
|
||||
* Previously Maintained by: Eddie Wai (eddie.wai@broadcom.com)
|
||||
* Maintained by: QLogic-Storage-Upstream@qlogic.com
|
||||
*/
|
||||
#ifndef __57XX_ISCSI_CONSTANTS_H_
|
||||
#define __57XX_ISCSI_CONSTANTS_H_
|
||||
|
||||
@@ -1,13 +1,15 @@
|
||||
/* 57xx_iscsi_hsi.h: Broadcom NetXtreme II iSCSI HSI.
|
||||
/* 57xx_iscsi_hsi.h: QLogic NetXtreme II iSCSI HSI.
|
||||
*
|
||||
* Copyright (c) 2006 - 2013 Broadcom Corporation
|
||||
* Copyright (c) 2014, QLogic Corporation
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation.
|
||||
*
|
||||
* Written by: Anil Veerabhadrappa (anilgv@broadcom.com)
|
||||
* Maintained by: Eddie Wai (eddie.wai@broadcom.com)
|
||||
* Previously Maintained by: Eddie Wai (eddie.wai@broadcom.com)
|
||||
* Maintained by: QLogic-Storage-Upstream@qlogic.com
|
||||
*/
|
||||
#ifndef __57XX_ISCSI_HSI_LINUX_LE__
|
||||
#define __57XX_ISCSI_HSI_LINUX_LE__
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
config SCSI_BNX2_ISCSI
|
||||
tristate "Broadcom NetXtreme II iSCSI support"
|
||||
tristate "QLogic NetXtreme II iSCSI support"
|
||||
depends on NET
|
||||
depends on PCI
|
||||
select SCSI_ISCSI_ATTRS
|
||||
@@ -8,5 +8,5 @@ config SCSI_BNX2_ISCSI
|
||||
select NET_VENDOR_BROADCOM
|
||||
select CNIC
|
||||
---help---
|
||||
This driver supports iSCSI offload for the Broadcom NetXtreme II
|
||||
This driver supports iSCSI offload for the QLogic NetXtreme II
|
||||
devices.
|
||||
|
||||
@@ -1,15 +1,17 @@
|
||||
/* bnx2i.h: Broadcom NetXtreme II iSCSI driver.
|
||||
/* bnx2i.h: QLogic NetXtreme II iSCSI driver.
|
||||
*
|
||||
* Copyright (c) 2006 - 2013 Broadcom Corporation
|
||||
* Copyright (c) 2007, 2008 Red Hat, Inc. All rights reserved.
|
||||
* Copyright (c) 2007, 2008 Mike Christie
|
||||
* Copyright (c) 2014, QLogic Corporation
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation.
|
||||
*
|
||||
* Written by: Anil Veerabhadrappa (anilgv@broadcom.com)
|
||||
* Maintained by: Eddie Wai (eddie.wai@broadcom.com)
|
||||
* Previously Maintained by: Eddie Wai (eddie.wai@broadcom.com)
|
||||
* Maintained by: QLogic-Storage-Upstream@qlogic.com
|
||||
*/
|
||||
|
||||
#ifndef _BNX2I_H_
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user