2014-01-31 15:14:30

by Alexander Gordeev

[permalink] [raw]
Subject: [PATCH 17/34] ixgbevf: Use pci_enable_msix_range()

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: Alexander Gordeev <[email protected]>
---
drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c | 33 +++++++-------------
1 files changed, 12 insertions(+), 21 deletions(-)

diff --git a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
index 9df2898..521a9d7 100644
--- a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
+++ b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
@@ -1817,7 +1817,6 @@ void ixgbevf_reset(struct ixgbevf_adapter *adapter)
static int ixgbevf_acquire_msix_vectors(struct ixgbevf_adapter *adapter,
int vectors)
{
- int err = 0;
int vector_threshold;

/* We'll want at least 2 (vector_threshold):
@@ -1831,33 +1830,25 @@ static int ixgbevf_acquire_msix_vectors(struct ixgbevf_adapter *adapter,
* Right now, we simply care about how many we'll get; we'll
* set them up later while requesting irq's.
*/
- while (vectors >= vector_threshold) {
- err = pci_enable_msix(adapter->pdev, adapter->msix_entries,
- vectors);
- if (!err || err < 0) /* Success or a nasty failure. */
- break;
- else /* err == number of vectors we should try again with */
- vectors = err;
- }
+ vectors = pci_enable_msix_range(adapter->pdev, adapter->msix_entries,
+ vector_threshold, vectors);

- if (vectors < vector_threshold)
- err = -ENOMEM;
-
- if (err) {
+ if (vectors < 0) {
dev_err(&adapter->pdev->dev,
"Unable to allocate MSI-X interrupts\n");
kfree(adapter->msix_entries);
adapter->msix_entries = NULL;
- } else {
- /*
- * Adjust for only the vectors we'll use, which is minimum
- * of max_msix_q_vectors + NON_Q_VECTORS, or the number of
- * vectors we were allocated.
- */
- adapter->num_msix_vectors = vectors;
+ return vectors;
}

- return err;
+ /*
+ * Adjust for only the vectors we'll use, which is minimum
+ * of max_msix_q_vectors + NON_Q_VECTORS, or the number of
+ * vectors we were allocated.
+ */
+ adapter->num_msix_vectors = vectors;
+
+ return 0;
}

/**
--
1.7.7.6


2014-01-31 18:20:35

by Sergei Shtylyov

[permalink] [raw]
Subject: Re: [PATCH 17/34] ixgbevf: Use pci_enable_msix_range()

On 01/31/2014 06:08 PM, Alexander Gordeev wrote:

> 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: Alexander Gordeev <[email protected]>
> ---
> drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c | 33 +++++++-------------
> 1 files changed, 12 insertions(+), 21 deletions(-)

> diff --git a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
> index 9df2898..521a9d7 100644
> --- a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
> +++ b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c

> @@ -1831,33 +1830,25 @@ static int ixgbevf_acquire_msix_vectors(struct ixgbevf_adapter *adapter,
> * Right now, we simply care about how many we'll get; we'll
> * set them up later while requesting irq's.
> */
> - while (vectors >= vector_threshold) {
> - err = pci_enable_msix(adapter->pdev, adapter->msix_entries,
> - vectors);
> - if (!err || err < 0) /* Success or a nasty failure. */
> - break;
> - else /* err == number of vectors we should try again with */
> - vectors = err;
> - }
> + vectors = pci_enable_msix_range(adapter->pdev, adapter->msix_entries,
> + vector_threshold, vectors);
>
> - if (vectors < vector_threshold)
> - err = -ENOMEM;
> -
> - if (err) {
> + if (vectors < 0) {
> dev_err(&adapter->pdev->dev,
> "Unable to allocate MSI-X interrupts\n");
> kfree(adapter->msix_entries);
> adapter->msix_entries = NULL;
> - } else {
> - /*
> - * Adjust for only the vectors we'll use, which is minimum
> - * of max_msix_q_vectors + NON_Q_VECTORS, or the number of
> - * vectors we were allocated.
> - */
> - adapter->num_msix_vectors = vectors;
> + return vectors;
> }
>
> - return err;
> + /*
> + * Adjust for only the vectors we'll use, which is minimum
> + * of max_msix_q_vectors + NON_Q_VECTORS, or the number of
> + * vectors we were allocated.
> + */

Networking code formats multi-line comments slightly differently to the
rest of the kernel:

/* bla
* bla
*/

Although, you're only moving what was there before you, maybe it's a good
time to get this right.

WBR, Sergei