net/i40e: fix flow director enabling
[dpdk.git] / drivers / net / i40e / i40e_flow.c
index 25c77e7..8f8df6f 100644 (file)
@@ -3462,6 +3462,10 @@ i40e_flow_parse_fdir_filter(struct rte_eth_dev *dev,
                }
        }
 
+       /* If create the first fdir rule, enable fdir check for rx queues */
+       if (TAILQ_EMPTY(&pf->fdir.fdir_list))
+               i40e_fdir_rx_proc_enable(dev, 1);
+
        return 0;
 err:
        i40e_fdir_teardown(pf);
@@ -5330,9 +5334,6 @@ i40e_flow_flush(struct rte_eth_dev *dev, struct rte_flow_error *error)
                return -rte_errno;
        }
 
-       /* Disable FDIR processing as all FDIR rules are now flushed */
-       i40e_fdir_rx_proc_enable(dev, 0);
-
        return ret;
 }
 
@@ -5368,6 +5369,9 @@ i40e_flow_flush_fdir_filter(struct i40e_pf *pf)
                for (pctype = I40E_FILTER_PCTYPE_NONF_IPV4_UDP;
                     pctype <= I40E_FILTER_PCTYPE_L2_PAYLOAD; pctype++)
                        pf->fdir.inset_flag[pctype] = 0;
+
+               /* Disable FDIR processing as all FDIR rules are now flushed */
+               i40e_fdir_rx_proc_enable(dev, 0);
        }
 
        return ret;