forked from Minki/linux
SCSI misc on 20140806
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. Signed-off-by: James Bottomley <JBottomley@Parallels.com> -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (GNU/Linux) iQEcBAABAgAGBQJT4mS9AAoJEDeqqVYsXL0Mq34H/2AeXiM8GEVO3PIsBtF3TFZ9 poJvAyb8t//+VwAIVLHU9wrssIrIcyvNQmNHH/InGt5rOaXwGQRsnEc73bBtot4b aC1t+hAnp2Ddvu6phmyUg7iY2GmQhAoZmeaj7krGIu2XgtLGiPg26eSsgk4Yv/U9 cuULEuOc/UnTj3w5VK8SvpyXMybVF6oQhSrS1slOglfFwPTlTI/NHU9xo7Wc3qHT VifHXNphIvye5EH8zwtKX5p8qCrFW0pevJwyfPz7Hp2CTA9XYKx3SoeOh+n9F9ez udBBggg7Vb1tb4mPKUoZ78UrtCVdFSCmesBU/RJe7cIh8daKaO5MVr3WPSx2JhM= =yGai -----END PGP SIGNATURE----- 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:
commit
6b22df74f7
@ -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
|
||||
|
@ -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 */
|
||||
|
@ -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
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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
Loading…
Reference in New Issue
Block a user