From: Ben Greear <greearb@candelatech.com>
To: linux-wireless@vger.kernel.org
Subject: RFC: Allow multiple STA connected to same AP.
Date: Thu, 09 Sep 2010 15:03:40 -0700 [thread overview]
Message-ID: <4C8959BC.7040501@candelatech.com> (raw)
With the patch below against latest wireless-testing, I can create two
STA on the same ath9k phy0 and have them send traffic to each other.
I tested only un-encrypted STAs at this point.
It seems the tx logic hangs after a bit, so there are still issues, but
I'm not sure if that is something introduced by my patch or some
existing ath9k bug.
Please let me know if this is a viable approach.
Thanks,
Ben
diff --git a/net/mac80211/main.c b/net/mac80211/main.c
index 4935b84..21401c9 100644
--- a/net/mac80211/main.c
+++ b/net/mac80211/main.c
@@ -44,6 +44,8 @@ void ieee80211_configure_filter(struct ieee80211_local *local)
u64 mc;
unsigned int changed_flags;
unsigned int new_flags = 0;
+ int avifs = 0;
+ struct ieee80211_sub_if_data *sdata;
if (atomic_read(&local->iff_promiscs))
new_flags |= FIF_PROMISC_IN_BSS;
@@ -78,6 +80,22 @@ void ieee80211_configure_filter(struct ieee80211_local *local)
/* be a bit nasty */
new_flags |= (1<<31);
+ /* If we have more than one virtual station, turn on PROMISC_IN_BSS
+ * --Ben
+ */
+ list_for_each_entry_rcu(sdata, &local->interfaces, list) {
+ if (!sdata->dev || !netif_running(sdata->dev))
+ continue;
+
+ if (sdata->vif.type == NL80211_IFTYPE_STATION) {
+ avifs++;
+ if (avifs > 1)
+ break;
+ }
+ }
+ if (avifs > 1)
+ new_flags |= FIF_PROMISC_IN_BSS;
+
drv_configure_filter(local, changed_flags, &new_flags, mc);
WARN_ON(new_flags & (1<<31));
diff --git a/net/mac80211/sta_info.c b/net/mac80211/sta_info.c
index 687077e..db751f1 100644
--- a/net/mac80211/sta_info.c
+++ b/net/mac80211/sta_info.c
@@ -440,7 +440,7 @@ int sta_info_insert_rcu(struct sta_info *sta) __acquires(RCU)
spin_lock_irqsave(&local->sta_lock, flags);
/* check if STA exists already */
- if (sta_info_get_bss(sdata, sta->sta.addr)) {
+ if (sta_info_get(sdata, sta->sta.addr)) {
spin_unlock_irqrestore(&local->sta_lock, flags);
mutex_unlock(&local->sta_mtx);
rcu_read_lock();
--
Ben Greear <greearb@candelatech.com>
Candela Technologies Inc http://www.candelatech.com
next reply other threads:[~2010-09-09 22:03 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-09-09 22:03 Ben Greear [this message]
2010-09-09 22:51 ` RFC: Allow multiple STA connected to same AP Johannes Berg
2010-09-09 23:01 ` Ben Greear
2010-09-09 23:08 ` Johannes Berg
2010-09-10 4:52 ` Ben Greear
2010-09-10 16:37 ` Johannes Berg
2010-09-10 16:52 ` Ben Greear
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=4C8959BC.7040501@candelatech.com \
--to=greearb@candelatech.com \
--cc=linux-wireless@vger.kernel.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.