mirror of https://gitee.com/openkylin/linux.git
ixgbe: fix ring assignment issues for SR-IOV and drop cases
This change fixes the fact that we would trigger a null pointer dereference or specify the wrong ring if the rings were restored. This change makes certain that the DROP queue is a static value, and all other rings are based on the ring offsets for the PF. Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com> Tested-by: Ross Brattain <ross.b.brattain@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
This commit is contained in:
parent
2ba279e2f7
commit
1f4d51836f
|
@ -2677,6 +2677,8 @@ static int ixgbe_add_ethtool_fdir_entry(struct ixgbe_adapter *adapter,
|
||||||
/* program filters to filter memory */
|
/* program filters to filter memory */
|
||||||
err = ixgbe_fdir_write_perfect_filter_82599(hw,
|
err = ixgbe_fdir_write_perfect_filter_82599(hw,
|
||||||
&input->filter, input->sw_idx,
|
&input->filter, input->sw_idx,
|
||||||
|
(input->action == IXGBE_FDIR_DROP_QUEUE) ?
|
||||||
|
IXGBE_FDIR_DROP_QUEUE :
|
||||||
adapter->rx_ring[input->action]->reg_idx);
|
adapter->rx_ring[input->action]->reg_idx);
|
||||||
if (err)
|
if (err)
|
||||||
goto err_out_w_lock;
|
goto err_out_w_lock;
|
||||||
|
|
|
@ -3755,9 +3755,11 @@ static void ixgbe_fdir_filter_restore(struct ixgbe_adapter *adapter)
|
||||||
hlist_for_each_entry_safe(filter, node, node2,
|
hlist_for_each_entry_safe(filter, node, node2,
|
||||||
&adapter->fdir_filter_list, fdir_node) {
|
&adapter->fdir_filter_list, fdir_node) {
|
||||||
ixgbe_fdir_write_perfect_filter_82599(hw,
|
ixgbe_fdir_write_perfect_filter_82599(hw,
|
||||||
&filter->filter,
|
&filter->filter,
|
||||||
filter->sw_idx,
|
filter->sw_idx,
|
||||||
filter->action);
|
(filter->action == IXGBE_FDIR_DROP_QUEUE) ?
|
||||||
|
IXGBE_FDIR_DROP_QUEUE :
|
||||||
|
adapter->rx_ring[filter->action]->reg_idx);
|
||||||
}
|
}
|
||||||
|
|
||||||
spin_unlock(&adapter->fdir_perfect_lock);
|
spin_unlock(&adapter->fdir_perfect_lock);
|
||||||
|
|
Loading…
Reference in New Issue