| 420 | } |
| 421 | |
| 422 | static int |
| 423 | nfp_flow_table_delete_merge(struct nfp_flow_priv *priv, |
| 424 | struct rte_flow *nfp_flow) |
| 425 | { |
| 426 | struct rte_flow *flow_find; |
| 427 | |
| 428 | flow_find = nfp_flow_table_search(priv, nfp_flow); |
| 429 | if (flow_find == NULL) { |
| 430 | PMD_DRV_LOG(ERR, "Can't delete a non-existing flow."); |
| 431 | return -EINVAL; |
| 432 | } |
| 433 | |
| 434 | if (nfp_flow->merge_flag || flow_find->merge_flag) { |
| 435 | flow_find->ref_cnt--; |
| 436 | if (flow_find->ref_cnt > 0) |
| 437 | return 0; |
| 438 | } |
| 439 | |
| 440 | return nfp_flow_table_delete(priv, nfp_flow); |
| 441 | } |
| 442 | |
| 443 | static struct rte_flow * |
| 444 | nfp_flow_alloc(struct nfp_fl_key_ls *key_layer, uint32_t port_id) |
no test coverage detected