* [PATCH 0/2] qla2xxx: Couple bug fixes for FC-NVMe
@ 2017-10-13 22:43 Madhani, Madhani
2017-10-13 22:43 ` [PATCH 1/2] qla2xxx: Use ql2xnvmeenable to enable Q-Pair " Madhani, Madhani
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: Madhani, Madhani @ 2017-10-13 22:43 UTC (permalink / raw)
To: James.Bottomley, martin.petersen; +Cc: himanshu.madhani, linux-scsi
From: Himanshu Madhani <himanshu.madhani@cavium.com>
Hi Martin,
This series has couple bug fixes for FC-NVMe code path. Please apply
them to 4.15/scsi-queue at your earliest convenience.
Thanks,
Himanshu
Giridhar Malavali (1):
qla2xxx: Query FC4 type during RSCN processing
Himanshu Madhani (1):
qla2xxx: Use ql2xnvmeenable to enable Q-Pair for FC-NVMe
drivers/scsi/qla2xxx/qla_init.c | 2 +-
drivers/scsi/qla2xxx/qla_isr.c | 2 +-
drivers/scsi/qla2xxx/qla_mid.c | 2 +-
drivers/scsi/qla2xxx/qla_os.c | 29 +++++++++++++++++++----------
4 files changed, 22 insertions(+), 13 deletions(-)
--
2.12.0
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 1/2] qla2xxx: Use ql2xnvmeenable to enable Q-Pair for FC-NVMe
2017-10-13 22:43 [PATCH 0/2] qla2xxx: Couple bug fixes for FC-NVMe Madhani, Madhani
@ 2017-10-13 22:43 ` Madhani, Madhani
2017-10-16 17:24 ` Ewan D. Milne
2017-10-13 22:43 ` [PATCH 2/2] qla2xxx: Query FC4 type during RSCN processing Madhani, Madhani
2017-10-17 3:09 ` [PATCH 0/2] qla2xxx: Couple bug fixes for FC-NVMe Martin K. Petersen
2 siblings, 1 reply; 6+ messages in thread
From: Madhani, Madhani @ 2017-10-13 22:43 UTC (permalink / raw)
To: James.Bottomley, martin.petersen; +Cc: himanshu.madhani, linux-scsi
From: Himanshu Madhani <himanshu.madhani@cavium.com>
In some env, user can choose to not enable SCSI-MQ but wants
to use FC-NVMe feature of the driver. Since driver relies on
Q-Pairs to allocate FC-NVMe resources, use existing module
parameter to create Q-Pairs when FC-NVMe is enabled.
Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com>
---
drivers/scsi/qla2xxx/qla_init.c | 2 +-
drivers/scsi/qla2xxx/qla_isr.c | 2 +-
drivers/scsi/qla2xxx/qla_mid.c | 2 +-
drivers/scsi/qla2xxx/qla_os.c | 27 ++++++++++++++++++---------
4 files changed, 21 insertions(+), 12 deletions(-)
diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c
index b2a391f93775..9752ac4c1003 100644
--- a/drivers/scsi/qla2xxx/qla_init.c
+++ b/drivers/scsi/qla2xxx/qla_init.c
@@ -8036,7 +8036,7 @@ struct qla_qpair *qla2xxx_create_qpair(struct scsi_qla_host *vha, int qos,
return NULL;
}
- if (ql2xmqsupport) {
+ if (ql2xmqsupport || ql2xnvmeenable) {
qpair = kzalloc(sizeof(struct qla_qpair), GFP_KERNEL);
if (qpair == NULL) {
ql_log(ql_log_warn, vha, 0x0182,
diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c
index d06a1a809188..bdaa4d644424 100644
--- a/drivers/scsi/qla2xxx/qla_isr.c
+++ b/drivers/scsi/qla2xxx/qla_isr.c
@@ -3411,7 +3411,7 @@ qla24xx_enable_msix(struct qla_hw_data *ha, struct rsp_que *rsp)
ha->msix_count, ret);
ha->msix_count = ret;
/* Recalculate queue values */
- if (ha->mqiobase && ql2xmqsupport) {
+ if (ha->mqiobase && (ql2xmqsupport || ql2xnvmeenable)) {
ha->max_req_queues = ha->msix_count - 1;
/* ATIOQ needs 1 vector. That's 1 less QPair */
diff --git a/drivers/scsi/qla2xxx/qla_mid.c b/drivers/scsi/qla2xxx/qla_mid.c
index c0f8f6c17b79..3630bb66a74c 100644
--- a/drivers/scsi/qla2xxx/qla_mid.c
+++ b/drivers/scsi/qla2xxx/qla_mid.c
@@ -606,7 +606,7 @@ qla25xx_delete_queues(struct scsi_qla_host *vha)
struct qla_hw_data *ha = vha->hw;
struct qla_qpair *qpair, *tqpair;
- if (ql2xmqsupport) {
+ if (ql2xmqsupport || ql2xnvmeenable) {
list_for_each_entry_safe(qpair, tqpair, &vha->qp_list,
qp_list_elem)
qla2xxx_delete_qpair(vha, qpair);
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c
index cb719345aa0d..0cfce0486b70 100644
--- a/drivers/scsi/qla2xxx/qla_os.c
+++ b/drivers/scsi/qla2xxx/qla_os.c
@@ -433,7 +433,7 @@ static int qla2x00_alloc_queues(struct qla_hw_data *ha, struct req_que *req,
qla_init_base_qpair(vha, req, rsp);
- if (ql2xmqsupport && ha->max_qpairs) {
+ if ((ql2xmqsupport || ql2xnvmeenable) && ha->max_qpairs) {
ha->queue_pair_map = kcalloc(ha->max_qpairs, sizeof(struct qla_qpair *),
GFP_KERNEL);
if (!ha->queue_pair_map) {
@@ -1976,7 +1976,8 @@ qla2x00_iospace_config(struct qla_hw_data *ha)
/* Determine queue resources */
ha->max_req_queues = ha->max_rsp_queues = 1;
ha->msix_count = QLA_BASE_VECTORS;
- if (!ql2xmqsupport || (!IS_QLA25XX(ha) && !IS_QLA81XX(ha)))
+ if (!ql2xmqsupport || !ql2xnvmeenable ||
+ (!IS_QLA25XX(ha) && !IS_QLA81XX(ha)))
goto mqiobase_exit;
ha->mqiobase = ioremap(pci_resource_start(ha->pdev, 3),
@@ -2073,7 +2074,7 @@ qla83xx_iospace_config(struct qla_hw_data *ha)
* By default, driver uses at least two msix vectors
* (default & rspq)
*/
- if (ql2xmqsupport) {
+ if (ql2xmqsupport || ql2xnvmeenable) {
/* MB interrupt uses 1 vector */
ha->max_req_queues = ha->msix_count - 1;
@@ -3089,9 +3090,17 @@ qla2x00_probe_one(struct pci_dev *pdev, const struct pci_device_id *id)
ql_dbg(ql_dbg_init, base_vha, 0x0192,
"blk/scsi-mq enabled, HW queues = %d.\n", host->nr_hw_queues);
- } else
- ql_dbg(ql_dbg_init, base_vha, 0x0193,
- "blk/scsi-mq disabled.\n");
+ } else {
+ if (ql2xnvmeenable) {
+ host->nr_hw_queues = ha->max_qpairs;
+ ql_dbg(ql_dbg_init, base_vha, 0x0194,
+ "FC-NVMe support is enabled, HW queues=%d\n",
+ host->nr_hw_queues);
+ } else {
+ ql_dbg(ql_dbg_init, base_vha, 0x0193,
+ "blk/scsi-mq disabled.\n");
+ }
+ }
qlt_probe_one_stage1(base_vha, ha);
@@ -6301,7 +6310,7 @@ qla2xxx_pci_error_detected(struct pci_dev *pdev, pci_channel_state_t state)
switch (state) {
case pci_channel_io_normal:
ha->flags.eeh_busy = 0;
- if (ql2xmqsupport) {
+ if (ql2xmqsupport || ql2xnvmeenable) {
set_bit(QPAIR_ONLINE_CHECK_NEEDED, &vha->dpc_flags);
qla2xxx_wake_dpc(vha);
}
@@ -6318,7 +6327,7 @@ qla2xxx_pci_error_detected(struct pci_dev *pdev, pci_channel_state_t state)
pci_disable_device(pdev);
/* Return back all IOs */
qla2x00_abort_all_cmds(vha, DID_RESET << 16);
- if (ql2xmqsupport) {
+ if (ql2xmqsupport || ql2xnvmeenable) {
set_bit(QPAIR_ONLINE_CHECK_NEEDED, &vha->dpc_flags);
qla2xxx_wake_dpc(vha);
}
@@ -6326,7 +6335,7 @@ qla2xxx_pci_error_detected(struct pci_dev *pdev, pci_channel_state_t state)
case pci_channel_io_perm_failure:
ha->flags.pci_channel_io_perm_failure = 1;
qla2x00_abort_all_cmds(vha, DID_NO_CONNECT << 16);
- if (ql2xmqsupport) {
+ if (ql2xmqsupport || ql2xnvmeenable) {
set_bit(QPAIR_ONLINE_CHECK_NEEDED, &vha->dpc_flags);
qla2xxx_wake_dpc(vha);
}
--
2.12.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 2/2] qla2xxx: Query FC4 type during RSCN processing
2017-10-13 22:43 [PATCH 0/2] qla2xxx: Couple bug fixes for FC-NVMe Madhani, Madhani
2017-10-13 22:43 ` [PATCH 1/2] qla2xxx: Use ql2xnvmeenable to enable Q-Pair " Madhani, Madhani
@ 2017-10-13 22:43 ` Madhani, Madhani
2017-10-17 3:09 ` [PATCH 0/2] qla2xxx: Couple bug fixes for FC-NVMe Martin K. Petersen
2 siblings, 0 replies; 6+ messages in thread
From: Madhani, Madhani @ 2017-10-13 22:43 UTC (permalink / raw)
To: James.Bottomley, martin.petersen; +Cc: himanshu.madhani, linux-scsi
From: Giridhar Malavali <giridhar.malavali@cavium.com>
Based on the FC4 type, login will proceed to either
FCP or FC-NVMe remote ports.
Signed-off-by: Giridhar Malavali <giridhar.malavali@cavium.com>
Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com>
---
drivers/scsi/qla2xxx/qla_os.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c
index 0cfce0486b70..4b9a7f1711c7 100644
--- a/drivers/scsi/qla2xxx/qla_os.c
+++ b/drivers/scsi/qla2xxx/qla_os.c
@@ -4762,7 +4762,7 @@ void qla24xx_create_new_sess(struct scsi_qla_host *vha, struct qla_work_evt *e)
if (pla)
qlt_plogi_ack_unref(vha, pla);
else
- qla24xx_async_gnl(vha, fcport);
+ qla24xx_async_gffid(vha, fcport);
}
if (free_fcport) {
--
2.12.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 1/2] qla2xxx: Use ql2xnvmeenable to enable Q-Pair for FC-NVMe
2017-10-13 22:43 ` [PATCH 1/2] qla2xxx: Use ql2xnvmeenable to enable Q-Pair " Madhani, Madhani
@ 2017-10-16 17:24 ` Ewan D. Milne
0 siblings, 0 replies; 6+ messages in thread
From: Ewan D. Milne @ 2017-10-16 17:24 UTC (permalink / raw)
To: Madhani, Madhani; +Cc: James.Bottomley, martin.petersen, linux-scsi
On Fri, 2017-10-13 at 15:43 -0700, Madhani, Madhani wrote:
> From: Himanshu Madhani <himanshu.madhani@cavium.com>
>
> In some env, user can choose to not enable SCSI-MQ but wants
> to use FC-NVMe feature of the driver. Since driver relies on
> Q-Pairs to allocate FC-NVMe resources, use existing module
> parameter to create Q-Pairs when FC-NVMe is enabled.
>
> Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com>
> ---
> drivers/scsi/qla2xxx/qla_init.c | 2 +-
> drivers/scsi/qla2xxx/qla_isr.c | 2 +-
> drivers/scsi/qla2xxx/qla_mid.c | 2 +-
> drivers/scsi/qla2xxx/qla_os.c | 27 ++++++++++++++++++---------
> 4 files changed, 21 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c
> index b2a391f93775..9752ac4c1003 100644
> --- a/drivers/scsi/qla2xxx/qla_init.c
> +++ b/drivers/scsi/qla2xxx/qla_init.c
> @@ -8036,7 +8036,7 @@ struct qla_qpair *qla2xxx_create_qpair(struct scsi_qla_host *vha, int qos,
> return NULL;
> }
>
> - if (ql2xmqsupport) {
> + if (ql2xmqsupport || ql2xnvmeenable) {
> qpair = kzalloc(sizeof(struct qla_qpair), GFP_KERNEL);
> if (qpair == NULL) {
> ql_log(ql_log_warn, vha, 0x0182,
> diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c
> index d06a1a809188..bdaa4d644424 100644
> --- a/drivers/scsi/qla2xxx/qla_isr.c
> +++ b/drivers/scsi/qla2xxx/qla_isr.c
> @@ -3411,7 +3411,7 @@ qla24xx_enable_msix(struct qla_hw_data *ha, struct rsp_que *rsp)
> ha->msix_count, ret);
> ha->msix_count = ret;
> /* Recalculate queue values */
> - if (ha->mqiobase && ql2xmqsupport) {
> + if (ha->mqiobase && (ql2xmqsupport || ql2xnvmeenable)) {
> ha->max_req_queues = ha->msix_count - 1;
>
> /* ATIOQ needs 1 vector. That's 1 less QPair */
> diff --git a/drivers/scsi/qla2xxx/qla_mid.c b/drivers/scsi/qla2xxx/qla_mid.c
> index c0f8f6c17b79..3630bb66a74c 100644
> --- a/drivers/scsi/qla2xxx/qla_mid.c
> +++ b/drivers/scsi/qla2xxx/qla_mid.c
> @@ -606,7 +606,7 @@ qla25xx_delete_queues(struct scsi_qla_host *vha)
> struct qla_hw_data *ha = vha->hw;
> struct qla_qpair *qpair, *tqpair;
>
> - if (ql2xmqsupport) {
> + if (ql2xmqsupport || ql2xnvmeenable) {
> list_for_each_entry_safe(qpair, tqpair, &vha->qp_list,
> qp_list_elem)
> qla2xxx_delete_qpair(vha, qpair);
> diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c
> index cb719345aa0d..0cfce0486b70 100644
> --- a/drivers/scsi/qla2xxx/qla_os.c
> +++ b/drivers/scsi/qla2xxx/qla_os.c
> @@ -433,7 +433,7 @@ static int qla2x00_alloc_queues(struct qla_hw_data *ha, struct req_que *req,
>
> qla_init_base_qpair(vha, req, rsp);
>
> - if (ql2xmqsupport && ha->max_qpairs) {
> + if ((ql2xmqsupport || ql2xnvmeenable) && ha->max_qpairs) {
> ha->queue_pair_map = kcalloc(ha->max_qpairs, sizeof(struct qla_qpair *),
> GFP_KERNEL);
> if (!ha->queue_pair_map) {
> @@ -1976,7 +1976,8 @@ qla2x00_iospace_config(struct qla_hw_data *ha)
> /* Determine queue resources */
> ha->max_req_queues = ha->max_rsp_queues = 1;
> ha->msix_count = QLA_BASE_VECTORS;
> - if (!ql2xmqsupport || (!IS_QLA25XX(ha) && !IS_QLA81XX(ha)))
> + if (!ql2xmqsupport || !ql2xnvmeenable ||
> + (!IS_QLA25XX(ha) && !IS_QLA81XX(ha)))
> goto mqiobase_exit;
>
> ha->mqiobase = ioremap(pci_resource_start(ha->pdev, 3),
> @@ -2073,7 +2074,7 @@ qla83xx_iospace_config(struct qla_hw_data *ha)
> * By default, driver uses at least two msix vectors
> * (default & rspq)
> */
> - if (ql2xmqsupport) {
> + if (ql2xmqsupport || ql2xnvmeenable) {
> /* MB interrupt uses 1 vector */
> ha->max_req_queues = ha->msix_count - 1;
>
> @@ -3089,9 +3090,17 @@ qla2x00_probe_one(struct pci_dev *pdev, const struct pci_device_id *id)
>
> ql_dbg(ql_dbg_init, base_vha, 0x0192,
> "blk/scsi-mq enabled, HW queues = %d.\n", host->nr_hw_queues);
> - } else
> - ql_dbg(ql_dbg_init, base_vha, 0x0193,
> - "blk/scsi-mq disabled.\n");
> + } else {
> + if (ql2xnvmeenable) {
> + host->nr_hw_queues = ha->max_qpairs;
> + ql_dbg(ql_dbg_init, base_vha, 0x0194,
> + "FC-NVMe support is enabled, HW queues=%d\n",
> + host->nr_hw_queues);
> + } else {
> + ql_dbg(ql_dbg_init, base_vha, 0x0193,
> + "blk/scsi-mq disabled.\n");
> + }
> + }
>
> qlt_probe_one_stage1(base_vha, ha);
>
> @@ -6301,7 +6310,7 @@ qla2xxx_pci_error_detected(struct pci_dev *pdev, pci_channel_state_t state)
> switch (state) {
> case pci_channel_io_normal:
> ha->flags.eeh_busy = 0;
> - if (ql2xmqsupport) {
> + if (ql2xmqsupport || ql2xnvmeenable) {
> set_bit(QPAIR_ONLINE_CHECK_NEEDED, &vha->dpc_flags);
> qla2xxx_wake_dpc(vha);
> }
> @@ -6318,7 +6327,7 @@ qla2xxx_pci_error_detected(struct pci_dev *pdev, pci_channel_state_t state)
> pci_disable_device(pdev);
> /* Return back all IOs */
> qla2x00_abort_all_cmds(vha, DID_RESET << 16);
> - if (ql2xmqsupport) {
> + if (ql2xmqsupport || ql2xnvmeenable) {
> set_bit(QPAIR_ONLINE_CHECK_NEEDED, &vha->dpc_flags);
> qla2xxx_wake_dpc(vha);
> }
> @@ -6326,7 +6335,7 @@ qla2xxx_pci_error_detected(struct pci_dev *pdev, pci_channel_state_t state)
> case pci_channel_io_perm_failure:
> ha->flags.pci_channel_io_perm_failure = 1;
> qla2x00_abort_all_cmds(vha, DID_NO_CONNECT << 16);
> - if (ql2xmqsupport) {
> + if (ql2xmqsupport || ql2xnvmeenable) {
> set_bit(QPAIR_ONLINE_CHECK_NEEDED, &vha->dpc_flags);
> qla2xxx_wake_dpc(vha);
> }
Reviewed-by: Ewan D. Milne <emilne@redhat.com>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 0/2] qla2xxx: Couple bug fixes for FC-NVMe
2017-10-13 22:43 [PATCH 0/2] qla2xxx: Couple bug fixes for FC-NVMe Madhani, Madhani
2017-10-13 22:43 ` [PATCH 1/2] qla2xxx: Use ql2xnvmeenable to enable Q-Pair " Madhani, Madhani
2017-10-13 22:43 ` [PATCH 2/2] qla2xxx: Query FC4 type during RSCN processing Madhani, Madhani
@ 2017-10-17 3:09 ` Martin K. Petersen
2017-10-26 3:47 ` Madhani, Himanshu
2 siblings, 1 reply; 6+ messages in thread
From: Martin K. Petersen @ 2017-10-17 3:09 UTC (permalink / raw)
To: Madhani, Madhani; +Cc: James.Bottomley, martin.petersen, linux-scsi
Himanshu,
> This series has couple bug fixes for FC-NVMe code path. Please apply
> them to 4.15/scsi-queue at your earliest convenience.
Applied to 4.15/scsi-queue.
PS. You send email as "Madhani, Madhani".
--
Martin K. Petersen Oracle Linux Engineering
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 0/2] qla2xxx: Couple bug fixes for FC-NVMe
2017-10-17 3:09 ` [PATCH 0/2] qla2xxx: Couple bug fixes for FC-NVMe Martin K. Petersen
@ 2017-10-26 3:47 ` Madhani, Himanshu
0 siblings, 0 replies; 6+ messages in thread
From: Madhani, Himanshu @ 2017-10-26 3:47 UTC (permalink / raw)
To: Martin K. Petersen
Cc: James.Bottomley@HansenPartnership.com, linux-scsi@vger.kernel.org
Hi Martin,
> On Oct 16, 2017, at 8:09 PM, Martin K. Petersen <martin.petersen@oracle.com> wrote:
>
>
> Himanshu,
>
>> This series has couple bug fixes for FC-NVMe code path. Please apply
>> them to 4.15/scsi-queue at your earliest convenience.
>
> Applied to 4.15/scsi-queue.
>
> PS. You send email as "Madhani, Madhani”.
>
Looks like script mess-up. Will clean it up.
> --
> Martin K. Petersen Oracle Linux Engineering
Thanks,
- Himanshu
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2017-10-26 3:47 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-10-13 22:43 [PATCH 0/2] qla2xxx: Couple bug fixes for FC-NVMe Madhani, Madhani
2017-10-13 22:43 ` [PATCH 1/2] qla2xxx: Use ql2xnvmeenable to enable Q-Pair " Madhani, Madhani
2017-10-16 17:24 ` Ewan D. Milne
2017-10-13 22:43 ` [PATCH 2/2] qla2xxx: Query FC4 type during RSCN processing Madhani, Madhani
2017-10-17 3:09 ` [PATCH 0/2] qla2xxx: Couple bug fixes for FC-NVMe Martin K. Petersen
2017-10-26 3:47 ` Madhani, Himanshu
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).