Linux SCSI subsystem development
 help / color / mirror / Atom feed
From: Nilesh Javali <njavali@marvell.com>
To: <martin.petersen@oracle.com>
Cc: <linux-scsi@vger.kernel.org>,
	<GR-FC-Storage-Upstream@marvell.com>, <agurumurthy@marvell.com>,
	<emilne@redhat.com>, <jmeneghi@redhat.com>, <hare@suse.com>
Subject: [PATCH v3 01/88] scsi: qla2xxx: Add 29xx series PCI device ID support
Date: Tue, 7 Jul 2026 11:23:08 +0530	[thread overview]
Message-ID: <20260707055435.2680300-2-njavali@marvell.com> (raw)
In-Reply-To: <20260707055435.2680300-1-njavali@marvell.com>

From: Manish Rangankar <mrangankar@marvell.com>

The QLA29xx is a new generation FC HBA that shares much of its
architecture with the 27xx/28xx family.  Register the new PCI
device IDs, wire up IS_QLA29XX() capability checks in the probe
and ISP-flags paths, and extend speed-capability logic so the
driver correctly recognises and initialises 29xx adapters.

Signed-off-by: Manish Rangankar <mrangankar@marvell.com>
Signed-off-by: Nilesh Javali <njavali@marvell.com>
Reviewed-by: Hannes Reinecke <hare@kernel.org>
---
 drivers/scsi/qla2xxx/qla_def.h  | 33 +++++++++++----
 drivers/scsi/qla2xxx/qla_init.c |  2 +-
 drivers/scsi/qla2xxx/qla_isr.c  |  5 ++-
 drivers/scsi/qla2xxx/qla_os.c   | 74 ++++++++++++++++++++++++++-------
 4 files changed, 88 insertions(+), 26 deletions(-)

diff --git a/drivers/scsi/qla2xxx/qla_def.h b/drivers/scsi/qla2xxx/qla_def.h
index 5593ad7fad27..6337a056b149 100644
--- a/drivers/scsi/qla2xxx/qla_def.h
+++ b/drivers/scsi/qla2xxx/qla_def.h
@@ -3528,7 +3528,6 @@ struct isp_operations {
 #define QLA_MIDX_DEFAULT	0
 #define QLA_MIDX_RSP_Q		1
 #define QLA_PCI_MSIX_CONTROL	0xa2
-#define QLA_83XX_PCI_MSIX_CONTROL	0x92
 
 struct scsi_qla_host;
 
@@ -4287,6 +4286,10 @@ struct qla_hw_data {
 #define PCI_DEVICE_ID_QLOGIC_ISP2089	0x2089
 #define PCI_DEVICE_ID_QLOGIC_ISP2281	0x2281
 #define PCI_DEVICE_ID_QLOGIC_ISP2289	0x2289
+#define PCI_DEVICE_ID_QLOGIC_ISP2099	0x2099
+#define PCI_DEVICE_ID_QLOGIC_ISP2299	0x2299
+#define PCI_DEVICE_ID_QLOGIC_ISP2091	0x2091
+#define PCI_DEVICE_ID_QLOGIC_ISP2291	0x2291
 
 	uint32_t	isp_type;
 #define DT_ISP2100                      BIT_0
@@ -4316,7 +4319,11 @@ struct qla_hw_data {
 #define DT_ISP2089			BIT_24
 #define DT_ISP2281			BIT_25
 #define DT_ISP2289			BIT_26
-#define DT_ISP_LAST			(DT_ISP2289 << 1)
+#define DT_ISP2299			BIT_27
+#define DT_ISP2099			BIT_28
+#define DT_ISP2091			BIT_29
+#define DT_ISP2291			BIT_30
+#define DT_ISP_LAST			((uint32_t)DT_ISP2291 << 1)
 
 	uint32_t	device_type;
 #define DT_T10_PI                       BIT_25
@@ -4353,6 +4360,10 @@ struct qla_hw_data {
 #define IS_QLA2261(ha)	(DT_MASK(ha) & DT_ISP2261)
 #define IS_QLA2081(ha)	(DT_MASK(ha) & DT_ISP2081)
 #define IS_QLA2281(ha)	(DT_MASK(ha) & DT_ISP2281)
+#define IS_QLA2299(ha)	(DT_MASK(ha) & DT_ISP2299)
+#define IS_QLA2099(ha)	(DT_MASK(ha) & DT_ISP2099)
+#define IS_QLA2091(ha)	(DT_MASK(ha) & DT_ISP2091)
+#define IS_QLA2291(ha)	(DT_MASK(ha) & DT_ISP2291)
 
 #define IS_QLA23XX(ha)  (IS_QLA2300(ha) || IS_QLA2312(ha) || IS_QLA2322(ha) || \
 			IS_QLA6312(ha) || IS_QLA6322(ha))
@@ -4363,6 +4374,9 @@ struct qla_hw_data {
 #define IS_QLA84XX(ha)  (IS_QLA8432(ha))
 #define IS_QLA27XX(ha)  (IS_QLA2071(ha) || IS_QLA2271(ha) || IS_QLA2261(ha))
 #define IS_QLA28XX(ha)	(IS_QLA2081(ha) || IS_QLA2281(ha))
+#define IS_QLA29XX(ha)	(IS_QLA2099(ha) || IS_QLA2299(ha) || \
+			 IS_QLA2091(ha) || IS_QLA2291(ha))
+
 #define IS_QLA24XX_TYPE(ha)     (IS_QLA24XX(ha) || IS_QLA54XX(ha) || \
 				IS_QLA84XX(ha))
 #define IS_CNA_CAPABLE(ha)	(IS_QLA81XX(ha) || IS_QLA82XX(ha) || \
@@ -4372,9 +4386,10 @@ struct qla_hw_data {
 				IS_QLA25XX(ha) || IS_QLA81XX(ha) || \
 				IS_QLA82XX(ha) || IS_QLA83XX(ha) || \
 				IS_QLA8044(ha) || IS_QLA27XX(ha) || \
-				IS_QLA28XX(ha))
+				IS_QLA28XX(ha) || IS_QLA29XX(ha))
 #define IS_MSIX_NACK_CAPABLE(ha) (IS_QLA81XX(ha) || IS_QLA83XX(ha) || \
-				IS_QLA27XX(ha) || IS_QLA28XX(ha))
+				IS_QLA27XX(ha) || IS_QLA28XX(ha) || \
+				IS_QLA29XX(ha))
 #define IS_NOPOLLING_TYPE(ha)	(IS_QLA81XX(ha) && (ha)->flags.msix_enabled)
 #define IS_FAC_REQUIRED(ha)	(IS_QLA81XX(ha) || IS_QLA83XX(ha) || \
 				IS_QLA27XX(ha) || IS_QLA28XX(ha))
@@ -4390,9 +4405,9 @@ struct qla_hw_data {
 #define HAS_EXTENDED_IDS(ha)    ((ha)->device_type & DT_EXTENDED_IDS)
 #define IS_CT6_SUPPORTED(ha)	((ha)->device_type & DT_CT6_SUPPORTED)
 #define IS_MQUE_CAPABLE(ha)	(IS_QLA83XX(ha) || IS_QLA27XX(ha) || \
-				 IS_QLA28XX(ha))
+				 IS_QLA28XX(ha) || IS_QLA29XX(ha))
 #define IS_BIDI_CAPABLE(ha) \
-    (IS_QLA25XX(ha) || IS_QLA2031(ha) || IS_QLA27XX(ha) || IS_QLA28XX(ha))
+    (IS_QLA25XX(ha) || IS_QLA2031(ha) || IS_QLA27XX(ha) || IS_QLA28XX(ha) || IS_QLA29XX(ha))
 /* Bit 21 of fw_attributes decides the MCTP capabilities */
 #define IS_MCTP_CAPABLE(ha)	(IS_QLA2031(ha) && \
 				((ha)->fw_attributes_ext[0] & BIT_0))
@@ -4408,12 +4423,12 @@ struct qla_hw_data {
 	(QLA_NVME_IOS(_sp) && QLA_ABTS_FW_ENABLED(_sp->fcport->vha->hw))
 
 #define IS_PI_UNINIT_CAPABLE(ha)	(IS_QLA83XX(ha) || IS_QLA27XX(ha) || \
-					 IS_QLA28XX(ha))
+					 IS_QLA28XX(ha) || IS_QLA29XX(ha))
 #define IS_PI_IPGUARD_CAPABLE(ha)	(IS_QLA83XX(ha) || IS_QLA27XX(ha) || \
-					 IS_QLA28XX(ha))
+					 IS_QLA28XX(ha) || IS_QLA29XX(ha))
 #define IS_PI_DIFB_DIX0_CAPABLE(ha)	(0)
 #define IS_PI_SPLIT_DET_CAPABLE_HBA(ha)	(IS_QLA83XX(ha) || IS_QLA27XX(ha) || \
-					IS_QLA28XX(ha))
+					IS_QLA28XX(ha) || IS_QLA29XX(ha))
 #define IS_PI_SPLIT_DET_CAPABLE(ha)	(IS_PI_SPLIT_DET_CAPABLE_HBA(ha) && \
     (((ha)->fw_attributes_h << 16 | (ha)->fw_attributes) & BIT_22))
 #define IS_ATIO_MSIX_CAPABLE(ha) (IS_QLA83XX(ha) || IS_QLA27XX(ha) || \
diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c
index e746c9274cde..e23e7ac48ae2 100644
--- a/drivers/scsi/qla2xxx/qla_init.c
+++ b/drivers/scsi/qla2xxx/qla_init.c
@@ -2773,7 +2773,7 @@ qla2x00_initialize_adapter(scsi_qla_host_t *vha)
 	ha->isp_ops->reset_chip(vha);
 
 	/* Check for secure flash support */
-	if (IS_QLA28XX(ha)) {
+	if (IS_QLA28XX(ha) || IS_QLA29XX(ha)) {
 		if (rd_reg_word(&reg->mailbox12) & BIT_0)
 			ha->flags.secure_adapter = 1;
 		ql_log(ql_log_info, vha, 0xffff, "Secure Adapter: %s\n",
diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c
index 33776330956c..c47c38e099ff 100644
--- a/drivers/scsi/qla2xxx/qla_isr.c
+++ b/drivers/scsi/qla2xxx/qla_isr.c
@@ -4663,7 +4663,8 @@ qla2x00_request_irqs(struct qla_hw_data *ha, struct rsp_que *rsp)
 	/* If possible, enable MSI-X. */
 	if (ql2xenablemsix == 0 || (!IS_QLA2432(ha) && !IS_QLA2532(ha) &&
 	    !IS_QLA8432(ha) && !IS_CNA_CAPABLE(ha) && !IS_QLA2031(ha) &&
-	    !IS_QLAFX00(ha) && !IS_QLA27XX(ha) && !IS_QLA28XX(ha)))
+	    !IS_QLAFX00(ha) && !IS_QLA27XX(ha) && !IS_QLA28XX(ha) &&
+	    !IS_QLA29XX(ha)))
 		goto skip_msi;
 
 	if (ql2xenablemsix == 2)
@@ -4702,7 +4703,7 @@ qla2x00_request_irqs(struct qla_hw_data *ha, struct rsp_que *rsp)
 
 	if (!IS_QLA24XX(ha) && !IS_QLA2532(ha) && !IS_QLA8432(ha) &&
 	    !IS_QLA8001(ha) && !IS_P3P_TYPE(ha) && !IS_QLAFX00(ha) &&
-	    !IS_QLA27XX(ha) && !IS_QLA28XX(ha))
+	    !IS_QLA27XX(ha) && !IS_QLA28XX(ha) && !IS_QLA29XX(ha))
 		goto skip_msi;
 
 	ret = pci_alloc_irq_vectors(ha->pdev, 1, 1, PCI_IRQ_MSI);
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c
index 72b1c28e4dae..c91d2b8bd08e 100644
--- a/drivers/scsi/qla2xxx/qla_os.c
+++ b/drivers/scsi/qla2xxx/qla_os.c
@@ -429,7 +429,8 @@ static void qla_init_base_qpair(struct scsi_qla_host *vha, struct req_que *req,
 	qla_cpu_update(rsp->qpair, raw_smp_processor_id());
 	ha->base_qpair->pdev = ha->pdev;
 
-	if (IS_QLA27XX(ha) || IS_QLA83XX(ha) || IS_QLA28XX(ha))
+	if (IS_QLA27XX(ha) || IS_QLA83XX(ha) || IS_QLA28XX(ha) ||
+	    IS_QLA29XX(ha))
 		ha->base_qpair->reqq_start_iocbs = qla_83xx_start_iocbs;
 }
 
@@ -2153,8 +2154,6 @@ qla2x00_iospace_config(struct qla_hw_data *ha)
 static int
 qla83xx_iospace_config(struct qla_hw_data *ha)
 {
-	uint16_t msix;
-
 	if (pci_request_selected_regions(ha->pdev, ha->bars,
 	    QLA2XXX_DRIVER_NAME)) {
 		ql_log_pci(ql_log_fatal, ha->pdev, 0x0117,
@@ -2203,10 +2202,18 @@ qla83xx_iospace_config(struct qla_hw_data *ha)
 	ha->msixbase = ioremap(pci_resource_start(ha->pdev, 2),
 			pci_resource_len(ha->pdev, 2));
 	if (ha->msixbase) {
+		int msix_cnt;
+
 		/* Read MSIX vector size of the board */
-		pci_read_config_word(ha->pdev,
-		    QLA_83XX_PCI_MSIX_CONTROL, &msix);
-		ha->msix_count = (msix & PCI_MSIX_FLAGS_QSIZE)  + 1;
+		msix_cnt = pci_msix_vec_count(ha->pdev);
+		if (msix_cnt <= 0) {
+			ql_log_pci(ql_log_warn, ha->pdev, 0x0120,
+				   "Failed to read MSI-X count (%d), falling back to base vectors.\n",
+				   msix_cnt);
+			goto mqiobase_exit;
+		}
+		ha->msix_count = msix_cnt;
+
 		/*
 		 * By default, driver uses at least two msix vectors
 		 * (default & rspq)
@@ -2796,6 +2803,20 @@ qla2x00_set_isp_flags(struct qla_hw_data *ha)
 		ha->device_type |= DT_T10_PI;
 		ha->fw_srisc_address = RISC_START_ADDRESS_2400;
 		break;
+	case PCI_DEVICE_ID_QLOGIC_ISP2099:
+	case PCI_DEVICE_ID_QLOGIC_ISP2299:
+	case PCI_DEVICE_ID_QLOGIC_ISP2091:
+	case PCI_DEVICE_ID_QLOGIC_ISP2291:
+		ha->isp_type |= DT_ISP2299;
+		ha->isp_type |= DT_ISP2099;
+		ha->isp_type |= DT_ISP2091;
+		ha->isp_type |= DT_ISP2291;
+		ha->device_type |= DT_ZIO_SUPPORTED;
+		ha->device_type |= DT_FWI2;
+		ha->device_type |= DT_IIDMA;
+		ha->device_type |= DT_T10_PI;
+		ha->fw_srisc_address = RISC_START_ADDRESS_2400;
+		break;
 	}
 
 	if (IS_QLA82XX(ha))
@@ -2803,8 +2824,8 @@ qla2x00_set_isp_flags(struct qla_hw_data *ha)
 	else {
 		/* Get adapter physical port no from interrupt pin register. */
 		pci_read_config_byte(ha->pdev, PCI_INTERRUPT_PIN, &ha->port_no);
-		if (IS_QLA25XX(ha) || IS_QLA2031(ha) ||
-		    IS_QLA27XX(ha) || IS_QLA28XX(ha))
+		if (IS_QLA25XX(ha) || IS_QLA2031(ha) || IS_QLA27XX(ha) ||
+		    IS_QLA28XX(ha) || IS_QLA29XX(ha))
 			ha->port_no--;
 		else
 			ha->port_no = !(ha->port_no & 1);
@@ -2936,7 +2957,11 @@ qla2x00_probe_one(struct pci_dev *pdev, const struct pci_device_id *id)
 	    pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2081 ||
 	    pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2281 ||
 	    pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2089 ||
-	    pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2289) {
+	    pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2289 ||
+	    pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2099 ||
+	    pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2299 ||
+	    pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2091 ||
+	    pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2291) {
 		bars = pci_select_bars(pdev, IORESOURCE_MEM);
 		mem_only = 1;
 		ql_dbg_pci(ql_dbg_init, pdev, 0x0007,
@@ -2998,7 +3023,8 @@ qla2x00_probe_one(struct pci_dev *pdev, const struct pci_device_id *id)
 
 	/* Set EEH reset type to fundamental if required by hba */
 	if (IS_QLA24XX(ha) || IS_QLA25XX(ha) || IS_QLA81XX(ha) ||
-	    IS_QLA83XX(ha) || IS_QLA27XX(ha) || IS_QLA28XX(ha))
+	    IS_QLA83XX(ha) || IS_QLA27XX(ha) || IS_QLA28XX(ha) ||
+	    IS_QLA29XX(ha))
 		pdev->needs_freset = 1;
 
 	ha->prev_topology = 0;
@@ -3195,6 +3221,22 @@ qla2x00_probe_one(struct pci_dev *pdev, const struct pci_device_id *id)
 		ha->flash_data_off = FARX_ACCESS_FLASH_DATA_28XX;
 		ha->nvram_conf_off = ~0;
 		ha->nvram_data_off = ~0;
+	} else if (IS_QLA29XX(ha)) {
+		ha->portnum = PCI_FUNC(ha->pdev->devfn);
+		ha->max_fibre_devices = MAX_FIBRE_DEVICES_2400;
+		ha->mbx_count = MAILBOX_REGISTER_COUNT;
+		req_length = REQUEST_ENTRY_CNT_83XX;
+		rsp_length = RESPONSE_ENTRY_CNT_83XX;
+		ha->max_loop_id = SNS_LAST_LOOP_ID_2300;
+		ha->init_cb_size = sizeof(struct mid_init_cb_81xx);
+		ha->gid_list_info_size = 8;
+		ha->optrom_size = OPTROM_SIZE_28XX;
+		ha->nvram_npiv_size = QLA_MAX_VPORTS_QLA25XX;
+		ha->isp_ops = &qla27xx_isp_ops;
+		ha->flash_conf_off = ~0;
+		ha->flash_data_off = ~0;
+		ha->nvram_conf_off = ~0;
+		ha->nvram_data_off = ~0;
 	}
 
 	ql_dbg_pci(ql_dbg_init, pdev, 0x001e,
@@ -3373,7 +3415,7 @@ qla2x00_probe_one(struct pci_dev *pdev, const struct pci_device_id *id)
 	rsp->rsp_q_in = &ha->iobase->isp24.rsp_q_in;
 	rsp->rsp_q_out = &ha->iobase->isp24.rsp_q_out;
 	if (ha->mqenable || IS_QLA83XX(ha) || IS_QLA27XX(ha) ||
-	    IS_QLA28XX(ha)) {
+	    IS_QLA28XX(ha) || IS_QLA29XX(ha)) {
 		req->req_q_in = &ha->mqiobase->isp25mq.req_q_in;
 		req->req_q_out = &ha->mqiobase->isp25mq.req_q_out;
 		rsp->rsp_q_in = &ha->mqiobase->isp25mq.rsp_q_in;
@@ -3898,7 +3940,7 @@ qla2x00_remove_one(struct pci_dev *pdev)
 		return;
 
 	if (IS_QLA25XX(ha) || IS_QLA2031(ha) || IS_QLA27XX(ha) ||
-	    IS_QLA28XX(ha)) {
+	    IS_QLA28XX(ha) || IS_QLA29XX(ha)) {
 		if (ha->flags.fw_started)
 			qla2x00_abort_isp_cleanup(base_vha);
 	} else if (!IS_QLAFX00(ha)) {
@@ -4387,7 +4429,7 @@ qla2x00_mem_alloc(struct qla_hw_data *ha, uint16_t req_len, uint16_t rsp_len,
 
 	/* Get consistent memory allocated for EX-INIT-CB. */
 	if (IS_CNA_CAPABLE(ha) || IS_QLA2031(ha) || IS_QLA27XX(ha) ||
-	    IS_QLA28XX(ha)) {
+	    IS_QLA28XX(ha) || IS_QLA29XX(ha)) {
 		ha->ex_init_cb = dma_pool_alloc(ha->s_dma_pool, GFP_KERNEL,
 		    &ha->ex_init_cb_dma);
 		if (!ha->ex_init_cb)
@@ -4397,7 +4439,7 @@ qla2x00_mem_alloc(struct qla_hw_data *ha, uint16_t req_len, uint16_t rsp_len,
 	}
 
 	/* Get consistent memory allocated for Special Features-CB. */
-	if (IS_QLA27XX(ha) || IS_QLA28XX(ha)) {
+	if (IS_QLA27XX(ha) || IS_QLA28XX(ha) || IS_QLA29XX(ha)) {
 		ha->sf_init_cb = dma_pool_zalloc(ha->s_dma_pool, GFP_KERNEL,
 						&ha->sf_init_cb_dma);
 		if (!ha->sf_init_cb)
@@ -8155,6 +8197,10 @@ static const struct pci_device_id qla2xxx_pci_tbl[] = {
 	{ PCI_DEVICE(PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP2281) },
 	{ PCI_DEVICE(PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP2089) },
 	{ PCI_DEVICE(PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP2289) },
+	{ PCI_DEVICE(PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP2099) },
+	{ PCI_DEVICE(PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP2299) },
+	{ PCI_DEVICE(PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP2091) },
+	{ PCI_DEVICE(PCI_VENDOR_ID_QLOGIC, PCI_DEVICE_ID_QLOGIC_ISP2291) },
 	{ 0 },
 };
 MODULE_DEVICE_TABLE(pci, qla2xxx_pci_tbl);
-- 
2.47.3


  reply	other threads:[~2026-07-07  5:55 UTC|newest]

Thread overview: 159+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-07  5:53 [PATCH v3 00/88] scsi: qla2xxx: Add QLA29xx series adapter support Nilesh Javali
2026-07-07  5:53 ` Nilesh Javali [this message]
2026-07-07  6:21   ` [PATCH v3 01/88] scsi: qla2xxx: Add 29xx series PCI device ID support sashiko-bot
2026-07-07  5:53 ` [PATCH v3 02/88] scsi: qla2xxx: Add flash read/write interface for 29xx Nilesh Javali
2026-07-07  8:24   ` sashiko-bot
2026-07-07  5:53 ` [PATCH v3 03/88] scsi: qla2xxx: Add NVRAM config support for 29xx adapters Nilesh Javali
2026-07-07  5:53 ` [PATCH v3 04/88] scsi: qla2xxx: Add 29xx support in queue initialisation path Nilesh Javali
2026-07-07  6:31   ` sashiko-bot
2026-07-07  5:53 ` [PATCH v3 05/88] scsi: qla2xxx: Add FC operational firmware load for 29xx Nilesh Javali
2026-07-07  6:17   ` sashiko-bot
2026-07-07  5:53 ` [PATCH v3 06/88] scsi: qla2xxx: Remove redundant VPD flash read in sysfs read path Nilesh Javali
2026-07-07  6:13   ` sashiko-bot
2026-07-07  5:53 ` [PATCH v3 07/88] scsi: qla2xxx: Add flash block read/write BSG support for 29xx Nilesh Javali
2026-07-07  6:21   ` sashiko-bot
2026-07-07  5:53 ` [PATCH v3 08/88] scsi: qla2xxx: Add BSG MPI firmware load/dump " Nilesh Javali
2026-07-07  6:13   ` sashiko-bot
2026-07-07  5:53 ` [PATCH v3 09/88] scsi: qla2xxx: Add 128-byte IOCB definitions " Nilesh Javali
2026-07-07  6:14   ` sashiko-bot
2026-07-07  5:53 ` [PATCH v3 10/88] scsi: qla2xxx: Add extended status continuation and marker IOCBs Nilesh Javali
2026-07-07  6:10   ` sashiko-bot
2026-07-07  5:53 ` [PATCH v3 11/88] scsi: qla2xxx: Update IO path to use 128-byte IOCBs for 29xx Nilesh Javali
2026-07-07 10:27   ` sashiko-bot
2026-07-07  5:53 ` [PATCH v3 12/88] scsi: qla2xxx: Skip image-set-valid attribute " Nilesh Javali
2026-07-07  6:12   ` sashiko-bot
2026-07-07  5:53 ` [PATCH v3 13/88] scsi: qla2xxx: Skip unsupported sysfs attributes " Nilesh Javali
2026-07-07  5:53 ` [PATCH v3 14/88] scsi: qla2xxx: Enable get_fw_version mailbox " Nilesh Javali
2026-07-07  6:12   ` sashiko-bot
2026-07-07  5:53 ` [PATCH v3 15/88] scsi: qla2xxx: Extend execute_fw mailbox to include 29xx Nilesh Javali
2026-07-07  6:23   ` sashiko-bot
2026-07-07  5:53 ` [PATCH v3 16/88] scsi: qla2xxx: Enable get_adapter_id mailbox for 29xx Nilesh Javali
2026-07-07  6:15   ` sashiko-bot
2026-07-07  5:53 ` [PATCH v3 17/88] scsi: qla2xxx: Enable init_firmware " Nilesh Javali
2026-07-07  5:53 ` [PATCH v3 18/88] scsi: qla2xxx: Enable get_firmware_state " Nilesh Javali
2026-07-07  6:15   ` sashiko-bot
2026-07-07  5:53 ` [PATCH v3 19/88] scsi: qla2xxx: Enable serdes, resource count and FCE trace " Nilesh Javali
2026-07-07  6:36   ` sashiko-bot
2026-07-07  5:53 ` [PATCH v3 20/88] scsi: qla2xxx: Enable set_els_cmds and echo_test " Nilesh Javali
2026-07-07  5:53 ` [PATCH v3 21/88] scsi: qla2xxx: Add support for QLA29XX in data rate functions Nilesh Javali
2026-07-07  5:53 ` [PATCH v3 22/88] scsi: qla2xxx: Enable qla2x00_shutdown for 29xx Nilesh Javali
2026-07-07  6:27   ` sashiko-bot
2026-07-07  5:53 ` [PATCH v3 23/88] scsi: qla2xxx: Use ring-slot helpers in __qla2x00_alloc_iocbs Nilesh Javali
2026-07-07  6:26   ` sashiko-bot
2026-07-07  5:53 ` [PATCH v3 24/88] scsi: qla2xxx: Add support for QLA29XX in memory allocation Nilesh Javali
2026-07-07  6:22   ` sashiko-bot
2026-07-07  5:53 ` [PATCH v3 25/88] scsi: qla2xxx: Handle sts_cont_entry_ext_t for 29xx adapters Nilesh Javali
2026-07-07  6:31   ` sashiko-bot
2026-07-07  5:53 ` [PATCH v3 26/88] scsi: qla2xxx: Update handling of status entries for 29xx series Nilesh Javali
2026-07-07  5:53 ` [PATCH v3 27/88] scsi: qla2xxx: Enhance ct_entry_24xx_ext iocb handling " Nilesh Javali
2026-07-07  6:40   ` sashiko-bot
2026-07-07  5:53 ` [PATCH v3 28/88] scsi: qla2xxx: Enhance purex_entry " Nilesh Javali
2026-07-07  6:35   ` sashiko-bot
2026-07-07  5:53 ` [PATCH v3 29/88] scsi: qla2xxx: Update handling of ELS IOCBs " Nilesh Javali
2026-07-07  6:35   ` sashiko-bot
2026-07-07  5:53 ` [PATCH v3 30/88] scsi: qla2xxx: Add size check for ELS status entry layout on 29xx Nilesh Javali
2026-07-07  6:31   ` sashiko-bot
2026-07-07  5:53 ` [PATCH v3 31/88] scsi: qla2xxx: Add 29xx extended logio IOCB support Nilesh Javali
2026-07-07  5:53 ` [PATCH v3 32/88] scsi: qla2xxx: Enhance task management IOCB handling for 29xx series Nilesh Javali
2026-07-07  5:53 ` [PATCH v3 33/88] scsi: qla2xxx: Add abort command " Nilesh Javali
2026-07-07  5:53 ` [PATCH v3 34/88] scsi: qla2xxx: Enhance ABTS processing " Nilesh Javali
2026-07-07  6:46   ` sashiko-bot
2026-07-07  5:53 ` [PATCH v3 35/88] scsi: qla2xxx: Update VP control IOCB handling " Nilesh Javali
2026-07-07  5:53 ` [PATCH v3 36/88] scsi: qla2xxx: Add build-time size check for VP config IOCB layout Nilesh Javali
2026-07-07  5:53 ` [PATCH v3 37/88] scsi: qla2xxx: Add size check for extended VP report ID entry Nilesh Javali
2026-07-07  6:46   ` sashiko-bot
2026-07-07  5:53 ` [PATCH v3 38/88] scsi: qla2xxx: Add LS4 pass-through IOCB handling for 29xx series Nilesh Javali
2026-07-07  6:45   ` sashiko-bot
2026-07-07  5:53 ` [PATCH v3 39/88] scsi: qla2xxx: Adjust feature gating in BSG paths for 29xx support Nilesh Javali
2026-07-07  6:48   ` sashiko-bot
2026-07-07  5:53 ` [PATCH v3 40/88] scsi: qla2xxx: Fix queue teardown NULL dma_free and bitmap locking Nilesh Javali
2026-07-07  6:50   ` sashiko-bot
2026-07-07  5:53 ` [PATCH v3 41/88] scsi: qla2xxx: Replace __le16 bitfields with scalar and accessors Nilesh Javali
2026-07-07  6:49   ` sashiko-bot
2026-07-07  5:53 ` [PATCH v3 42/88] scsi: qla2xxx: Fix endianness annotations in vp_rpt_id_entry structures Nilesh Javali
2026-07-07  5:53 ` [PATCH v3 43/88] scsi: qla2xxx: Use 64-bit FPM word counters for 29xx host stats Nilesh Javali
2026-07-07  6:49   ` sashiko-bot
2026-07-07  5:53 ` [PATCH v3 44/88] scsi: qla2xxx: Add 64G/128G port speed setting support Nilesh Javali
2026-07-07  6:52   ` sashiko-bot
2026-07-07  5:53 ` [PATCH v3 45/88] scsi: qla2xxx: Fix 64G link speed reporting in get_data_rate Nilesh Javali
2026-07-07  5:53 ` [PATCH v3 46/88] scsi: qla2xxx: edif: Fix NULL pointer deref in RX SA delete check Nilesh Javali
2026-07-07  7:09   ` sashiko-bot
2026-07-07  5:53 ` [PATCH v3 47/88] scsi: qla2xxx: Fix Name Server logout detection on FWI2 adapters Nilesh Javali
2026-07-07  6:53   ` sashiko-bot
2026-07-07  5:53 ` [PATCH v3 48/88] scsi: qla2xxx: Bound VP index against VP_CTRL IOCB bitmap size Nilesh Javali
2026-07-07  6:55   ` sashiko-bot
2026-07-07  5:53 ` [PATCH v3 49/88] scsi: qla2xxx: Check entry_status in qla24xx_modify_vp_config() Nilesh Javali
2026-07-07  6:54   ` sashiko-bot
2026-07-07  5:53 ` [PATCH v3 50/88] scsi: qla2xxx: Hold vport reference in qla24xx_report_id_acquisition() Nilesh Javali
2026-07-07  7:03   ` sashiko-bot
2026-07-07  5:53 ` [PATCH v3 51/88] scsi: qla2xxx: Initialize NVMe abort_work once at submission Nilesh Javali
2026-07-07  7:00   ` sashiko-bot
2026-07-07  5:53 ` [PATCH v3 52/88] scsi: qla2xxx: Hold qpair lock when sending NVMe LS reject Nilesh Javali
2026-07-07  7:07   ` sashiko-bot
2026-07-07  5:54 ` [PATCH v3 53/88] scsi: qla2xxx: Zero dport diagnostics buffer to avoid info leak Nilesh Javali
2026-07-07  7:06   ` sashiko-bot
2026-07-07  5:54 ` [PATCH v3 54/88] scsi: qla2xxx: Fix BSG job leak on validate flash image error path Nilesh Javali
2026-07-07  7:03   ` sashiko-bot
2026-07-07  5:54 ` [PATCH v3 55/88] scsi: qla2xxx: Bound image count in qla2x00_update_fru_versions() Nilesh Javali
2026-07-07  7:05   ` sashiko-bot
2026-07-07  5:54 ` [PATCH v3 56/88] scsi: qla2xxx: Clamp MSI-X derived queue counts to avoid truncation Nilesh Javali
2026-07-07  7:06   ` sashiko-bot
2026-07-07  5:54 ` [PATCH v3 57/88] scsi: qla2xxx: Improve firmware dump data capture Nilesh Javali
2026-07-07  7:18   ` sashiko-bot
2026-07-07  5:54 ` [PATCH v3 58/88] scsi: qla2xxx: Serialize flash version read in reset handler Nilesh Javali
2026-07-07  5:54 ` [PATCH v3 59/88] scsi: qla2xxx: Fix use-after-free of qpair work on queue teardown Nilesh Javali
2026-07-07  7:08   ` sashiko-bot
2026-07-07  5:54 ` [PATCH v3 60/88] scsi: qla2xxx: Clarify MPI optrom address/length units Nilesh Javali
2026-07-07  5:54 ` [PATCH v3 61/88] scsi: qla2xxx: Fix cs84xx use-after-free on host teardown Nilesh Javali
2026-07-07  7:11   ` sashiko-bot
2026-07-07  5:54 ` [PATCH v3 62/88] scsi: qla2xxx: Don't query firmware state while chip is down Nilesh Javali
2026-07-07  7:03   ` sashiko-bot
2026-07-07  5:54 ` [PATCH v3 63/88] scsi: qla2xxx: Zero mailbox struct in qla2x00_get_firmware_state() Nilesh Javali
2026-07-07  7:18   ` sashiko-bot
2026-07-07  5:54 ` [PATCH v3 64/88] scsi: qla2xxx: Fix FCE trace enable parsing in debugfs Nilesh Javali
2026-07-07  7:11   ` sashiko-bot
2026-07-07  5:54 ` [PATCH v3 65/88] scsi: qla2xxx: Fix FCE trace use-after-free during firmware dump Nilesh Javali
2026-07-07  7:25   ` sashiko-bot
2026-07-07  5:54 ` [PATCH v3 66/88] scsi: qla2xxx: Use memset_io() to clear QLAFX00 request ring slot Nilesh Javali
2026-07-07  7:26   ` sashiko-bot
2026-07-07  5:54 ` [PATCH v3 67/88] scsi: qla2xxx: Null out freed pointers in qla2x00_mem_alloc() error path Nilesh Javali
2026-07-07  7:25   ` sashiko-bot
2026-07-07  5:54 ` [PATCH v3 68/88] scsi: qla2xxx: Fix response queue over-consumption in __qla_consume_iocb() Nilesh Javali
2026-07-07  5:54 ` [PATCH v3 69/88] scsi: qla2xxx: Fix soft lockup polling continuation IOCB signature Nilesh Javali
2026-07-07  7:19   ` sashiko-bot
2026-07-07  5:54 ` [PATCH v3 70/88] scsi: qla2xxx: Bound rsp_info_len to avoid OOB sense-data read Nilesh Javali
2026-07-07  7:24   ` sashiko-bot
2026-07-07  5:54 ` [PATCH v3 71/88] scsi: qla2xxx: Avoid req_q_map double-read in qla2x00_error_entry() Nilesh Javali
2026-07-07  7:21   ` sashiko-bot
2026-07-07  5:54 ` [PATCH v3 72/88] scsi: qla2xxx: Quiesce response IRQ before freeing request queue Nilesh Javali
2026-07-07  7:22   ` sashiko-bot
2026-07-07  5:54 ` [PATCH v3 73/88] scsi: qla2xxx: Reject non-SCSI SRB on status IOCB fast path Nilesh Javali
2026-07-07  5:54 ` [PATCH v3 74/88] scsi: qla2xxx: Clamp max_npiv_vports to VP_CTRL bitmap capacity Nilesh Javali
2026-07-07  7:34   ` sashiko-bot
2026-07-07  5:54 ` [PATCH v3 75/88] scsi: qla2xxx: Avoid double completion in async IOCB timeout Nilesh Javali
2026-07-07  7:37   ` sashiko-bot
2026-07-07  5:54 ` [PATCH v3 76/88] scsi: qla2xxx: Skip vport under deletion in report ID acquisition Nilesh Javali
2026-07-07  7:27   ` sashiko-bot
2026-07-07  5:54 ` [PATCH v3 77/88] scsi: qla2xxx: Drop vport reference under lock " Nilesh Javali
2026-07-07  7:33   ` sashiko-bot
2026-07-07  5:54 ` [PATCH v3 78/88] scsi: qla2xxx: Hold vport_slock for host map update " Nilesh Javali
2026-07-07  7:28   ` sashiko-bot
2026-07-07  5:54 ` [PATCH v3 79/88] scsi: qla2xxx: Fix NVMe abort reference leak on repeated abort Nilesh Javali
2026-07-07  7:27   ` sashiko-bot
2026-07-07  5:54 ` [PATCH v3 80/88] scsi: qla2xxx: Skip NVMe LS reject IOCB when FW not started Nilesh Javali
2026-07-07  7:38   ` sashiko-bot
2026-07-07  5:54 ` [PATCH v3 81/88] scsi: qla2xxx: Unlink NVMe unsol ctx before freeing on LS reject error Nilesh Javali
2026-07-07  7:34   ` sashiko-bot
2026-07-07  5:54 ` [PATCH v3 82/88] scsi: qla2xxx: Serialize NVMe unsol ctx list with a per-fcport lock Nilesh Javali
2026-07-07  7:38   ` sashiko-bot
2026-07-07  5:54 ` [PATCH v3 83/88] scsi: qla2xxx: Use coherent DMA buffer for D_Port diagnostics Nilesh Javali
2026-07-07  7:34   ` sashiko-bot
2026-07-07  5:54 ` [PATCH v3 84/88] scsi: qla2xxx: Zero-init bsg stack buffers to avoid info leak Nilesh Javali
2026-07-07  7:37   ` sashiko-bot
2026-07-07  5:54 ` [PATCH v3 85/88] scsi: qla2xxx: Validate BSG request_len before reading vendor_cmd[] Nilesh Javali
2026-07-07  7:46   ` sashiko-bot
2026-07-07  5:54 ` [PATCH v3 86/88] scsi: qla2xxx: Zero SFP DMA buffer in FRU/I2C bsg handlers Nilesh Javali
2026-07-07  7:38   ` sashiko-bot
2026-07-07  5:54 ` [PATCH v3 87/88] scsi: qla2xxx: Bound i2c->length in I2C " Nilesh Javali
2026-07-07  5:54 ` [PATCH v3 88/88] scsi: qla2xxx: Update version to 12.00.00.2607b1 Nilesh Javali
2026-07-07  7:35   ` sashiko-bot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260707055435.2680300-2-njavali@marvell.com \
    --to=njavali@marvell.com \
    --cc=GR-FC-Storage-Upstream@marvell.com \
    --cc=agurumurthy@marvell.com \
    --cc=emilne@redhat.com \
    --cc=hare@suse.com \
    --cc=jmeneghi@redhat.com \
    --cc=linux-scsi@vger.kernel.org \
    --cc=martin.petersen@oracle.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox