aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/mlx5
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/mlx5')
-rw-r--r--sys/dev/mlx5/mlx5_en/mlx5_en_flow_table.c29
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 {