diff options
author | Maxim Mikityanskiy <maximmi@nvidia.com> | 2022-01-25 12:52:55 +0200 |
---|---|---|
committer | Saeed Mahameed <saeedm@nvidia.com> | 2022-02-14 22:30:51 -0800 |
commit | 62f7991feab69ed398ad6a03b911fa0ee0549516 (patch) | |
tree | 010bc8b6b4e12a9384666c48dde7836957dd0279 | |
parent | 3ab45777a27c5f53a55a2c353b70648449ca7a33 (diff) |
net/mlx5e: Move repeating code that gets TC prio into a function
Both mlx5e_select_queue and mlx5e_select_ptpsq contain the same logic to
get user priority of a packet, according to the current trust state
settings. This commit moves this repeating code to its own function.
Signed-off-by: Maxim Mikityanskiy <maximmi@nvidia.com>
Reviewed-by: Tariq Toukan <tariqt@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
-rw-r--r-- | drivers/net/ethernet/mellanox/mlx5/core/en/selq.c | 36 |
1 files changed, 15 insertions, 21 deletions
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/selq.c b/drivers/net/ethernet/mellanox/mlx5/core/en/selq.c index a0bed47fd392..aab2046da45b 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en/selq.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en/selq.c @@ -110,24 +110,25 @@ static int mlx5e_get_dscp_up(struct mlx5e_priv *priv, struct sk_buff *skb) } #endif +static int mlx5e_get_up(struct mlx5e_priv *priv, struct sk_buff *skb) +{ +#ifdef CONFIG_MLX5_CORE_EN_DCB + if (priv->dcbx_dp.trust_state == MLX5_QPTS_TRUST_DSCP) + return mlx5e_get_dscp_up(priv, skb); +#endif + if (skb_vlan_tag_present(skb)) + return skb_vlan_tag_get_prio(skb); + return 0; +} + static u16 mlx5e_select_ptpsq(struct net_device *dev, struct sk_buff *skb, struct mlx5e_selq_params *selq) { struct mlx5e_priv *priv = netdev_priv(dev); - int up = 0; + int up; - if (selq->num_tcs <= 1) - goto return_txq; + up = selq->num_tcs > 1 ? mlx5e_get_up(priv, skb) : 0; -#ifdef CONFIG_MLX5_CORE_EN_DCB - if (priv->dcbx_dp.trust_state == MLX5_QPTS_TRUST_DSCP) - up = mlx5e_get_dscp_up(priv, skb); - else -#endif - if (skb_vlan_tag_present(skb)) - up = skb_vlan_tag_get_prio(skb); - -return_txq: return selq->num_regular_queues + up; } @@ -152,8 +153,7 @@ u16 mlx5e_select_queue(struct net_device *dev, struct sk_buff *skb, { struct mlx5e_priv *priv = netdev_priv(dev); struct mlx5e_selq_params *selq; - int txq_ix; - int up = 0; + int txq_ix, up; selq = rcu_dereference_bh(priv->selq.active); @@ -189,13 +189,7 @@ u16 mlx5e_select_queue(struct net_device *dev, struct sk_buff *skb, if (selq->num_tcs <= 1) return txq_ix; -#ifdef CONFIG_MLX5_CORE_EN_DCB - if (priv->dcbx_dp.trust_state == MLX5_QPTS_TRUST_DSCP) - up = mlx5e_get_dscp_up(priv, skb); - else -#endif - if (skb_vlan_tag_present(skb)) - up = skb_vlan_tag_get_prio(skb); + up = mlx5e_get_up(priv, skb); /* Normalize any picked txq_ix to [0, num_channels), * So we can return a txq_ix that matches the channel and |