Promiscuous mode is enabled when wlan interface is added to
bridge. ath10k creates a monitor mode when promiscuous mode
is enabled. When monitor vdev is runing along with other
vdev(s) there is a huge number of interrupts generated
especially in noisy condition. Fix this by not enabling
promiscuous(monitor) mode when already a vdev is running.
This does not change the support of virtual interface of
type monitor along with other vdevs.

Signed-off-by: Vasanthakumar Thiagarajan <[email protected]>
---
 drivers/net/wireless/ath/ath10k/mac.c |   16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/drivers/net/wireless/ath/ath10k/mac.c 
b/drivers/net/wireless/ath/ath10k/mac.c
index d6d2f0f..310e608 100644
--- a/drivers/net/wireless/ath/ath10k/mac.c
+++ b/drivers/net/wireless/ath/ath10k/mac.c
@@ -932,6 +932,14 @@ static int ath10k_vdev_start_restart(struct ath10k_vif 
*arvif, bool restart)
                return ret;
        }
 
+       if (ar->filter_flags & FIF_PROMISC_IN_BSS) {
+               ar->filter_flags &= ~FIF_PROMISC_IN_BSS;
+               ath10k_dbg(ar, ATH10K_DBG_MAC, "Disabling promiscuous mode when 
we start a vdev\n");
+               ret = ath10k_monitor_recalc(ar);
+               if (ret)
+                       return ret;
+       }
+
        ar->num_started_vdevs++;
        ath10k_recalc_radar_detection(ar);
 
@@ -3369,6 +3377,14 @@ static void ath10k_configure_filter(struct ieee80211_hw 
*hw,
 
        changed_flags &= SUPPORTED_FILTERS;
        *total_flags &= SUPPORTED_FILTERS;
+       if (*total_flags & FIF_PROMISC_IN_BSS) {
+               if (ar->num_started_vdevs) {
+                       ath10k_dbg(ar, ATH10K_DBG_MAC,
+                                  "Not enabling promiscuous mode when already 
a vdev is running\n");
+                       mutex_unlock(&ar->conf_mutex);
+                       return;
+               }
+       }
        ar->filter_flags = *total_flags;
 
        ret = ath10k_monitor_recalc(ar);
-- 
1.7.9.5

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to