• Tonghao Zhang's avatar
    net/mlx5e: Don't overwrite pedit action when multiple pedit used · 218d05ce
    Tonghao Zhang authored
    In some case, we may use multiple pedit actions to modify packets.
    The command shown as below: the last pedit action is effective.
    $ tc filter add dev netdev_rep parent ffff: protocol ip prio 1    \
    	flower skip_sw ip_proto icmp dst_ip        \
    	action pedit ex munge ip dst set pipe    \
    	action pedit ex munge eth src set 00:00:00:00:00:01 pipe    \
    	action pedit ex munge eth dst set 00:00:00:00:00:02 pipe    \
    	action csum ip pipe    \
    	action tunnel_key set src_ip dst_ip dst_port 4789 id 100 \
    	action mirred egress redirect dev vxlan0
    To fix it, we add max_mod_hdr_actions to mlx5e_tc_flow_parse_attr struction,
    max_mod_hdr_actions will store the max pedit action number we support and
    num_mod_hdr_actions indicates how many pedit action we used, and store all
    pedit action to mod_hdr_actions.
    Fixes: d79b6df6 ("net/mlx5e: Add parsing of TC pedit actions to HW format")
    Cc: Or Gerlitz <ogerlitz@mellanox.com>
    Signed-off-by: 's avatarTonghao Zhang <xiangxia.m.yue@gmail.com>
    Reviewed-by: 's avatarOr Gerlitz <ogerlitz@mellanox.com>
    Acked-by: 's avatarSaeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: 's avatarDavid S. Miller <davem@davemloft.net>
en_tc.c 89.5 KB