Search Linux Wireless

Re: [RFC 2/2] mac80211: revamp interface and filter configuration

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wednesday 05 September 2007, Johannes Berg wrote:
> On Wed, 2007-09-05 at 07:16 +0200, Ulrich Kunitz wrote:
> 
> > I see three options to achieve this:
> > 
> > 1) Use ieee80211_stop_queues() in ->configure_filter() and
> >    ieee80211_wake_queues() at the end of the workqueue function.
> > 
> > 2) Throw away all packets until the workqueue function
> >    terminates.
> > 
> > 3) Implement our own tx queue.
> > 
> > I prefer to do option (1) because it wouldn't require adding
> > additional fields to our private structure beside the work_struct
> > for the workqueue function, it is simple to implement and it would
> > not throw away any packets. Are there any side effects that I have
> > overlooked?
> 
> I think Michael says it's currently buggy if called outside of ->tx().

Yes, we had a bug in b43 where we used it in the periodic workqueue.
It causes really hard to track down system freezes on UP
systems due to races with the TX code.
It will hang and busy wait in the qdisc code when this triggers.
I didn't see a fix for this, yet.
But I think a fix could probably be to take the netif_tx_lock
in the ieee80211_stop_queues() function, so we make sure that no
TX is in progress while we stop it.
-
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

[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux