0x00000000, 0x00000000, 0x00000000, 0x00000000,
 };
 
+/* Packet types for packets with an Outer/First/Single IPv4 header - no L4 */
+static const u32 ice_ipv4_ofos_no_l4[] = {
+       0x10C00000, 0x04000800, 0x00000000, 0x00000000,
+       0x00000000, 0x00000000, 0x00000000, 0x00000000,
+       0x00000000, 0x00000000, 0x00000000, 0x00000000,
+       0x00000000, 0x00000000, 0x00000000, 0x00000000,
+       0x00000000, 0x00000000, 0x00000000, 0x00000000,
+       0x00000000, 0x00000000, 0x00000000, 0x00000000,
+       0x00000000, 0x00000000, 0x00000000, 0x00000000,
+       0x00000000, 0x00000000, 0x00000000, 0x00000000,
+};
+
+/* Packet types for packets with an Innermost/Last IPv4 header - no L4 */
+static const u32 ice_ipv4_il_no_l4[] = {
+       0x60000000, 0x18043008, 0x80000002, 0x6010c021,
+       0x00000008, 0x00000000, 0x00000000, 0x00000000,
+       0x00000000, 0x00000000, 0x00000000, 0x00000000,
+       0x00000000, 0x00000000, 0x00000000, 0x00000000,
+       0x00000000, 0x00000000, 0x00000000, 0x00000000,
+       0x00000000, 0x00000000, 0x00000000, 0x00000000,
+       0x00000000, 0x00000000, 0x00000000, 0x00000000,
+       0x00000000, 0x00000000, 0x00000000, 0x00000000,
+};
+
+/* Packet types for packets with an Outer/First/Single IPv6 header - no L4 */
+static const u32 ice_ipv6_ofos_no_l4[] = {
+       0x00000000, 0x00000000, 0x43000000, 0x10002000,
+       0x00000000, 0x00000000, 0x00000000, 0x00000000,
+       0x00000000, 0x00000000, 0x00000000, 0x00000000,
+       0x00000000, 0x00000000, 0x00000000, 0x00000000,
+       0x00000000, 0x00000000, 0x00000000, 0x00000000,
+       0x00000000, 0x00000000, 0x00000000, 0x00000000,
+       0x00000000, 0x00000000, 0x00000000, 0x00000000,
+       0x00000000, 0x00000000, 0x00000000, 0x00000000,
+};
+
+/* Packet types for packets with an Innermost/Last IPv6 header - no L4 */
+static const u32 ice_ipv6_il_no_l4[] = {
+       0x00000000, 0x02180430, 0x0000010c, 0x086010c0,
+       0x00000430, 0x00000000, 0x00000000, 0x00000000,
+       0x00000000, 0x00000000, 0x00000000, 0x00000000,
+       0x00000000, 0x00000000, 0x00000000, 0x00000000,
+       0x00000000, 0x00000000, 0x00000000, 0x00000000,
+       0x00000000, 0x00000000, 0x00000000, 0x00000000,
+       0x00000000, 0x00000000, 0x00000000, 0x00000000,
+       0x00000000, 0x00000000, 0x00000000, 0x00000000,
+};
+
 /* UDP Packet types for non-tunneled packets or tunneled
  * packets with inner UDP.
  */
 
                hdrs = prof->segs[i].hdrs;
 
-               if (hdrs & ICE_FLOW_SEG_HDR_IPV4) {
+               if ((hdrs & ICE_FLOW_SEG_HDR_IPV4) &&
+                   !(hdrs & ICE_FLOW_SEG_HDRS_L4_MASK)) {
+                       src = !i ? (const unsigned long *)ice_ipv4_ofos_no_l4 :
+                               (const unsigned long *)ice_ipv4_il_no_l4;
+                       bitmap_and(params->ptypes, params->ptypes, src,
+                                  ICE_FLOW_PTYPE_MAX);
+               } else if (hdrs & ICE_FLOW_SEG_HDR_IPV4) {
                        src = !i ? (const unsigned long *)ice_ptypes_ipv4_ofos :
                                (const unsigned long *)ice_ptypes_ipv4_il;
                        bitmap_and(params->ptypes, params->ptypes, src,
                                   ICE_FLOW_PTYPE_MAX);
+               } else if ((hdrs & ICE_FLOW_SEG_HDR_IPV6) &&
+                          !(hdrs & ICE_FLOW_SEG_HDRS_L4_MASK)) {
+                       src = !i ? (const unsigned long *)ice_ipv6_ofos_no_l4 :
+                               (const unsigned long *)ice_ipv6_il_no_l4;
+                       bitmap_and(params->ptypes, params->ptypes, src,
+                                  ICE_FLOW_PTYPE_MAX);
                } else if (hdrs & ICE_FLOW_SEG_HDR_IPV6) {
                        src = !i ? (const unsigned long *)ice_ptypes_ipv6_ofos :
                                (const unsigned long *)ice_ptypes_ipv6_il;