From: Bob Copeland <me@bobcopeland.com>
To: Freddy Lee <flee@cococorp.com>
Cc: ath10k@lists.infradead.org
Subject: Re: attempting mesh on ath10k
Date: Mon, 6 Jul 2015 17:49:21 -0400 [thread overview]
Message-ID: <20150706214921.GF23012@localhost> (raw)
In-Reply-To: <CAN+ZWYEK5TpXVsQom5RBxZ1=XCGn9Cq47w1rQdonWNx-ec88vA@mail.gmail.com>
On Mon, Jul 06, 2015 at 02:25:36PM -0700, Freddy Lee wrote:
> Hi Bob,
>
> I applied the mesh fix to OpenWRT (r45590 and r62020). It works great
> (thanks, Bob!), but with a potentially unforeseen consequence: When an
> Archer C7 with these changes is configured to be a 5GHz AP, clients
> are unable to connect normally. Experiments show that the client is
> registered as a station, but pings don't complete (in many cases, not
> even DHCP completes). Tested clients include one commercial phone
> (Samsung Galaxy S5 running Lollipop) and another Archer C7.
>
> Without these changes, these same clients can connect to the AP all day long.
Hmm, well, there were definitely some hacks in that version, like
setting the SSID to "A" for all vif types :)
Here's the latest patch-in-progress but I haven't tested it; it also
requires the AID series I sent to l-w last week (and still requires the
filters be disabled). Once I get an hour to run it through the paces
and also fix the filter issue then I plan to send upstream.
From 2b7ad687190dce02bd3082b6e7145a4e01f9fb11 Mon Sep 17 00:00:00 2001
From: Bob Copeland <me@bobcopeland.com>
Date: Sun, 5 Jul 2015 08:03:28 -0400
Subject: [PATCH] ath10k: implement mesh support
Add support for mesh to ath10k. We simply use an AP virtual
interface in the firmware in order to enable beaconing
without TSF adoption, and use the raw (802.11) transmit mode.
Some basic tests with TCP iperf using 2 ath10k devices and a couple
of ath9k devices:
2-node VHT mesh:
4-node linear multihop HT20 (ath9k -> ath10k -> ath9k -> ath10k):
Signed-off-by: Bob Copeland <me@bobcopeland.com>
---
drivers/net/wireless/ath/ath10k/mac.c | 22 +++++++++++++++++++++-
1 file changed, 21 insertions(+), 1 deletion(-)
diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c
index 609ca86..2501c47 100644
--- a/drivers/net/wireless/ath/ath10k/mac.c
+++ b/drivers/net/wireless/ath/ath10k/mac.c
@@ -3136,7 +3136,8 @@ ath10k_tx_h_get_txmode(struct ath10k *ar, struct ieee80211_vif *vif,
const struct ieee80211_hdr *hdr = (void *)skb->data;
__le16 fc = hdr->frame_control;
- if (!vif || vif->type == NL80211_IFTYPE_MONITOR)
+ if (!vif || vif->type == NL80211_IFTYPE_MONITOR ||
+ vif->type == NL80211_IFTYPE_MESH_POINT)
return ATH10K_HW_TXRX_RAW;
if (ieee80211_is_mgmt(fc))
@@ -4184,6 +4185,9 @@ static int ath10k_add_interface(struct ieee80211_hw *hw,
case NL80211_IFTYPE_ADHOC:
arvif->vdev_type = WMI_VDEV_TYPE_IBSS;
break;
+ case NL80211_IFTYPE_MESH_POINT:
+ arvif->vdev_type = WMI_VDEV_TYPE_AP;
+ break;
case NL80211_IFTYPE_AP:
arvif->vdev_type = WMI_VDEV_TYPE_AP;
@@ -4550,6 +4554,13 @@ static void ath10k_bss_info_changed(struct ieee80211_hw *hw,
if (ret)
ath10k_warn(ar, "failed to update beacon template: %d\n",
ret);
+
+ if (vif->type == NL80211_IFTYPE_MESH_POINT) {
+ /* mesh doesn't use SSID but firmware needs it */
+ strlcpy(arvif->u.ap.ssid, "mesh",
+ sizeof(arvif->u.ap.ssid));
+ arvif->u.ap.ssid_len = 4;
+ }
}
if (changed & BSS_CHANGED_AP_PROBE_RESP) {
@@ -5285,6 +5296,7 @@ static int ath10k_sta_state(struct ieee80211_hw *hw,
} else if (old_state == IEEE80211_STA_AUTH &&
new_state == IEEE80211_STA_ASSOC &&
(vif->type == NL80211_IFTYPE_AP ||
+ vif->type == NL80211_IFTYPE_MESH_POINT ||
vif->type == NL80211_IFTYPE_ADHOC)) {
/*
* New association.
@@ -5320,6 +5332,7 @@ static int ath10k_sta_state(struct ieee80211_hw *hw,
} else if (old_state == IEEE80211_STA_ASSOC &&
new_state == IEEE80211_STA_AUTH &&
(vif->type == NL80211_IFTYPE_AP ||
+ vif->type == NL80211_IFTYPE_MESH_POINT ||
vif->type == NL80211_IFTYPE_ADHOC)) {
/*
* Disassociation.
@@ -6572,6 +6585,9 @@ static const struct ieee80211_iface_limit ath10k_if_limits[] = {
{
.max = 7,
.types = BIT(NL80211_IFTYPE_AP)
+#ifdef CONFIG_MAC80211_MESH
+ | BIT(NL80211_IFTYPE_MESH_POINT)
+#endif
},
};
@@ -6579,6 +6595,9 @@ static const struct ieee80211_iface_limit ath10k_10x_if_limits[] = {
{
.max = 8,
.types = BIT(NL80211_IFTYPE_AP)
+#ifdef CONFIG_MAC80211_MESH
+ | BIT(NL80211_IFTYPE_MESH_POINT)
+#endif
},
};
@@ -6871,6 +6890,7 @@ int ath10k_mac_register(struct ath10k *ar)
ar->hw->wiphy->interface_modes =
BIT(NL80211_IFTYPE_STATION) |
+ BIT(NL80211_IFTYPE_MESH_POINT) |
BIT(NL80211_IFTYPE_AP);
ar->hw->wiphy->available_antennas_rx = ar->supp_rx_chainmask;
--
2.1.4
--
Bob Copeland %% http://bobcopeland.com/
_______________________________________________
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k
next prev parent reply other threads:[~2015-07-06 21:49 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-06 21:25 attempting mesh on ath10k Freddy Lee
2015-07-06 21:49 ` Bob Copeland [this message]
2015-07-06 21:54 ` Bob Copeland
2015-07-12 14:25 ` Bob Copeland
2015-07-13 1:43 ` Bob Copeland
2015-07-13 8:13 ` Michal Kazior
2015-07-13 10:57 ` Bob Copeland
2015-07-20 13:57 ` Bob Copeland
2015-08-13 3:14 ` Bob Copeland
-- strict thread matches above, loose matches on Subject: below --
2015-04-24 12:50 Bob Copeland
2015-04-24 17:55 ` Yeoh Chun-Yeow
2015-04-25 1:38 ` Ben Greear
2015-04-26 14:15 ` Bob Copeland
2015-04-26 15:42 ` Ben Greear
2015-04-27 13:00 ` Bob Copeland
2015-04-28 5:47 ` Michal Kazior
2015-04-28 12:25 ` Bob Copeland
2015-05-27 6:51 ` Bartosz Markowski
2015-05-27 11:12 ` Bob Copeland
2015-05-27 11:15 ` Bartosz Markowski
2015-04-28 12:41 ` Bob Copeland
2015-04-28 12:50 ` Yeoh Chun-Yeow
2015-04-28 12:57 ` Bob Copeland
2015-04-28 14:47 ` 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=20150706214921.GF23012@localhost \
--to=me@bobcopeland.com \
--cc=ath10k@lists.infradead.org \
--cc=flee@cococorp.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 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.