From: Michal Kazior <michal.kazior@tieto.com>
To: Kalle Valo <kvalo@codeaurora.org>
Cc: David Miller <davem@davemloft.net>,
linux-wireless <linux-wireless@vger.kernel.org>,
Network Development <netdev@vger.kernel.org>
Subject: Re: pull-request: wireless-drivers-next 2015-05-21
Date: Fri, 22 May 2015 12:16:17 +0200 [thread overview]
Message-ID: <CA+BoTQmukTiNFrsLA5rdiQe=Ga45JNuFzSmqQ4h-VJMW97f=_w@mail.gmail.com> (raw)
In-Reply-To: <87k2w26oef.fsf@kamboji.qca.qualcomm.com>
On 21 May 2015 at 15:39, Kalle Valo <kvalo@codeaurora.org> wrote:
> Hi Dave,
>
> here's a wireless-drivers pull request for 4.2. This time please pay
> extra attention to this pull as there are two problems:
>
> First of all as you can see the diffstat from git-pull-request in the
> end is just weird. I was long and hard trying to check everything and to
> my understanding all the merges look ok and I cannot explain the reason
> for the diffstat, but of course I might be missing something. Maybe
> git-request-pull is just buggy? At least with gitk everything looks to
> be ok and the patch list below also looks valid.
>
> Secondly there's a non-trivial conflict in
> drivers/net/wireless/ath/ath10k/mac.c which is due to removal of
> FIF_PROMISC_IN_BSS in commit df1404650c. You need to remove more code
> than just the obvious conflicts shown by git. In the end of this mail I
> added a git diff output after I fixed the conflict, hopefully that helps
> you to fix it. The main points are that you remove
> ath10k_mac_should_disable_promisc() and the last ath10k_monitor_recalc()
> call from ath10k_vdev_start_restart() along with the obvious conflict
> fixes git points out.
>
> There's also a patch from Michal which will also help to fix the
> resolution. Michal, please double check the resolution proposal below so
> that I didn't miss anything.
>
> https://patchwork.kernel.org/patch/6387631/
[...]
> diff --cc drivers/net/wireless/ath/ath10k/mac.c
> index fcd08b2f8d26,eaa0182e001d..000000000000
> --- a/drivers/net/wireless/ath/ath10k/mac.c
> +++ b/drivers/net/wireless/ath/ath10k/mac.c
> @@@ -766,9 -1031,68 +1031,48 @@@ static int ath10k_monitor_stop(struct a
> return 0;
> }
>
> -static bool ath10k_mac_should_disable_promisc(struct ath10k *ar)
> -{
> - struct ath10k_vif *arvif;
> -
> - if (!(ar->filter_flags & FIF_PROMISC_IN_BSS))
> - return true;
> -
> - if (!ar->num_started_vdevs)
> - return false;
> -
> - list_for_each_entry(arvif, &ar->arvifs, list)
> - if (arvif->vdev_type != WMI_VDEV_TYPE_AP)
> - return false;
> -
> - ath10k_dbg(ar, ATH10K_DBG_MAC,
> - "mac disabling promiscuous mode because vdev is started\n");
> - return true;
> -}
> -
> + static bool ath10k_mac_monitor_vdev_is_needed(struct ath10k *ar)
> + {
> + int num_ctx;
> +
> + /* At least one chanctx is required to derive a channel to start
> + * monitor vdev on.
> + */
> + num_ctx = ath10k_mac_num_chanctxs(ar);
> + if (num_ctx == 0)
> + return false;
> +
> + /* If there's already an existing special monitor interface then don't
> + * bother creating another monitor vdev.
> + */
> + if (ar->monitor_arvif)
> + return false;
> +
> + return ar->monitor ||
> - !ath10k_mac_should_disable_promisc(ar) ||
> + test_bit(ATH10K_CAC_RUNNING, &ar->dev_flags);
> + }
> +
> + static bool ath10k_mac_monitor_vdev_is_allowed(struct ath10k *ar)
> + {
> + int num_ctx;
> +
> + num_ctx = ath10k_mac_num_chanctxs(ar);
> +
> + /* FIXME: Current interface combinations and cfg80211/mac80211 code
> + * shouldn't allow this but make sure to prevent handling the following
> + * case anyway since multi-channel DFS hasn't been tested at all.
> + */
> + if (test_bit(ATH10K_CAC_RUNNING, &ar->dev_flags) && num_ctx > 1)
> + return false;
> +
> + return true;
> + }
> +
> static int ath10k_monitor_recalc(struct ath10k *ar)
> {
> - bool should_start;
> + bool needed;
> + bool allowed;
> + int ret;
>
> lockdep_assert_held(&ar->conf_mutex);
>
Looks good to me.
There's still some code left which is unnecessary (see 2 last hunks on
patchwork) because due to FIF_PROMISC_IN_BSS removal entire commit
548462133d98 becomes obsolete. Since these 2 hunk leftovers don't
break anything functionally I guess this can be cleaned up in a follow
up patch after the merge. Just my 2cc.
> @@@ -871,12 -1231,46 +1211,46 @@@ static void ath10k_recalc_radar_detecti
> }
> }
>
> - static int ath10k_vdev_start_restart(struct ath10k_vif *arvif, bool restart)
> + static int ath10k_vdev_stop(struct ath10k_vif *arvif)
> + {
> + struct ath10k *ar = arvif->ar;
> + int ret;
> +
> + lockdep_assert_held(&ar->conf_mutex);
> +
> + reinit_completion(&ar->vdev_setup_done);
> +
> + ret = ath10k_wmi_vdev_stop(ar, arvif->vdev_id);
> + if (ret) {
> + ath10k_warn(ar, "failed to stop WMI vdev %i: %d\n",
> + arvif->vdev_id, ret);
> + return ret;
> + }
> +
> + ret = ath10k_vdev_setup_sync(ar);
> + if (ret) {
> + ath10k_warn(ar, "failed to syncronise setup for vdev %i: %d\n",
> + arvif->vdev_id, ret);
> + return ret;
> + }
> +
> + WARN_ON(ar->num_started_vdevs == 0);
> +
> + if (ar->num_started_vdevs != 0) {
> + ar->num_started_vdevs--;
> + ath10k_recalc_radar_detection(ar);
> + }
> +
> + return ret;
> + }
> +
> + static int ath10k_vdev_start_restart(struct ath10k_vif *arvif,
> + const struct cfg80211_chan_def *chandef,
> + bool restart)
> {
> struct ath10k *ar = arvif->ar;
> - struct cfg80211_chan_def *chandef = &ar->chandef;
> struct wmi_vdev_start_request_arg arg = {};
> - int ret = 0, ret2;
> + int ret = 0;
>
> lockdep_assert_held(&ar->conf_mutex);
>
Kalle, I'm not seeing this when I merge your pull tag on top of
net-next/master. Am I missing something?
Anyway FYI ath10k_vdev_stop() was moved up in the code to avoid
forward declaration in 822b7e0b633b.
Michał
next prev parent reply other threads:[~2015-05-22 10:16 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-21 13:39 pull-request: wireless-drivers-next 2015-05-21 Kalle Valo
2015-05-22 10:16 ` Michal Kazior [this message]
2015-05-22 12:27 ` Kalle Valo
2015-05-22 12:38 ` Michal Kazior
2015-05-25 3:29 ` David Miller
2015-05-25 10:57 ` Kalle Valo
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='CA+BoTQmukTiNFrsLA5rdiQe=Ga45JNuFzSmqQ4h-VJMW97f=_w@mail.gmail.com' \
--to=michal.kazior@tieto.com \
--cc=davem@davemloft.net \
--cc=kvalo@codeaurora.org \
--cc=linux-wireless@vger.kernel.org \
--cc=netdev@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).