lkml.org 
[lkml]   [2018]   [Mar]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL for 4.14 17/97] net/mlx4_en: Change default QoS settings
    Date
    From: Moni Shoua <monis@mellanox.com>

    [ Upstream commit a42b63c1ac1986f17f71bc91a6b0aaa14d4dae71 ]

    Change the default mapping between TC and TCG as follows:

    Prio | TC/TCG
    | from to
    | (set by FW) (set by SW)
    ---------+-----------------------------------
    0 | 0/0 0/7
    1 | 1/0 0/6
    2 | 2/0 0/5
    3 | 3/0 0/4
    4 | 4/0 0/3
    5 | 5/0 0/2
    6 | 6/0 0/1
    7 | 7/0 0/0

    These new settings cause that a pause frame for any prio stops
    traffic for all prios.

    Fixes: 564c274c3df0 ("net/mlx4_en: DCB QoS support")
    Signed-off-by: Moni Shoua <monis@mellanox.com>
    Signed-off-by: Maor Gottlieb <maorg@mellanox.com>
    Signed-off-by: Tariq Toukan <tariqt@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    ---
    drivers/net/ethernet/mellanox/mlx4/en_dcb_nl.c | 5 +++++
    drivers/net/ethernet/mellanox/mlx4/en_netdev.c | 7 +++++++
    drivers/net/ethernet/mellanox/mlx4/mlx4_en.h | 1 +
    3 files changed, 13 insertions(+)

    diff --git a/drivers/net/ethernet/mellanox/mlx4/en_dcb_nl.c b/drivers/net/ethernet/mellanox/mlx4/en_dcb_nl.c
    index 5f41dc92aa68..1a0c3bf86ead 100644
    --- a/drivers/net/ethernet/mellanox/mlx4/en_dcb_nl.c
    +++ b/drivers/net/ethernet/mellanox/mlx4/en_dcb_nl.c
    @@ -310,6 +310,7 @@ static int mlx4_en_ets_validate(struct mlx4_en_priv *priv, struct ieee_ets *ets)
    }

    switch (ets->tc_tsa[i]) {
    + case IEEE_8021QAZ_TSA_VENDOR:
    case IEEE_8021QAZ_TSA_STRICT:
    break;
    case IEEE_8021QAZ_TSA_ETS:
    @@ -347,6 +348,10 @@ static int mlx4_en_config_port_scheduler(struct mlx4_en_priv *priv,
    /* higher TC means higher priority => lower pg */
    for (i = IEEE_8021QAZ_MAX_TCS - 1; i >= 0; i--) {
    switch (ets->tc_tsa[i]) {
    + case IEEE_8021QAZ_TSA_VENDOR:
    + pg[i] = MLX4_EN_TC_VENDOR;
    + tc_tx_bw[i] = MLX4_EN_BW_MAX;
    + break;
    case IEEE_8021QAZ_TSA_STRICT:
    pg[i] = num_strict++;
    tc_tx_bw[i] = MLX4_EN_BW_MAX;
    diff --git a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
    index 9c218f1cfc6c..c097eef41a9c 100644
    --- a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
    +++ b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
    @@ -3335,6 +3335,13 @@ int mlx4_en_init_netdev(struct mlx4_en_dev *mdev, int port,
    priv->msg_enable = MLX4_EN_MSG_LEVEL;
    #ifdef CONFIG_MLX4_EN_DCB
    if (!mlx4_is_slave(priv->mdev->dev)) {
    + u8 prio;
    +
    + for (prio = 0; prio < IEEE_8021QAZ_MAX_TCS; ++prio) {
    + priv->ets.prio_tc[prio] = prio;
    + priv->ets.tc_tsa[prio] = IEEE_8021QAZ_TSA_VENDOR;
    + }
    +
    priv->dcbx_cap = DCB_CAP_DCBX_VER_CEE | DCB_CAP_DCBX_HOST |
    DCB_CAP_DCBX_VER_IEEE;
    priv->flags |= MLX4_EN_DCB_ENABLED;
    diff --git a/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h b/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h
    index fdb3ad0cbe54..2c1a5ff6acfa 100644
    --- a/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h
    +++ b/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h
    @@ -476,6 +476,7 @@ struct mlx4_en_frag_info {
    #define MLX4_EN_BW_MIN 1
    #define MLX4_EN_BW_MAX 100 /* Utilize 100% of the line */

    +#define MLX4_EN_TC_VENDOR 0
    #define MLX4_EN_TC_ETS 7

    enum dcb_pfc_type {
    --
    2.14.1
    \
     
     \ /
      Last update: 2018-03-19 23:09    [W:4.073 / U:0.036 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site