Linux wireless drivers development
 help / color / mirror / Atom feed
* mac80211 locking: tasklet vs. non-tasklet
@ 2008-02-22 10:29 Johannes Berg
  2008-02-24 16:29 ` Tomas Winkler
  0 siblings, 1 reply; 8+ messages in thread
From: Johannes Berg @ 2008-02-22 10:29 UTC (permalink / raw)
  To: linux-wireless; +Cc: Tomas Winkler, bruno randolf, Luis R. Rodriguez

[-- Attachment #1: Type: text/plain, Size: 1158 bytes --]

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 #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 828 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2008-02-25 11:36 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-02-22 10:29 mac80211 locking: tasklet vs. non-tasklet Johannes Berg
2008-02-24 16:29 ` Tomas Winkler
2008-02-25  9:51   ` Johannes Berg
2008-02-25 10:52     ` Tomas Winkler
2008-02-25 10:57       ` Johannes Berg
2008-02-25 11:00         ` Johannes Berg
2008-02-25 11:33           ` Tomas Winkler
2008-02-25 11:36             ` Johannes Berg

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox