|
@@ -5242,7 +5242,7 @@ static int i40e_up_complete(struct i40e_vsi *vsi)
|
|
|
/* reset fd counters */
|
|
|
pf->fd_add_err = pf->fd_atr_cnt = 0;
|
|
|
if (pf->fd_tcp_rule > 0) {
|
|
|
- pf->flags &= ~I40E_FLAG_FD_ATR_ENABLED;
|
|
|
+ pf->auto_disable_flags |= I40E_FLAG_FD_ATR_ENABLED;
|
|
|
if (I40E_DEBUG_FD & pf->hw.debug_mask)
|
|
|
dev_info(&pf->pdev->dev, "Forcing ATR off, sideband rules for TCP/IPv4 exist\n");
|
|
|
pf->fd_tcp_rule = 0;
|
|
@@ -5976,9 +5976,6 @@ static void i40e_fdir_flush_and_replay(struct i40e_pf *pf)
|
|
|
int fd_room;
|
|
|
int reg;
|
|
|
|
|
|
- if (!(pf->flags & (I40E_FLAG_FD_SB_ENABLED | I40E_FLAG_FD_ATR_ENABLED)))
|
|
|
- return;
|
|
|
-
|
|
|
if (!time_after(jiffies, pf->fd_flush_timestamp +
|
|
|
(I40E_MIN_FD_FLUSH_INTERVAL * HZ)))
|
|
|
return;
|
|
@@ -5998,7 +5995,7 @@ static void i40e_fdir_flush_and_replay(struct i40e_pf *pf)
|
|
|
}
|
|
|
|
|
|
pf->fd_flush_timestamp = jiffies;
|
|
|
- pf->flags &= ~I40E_FLAG_FD_ATR_ENABLED;
|
|
|
+ pf->auto_disable_flags |= I40E_FLAG_FD_ATR_ENABLED;
|
|
|
/* flush all filters */
|
|
|
wr32(&pf->hw, I40E_PFQF_CTL_1,
|
|
|
I40E_PFQF_CTL_1_CLEARFDTABLE_MASK);
|
|
@@ -6018,7 +6015,7 @@ static void i40e_fdir_flush_and_replay(struct i40e_pf *pf)
|
|
|
/* replay sideband filters */
|
|
|
i40e_fdir_filter_restore(pf->vsi[pf->lan_vsi]);
|
|
|
if (!disable_atr)
|
|
|
- pf->flags |= I40E_FLAG_FD_ATR_ENABLED;
|
|
|
+ pf->auto_disable_flags &= ~I40E_FLAG_FD_ATR_ENABLED;
|
|
|
clear_bit(__I40E_FD_FLUSH_REQUESTED, &pf->state);
|
|
|
if (I40E_DEBUG_FD & pf->hw.debug_mask)
|
|
|
dev_info(&pf->pdev->dev, "FD Filter table flushed and FD-SB replayed.\n");
|
|
@@ -6052,9 +6049,6 @@ static void i40e_fdir_reinit_subtask(struct i40e_pf *pf)
|
|
|
if (test_bit(__I40E_DOWN, &pf->state))
|
|
|
return;
|
|
|
|
|
|
- if (!(pf->flags & (I40E_FLAG_FD_SB_ENABLED | I40E_FLAG_FD_ATR_ENABLED)))
|
|
|
- return;
|
|
|
-
|
|
|
if (test_bit(__I40E_FD_FLUSH_REQUESTED, &pf->state))
|
|
|
i40e_fdir_flush_and_replay(pf);
|
|
|
|
|
@@ -8682,13 +8676,13 @@ bool i40e_set_ntuple(struct i40e_pf *pf, netdev_features_t features)
|
|
|
/* reset fd counters */
|
|
|
pf->fd_add_err = pf->fd_atr_cnt = pf->fd_tcp_rule = 0;
|
|
|
pf->fdir_pf_active_filters = 0;
|
|
|
- pf->flags |= I40E_FLAG_FD_ATR_ENABLED;
|
|
|
- if (I40E_DEBUG_FD & pf->hw.debug_mask)
|
|
|
- dev_info(&pf->pdev->dev, "ATR re-enabled.\n");
|
|
|
/* if ATR was auto disabled it can be re-enabled. */
|
|
|
if ((pf->flags & I40E_FLAG_FD_ATR_ENABLED) &&
|
|
|
- (pf->auto_disable_flags & I40E_FLAG_FD_ATR_ENABLED))
|
|
|
+ (pf->auto_disable_flags & I40E_FLAG_FD_ATR_ENABLED)) {
|
|
|
pf->auto_disable_flags &= ~I40E_FLAG_FD_ATR_ENABLED;
|
|
|
+ if (I40E_DEBUG_FD & pf->hw.debug_mask)
|
|
|
+ dev_info(&pf->pdev->dev, "ATR re-enabled.\n");
|
|
|
+ }
|
|
|
}
|
|
|
return need_reset;
|
|
|
}
|