Commit a3a8d13f authored by Martin K. Petersen's avatar Martin K. Petersen
Browse files

Merge branch '5.4/scsi-fixes' into 5.5/scsi-queue



The qla2xxx driver updates for 5.5 depend on the fixes queued for
5.4.

Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parents 27f722cc b23f330d
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -13359,7 +13359,7 @@ S: Maintained
F:	drivers/scsi/qla1280.[ch]
QLOGIC QLA2XXX FC-SCSI DRIVER
M:	qla2xxx-upstream@qlogic.com
M:	hmadhani@marvell.com
L:	linux-scsi@vger.kernel.org
S:	Supported
F:	Documentation/scsi/LICENSE.qla2xxx
+13 −3
Original line number Diff line number Diff line
@@ -27,6 +27,11 @@

struct kmem_cache *zfcp_fsf_qtcb_cache;

static bool ber_stop = true;
module_param(ber_stop, bool, 0600);
MODULE_PARM_DESC(ber_stop,
		 "Shuts down FCP devices for FCP channels that report a bit-error count in excess of its threshold (default on)");

static void zfcp_fsf_request_timeout_handler(struct timer_list *t)
{
	struct zfcp_fsf_req *fsf_req = from_timer(fsf_req, t, timer);
@@ -236,10 +241,15 @@ static void zfcp_fsf_status_read_handler(struct zfcp_fsf_req *req)
	case FSF_STATUS_READ_SENSE_DATA_AVAIL:
		break;
	case FSF_STATUS_READ_BIT_ERROR_THRESHOLD:
		dev_warn(&adapter->ccw_device->dev,
			 "The error threshold for checksum statistics "
			 "has been exceeded\n");
		zfcp_dbf_hba_bit_err("fssrh_3", req);
		if (ber_stop) {
			dev_warn(&adapter->ccw_device->dev,
				 "All paths over this FCP device are disused because of excessive bit errors\n");
			zfcp_erp_adapter_shutdown(adapter, 0, "fssrh_b");
		} else {
			dev_warn(&adapter->ccw_device->dev,
				 "The error threshold for checksum statistics has been exceeded\n");
		}
		break;
	case FSF_STATUS_READ_LINK_DOWN:
		zfcp_fsf_status_read_link_down(req);
+24 −5
Original line number Diff line number Diff line
@@ -1923,6 +1923,7 @@ void bnx2fc_process_scsi_cmd_compl(struct bnx2fc_cmd *io_req,
	struct fcoe_fcp_rsp_payload *fcp_rsp;
	struct bnx2fc_rport *tgt = io_req->tgt;
	struct scsi_cmnd *sc_cmd;
	u16 scope = 0, qualifier = 0;

	/* scsi_cmd_cmpl is called with tgt lock held */

@@ -1990,12 +1991,30 @@ void bnx2fc_process_scsi_cmd_compl(struct bnx2fc_cmd *io_req,

			if (io_req->cdb_status == SAM_STAT_TASK_SET_FULL ||
			    io_req->cdb_status == SAM_STAT_BUSY) {
				/* Set the jiffies + retry_delay_timer * 100ms
				   for the rport/tgt */
				/* Newer array firmware with BUSY or
				 * TASK_SET_FULL may return a status that needs
				 * the scope bits masked.
				 * Or a huge delay timestamp up to 27 minutes
				 * can result.
				 */
				if (fcp_rsp->retry_delay_timer) {
					/* Upper 2 bits */
					scope = fcp_rsp->retry_delay_timer
						& 0xC000;
					/* Lower 14 bits */
					qualifier = fcp_rsp->retry_delay_timer
						& 0x3FFF;
				}
				if (scope > 0 && qualifier > 0 &&
					qualifier <= 0x3FEF) {
					/* Set the jiffies +
					 * retry_delay_timer * 100ms
					 * for the rport/tgt
					 */
					tgt->retry_delay_timestamp = jiffies +
					fcp_rsp->retry_delay_timer * HZ / 10;
						(qualifier * HZ / 10);
				}
			}

		}
		if (io_req->fcp_resid)
			scsi_set_resid(sc_cmd, io_req->fcp_resid);
+3 −3
Original line number Diff line number Diff line
@@ -3683,7 +3683,7 @@ void hisi_sas_debugfs_work_handler(struct work_struct *work)
}
EXPORT_SYMBOL_GPL(hisi_sas_debugfs_work_handler);

void hisi_sas_debugfs_release(struct hisi_hba *hisi_hba)
static void hisi_sas_debugfs_release(struct hisi_hba *hisi_hba)
{
	struct device *dev = hisi_hba->dev;
	int i;
@@ -3705,7 +3705,7 @@ void hisi_sas_debugfs_release(struct hisi_hba *hisi_hba)
		devm_kfree(dev, hisi_hba->debugfs_port_reg[i]);
}

int hisi_sas_debugfs_alloc(struct hisi_hba *hisi_hba)
static int hisi_sas_debugfs_alloc(struct hisi_hba *hisi_hba)
{
	const struct hisi_sas_hw *hw = hisi_hba->hw;
	struct device *dev = hisi_hba->dev;
@@ -3796,7 +3796,7 @@ fail:
	return -ENOMEM;
}

void hisi_sas_debugfs_bist_init(struct hisi_hba *hisi_hba)
static void hisi_sas_debugfs_bist_init(struct hisi_hba *hisi_hba)
{
	hisi_hba->debugfs_bist_dentry =
			debugfs_create_dir("bist", hisi_hba->debugfs_dir);
+2 −2
Original line number Diff line number Diff line
@@ -4183,11 +4183,11 @@ megaraid_probe_one(struct pci_dev *pdev, const struct pci_device_id *id)
		 */
		if (pdev->subsystem_vendor == PCI_VENDOR_ID_COMPAQ &&
		    pdev->subsystem_device == 0xC000)
		   	return -ENODEV;
			goto out_disable_device;
		/* Now check the magic signature byte */
		pci_read_config_word(pdev, PCI_CONF_AMISIG, &magic);
		if (magic != HBA_SIGNATURE_471 && magic != HBA_SIGNATURE)
			return -ENODEV;
			goto out_disable_device;
		/* Ok it is probably a megaraid */
	}

Loading