On Thu, 3 Feb 2022, Toshiaki Makita wrote: > Support GREv0 without NAT. > > Signed-off-by: Toshiaki Makita <toshiaki.makita1@xxxxxxxxx> > --- > drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c | 21 +++++++++++++++------ > 1 file changed, 15 insertions(+), 6 deletions(-) > > diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c b/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c > index 0f4d3b9d..465643c 100644 > --- a/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c > +++ b/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c > @@ -258,7 +258,8 @@ struct mlx5_ct_entry { > return -EOPNOTSUPP; > } > } else { > - return -EOPNOTSUPP; > + if (tuple->ip_proto != IPPROTO_GRE) > + return -EOPNOTSUPP; > } > > return 0; > @@ -807,7 +808,11 @@ struct mlx5_ct_entry { > attr->dest_chain = 0; > attr->dest_ft = mlx5e_tc_post_act_get_ft(ct_priv->post_act); > attr->ft = nat ? ct_priv->ct_nat : ct_priv->ct; > - attr->outer_match_level = MLX5_MATCH_L4; > + if (entry->tuple.ip_proto == IPPROTO_TCP || > + entry->tuple.ip_proto == IPPROTO_UDP) > + attr->outer_match_level = MLX5_MATCH_L4; > + else > + attr->outer_match_level = MLX5_MATCH_L3; > attr->counter = entry->counter->counter; > attr->flags |= MLX5_ATTR_FLAG_NO_IN_PORT; > if (ct_priv->ns_type == MLX5_FLOW_NAMESPACE_FDB) > @@ -1224,16 +1229,20 @@ static void mlx5_tc_ct_entry_del_work(struct work_struct *work) > struct flow_keys flow_keys; > > skb_reset_network_header(skb); > - skb_flow_dissect_flow_keys(skb, &flow_keys, 0); > + skb_flow_dissect_flow_keys(skb, &flow_keys, FLOW_DISSECTOR_F_STOP_BEFORE_ENCAP); > > tuple->zone = zone; > > if (flow_keys.basic.ip_proto != IPPROTO_TCP && > - flow_keys.basic.ip_proto != IPPROTO_UDP) > + flow_keys.basic.ip_proto != IPPROTO_UDP && > + flow_keys.basic.ip_proto != IPPROTO_GRE) > return false; > > - tuple->port.src = flow_keys.ports.src; > - tuple->port.dst = flow_keys.ports.dst; > + if (flow_keys.basic.ip_proto == IPPROTO_TCP || > + flow_keys.basic.ip_proto == IPPROTO_UDP) { > + tuple->port.src = flow_keys.ports.src; > + tuple->port.dst = flow_keys.ports.dst; > + } > tuple->n_proto = flow_keys.basic.n_proto; > tuple->ip_proto = flow_keys.basic.ip_proto; > > -- > 1.8.3.1 > > Acked-by: Paul Blakey <paulb@xxxxxxxxxx> Looks good to me. Thanks.