Commit 181d981b authored by Jakub Kicinski's avatar Jakub Kicinski
Browse files

Merge branch 'mlx5-misc-fixes-2025-09-22'

Tariq Toukan says:

====================
mlx5 misc fixes 2025-09-22

This patchset provides misc bug fixes from the team to the mlx5 Eth
and core drivers.
====================

Link: https://patch.msgid.link/1758525094-816583-1-git-send-email-tariqt@nvidia.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parents 0efdfbba 6d0477d0
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -1466,6 +1466,7 @@ static void fec_set_block_stats(struct mlx5e_priv *priv,
	case MLX5E_FEC_RS_528_514:
	case MLX5E_FEC_RS_544_514:
	case MLX5E_FEC_LLRS_272_257_1:
	case MLX5E_FEC_RS_544_514_INTERLEAVED_QUAD:
		fec_set_rs_stats(fec_stats, out);
		return;
	case MLX5E_FEC_FIRECODE:
+1 −1
Original line number Diff line number Diff line
@@ -663,7 +663,7 @@ static void del_sw_hw_rule(struct fs_node *node)
			BIT(MLX5_SET_FTE_MODIFY_ENABLE_MASK_ACTION) |
			BIT(MLX5_SET_FTE_MODIFY_ENABLE_MASK_FLOW_COUNTERS);
		fte->act_dests.action.action &= ~MLX5_FLOW_CONTEXT_ACTION_COUNT;
		mlx5_fc_local_destroy(rule->dest_attr.counter);
		mlx5_fc_local_put(rule->dest_attr.counter);
		goto out;
	}

+1 −0
Original line number Diff line number Diff line
@@ -343,6 +343,7 @@ struct mlx5_fc {
	enum mlx5_fc_type type;
	struct mlx5_fc_bulk *bulk;
	struct mlx5_fc_cache cache;
	refcount_t fc_local_refcount;
	/* last{packets,bytes} are used for calculating deltas since last reading. */
	u64 lastpackets;
	u64 lastbytes;
+22 −3
Original line number Diff line number Diff line
@@ -562,17 +562,36 @@ mlx5_fc_local_create(u32 counter_id, u32 offset, u32 bulk_size)
	counter->id = counter_id;
	fc_bulk->base_id = counter_id - offset;
	fc_bulk->fs_bulk.bulk_len = bulk_size;
	refcount_set(&fc_bulk->hws_data.hws_action_refcount, 0);
	mutex_init(&fc_bulk->hws_data.lock);
	counter->bulk = fc_bulk;
	refcount_set(&counter->fc_local_refcount, 1);
	return counter;
}
EXPORT_SYMBOL(mlx5_fc_local_create);

void mlx5_fc_local_destroy(struct mlx5_fc *counter)
{
	if (!counter || counter->type != MLX5_FC_TYPE_LOCAL)
		return;

	kfree(counter->bulk);
	kfree(counter);
}
EXPORT_SYMBOL(mlx5_fc_local_destroy);

void mlx5_fc_local_get(struct mlx5_fc *counter)
{
	if (!counter || counter->type != MLX5_FC_TYPE_LOCAL)
		return;

	refcount_inc(&counter->fc_local_refcount);
}

void mlx5_fc_local_put(struct mlx5_fc *counter)
{
	if (!counter || counter->type != MLX5_FC_TYPE_LOCAL)
		return;

	if (!refcount_dec_and_test(&counter->fc_local_refcount))
		return;

	mlx5_fc_local_destroy(counter);
}
+2 −2
Original line number Diff line number Diff line
@@ -1360,7 +1360,7 @@ mlx5hws_action_create_modify_header(struct mlx5hws_context *ctx,
struct mlx5hws_action *
mlx5hws_action_create_dest_array(struct mlx5hws_context *ctx, size_t num_dest,
				 struct mlx5hws_action_dest_attr *dests,
				 bool ignore_flow_level, u32 flags)
				 u32 flags)
{
	struct mlx5hws_cmd_set_fte_dest *dest_list = NULL;
	struct mlx5hws_cmd_ft_create_attr ft_attr = {0};
@@ -1397,7 +1397,7 @@ mlx5hws_action_create_dest_array(struct mlx5hws_context *ctx, size_t num_dest,
				MLX5_FLOW_DESTINATION_TYPE_FLOW_TABLE;
			dest_list[i].destination_id = dests[i].dest->dest_obj.obj_id;
			fte_attr.action_flags |= MLX5_FLOW_CONTEXT_ACTION_FWD_DEST;
			fte_attr.ignore_flow_level = ignore_flow_level;
			fte_attr.ignore_flow_level = 1;
			if (dests[i].is_wire_ft)
				last_dest_idx = i;
			break;
Loading