The pre-scan in ice_fdir_parse_pattern() recognises VXLAN and
GTPU items but not L2TPV2.  When an L2TPv2 item is present, tunnel_type
stays NONE, so the ETH item handler stores MAC addresses in the inner
ext_data struct instead of ext_data_outer resulting in rule not matching.

Add ICE_FDIR_TUNNEL_TYPE_L2TPV2 detection alongside the existing VXLAN
check.

Fixes: 733640dae75e ("net/ice: support L2TPv2 flow pattern matching")
Signed-off-by: Shaiq Wani <[email protected]>
---
v3:
- Fixed check-patch issue.
v2:
- Split from combined outer-MAC patch into a seperate fix.

 drivers/net/intel/ice/ice_fdir_filter.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/net/intel/ice/ice_fdir_filter.c 
b/drivers/net/intel/ice/ice_fdir_filter.c
index 3522d77123..1cbc613020 100644
--- a/drivers/net/intel/ice/ice_fdir_filter.c
+++ b/drivers/net/intel/ice/ice_fdir_filter.c
@@ -1911,6 +1911,8 @@ ice_fdir_parse_pattern(__rte_unused struct ice_adapter 
*ad,
        for (item = pattern; item->type != RTE_FLOW_ITEM_TYPE_END; item++) {
                if (item->type == RTE_FLOW_ITEM_TYPE_VXLAN)
                        tunnel_type = ICE_FDIR_TUNNEL_TYPE_VXLAN;
+               if (item->type == RTE_FLOW_ITEM_TYPE_L2TPV2)
+                       tunnel_type = ICE_FDIR_TUNNEL_TYPE_L2TPV2;
                /* To align with shared code behavior, save gtpu outer
                 * fields in inner struct.
                 */
-- 
2.43.0

Reply via email to