Search Linux Wireless

Re: mac80211 locking: tasklet vs. non-tasklet

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

 



> >  With iwlwifi, however, there is a possibility that it invokes
> >  ieee80211_tx_status() on one CPU while mac80211's tasklet is processing
> >  another TX status that was submitted with ieee80211_tx_status_irqsafe().
> >  Tomas, I think you mentioned that the TX status processing can't
> >  actually ever call the non-irqsafe version, can we remove that call to
> >  be sure? :)
> 
> Actually alike athk also iwlwifi driver calls tx_status from a tasklet
> therfore the irqsafe can be removed. I've tested that it worked so far

Ok, fine too. Just the mixing is actually bad because of locking.

> However we added start_tx_ba_cb(_irqsafe) callback to get around AMPDU
> queues reordering
> In this case we have to use both handlers so I wonder where we have
> problem here as the same mechanism as tx_status is used.

I think the AMPDU stuff has its own spinlock around the fields it
accesses in those things. The thing with the tx status etc. is that it
uses no locking to update a few sta_info fields. If we added locking
around those accesses, mixing the two irqsafe/non-irqsafe versions would
be acceptable, but I don't see much point in that.

> In general I'm missing some asynchronous mechanism that driver can
> notify mac80211 about it's state.
> Except BA states there  is  for example  netif_carrier_off/on
> functionality in the driver level. It would be very useful for early
> notification of disconnection.  A disconnection can happen due to
> device resume or internal recoverable error. In this cases I would
> expect mac to try associate again upon such trigger.

I guess that's just missing. You can stop the queues but you can't tell
mac80211 that you reset the hw.

johannes

Attachment: signature.asc
Description: This is a digitally signed message part


[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