diff options
Diffstat (limited to 'sys/dev/mlx5')
-rw-r--r-- | sys/dev/mlx5/mlx5_en/mlx5_en_flow_table.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/sys/dev/mlx5/mlx5_en/mlx5_en_flow_table.c b/sys/dev/mlx5/mlx5_en/mlx5_en_flow_table.c index cdfe19d910d1..54fbe8e057cc 100644 --- a/sys/dev/mlx5/mlx5_en/mlx5_en_flow_table.c +++ b/sys/dev/mlx5/mlx5_en/mlx5_en_flow_table.c @@ -31,6 +31,35 @@ #include <dev/mlx5/fs.h> #include <dev/mlx5/mpfs.h> +/* + * The flow tables with rules define the packet processing on receive. + * Currently, the following structure is set up to handle different offloads + * like VLAN decapsulation, packet classification, RSS hashing, VxLAN checksum + * offloading: + * + * + * +=========+ +=========+ +=================+ + * |VLAN ft: | |VxLAN | |VxLAN Main | + * |CTAG/STAG|------>| VNI|----->|Inner Proto Match|=====> Inner TIR n + * |VID/noVID|/ |Catch-all|\ | | + * +=========+ +=========+| +=================+ + * | + * | + * | + * v + * +=================+ + * |Main | + * |Outer Proto Match|=====> TIR n + * | | + * +=================+ + * + * The path through flow rules directs each packet into an appropriate TIR, + * according to the: + * - VLAN encapsulation + * - Outer protocol + * - Presence of inner protocol + */ + #define MLX5_SET_CFG(p, f, v) MLX5_SET(create_flow_group_in, p, f, v) enum { |