- filter = flow->filter;
-
- if (filter->filter_type ==
- HWRM_CFA_TUNNEL_REDIRECT_FILTER &&
- filter->enables == filter->tunnel_type) {
- ret =
- bnxt_handle_tunnel_redirect_destroy(bp,
- filter,
- error);
- if (!ret) {
- goto done;
- } else {
- bnxt_release_flow_lock(bp);
- return ret;
- }
- }
-
- if (filter->filter_type == HWRM_CFA_EM_FILTER)
- ret = bnxt_hwrm_clear_em_filter(bp, filter);
- if (filter->filter_type == HWRM_CFA_NTUPLE_FILTER)
- ret = bnxt_hwrm_clear_ntuple_filter(bp, filter);
- else if (i)
- ret = bnxt_hwrm_clear_l2_filter(bp, filter);
-
- if (ret) {
- rte_flow_error_set
- (error,
- -ret,
- RTE_FLOW_ERROR_TYPE_HANDLE,
- NULL,
- "Failed to flush flow in HW.");
- bnxt_release_flow_lock(bp);
- return -rte_errno;
- }
-done:
- STAILQ_REMOVE(&vnic->flow_list, flow,
- rte_flow, next);
-
- STAILQ_REMOVE(&vnic->filter,
- filter,
- bnxt_filter_info,
- next);
- bnxt_free_filter(bp, filter);