OSDN Git Service

net/mlx5e: Support offloading TC NIC hairpin flows
authorOr Gerlitz <ogerlitz@mellanox.com>
Wed, 22 Nov 2017 19:09:05 +0000 (21:09 +0200)
committerSaeed Mahameed <saeedm@mellanox.com>
Tue, 9 Jan 2018 05:40:48 +0000 (07:40 +0200)
commit5c65c564c96266110bec58f42c505bff6d5564f7
tree68f303c3a2daedab38123801abd6001ad3efe9c3
parent77ab67b7f0f998ae2610f74a04ab4fa7b49774f6
net/mlx5e: Support offloading TC NIC hairpin flows

We refer to TC NIC rule that involves forwarding as "hairpin".

All hairpin rules from the current NIC device (called "func" in
the code) to a given NIC device ("peer") are steered into the
same hairpin RQ/SQ pair.

The hairpin pair is set on demand and removed when there are no
TC rules that need it.

Here's a TC rule that matches on icmp, does header re-write of the
dst mac and hairpin from RX/enp1s2f1 to TX/enp1s2f2 (enp1s2f1/2 are
two mlx5 devices):

tc filter add dev enp1s2f1 protocol ip parent ffff: prio 2
    flower skip_sw ip_proto icmp
     action pedit ex munge eth dst set 10:22:33:44:55:66 pipe
     action mirred egress redirect dev enp1s2f2

Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
drivers/net/ethernet/mellanox/mlx5/core/en.h
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c