Search Linux Wireless

mac80211 locking: tasklet vs. non-tasklet

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

 



Hi,

Looking through the locking in sta_info I noticed it was completely
broken especially wrt STA flag updates. However, most other things are
fine iff the drivers only use EITHER ieee80211_rx_irqsafe and
ieee80211_tx_status_irqsafe OR __ieee80211_rx and ieee80211_tx_status.
Also, in the latter case, drivers have to make sure that only one of
each of those calls is active at the same time, even on an SMP system.

The only drivers that currently use the non-irqsafe versions are ath5k
and iwlwifi, where iwlwifi even mixes between the two groups. ath5k
seems fine, it defers both to tasklets so only one call can be done at a
time.

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? :)

Alternatively, short of imposing these requirements, we can add new
locking in mac80211. I don't think that would be good though.

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