|
@@ -5255,6 +5255,13 @@ void mlx4_delete_all_resources_for_slave(struct mlx4_dev *dev, int slave)
|
|
mutex_unlock(&priv->mfunc.master.res_tracker.slave_list[slave].mutex);
|
|
mutex_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)
|
|
void mlx4_vf_immed_vlan_work_handler(struct work_struct *_work)
|
|
{
|
|
{
|
|
struct mlx4_vf_immed_vlan_work *work =
|
|
struct mlx4_vf_immed_vlan_work *work =
|
|
@@ -5369,11 +5376,10 @@ void mlx4_vf_immed_vlan_work_handler(struct work_struct *_work)
|
|
qp->sched_queue & 0xC7;
|
|
qp->sched_queue & 0xC7;
|
|
upd_context->qp_context.pri_path.sched_queue |=
|
|
upd_context->qp_context.pri_path.sched_queue |=
|
|
((work->qos & 0x7) << 3);
|
|
((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,
|
|
err = mlx4_cmd(dev, mailbox->dma,
|