lkml.org 
[lkml]   [2013]   [Oct]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH RFC 46/77] mlx4: Update MSI/MSI-X interrupts enablement code
    On Wed,  2 Oct 2013 12:49:02 +0200
    Alexander Gordeev <agordeev@redhat.com> wrote:

    NACK. This change does not do anything logically as far as I can tell.
    pci_enable_msix in the current upstream kernel itself calls
    pci_msix_table_size. The current code yields the same results
    as the code suggested below. (i.e., the suggested code has no effect on
    optimality).

    BTW, pci_msix_table_size never returns a value < 0 (if msix is not
    enabled, it returns 0 for the table size), so the (err < 0) check here
    is not correct. (I also do not like using "err" here anyway for the
    value returned by pci_msix_table_size(). There is no error here, and
    it is simply confusing.

    -Jack

    > As result of recent re-design of the MSI/MSI-X interrupts enabling
    > pattern this driver has to be updated to use the new technique to
    > obtain a optimal number of MSI/MSI-X interrupts required.
    >
    > Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
    > ---
    > drivers/net/ethernet/mellanox/mlx4/main.c | 17 ++++++++---------
    > 1 files changed, 8 insertions(+), 9 deletions(-)
    >
    > diff --git a/drivers/net/ethernet/mellanox/mlx4/main.c
    > b/drivers/net/ethernet/mellanox/mlx4/main.c index 60c9f4f..377a5ea
    > 100644 --- a/drivers/net/ethernet/mellanox/mlx4/main.c
    > +++ b/drivers/net/ethernet/mellanox/mlx4/main.c
    > @@ -1852,8 +1852,16 @@ static void mlx4_enable_msi_x(struct mlx4_dev
    > *dev) int i;
    >
    > if (msi_x) {
    > + err = pci_msix_table_size(dev->pdev);
    > + if (err < 0)
    > + goto no_msi;
    > +
    > + /* Try if at least 2 vectors are available */
    > nreq = min_t(int, dev->caps.num_eqs -
    > dev->caps.reserved_eqs, nreq);
    > + nreq = min_t(int, nreq, err);
    > + if (nreq < 2)
    > + goto no_msi;
    >
    > entries = kcalloc(nreq, sizeof *entries, GFP_KERNEL);
    > if (!entries)
    > @@ -1862,17 +1870,8 @@ static void mlx4_enable_msi_x(struct mlx4_dev
    > *dev) for (i = 0; i < nreq; ++i)
    > entries[i].entry = i;
    >
    > - retry:
    > err = pci_enable_msix(dev->pdev, entries, nreq);
    > if (err) {
    > - /* Try again if at least 2 vectors are
    > available */
    > - if (err > 1) {
    > - mlx4_info(dev, "Requested %d
    > vectors, "
    > - "but only %d MSI-X vectors
    > available, "
    > - "trying again\n", nreq,
    > err);
    > - nreq = err;
    > - goto retry;
    > - }
    > kfree(entries);
    > goto no_msi;
    > }



    \
     
     \ /
      Last update: 2013-10-03 10:21    [W:4.109 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site