|
@@ -2923,27 +2923,22 @@ qla24xx_enable_msix(struct qla_hw_data *ha, struct rsp_que *rsp)
|
|
|
for (i = 0; i < ha->msix_count; i++)
|
|
|
entries[i].entry = i;
|
|
|
|
|
|
- ret = pci_enable_msix(ha->pdev, entries, ha->msix_count);
|
|
|
- if (ret) {
|
|
|
- if (ret < MIN_MSIX_COUNT)
|
|
|
- goto msix_failed;
|
|
|
-
|
|
|
+ ret = pci_enable_msix_range(ha->pdev,
|
|
|
+ entries, MIN_MSIX_COUNT, ha->msix_count);
|
|
|
+ if (ret < 0) {
|
|
|
+ ql_log(ql_log_fatal, vha, 0x00c7,
|
|
|
+ "MSI-X: Failed to enable support, "
|
|
|
+ "giving up -- %d/%d.\n",
|
|
|
+ ha->msix_count, ret);
|
|
|
+ goto msix_out;
|
|
|
+ } else if (ret < ha->msix_count) {
|
|
|
ql_log(ql_log_warn, vha, 0x00c6,
|
|
|
"MSI-X: Failed to enable support "
|
|
|
"-- %d/%d\n Retry with %d vectors.\n",
|
|
|
ha->msix_count, ret, ret);
|
|
|
- ha->msix_count = ret;
|
|
|
- ret = pci_enable_msix(ha->pdev, entries, ha->msix_count);
|
|
|
- if (ret) {
|
|
|
-msix_failed:
|
|
|
- ql_log(ql_log_fatal, vha, 0x00c7,
|
|
|
- "MSI-X: Failed to enable support, "
|
|
|
- "giving up -- %d/%d.\n",
|
|
|
- ha->msix_count, ret);
|
|
|
- goto msix_out;
|
|
|
- }
|
|
|
- ha->max_rsp_queues = ha->msix_count - 1;
|
|
|
}
|
|
|
+ ha->msix_count = ret;
|
|
|
+ ha->max_rsp_queues = ha->msix_count - 1;
|
|
|
ha->msix_entries = kzalloc(sizeof(struct qla_msix_entry) *
|
|
|
ha->msix_count, GFP_KERNEL);
|
|
|
if (!ha->msix_entries) {
|