|
@@ -5179,6 +5179,7 @@ static void ixgbe_fdir_filter_restore(struct ixgbe_adapter *adapter)
|
|
|
struct ixgbe_hw *hw = &adapter->hw;
|
|
|
struct hlist_node *node2;
|
|
|
struct ixgbe_fdir_filter *filter;
|
|
|
+ u64 action;
|
|
|
|
|
|
spin_lock(&adapter->fdir_perfect_lock);
|
|
|
|
|
@@ -5187,12 +5188,17 @@ static void ixgbe_fdir_filter_restore(struct ixgbe_adapter *adapter)
|
|
|
|
|
|
hlist_for_each_entry_safe(filter, node2,
|
|
|
&adapter->fdir_filter_list, fdir_node) {
|
|
|
+ action = filter->action;
|
|
|
+ if (action != IXGBE_FDIR_DROP_QUEUE && action != 0)
|
|
|
+ action =
|
|
|
+ (action >> ETHTOOL_RX_FLOW_SPEC_RING_VF_OFF) - 1;
|
|
|
+
|
|
|
ixgbe_fdir_write_perfect_filter_82599(hw,
|
|
|
&filter->filter,
|
|
|
filter->sw_idx,
|
|
|
- (filter->action == IXGBE_FDIR_DROP_QUEUE) ?
|
|
|
+ (action == IXGBE_FDIR_DROP_QUEUE) ?
|
|
|
IXGBE_FDIR_DROP_QUEUE :
|
|
|
- adapter->rx_ring[filter->action]->reg_idx);
|
|
|
+ adapter->rx_ring[action]->reg_idx);
|
|
|
}
|
|
|
|
|
|
spin_unlock(&adapter->fdir_perfect_lock);
|