i40e: FD filter replay logic bug fix
[deliverable/linux.git] / drivers / net / ethernet / intel / i40e / i40e_txrx.c
index 5cc27fba8ad51f66f8e36f4c1b0b8ebac82b4d32..babb7e6a66bd3933aed318afba063410d1a785c4 100644 (file)
@@ -445,14 +445,16 @@ static void i40e_fd_handle_status(struct i40e_ring *rx_ring,
                 */
                if (fcnt_prog >= (fcnt_avail - I40E_FDIR_BUFFER_FULL_MARGIN)) {
                        /* Turn off ATR first */
-                       if (pf->flags & I40E_FLAG_FD_ATR_ENABLED) {
-                               pf->flags &= ~I40E_FLAG_FD_ATR_ENABLED;
+                       if ((pf->flags & I40E_FLAG_FD_ATR_ENABLED) &&
+                           !(pf->auto_disable_flags &
+                             I40E_FLAG_FD_ATR_ENABLED)) {
                                dev_warn(&pdev->dev, "FD filter space full, ATR for further flows will be turned off\n");
                                pf->auto_disable_flags |=
                                                       I40E_FLAG_FD_ATR_ENABLED;
                                pf->flags |= I40E_FLAG_FDIR_REQUIRES_REINIT;
-                       } else if (pf->flags & I40E_FLAG_FD_SB_ENABLED) {
-                               pf->flags &= ~I40E_FLAG_FD_SB_ENABLED;
+                       } else if ((pf->flags & I40E_FLAG_FD_SB_ENABLED) &&
+                                  !(pf->auto_disable_flags &
+                                    I40E_FLAG_FD_SB_ENABLED)) {
                                dev_warn(&pdev->dev, "FD filter space full, new ntuple rules will not be added\n");
                                pf->auto_disable_flags |=
                                                        I40E_FLAG_FD_SB_ENABLED;
This page took 0.02919 seconds and 5 git commands to generate.