Message ID | 1424158996-8830-2-git-send-email-vthiagar@qti.qualcomm.com (mailing list archive) |
---|---|
State | Not Applicable |
Delegated to: | Kalle Valo |
Headers | show |
On 17 February 2015 at 08:43, Vasanthakumar Thiagarajan <vthiagar@qti.qualcomm.com> wrote: > 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 <vthiagar@qti.qualcomm.com> > --- > 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 3b5aaa3..66cc0a8 100644 > --- a/drivers/net/wireless/ath/ath10k/mac.c > +++ b/drivers/net/wireless/ath/ath10k/mac.c > @@ -969,6 +969,15 @@ static int ath10k_vdev_start_restart(struct ath10k_vif *arvif, bool restart) > ar->num_started_vdevs++; > ath10k_recalc_radar_detection(ar); > > + if (ar->filter_flags & FIF_PROMISC_IN_BSS) { > + ar->filter_flags &= ~FIF_PROMISC_IN_BSS; > + ath10k_dbg(ar, ATH10K_DBG_MAC, > + "mac disabling promiscuous mode because vdev is started\n"); > + ret = ath10k_monitor_recalc(ar); The entire logic should go to ath10k_monitor_recalc(). Also I'm pretty sure this breaks 4addr station briding for main 636 fw. I can't fully test this now though (there seems to be a regression against fw 636 and it keeps crashing with monitor vdev over and over again). Micha? -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Tuesday 17 February 2015 02:53 PM, Michal Kazior wrote: > On 17 February 2015 at 08:43, Vasanthakumar Thiagarajan > <vthiagar@qti.qualcomm.com> wrote: >> 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 <vthiagar@qti.qualcomm.com> >> --- >> 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 3b5aaa3..66cc0a8 100644 >> --- a/drivers/net/wireless/ath/ath10k/mac.c >> +++ b/drivers/net/wireless/ath/ath10k/mac.c >> @@ -969,6 +969,15 @@ static int ath10k_vdev_start_restart(struct ath10k_vif *arvif, bool restart) >> ar->num_started_vdevs++; >> ath10k_recalc_radar_detection(ar); >> >> + if (ar->filter_flags & FIF_PROMISC_IN_BSS) { >> + ar->filter_flags &= ~FIF_PROMISC_IN_BSS; >> + ath10k_dbg(ar, ATH10K_DBG_MAC, >> + "mac disabling promiscuous mode because vdev is started\n"); >> + ret = ath10k_monitor_recalc(ar); > > The entire logic should go to ath10k_monitor_recalc(). Sure. > > Also I'm pretty sure this breaks 4addr station briding for main 636 > fw. I can't fully test this now though (there seems to be a regression > against fw 636 and it keeps crashing with monitor vdev over and over > again). Ok. Can we make this change specific to non-sta mode?. Vasanth > > Micha? > -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c index 3b5aaa3..66cc0a8 100644 --- a/drivers/net/wireless/ath/ath10k/mac.c +++ b/drivers/net/wireless/ath/ath10k/mac.c @@ -969,6 +969,15 @@ static int ath10k_vdev_start_restart(struct ath10k_vif *arvif, bool restart) ar->num_started_vdevs++; ath10k_recalc_radar_detection(ar); + if (ar->filter_flags & FIF_PROMISC_IN_BSS) { + ar->filter_flags &= ~FIF_PROMISC_IN_BSS; + ath10k_dbg(ar, ATH10K_DBG_MAC, + "mac disabling promiscuous mode because vdev is started\n"); + ret = ath10k_monitor_recalc(ar); + if (ret) + ath10k_vdev_stop(arvif); + } + return ret; } @@ -3476,6 +3485,13 @@ 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, + "mac does not enable promiscuous mode when already a vdev is running\n"); + *total_flags &= ~FIF_PROMISC_IN_BSS; + } + } ar->filter_flags = *total_flags; ret = ath10k_monitor_recalc(ar);
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 <vthiagar@qti.qualcomm.com> --- drivers/net/wireless/ath/ath10k/mac.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+)