lkml.org 
[lkml]   [2013]   [Oct]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH RFC 13/77] bna: Update MSI/MSI-X interrupts enablement code
    Date
    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/brocade/bna/bnad.c | 34 ++++++++++++------------------
    1 files changed, 14 insertions(+), 20 deletions(-)

    diff --git a/drivers/net/ethernet/brocade/bna/bnad.c b/drivers/net/ethernet/brocade/bna/bnad.c
    index b78e69e..d41257c 100644
    --- a/drivers/net/ethernet/brocade/bna/bnad.c
    +++ b/drivers/net/ethernet/brocade/bna/bnad.c
    @@ -2469,21 +2469,11 @@ bnad_enable_msix(struct bnad *bnad)
    if (bnad->msix_table)
    return;

    - bnad->msix_table =
    - kcalloc(bnad->msix_num, sizeof(struct msix_entry), GFP_KERNEL);
    -
    - if (!bnad->msix_table)
    + ret = pci_msix_table_size(bnad->pcidev);
    + if (ret < 0)
    goto intx_mode;

    - for (i = 0; i < bnad->msix_num; i++)
    - bnad->msix_table[i].entry = i;
    -
    - ret = pci_enable_msix(bnad->pcidev, bnad->msix_table, bnad->msix_num);
    - if (ret > 0) {
    - /* Not enough MSI-X vectors. */
    - pr_warn("BNA: %d MSI-X vectors allocated < %d requested\n",
    - ret, bnad->msix_num);
    -
    + if (ret < bnad->msix_num) {
    spin_lock_irqsave(&bnad->bna_lock, flags);
    /* ret = #of vectors that we got */
    bnad_q_num_adjust(bnad, (ret - BNAD_MAILBOX_MSIX_VECTORS) / 2,
    @@ -2495,15 +2485,19 @@ bnad_enable_msix(struct bnad *bnad)

    if (bnad->msix_num > ret)
    goto intx_mode;
    + }

    - /* Try once more with adjusted numbers */
    - /* If this fails, fall back to INTx */
    - ret = pci_enable_msix(bnad->pcidev, bnad->msix_table,
    - bnad->msix_num);
    - if (ret)
    - goto intx_mode;
    + bnad->msix_table =
    + kcalloc(bnad->msix_num, sizeof(struct msix_entry), GFP_KERNEL);
    +
    + if (!bnad->msix_table)
    + goto intx_mode;

    - } else if (ret < 0)
    + for (i = 0; i < bnad->msix_num; i++)
    + bnad->msix_table[i].entry = i;
    +
    + ret = pci_enable_msix(bnad->pcidev, bnad->msix_table, bnad->msix_num);
    + if (ret)
    goto intx_mode;

    pci_intx(bnad->pcidev, 0);
    --
    1.7.7.6


    \
     
     \ /
      Last update: 2013-10-02 19:41    [W:2.759 / U:16.128 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site