Do not use a sleep lock when protecting the driver flags.

This was causing a locking issue with lagg

Submitted by:	odeds
This commit is contained in:
Alfred Perlstein 2013-11-08 18:28:48 +00:00
parent d3e98a133b
commit a91c93ed22
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=257864
2 changed files with 5 additions and 2 deletions

View File

@ -919,6 +919,7 @@ void mlx4_en_destroy_netdev(struct net_device *dev)
mtx_destroy(&priv->stats_lock.m);
mtx_destroy(&priv->vlan_lock.m);
mtx_destroy(&priv->ioctl_lock.m);
kfree(priv);
if_free(dev);
}
@ -1087,9 +1088,9 @@ static int mlx4_en_ioctl(struct ifnet *dev, u_long command, caddr_t data)
break;
case SIOCADDMULTI:
case SIOCDELMULTI:
mutex_lock(&mdev->state_lock);
spin_lock(&priv->ioctl_lock);
mlx4_en_set_multicast(dev);
mutex_unlock(&mdev->state_lock);
spin_unlock(&priv->ioctl_lock);
break;
case SIOCSIFMEDIA:
case SIOCGIFMEDIA:
@ -1510,6 +1511,7 @@ int mlx4_en_init_netdev(struct mlx4_en_dev *mdev, int port,
priv->msg_enable = MLX4_EN_MSG_LEVEL;
priv->ip_reasm = priv->mdev->profile.ip_reasm;
mtx_init(&priv->stats_lock.m, "mlx4 stats", NULL, MTX_DEF);
mtx_init(&priv->ioctl_lock.m, "mlx4 ioctl", NULL, MTX_DEF);
mtx_init(&priv->vlan_lock.m, "mlx4 vlan", NULL, MTX_DEF);
INIT_WORK(&priv->mcast_task, mlx4_en_do_set_multicast);
INIT_WORK(&priv->watchdog_task, mlx4_en_restart);

View File

@ -493,6 +493,7 @@ struct mlx4_en_priv {
spinlock_t vlan_lock;
struct mlx4_en_port_state port_state;
spinlock_t stats_lock;
spinlock_t ioctl_lock;
unsigned long last_moder_packets[MAX_RX_RINGS];
unsigned long last_moder_tx_packets;