Loading drivers/scsi/snic/snic.h +0 −1 Original line number Diff line number Diff line Loading @@ -299,7 +299,6 @@ struct snic { /* pci related */ struct pci_dev *pdev; struct msix_entry msix_entry[SNIC_MSIX_INTR_MAX]; struct snic_msix_entry msix[SNIC_MSIX_INTR_MAX]; /* io related info */ Loading drivers/scsi/snic/snic_isr.c +19 −29 Original line number Diff line number Diff line Loading @@ -93,7 +93,7 @@ snic_free_intr(struct snic *snic) /* ONLY interrupt mode MSIX is supported */ for (i = 0; i < ARRAY_SIZE(snic->msix); i++) { if (snic->msix[i].requested) { free_irq(snic->msix_entry[i].vector, free_irq(pci_irq_vector(snic->pdev, i), snic->msix[i].devid); } } Loading Loading @@ -134,7 +134,7 @@ snic_request_intr(struct snic *snic) snic->msix[SNIC_MSIX_ERR_NOTIFY].devid = snic; for (i = 0; i < ARRAY_SIZE(snic->msix); i++) { ret = request_irq(snic->msix_entry[i].vector, ret = request_irq(pci_irq_vector(snic->pdev, i), snic->msix[i].isr, 0, snic->msix[i].devname, Loading @@ -158,47 +158,37 @@ snic_set_intr_mode(struct snic *snic) { unsigned int n = ARRAY_SIZE(snic->wq); unsigned int m = SNIC_CQ_IO_CMPL_MAX; unsigned int i; unsigned int vecs = n + m + 1; /* * We need n WQs, m CQs, and n+m+1 INTRs * (last INTR is used for WQ/CQ errors and notification area */ BUILD_BUG_ON((ARRAY_SIZE(snic->wq) + SNIC_CQ_IO_CMPL_MAX) > ARRAY_SIZE(snic->intr)); SNIC_BUG_ON(ARRAY_SIZE(snic->msix_entry) < (n + m + 1)); for (i = 0; i < (n + m + 1); i++) snic->msix_entry[i].entry = i; if (snic->wq_count < n || snic->cq_count < n + m) goto fail; if (pci_alloc_irq_vectors(snic->pdev, vecs, vecs, PCI_IRQ_MSIX) < 0) goto fail; if (snic->wq_count >= n && snic->cq_count >= (n + m)) { if (!pci_enable_msix(snic->pdev, snic->msix_entry, (n + m + 1))) { snic->wq_count = n; snic->cq_count = n + m; snic->intr_count = n + m + 1; snic->intr_count = vecs; snic->err_intr_offset = SNIC_MSIX_ERR_NOTIFY; SNIC_ISR_DBG(snic->shost, "Using MSI-X Interrupts\n"); svnic_dev_set_intr_mode(snic->vdev, VNIC_DEV_INTR_MODE_MSIX); SNIC_ISR_DBG(snic->shost, "Using MSI-X Interrupts\n"); svnic_dev_set_intr_mode(snic->vdev, VNIC_DEV_INTR_MODE_MSIX); return 0; } } fail: svnic_dev_set_intr_mode(snic->vdev, VNIC_DEV_INTR_MODE_UNKNOWN); return -EINVAL; } /* end of snic_set_intr_mode */ void snic_clear_intr_mode(struct snic *snic) { pci_disable_msix(snic->pdev); pci_free_irq_vectors(snic->pdev); svnic_dev_set_intr_mode(snic->vdev, VNIC_DEV_INTR_MODE_INTX); } Loading
drivers/scsi/snic/snic.h +0 −1 Original line number Diff line number Diff line Loading @@ -299,7 +299,6 @@ struct snic { /* pci related */ struct pci_dev *pdev; struct msix_entry msix_entry[SNIC_MSIX_INTR_MAX]; struct snic_msix_entry msix[SNIC_MSIX_INTR_MAX]; /* io related info */ Loading
drivers/scsi/snic/snic_isr.c +19 −29 Original line number Diff line number Diff line Loading @@ -93,7 +93,7 @@ snic_free_intr(struct snic *snic) /* ONLY interrupt mode MSIX is supported */ for (i = 0; i < ARRAY_SIZE(snic->msix); i++) { if (snic->msix[i].requested) { free_irq(snic->msix_entry[i].vector, free_irq(pci_irq_vector(snic->pdev, i), snic->msix[i].devid); } } Loading Loading @@ -134,7 +134,7 @@ snic_request_intr(struct snic *snic) snic->msix[SNIC_MSIX_ERR_NOTIFY].devid = snic; for (i = 0; i < ARRAY_SIZE(snic->msix); i++) { ret = request_irq(snic->msix_entry[i].vector, ret = request_irq(pci_irq_vector(snic->pdev, i), snic->msix[i].isr, 0, snic->msix[i].devname, Loading @@ -158,47 +158,37 @@ snic_set_intr_mode(struct snic *snic) { unsigned int n = ARRAY_SIZE(snic->wq); unsigned int m = SNIC_CQ_IO_CMPL_MAX; unsigned int i; unsigned int vecs = n + m + 1; /* * We need n WQs, m CQs, and n+m+1 INTRs * (last INTR is used for WQ/CQ errors and notification area */ BUILD_BUG_ON((ARRAY_SIZE(snic->wq) + SNIC_CQ_IO_CMPL_MAX) > ARRAY_SIZE(snic->intr)); SNIC_BUG_ON(ARRAY_SIZE(snic->msix_entry) < (n + m + 1)); for (i = 0; i < (n + m + 1); i++) snic->msix_entry[i].entry = i; if (snic->wq_count < n || snic->cq_count < n + m) goto fail; if (pci_alloc_irq_vectors(snic->pdev, vecs, vecs, PCI_IRQ_MSIX) < 0) goto fail; if (snic->wq_count >= n && snic->cq_count >= (n + m)) { if (!pci_enable_msix(snic->pdev, snic->msix_entry, (n + m + 1))) { snic->wq_count = n; snic->cq_count = n + m; snic->intr_count = n + m + 1; snic->intr_count = vecs; snic->err_intr_offset = SNIC_MSIX_ERR_NOTIFY; SNIC_ISR_DBG(snic->shost, "Using MSI-X Interrupts\n"); svnic_dev_set_intr_mode(snic->vdev, VNIC_DEV_INTR_MODE_MSIX); SNIC_ISR_DBG(snic->shost, "Using MSI-X Interrupts\n"); svnic_dev_set_intr_mode(snic->vdev, VNIC_DEV_INTR_MODE_MSIX); return 0; } } fail: svnic_dev_set_intr_mode(snic->vdev, VNIC_DEV_INTR_MODE_UNKNOWN); return -EINVAL; } /* end of snic_set_intr_mode */ void snic_clear_intr_mode(struct snic *snic) { pci_disable_msix(snic->pdev); pci_free_irq_vectors(snic->pdev); svnic_dev_set_intr_mode(snic->vdev, VNIC_DEV_INTR_MODE_INTX); }