Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a5444b17 authored by Alexander Gordeev's avatar Alexander Gordeev Committed by David S. Miller
Browse files

bnx2x: Use pci_enable_msix_range() instead of pci_enable_msix()



As result of deprecation of MSI-X/MSI enablement functions
pci_enable_msix() and pci_enable_msi_block() all drivers
using these two interfaces need to be updated to use the
new pci_enable_msi_range() and pci_enable_msix_range()
interfaces.

Signed-off-by: default avatarAlexander Gordeev <agordeev@redhat.com>
Cc: Ariel Elior <ariele@broadcom.com>
Cc: netdev@vger.kernel.org
Cc: linux-pci@vger.kernel.org
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent f2a2dfeb
Loading
Loading
Loading
Loading
+20 −26
Original line number Original line Diff line number Diff line
@@ -1638,36 +1638,16 @@ int bnx2x_enable_msix(struct bnx2x *bp)
	DP(BNX2X_MSG_SP, "about to request enable msix with %d vectors\n",
	DP(BNX2X_MSG_SP, "about to request enable msix with %d vectors\n",
	   msix_vec);
	   msix_vec);


	rc = pci_enable_msix(bp->pdev, &bp->msix_table[0], msix_vec);
	rc = pci_enable_msix_range(bp->pdev, &bp->msix_table[0],

				   BNX2X_MIN_MSIX_VEC_CNT(bp), msix_vec);
	/*
	/*
	 * reconfigure number of tx/rx queues according to available
	 * reconfigure number of tx/rx queues according to available
	 * MSI-X vectors
	 * MSI-X vectors
	 */
	 */
	if (rc >= BNX2X_MIN_MSIX_VEC_CNT(bp)) {
	if (rc == -ENOSPC) {
		/* how less vectors we will have? */
		int diff = msix_vec - rc;

		BNX2X_DEV_INFO("Trying to use less MSI-X vectors: %d\n", rc);

		rc = pci_enable_msix(bp->pdev, &bp->msix_table[0], rc);

		if (rc) {
			BNX2X_DEV_INFO("MSI-X is not attainable rc %d\n", rc);
			goto no_msix;
		}
		/*
		 * decrease number of queues by number of unallocated entries
		 */
		bp->num_ethernet_queues -= diff;
		bp->num_queues = bp->num_ethernet_queues + bp->num_cnic_queues;

		BNX2X_DEV_INFO("New queue configuration set: %d\n",
			       bp->num_queues);
	} else if (rc > 0) {
		/* Get by with single vector */
		/* Get by with single vector */
		rc = pci_enable_msix(bp->pdev, &bp->msix_table[0], 1);
		rc = pci_enable_msix_range(bp->pdev, &bp->msix_table[0], 1, 1);
		if (rc) {
		if (rc < 0) {
			BNX2X_DEV_INFO("Single MSI-X is not attainable rc %d\n",
			BNX2X_DEV_INFO("Single MSI-X is not attainable rc %d\n",
				       rc);
				       rc);
			goto no_msix;
			goto no_msix;
@@ -1682,6 +1662,20 @@ int bnx2x_enable_msix(struct bnx2x *bp)
	} else if (rc < 0) {
	} else if (rc < 0) {
		BNX2X_DEV_INFO("MSI-X is not attainable rc %d\n", rc);
		BNX2X_DEV_INFO("MSI-X is not attainable rc %d\n", rc);
		goto no_msix;
		goto no_msix;
	} else if (rc < msix_vec) {
		/* how less vectors we will have? */
		int diff = msix_vec - rc;

		BNX2X_DEV_INFO("Trying to use less MSI-X vectors: %d\n", rc);

		/*
		 * decrease number of queues by number of unallocated entries
		 */
		bp->num_ethernet_queues -= diff;
		bp->num_queues = bp->num_ethernet_queues + bp->num_cnic_queues;

		BNX2X_DEV_INFO("New queue configuration set: %d\n",
			       bp->num_queues);
	}
	}


	bp->flags |= USING_MSIX_FLAG;
	bp->flags |= USING_MSIX_FLAG;