On Tuesday 03 July 2007 06:09:19 Michael Wu wrote: > On Monday 02 July 2007 13:35, Michael Buesch wrote: > > + netif_tx_lock_bh(mdev); > > for (i = 0; i < hw->queues; i++) > > ieee80211_stop_queue(hw, i); > > + netif_tx_unlock_bh(mdev); > Well, looks like this will break stopping all tx queues from the tx handler by > deadlocking. It may be useless for bcm43xx to call ieee80211_stop_queue, but > there are other drivers which rely on it. Nobody said that. Of course bcm43xx needs stop_queue, too. > I would prefer to guarantee that the stack will not allow any more frames to > be queued before calling stop/remove_interface on the last virtual interface. > That should be true right now since the master interface is taken down before > calling stop and remove_interface, so ieee80211_stop_queues shouldn't be > necessary on device down. If this isn't the case, it should be fixed. No, that is not enough. For example for switching bands we need to reinitialize the board completely. Before I take the board down I must ensure that no traffic is going on any longer. > Of course, the ieee80211_stop_queue deadlock should still get fixed > eventually.. That's not needed, as it's only sane to call in the TX handler, where it can't deadlock. -- Greetings Michael. - To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html