net/mlx4_en: Remove ethtool flow steering rules before releasing QPs
Fix the ethtool flow steering rules cleanup to be carried out before releasing the RX QPs. Signed-off-by: Hadar Hen Zion <hadarh@mellanox.com> Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
80cb002116
commit
6efb5fac4d
1 changed files with 11 additions and 11 deletions
|
@ -1637,6 +1637,17 @@ void mlx4_en_stop_port(struct net_device *dev, int detach)
|
||||||
/* Flush multicast filter */
|
/* Flush multicast filter */
|
||||||
mlx4_SET_MCAST_FLTR(mdev->dev, priv->port, 0, 1, MLX4_MCAST_CONFIG);
|
mlx4_SET_MCAST_FLTR(mdev->dev, priv->port, 0, 1, MLX4_MCAST_CONFIG);
|
||||||
|
|
||||||
|
/* Remove flow steering rules for the port*/
|
||||||
|
if (mdev->dev->caps.steering_mode ==
|
||||||
|
MLX4_STEERING_MODE_DEVICE_MANAGED) {
|
||||||
|
ASSERT_RTNL();
|
||||||
|
list_for_each_entry_safe(flow, tmp_flow,
|
||||||
|
&priv->ethtool_list, list) {
|
||||||
|
mlx4_flow_detach(mdev->dev, flow->id);
|
||||||
|
list_del(&flow->list);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
mlx4_en_destroy_drop_qp(priv);
|
mlx4_en_destroy_drop_qp(priv);
|
||||||
|
|
||||||
/* Free TX Rings */
|
/* Free TX Rings */
|
||||||
|
@ -1657,17 +1668,6 @@ void mlx4_en_stop_port(struct net_device *dev, int detach)
|
||||||
if (!(mdev->dev->caps.flags2 & MLX4_DEV_CAP_FLAGS2_REASSIGN_MAC_EN))
|
if (!(mdev->dev->caps.flags2 & MLX4_DEV_CAP_FLAGS2_REASSIGN_MAC_EN))
|
||||||
mdev->mac_removed[priv->port] = 1;
|
mdev->mac_removed[priv->port] = 1;
|
||||||
|
|
||||||
/* Remove flow steering rules for the port*/
|
|
||||||
if (mdev->dev->caps.steering_mode ==
|
|
||||||
MLX4_STEERING_MODE_DEVICE_MANAGED) {
|
|
||||||
ASSERT_RTNL();
|
|
||||||
list_for_each_entry_safe(flow, tmp_flow,
|
|
||||||
&priv->ethtool_list, list) {
|
|
||||||
mlx4_flow_detach(mdev->dev, flow->id);
|
|
||||||
list_del(&flow->list);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Free RX Rings */
|
/* Free RX Rings */
|
||||||
for (i = 0; i < priv->rx_ring_num; i++) {
|
for (i = 0; i < priv->rx_ring_num; i++) {
|
||||||
mlx4_en_deactivate_rx_ring(priv, &priv->rx_ring[i]);
|
mlx4_en_deactivate_rx_ring(priv, &priv->rx_ring[i]);
|
||||||
|
|
Loading…
Add table
Reference in a new issue