FAILED: patch "[PATCH] net/mlx5: Bridge, fix multicast packets sent to uplink" failed to apply to 6.1-stable tree
[email protected]
maintainerThe patch below does not apply to the 6.1-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-6.1.y
git checkout FETCH_HEAD
git cherry-pick -x ec7cc38ef9f83553102e84c82536971a81630739
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<[email protected]>' --in-reply-to '2026093036-scowling-eject-1966@gregkh' --subject-prefix 'PATCH 6.1.y' 'HEAD^..'
Possible dependencies:
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From ec7cc38ef9f83553102e84c82536971a81630739 Mon Sep 17 00:00:00 2001
From: Moshe Shemesh <[email protected]>
Date: Sat, 30 Dec 2023 22:40:37 +0200
Subject: [PATCH] net/mlx5: Bridge, fix multicast packets sent to uplink
To enable multicast packets which are offloaded in bridge multicast offload mode to be sent also to uplink, FTE bit uplink_hairpin_en should be set. Add this bit to FTE for the bridge multicast offload rules.
drivers/net/ethernet/mellanox/mlx5/core/esw/bridge_mcast.c +3 -0
@@ -83,6 +83,7 @@ mlx5_esw_bridge_mdb_flow_create(u16 esw_owner_vhca_id, struct mlx5_esw_bridge_md i++; } + rule_spec->flow_context.flags |=FLOW_CONTEXT_UPLINK_HAIRPIN_EN ; rule_spec->match_criteria_enable =MLX5_MATCH_OUTER_HEADERS ; dmac_v =MLX5_ADDR_OF (fte_match_param, rule_spec->match_value, outer_headers.dmac_47_16);ether_addr_copy (dmac_v, entry->key.addr);
@@ -587,6 +588,7 @@ mlx5_esw_bridge_mcast_vlan_flow_create(u16 vlan_proto, struct mlx5_esw_bridge_poif (!rule_spec)return ERR_PTR (-ENOMEM ); + rule_spec->flow_context.flags |=FLOW_CONTEXT_UPLINK_HAIRPIN_EN ; rule_spec->match_criteria_enable =MLX5_MATCH_OUTER_HEADERS ; flow_act.action |=MLX5_FLOW_CONTEXT_ACTION_PACKET_REFORMAT ;
@@ -662,6 +664,7 @@ mlx5_esw_bridge_mcast_fwd_flow_create(struct mlx5_esw_bridge_port *port) dest.vport.flags =MLX5_FLOW_DEST_VPORT_VHCA_ID ; dest.vport.vhca_id = port->esw_owner_vhca_id; } + rule_spec->flow_context.flags |=FLOW_CONTEXT_UPLINK_HAIRPIN_EN ; handle =mlx5_add_flow_rules (port->mcast.ft, rule_spec, &flow_act, &dest,1 );kvfree (rule_spec);
drivers/net/ethernet/mellanox/mlx5/core/fs_cmd.c +2 -0
@@ -566,6 +566,8 @@ static int mlx5_cmd_set_fte(struct mlx5_core_dev *dev, fte->flow_context.flow_tag);MLX5_SET (flow_context, in_flow_context, flow_source, fte->flow_context.flow_source); +MLX5_SET (flow_context, in_flow_context, uplink_hairpin_en, + !!(fte->flow_context.flags &FLOW_CONTEXT_UPLINK_HAIRPIN_EN ));MLX5_SET (flow_context, in_flow_context, extended_destination, extended_dest);
include/linux/mlx5/fs.h +1 -0
@@ -132,6 +132,7 @@ struct mlx5_flow_handle;enum {FLOW_CONTEXT_HAS_TAG =BIT (0 ), +FLOW_CONTEXT_UPLINK_HAIRPIN_EN =BIT (1 ), };struct mlx5_flow_context {
include/linux/mlx5/mlx5_ifc.h +1 -1
@@ -3576,7 +3576,7 @@ struct mlx5_ifc_flow_context_bits {u8 action[0x10 ];u8 extended_destination[0x1 ]; -u8 reserved_at_81[0x1 ]; +u8 uplink_hairpin_en[0x1 ];u8 flow_source[0x2 ];u8 encrypt_decrypt_type[0x4 ];u8 destination_list_size[0x18 ];