From: Johannes Berg <johannes@sipsolutions.net>
To: linux-wireless <linux-wireless@vger.kernel.org>
Cc: Tomas Winkler <tomasw@gmail.com>, bruno randolf <br1@einfach.org>,
"Luis R. Rodriguez" <mcgrof@gmail.com>
Subject: mac80211 locking: tasklet vs. non-tasklet
Date: Fri, 22 Feb 2008 11:29:05 +0100 [thread overview]
Message-ID: <1203676145.26341.39.camel@johannes.berg> (raw)
[-- 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 --]
next reply other threads:[~2008-02-22 13:56 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-02-22 10:29 Johannes Berg [this message]
2008-02-24 16:29 ` mac80211 locking: tasklet vs. non-tasklet 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
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1203676145.26341.39.camel@johannes.berg \
--to=johannes@sipsolutions.net \
--cc=br1@einfach.org \
--cc=linux-wireless@vger.kernel.org \
--cc=mcgrof@gmail.com \
--cc=tomasw@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox