A GTP tunnel uses the same TEID value in both directions of a flow; including TEID in the hash input does not break src/dst symmetry.
ethtool_rxfh_config_is_sym() currently rejects any hash field bitmap that contains bits outside the four paired L3/L4 fields. This causes drivers that hash GTP flows on TEID to fail the kernel's preflight validation in ethtool_check_flow_types(), making it impossible for those drivers to support symmetric-xor transforms at all. Strip RXH_GTP_TEID from the bitmap before the paired-field check so that drivers may honestly report TEID hashing without blocking the configuration of symmetric transforms. Signed-off-by: Aleksandr Loktionov <[email protected]> --- net/ethtool/common.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/net/ethtool/common.c b/net/ethtool/common.c index 5fae329..9a3fd76 100644 --- a/net/ethtool/common.c +++ b/net/ethtool/common.c @@ -911,6 +911,9 @@ int ethtool_rxfh_config_is_sym(u64 rxfh) { bool sym; + /* Strip TEID before checking - it carries no src/dst asymmetry */ + rxfh &= ~(u64)RXH_GTP_TEID; + sym = rxfh == (rxfh & (RXH_IP_SRC | RXH_IP_DST | RXH_L4_B_0_1 | RXH_L4_B_2_3)); sym &= !!(rxfh & RXH_IP_SRC) == !!(rxfh & RXH_IP_DST); -- 2.52.0
