lkml.org 
[lkml]   [2013]   [Feb]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[ 14/36] net/mlx4_core: Set number of msix vectors under SRIOV mode to firmware defaults
    Date
    3.4-stable review patch.  If anyone has any objections, please let me know.

    ------------------


    From: Or Gerlitz <ogerlitz@mellanox.com>

    [ Upstream commit ca4c7b35f75492de7fbf5ee95be07481c348caee ]

    The lines

    if (mlx4_is_mfunc(dev)) {
    nreq = 2;
    } else {

    which hard code the number of requested msi-x vectors under multi-function
    mode to two can be removed completely, since the firmware sets num_eqs and
    reserved_eqs appropriately Thus, the code line:

    nreq = min_t(int, dev->caps.num_eqs - dev->caps.reserved_eqs, nreq);

    is by itself sufficient and correct for all cases. Currently, for mfunc
    mode num_eqs = 32 and reserved_eqs = 28, hence four vectors will be enabled.

    This triples (one vector is used for the async events and commands EQ) the
    horse power provided for processing of incoming packets on netdev RSS scheme,
    IO initiators/targets commands processing flows, etc.

    Reviewed-by: Jack Morgenstein <jackm@dev.mellanox.co.il>
    Signed-off-by: Amir Vadai <amirv@mellanox.com>
    Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    drivers/net/ethernet/mellanox/mlx4/main.c | 11 ++---------
    1 file changed, 2 insertions(+), 9 deletions(-)

    --- a/drivers/net/ethernet/mellanox/mlx4/main.c
    +++ b/drivers/net/ethernet/mellanox/mlx4/main.c
    @@ -1526,15 +1526,8 @@ static void mlx4_enable_msi_x(struct mlx
    int i;

    if (msi_x) {
    - /* In multifunction mode each function gets 2 msi-X vectors
    - * one for data path completions anf the other for asynch events
    - * or command completions */
    - if (mlx4_is_mfunc(dev)) {
    - nreq = 2;
    - } else {
    - nreq = min_t(int, dev->caps.num_eqs -
    - dev->caps.reserved_eqs, nreq);
    - }
    + nreq = min_t(int, dev->caps.num_eqs - dev->caps.reserved_eqs,
    + nreq);

    entries = kcalloc(nreq, sizeof *entries, GFP_KERNEL);
    if (!entries)



    \
     
     \ /
      Last update: 2013-02-12 23:01    [W:4.209 / U:0.016 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site