| From foo@baz Mon Apr 9 17:09:24 CEST 2018 |
| From: Moni Shoua <monis@mellanox.com> |
| Date: Thu, 28 Dec 2017 16:26:11 +0200 |
| Subject: net/mlx4_en: Change default QoS settings |
| |
| 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> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| 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(+) |
| |
| --- 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 m |
| } |
| |
| 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 |
| /* 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; |
| --- a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c |
| +++ b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c |
| @@ -3125,6 +3125,13 @@ int mlx4_en_init_netdev(struct mlx4_en_d |
| 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; |
| --- a/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h |
| +++ b/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h |
| @@ -472,6 +472,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 { |