Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 018a94ee authored by Mark Bloch's avatar Mark Bloch Committed by Saeed Mahameed
Browse files

IB/mlx5: Add match on vport when in switchdev mode



When we point to a representor, it means we are in switchdev mode.
The flow db is shared between PF and virtual function representors
so each rule created needs to have a match on its specific source port.

Signed-off-by: default avatarMark Bloch <markb@mellanox.com>
Reviewed-by: default avatarOr Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: default avatarLeon Romanovsky <leon@kernel.org>
Signed-off-by: default avatarSaeed Mahameed <saeedm@mellanox.com>
parent 9a4ca38d
Loading
Loading
Loading
Loading
+12 −0
Original line number Original line Diff line number Diff line
@@ -2803,6 +2803,18 @@ static struct mlx5_ib_flow_handler *_create_flow_rule(struct mlx5_ib_dev *dev,
	if (!flow_is_multicast_only(flow_attr))
	if (!flow_is_multicast_only(flow_attr))
		set_underlay_qp(dev, spec, underlay_qpn);
		set_underlay_qp(dev, spec, underlay_qpn);


	if (dev->rep) {
		void *misc;

		misc = MLX5_ADDR_OF(fte_match_param, spec->match_value,
				    misc_parameters);
		MLX5_SET(fte_match_set_misc, misc, source_port,
			 dev->rep->vport);
		misc = MLX5_ADDR_OF(fte_match_param, spec->match_criteria,
				    misc_parameters);
		MLX5_SET_TO_ONES(fte_match_set_misc, misc, source_port);
	}

	spec->match_criteria_enable = get_match_criteria_enable(spec->match_criteria);
	spec->match_criteria_enable = get_match_criteria_enable(spec->match_criteria);
	if (is_drop) {
	if (is_drop) {
		flow_act.action = MLX5_FLOW_CONTEXT_ACTION_DROP;
		flow_act.action = MLX5_FLOW_CONTEXT_ACTION_DROP;