@@ -72,6 +72,26 @@ uint64_t rx_hash_fields_mask; /* RX fields that should particip
.in -8
};
.fi
+
+.nf
+enum ibv_rx_hash_fields {
+.in +8
+IBV_RX_HASH_SRC_IPV4 = 1 << 0,
+IBV_RX_HASH_DST_IPV4 = 1 << 1,
+IBV_RX_HASH_SRC_IPV6 = 1 << 2,
+IBV_RX_HASH_DST_IPV6 = 1 << 3,
+IBV_RX_HASH_SRC_PORT_TCP = 1 << 4,
+IBV_RX_HASH_DST_PORT_TCP = 1 << 5,
+IBV_RX_HASH_SRC_PORT_UDP = 1 << 6,
+IBV_RX_HASH_DST_PORT_UDP = 1 << 7,
+/* When using tunneling protocol, e.g. VXLAN, then we have an inner (encapsulated packet) and outer.
+ * For applying RSS on the inner packet, then the following field should be set with one of the L3/L4 fields.
+*/
+IBV_RX_HASH_INNER = (1UL << 31),
+.in -8
+};
+.fi
+
.PP
The function
.B ibv_create_qp_ex()
@@ -241,7 +241,8 @@ enum ibv_rx_hash_fields {
IBV_RX_HASH_SRC_PORT_TCP = 1 << 4,
IBV_RX_HASH_DST_PORT_TCP = 1 << 5,
IBV_RX_HASH_SRC_PORT_UDP = 1 << 6,
- IBV_RX_HASH_DST_PORT_UDP = 1 << 7
+ IBV_RX_HASH_DST_PORT_UDP = 1 << 7,
+ IBV_RX_HASH_INNER = (1UL << 31),
};
struct ibv_rss_caps {