mirror of
https://github.com/Telecominfraproject/wlan-ap.git
synced 2025-12-18 09:51:26 +00:00
This series is based on * 2020-07-10 ipq6018-ilq-11-0_qca_oem-034672b0676c37b1f4519e5720e18e95fe6236ef Add support for * qsdk kernel/v4.4 * qsdk ethernet subsystem * v5.7 ath11k backport + QualComm staging patches (wlan_ap_1.0) * ath11k-firmware * hostapd/iw/... Feature support * full boot, system detection * sysupgrade to nand * HE support via latest hostapd * driver support for usb, crypto, hwmon, cpufreq, ... Missing * NSS/HW flow offloading - FW blob is not redistributable Using the qsdk v4.4 is an intermediate solution while the vanilla is being tested. Vanilla kernel is almost on feature par. Work has already started to upstream the ethernet and switch drivers. Once complete the target will be fully upstream. Signed-off-by: John Crispin <john@phrozen.org>
56 lines
1.9 KiB
Diff
56 lines
1.9 KiB
Diff
From 93e2d04a1888668183f3fb48666e90b9b31d29e6 Mon Sep 17 00:00:00 2001
|
|
From: Tamizh chelvam <tamizhr@codeaurora.org>
|
|
Date: Sat, 28 Mar 2020 19:23:24 +0530
|
|
Subject: [PATCH] mac80211: fix channel switch trigger from unknown mesh peer
|
|
|
|
Previously mesh channel switch happens if beacon contains
|
|
CSA IE without checking the mesh peer info. Due to that
|
|
channel switch happens even if the beacon is not from
|
|
its own mesh peer. Fixing that by checking if the CSA
|
|
originated from the same mesh network before proceeding
|
|
for channel switch.
|
|
|
|
Signed-off-by: Tamizh chelvam <tamizhr@codeaurora.org>
|
|
Signed-off-by: Thiraviyam Mariyappan <tmariyap@codeaurora.org>
|
|
---
|
|
net/mac80211/mesh.c | 11 +++++++----
|
|
1 file changed, 7 insertions(+), 4 deletions(-)
|
|
|
|
diff --git a/net/mac80211/mesh.c b/net/mac80211/mesh.c
|
|
index d09b3c7..36978a0 100644
|
|
--- a/net/mac80211/mesh.c
|
|
+++ b/net/mac80211/mesh.c
|
|
@@ -1257,15 +1257,15 @@ static void ieee80211_mesh_rx_bcn_presp(struct ieee80211_sub_if_data *sdata,
|
|
sdata->u.mesh.mshcfg.rssi_threshold < rx_status->signal)
|
|
mesh_neighbour_update(sdata, mgmt->sa, &elems,
|
|
rx_status);
|
|
+
|
|
+ if (ifmsh->csa_role != IEEE80211_MESH_CSA_ROLE_INIT &&
|
|
+ !sdata->vif.csa_active)
|
|
+ ieee80211_mesh_process_chnswitch(sdata, &elems, true);
|
|
}
|
|
|
|
if (ifmsh->sync_ops)
|
|
ifmsh->sync_ops->rx_bcn_presp(sdata,
|
|
stype, mgmt, &elems, rx_status);
|
|
-
|
|
- if (ifmsh->csa_role != IEEE80211_MESH_CSA_ROLE_INIT &&
|
|
- !sdata->vif.csa_active)
|
|
- ieee80211_mesh_process_chnswitch(sdata, &elems, true);
|
|
}
|
|
|
|
int ieee80211_mesh_finish_csa(struct ieee80211_sub_if_data *sdata)
|
|
@@ -1373,6 +1373,9 @@ static void mesh_rx_csa_frame(struct ieee80211_sub_if_data *sdata,
|
|
ieee802_11_parse_elems(pos, len - baselen, true, &elems,
|
|
mgmt->bssid, NULL);
|
|
|
|
+ if (!mesh_matches_local(sdata, &elems))
|
|
+ return;
|
|
+
|
|
ifmsh->chsw_ttl = elems.mesh_chansw_params_ie->mesh_ttl;
|
|
if (!--ifmsh->chsw_ttl)
|
|
fwd_csa = false;
|
|
--
|
|
1.9.1
|
|
|