On Friday 19 May 2006 12:00, Arnd Bergmann wrote:
On Friday 19 May 2006 04:25, Brice Goglin wrote:
quoted
dev_mc_upload() from net/core/dev_mcast.c does
spin_lock_bh(&dev->xmit_lock);
__dev_mc_upload(dev);
which calls dev->set_multicast_list(), which is
myri10ge_set_multicast_list()
which calls myri10ge_change_promisc
which calls myri10ge_send_cmd
Hmm, if that is the only path where you call it, it may be
helpful to change myri10ge_change_promisc to call a special
atomic version of myri10ge_send_cmd then, while all others
use the regular version, which you can then convert to
do msleep as well.
Or just drop the xmit lock while you do that. As long as you
handle races with ->start_xmit yourself it's ok
-Andi