net/mlx4_en: Fix race when setting the device MAC address
authorYan Burman <yanb@mellanox.com>
Thu, 7 Mar 2013 03:46:55 +0000 (03:46 +0000)
committerDavid S. Miller <davem@davemloft.net>
Thu, 7 Mar 2013 20:52:04 +0000 (15:52 -0500)
commitbfa8ab47415a87c6c93a9e54e16f2f8cc6de79af
treed529eba9c805f34b8c27f5b40e543d2f61c3cc7d
parente7dbeba85600aa2c8daf99f8f53d9ad27e88b810
net/mlx4_en: Fix race when setting the device MAC address

Remove unnecessary use of workqueue for the device MAC address setting
flow, and fix a race when setting MAC address which was introduced by
commit c07cb4b0a "net/mlx4_en: Manage hash of MAC addresses per port"

The race happened when mlx4_en_replace_mac was being executed in parallel
with a successive call to ndo_set_mac_address, e.g witn an A/B/A MAC
setting configuration test, the third set fails.

With this change we also properly report an error if set MAC fails.

Signed-off-by: Yan Burman <yanb@mellanox.com>
Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/mellanox/mlx4/en_netdev.c
drivers/net/ethernet/mellanox/mlx4/mlx4_en.h