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 */
|
||||
err = ixgbe_fdir_write_perfect_filter_82599(hw,
|
||||
&input->filter, input->sw_idx,
|
||||
(input->action == IXGBE_FDIR_DROP_QUEUE) ?
|
||||
IXGBE_FDIR_DROP_QUEUE :
|
||||
adapter->rx_ring[input->action]->reg_idx);
|
||||
if (err)
|
||||
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,
|
||||
&adapter->fdir_filter_list, fdir_node) {
|
||||
ixgbe_fdir_write_perfect_filter_82599(hw,
|
||||
&filter->filter,
|
||||
filter->sw_idx,
|
||||
filter->action);
|
||||
&filter->filter,
|
||||
filter->sw_idx,
|
||||
(filter->action == IXGBE_FDIR_DROP_QUEUE) ?
|
||||
IXGBE_FDIR_DROP_QUEUE :
|
||||
adapter->rx_ring[filter->action]->reg_idx);
|
||||
}
|
||||
|
||||
spin_unlock(&adapter->fdir_perfect_lock);
|
||||
|
|
Loading…
Reference in New Issue