Patch "net/mlx4: Check if Granular QoS per VF has been enabled before updating QP qos_vport" has been added to the 4.4-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
net/mlx4: Check if Granular QoS per VF has been enabled before updating QP qos_vport
to the 4.4-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
net-mlx4-check-if-granular-qos-per-vf-has-been-enabled-before-updating-qp-qos_vport.patch
and it can be found in the queue-4.4 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From foo@baz Tue Apr 10 10:31:53 CEST 2018
From: Ido Shamay <[email protected]>
Date: Mon, 5 Jun 2017 10:44:56 +0300
Subject: net/mlx4: Check if Granular QoS per VF has been enabled before updating QP qos_vport
From: Ido Shamay <[email protected]>
[ Upstream commit 269f9883fe254d109afdfc657875c456d6fabb08 ]
The Granular QoS per VF feature must be enabled in FW before it can be used.
Thus, the driver cannot modify a QP's qos_vport value (via the UPDATE_QP FW command) if the feature has not been enabled -- the FW returns an error if this is attempted.
--- drivers/net/ethernet/mellanox/mlx4/qp.c | 6 ++++++ drivers/net/ethernet/mellanox/mlx4/resource_tracker.c | 16 +++++++++++----- 2 files changed, 17 insertions(+), 5 deletions(-)
drivers/net/ethernet/mellanox/mlx4/qp.c +6 -0
@@ -481,6 +481,12 @@ int mlx4_update_qp(struct mlx4_dev *dev, }if (attr &MLX4_UPDATE_QP_QOS_VPORT ) { +if (!(dev->caps.flags2 &MLX4_DEV_CAP_FLAG2_QOS_VPP )) { +mlx4_warn (dev,"Granular QoS per VF is not enabled\n" ); + err = -EOPNOTSUPP ; + goto out; + } + qp_mask |=1ULL <<MLX4_UPD_QP_MASK_QOS_VPP ; cmd->qp_context.qos_vport = params->qos_vport; }
drivers/net/ethernet/mellanox/mlx4/resource_tracker.c +11 -5
@@ -5040,6 +5040,13 @@ void mlx4_delete_all_resources_for_slavemutex_unlock (&priv->mfunc.master.res_tracker.slave_list[slave].mutex); } +static void update_qos_vpp (struct mlx4_update_qp_context *ctx, +struct mlx4_vf_immed_vlan_work *work) +{ + ctx->qp_mask |=cpu_to_be64 (1ULL <<MLX4_UPD_QP_MASK_QOS_VPP ); + ctx->qp_context.qos_vport = work->qos_vport; +} +void mlx4_vf_immed_vlan_work_handler (struct work_struct *_work) { struct mlx4_vf_immed_vlan_work *work =
@@ -5144,11 +5151,10 @@ void mlx4_vf_immed_vlan_work_handler(str qp->sched_queue &0xC7 ; upd_context->qp_context.pri_path.sched_queue |= ((work->qos &0x7 ) <<3 ); - upd_context->qp_mask |= -cpu_to_be64 (1ULL << -MLX4_UPD_QP_MASK_QOS_VPP ); - upd_context->qp_context.qos_vport = - work->qos_vport; + +if (dev->caps.flags2 & +MLX4_DEV_CAP_FLAG2_QOS_VPP ) +update_qos_vpp (upd_context, work); } err = mlx4_cmd(dev, mailbox->dma,
Patches currently in stable-queue which might be from [email protected] are
queue-4.4/net-mlx4-check-if-granular-qos-per-vf-has-been-enabled-before-updating-qp-qos_vport.patch