RTE_FLOW_ITEM_TYPE_END,
};
+enum rte_flow_item_type pattern_any[] = {
+ RTE_FLOW_ITEM_TYPE_ANY,
+ RTE_FLOW_ITEM_TYPE_END,
+};
+
/* raw */
enum rte_flow_item_type pattern_raw[] = {
RTE_FLOW_ITEM_TYPE_RAW,
TAILQ_INIT(&pf->dist_parser_list);
rte_spinlock_init(&pf->flow_ops_lock);
+ if (ice_parser_create(&ad->hw, &ad->psr) != ICE_SUCCESS)
+ PMD_INIT_LOG(WARNING, "Failed to initialize DDP parser, raw packet filter will not be supported");
+
RTE_TAILQ_FOREACH_SAFE(engine, &engine_list, node, temp) {
if (engine->init == NULL) {
PMD_INIT_LOG(ERR, "Invalid engine type (%d)",
TAILQ_REMOVE(&pf->dist_parser_list, p_parser, node);
rte_free(p_parser);
}
+
+ if (ad->psr != NULL) {
+ ice_parser_destroy(ad->psr);
+ ad->psr = NULL;
+ }
}
static struct ice_parser_list *
static struct ice_ptype_match ice_ptype_map[] = {
{pattern_raw, ICE_PTYPE_IPV4_PAY},
+ {pattern_any, ICE_PTYPE_IPV4_PAY},
{pattern_eth_ipv4, ICE_PTYPE_IPV4_PAY},
{pattern_eth_ipv4_udp, ICE_PTYPE_IPV4_UDP_PAY},
{pattern_eth_ipv4_tcp, ICE_PTYPE_IPV4_TCP_PAY},
ret = ice_flow_destroy(dev, p_flow, error);
if (ret) {
PMD_DRV_LOG(ERR, "Failed to flush flows");
- return -EINVAL;
+ if (ret != -EAGAIN)
+ ret = -EINVAL;
+ return ret;
}
}