diff options
author | Thomas Bogendoerfer <tbogendoerfer@suse.de> | 2017-07-25 05:19:21 -0400 |
---|---|---|
committer | Martin K. Petersen <martin.petersen@oracle.com> | 2017-07-26 22:00:39 -0400 |
commit | 722477c4f2c50bc8d800d293a3bc5aa843f16e8d (patch) | |
tree | 05d8334dab8330b5a2febc257958a71640c04086 /drivers/scsi/qedf | |
parent | f9f22a86912f9d36b50e9b3b383fabfb9f22dd46 (diff) |
scsi: qedf: Limit number of CQs
FCOE offloading failed with:
[qed_sp_fcoe_func_start:150(sp-0-3b:00.02)]Cannot satisfy CQ amount. CQs
requested 8, CQs available 6. Aborting function start
[qed_fcoe_start:821()]Failed to start fcoe
[__qedf_probe:3041]:6: Cannot start FCoE function.
The reason is a newly introduced check in the qed main part. This change
also provides the information about how many CQs are available, so we
simply limit the number of requested CQs..
Fixes: 3c5da9427802 ("qed: Share additional information with qedf")
Signed-off-by: Thomas Bogendoerfer <tbogendoerfer@suse.de>
Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
Acked-by: Chad Dupuis <chad.dupuis@cavium.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Diffstat (limited to 'drivers/scsi/qedf')
-rw-r--r-- | drivers/scsi/qedf/qedf.h | 3 | ||||
-rw-r--r-- | drivers/scsi/qedf/qedf_main.c | 20 |
2 files changed, 11 insertions, 12 deletions
diff --git a/drivers/scsi/qedf/qedf.h b/drivers/scsi/qedf/qedf.h index 4d038926a455..351f06dfc5a0 100644 --- a/drivers/scsi/qedf/qedf.h +++ b/drivers/scsi/qedf/qedf.h | |||
@@ -528,7 +528,8 @@ struct fip_vlan { | |||
528 | #define QEDF_WRITE (1 << 0) | 528 | #define QEDF_WRITE (1 << 0) |
529 | #define MAX_FIBRE_LUNS 0xffffffff | 529 | #define MAX_FIBRE_LUNS 0xffffffff |
530 | 530 | ||
531 | #define QEDF_MAX_NUM_CQS 8 | 531 | #define MIN_NUM_CPUS_MSIX(x) min_t(u32, x->dev_info.num_cqs, \ |
532 | num_online_cpus()) | ||
532 | 533 | ||
533 | /* | 534 | /* |
534 | * PCI function probe defines | 535 | * PCI function probe defines |
diff --git a/drivers/scsi/qedf/qedf_main.c b/drivers/scsi/qedf/qedf_main.c index 7786c97e033f..1d13c9ca517d 100644 --- a/drivers/scsi/qedf/qedf_main.c +++ b/drivers/scsi/qedf/qedf_main.c | |||
@@ -2760,11 +2760,9 @@ static int qedf_set_fcoe_pf_param(struct qedf_ctx *qedf) | |||
2760 | * we allocation is the minimum off: | 2760 | * we allocation is the minimum off: |
2761 | * | 2761 | * |
2762 | * Number of CPUs | 2762 | * Number of CPUs |
2763 | * Number of MSI-X vectors | 2763 | * Number allocated by qed for our PCI function |
2764 | * Max number allocated in hardware (QEDF_MAX_NUM_CQS) | ||
2765 | */ | 2764 | */ |
2766 | qedf->num_queues = min((unsigned int)QEDF_MAX_NUM_CQS, | 2765 | qedf->num_queues = MIN_NUM_CPUS_MSIX(qedf); |
2767 | num_online_cpus()); | ||
2768 | 2766 | ||
2769 | QEDF_INFO(&(qedf->dbg_ctx), QEDF_LOG_DISC, "Number of CQs is %d.\n", | 2767 | QEDF_INFO(&(qedf->dbg_ctx), QEDF_LOG_DISC, "Number of CQs is %d.\n", |
2770 | qedf->num_queues); | 2768 | qedf->num_queues); |
@@ -2962,6 +2960,13 @@ static int __qedf_probe(struct pci_dev *pdev, int mode) | |||
2962 | goto err1; | 2960 | goto err1; |
2963 | } | 2961 | } |
2964 | 2962 | ||
2963 | /* Learn information crucial for qedf to progress */ | ||
2964 | rc = qed_ops->fill_dev_info(qedf->cdev, &qedf->dev_info); | ||
2965 | if (rc) { | ||
2966 | QEDF_ERR(&(qedf->dbg_ctx), "Failed to dev info.\n"); | ||
2967 | goto err1; | ||
2968 | } | ||
2969 | |||
2965 | /* queue allocation code should come here | 2970 | /* queue allocation code should come here |
2966 | * order should be | 2971 | * order should be |
2967 | * slowpath_start | 2972 | * slowpath_start |
@@ -2977,13 +2982,6 @@ static int __qedf_probe(struct pci_dev *pdev, int mode) | |||
2977 | } | 2982 | } |
2978 | qed_ops->common->update_pf_params(qedf->cdev, &qedf->pf_params); | 2983 | qed_ops->common->update_pf_params(qedf->cdev, &qedf->pf_params); |
2979 | 2984 | ||
2980 | /* Learn information crucial for qedf to progress */ | ||
2981 | rc = qed_ops->fill_dev_info(qedf->cdev, &qedf->dev_info); | ||
2982 | if (rc) { | ||
2983 | QEDF_ERR(&(qedf->dbg_ctx), "Failed to dev info.\n"); | ||
2984 | goto err1; | ||
2985 | } | ||
2986 | |||
2987 | /* Record BDQ producer doorbell addresses */ | 2985 | /* Record BDQ producer doorbell addresses */ |
2988 | qedf->bdq_primary_prod = qedf->dev_info.primary_dbq_rq_addr; | 2986 | qedf->bdq_primary_prod = qedf->dev_info.primary_dbq_rq_addr; |
2989 | qedf->bdq_secondary_prod = qedf->dev_info.secondary_bdq_rq_addr; | 2987 | qedf->bdq_secondary_prod = qedf->dev_info.secondary_bdq_rq_addr; |