return -EOPNOTSUPP;
 
        key_layer_two = 0;
-       key_layer = NFP_FLOWER_LAYER_PORT | NFP_FLOWER_LAYER_MAC;
+       key_layer = NFP_FLOWER_LAYER_PORT;
        key_size = sizeof(struct nfp_flower_meta_one) +
-                  sizeof(struct nfp_flower_in_port) +
-                  sizeof(struct nfp_flower_mac_mpls);
+                  sizeof(struct nfp_flower_in_port);
+
+       if (dissector_uses_key(flow->dissector, FLOW_DISSECTOR_KEY_ETH_ADDRS) ||
+           dissector_uses_key(flow->dissector, FLOW_DISSECTOR_KEY_MPLS)) {
+               key_layer |= NFP_FLOWER_LAYER_MAC;
+               key_size += sizeof(struct nfp_flower_mac_mpls);
+       }
 
        if (dissector_uses_key(flow->dissector,
                               FLOW_DISSECTOR_KEY_ENC_CONTROL)) {