Currently the Windows implementation hardcodes match criteria to
MLX5_MATCH_OUTER_HEADERS when creating flow rules, which prevents
matching on inner headers and other criteria types like NVGRE.
The fix uses the matcher's match_criteria_enable attribute instead
of hardcoding OUTER_HEADERS, and moves the assignment outside the
action switch block to apply to all cases.
NVGRE item type is also added to the supported items list.
Fixes: 1d194496b9d1 ("net/mlx5: create flow rule on Windows")
Cc: stable@dpdk.org
Signed-off-by: Itai Sharoni <isharoni@nvidia.com>
Acked-by: Bing Zhao <bingz@nvidia.com>
Intiyaz Basha <intiyaz.basha@caviumnetworks.com>
Ioana Ciornei <ioana.ciornei@nxp.com>
Isaac Boukris <iboukris@gmail.com>
+Itai Sharoni <isharoni@nvidia.com>
Itamar Gozlan <igozlan@nvidia.com>
Itsuro Oda <oda@valinux.co.jp>
Ivan Boule <ivan.boule@6wind.com>
- IPv4/TCP with CVLAN filtering
- L4 steering rules for port RSS of IP, UDP, TCP
+- Tunnel protocol support:
+
+ - NVGRE (requires DevX dynamic insertion mode)
+
.. _mlx5_multiproc:
default:
break;
}
- MLX5_SET(devx_fs_rule_add_in, in, match_criteria_enable,
- MLX5_MATCH_OUTER_HEADERS);
}
+ MLX5_SET(devx_fs_rule_add_in, in, match_criteria_enable,
+ mlx5_matcher->attr.match_criteria_enable);
*flow = mlx5_glue->devx_fs_rule_add(mlx5_matcher->ctx, in, sizeof(in));
return (*flow) ? 0 : -1;
}
case RTE_FLOW_ITEM_TYPE_IPV6:
case RTE_FLOW_ITEM_TYPE_VLAN:
case RTE_FLOW_ITEM_TYPE_ESP:
+ case RTE_FLOW_ITEM_TYPE_NVGRE:
return true;
default:
return false;