2017-08-07 08:13:16

by Wright Feng

[permalink] [raw]
Subject: [PATCH] brcmfmac: add setting carrier state ON for successful roaming

From: Chung-Hsien Hsu <[email protected]>

After association, ping is not working when sweeping the channel at the
AP side. It is caused by having incorrect carrier state (OFF) for the STA
in successful roaming. This patch sets the carrier state ON for the case.

Signed-off-by: Chung-Hsien Hsu <[email protected]>
---
drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
index 617199c..71f18b9 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
@@ -5552,10 +5552,13 @@ static s32 brcmf_get_assoc_ies(struct brcmf_cfg80211_info *cfg,
u32 status = e->status;

if (event == BRCMF_E_ROAM && status == BRCMF_E_STATUS_SUCCESS) {
- if (test_bit(BRCMF_VIF_STATUS_CONNECTED, &ifp->vif->sme_state))
+ if (test_bit(BRCMF_VIF_STATUS_CONNECTED,
+ &ifp->vif->sme_state)) {
brcmf_bss_roaming_done(cfg, ifp->ndev, e);
- else
+ } else {
brcmf_bss_connect_done(cfg, ifp->ndev, e, true);
+ brcmf_net_setcarrier(ifp, true);
+ }
}

return 0;
--
1.9.1


2017-08-07 12:43:36

by Arend van Spriel

[permalink] [raw]
Subject: Re: [PATCH] brcmfmac: add setting carrier state ON for successful roaming

On 8/7/2017 10:16 AM, Wright Feng wrote:
> From: Chung-Hsien Hsu <[email protected]>
>
> After association, ping is not working when sweeping the channel at the
> AP side. It is caused by having incorrect carrier state (OFF) for the STA
> in successful roaming. This patch sets the carrier state ON for the case.

This seems a specific scenario where the initial connect attempt by the
host actually results in the firmware roaming, ie. switching to another
AP, before completing the connection. Still it is needed here so ...

Acked-by: Arend van Spriel <[email protected]>
> Signed-off-by: Chung-Hsien Hsu <[email protected]>
> ---
> drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
> index 617199c..71f18b9 100644
> --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
> +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
> @@ -5552,10 +5552,13 @@ static s32 brcmf_get_assoc_ies(struct brcmf_cfg80211_info *cfg,
> u32 status = e->status;
>
> if (event == BRCMF_E_ROAM && status == BRCMF_E_STATUS_SUCCESS) {
> - if (test_bit(BRCMF_VIF_STATUS_CONNECTED, &ifp->vif->sme_state))
> + if (test_bit(BRCMF_VIF_STATUS_CONNECTED,
> + &ifp->vif->sme_state)) {
> brcmf_bss_roaming_done(cfg, ifp->ndev, e);
> - else
> + } else {
> brcmf_bss_connect_done(cfg, ifp->ndev, e, true);
> + brcmf_net_setcarrier(ifp, true);
> + }
> }
>
> return 0;
>

2017-08-08 11:52:22

by Kalle Valo

[permalink] [raw]
Subject: Re: brcmfmac: add setting carrier state ON for successful roaming

Wright Feng <[email protected]> wrote:

> From: Chung-Hsien Hsu <[email protected]>
>
> After association, ping is not working when sweeping the channel at the
> AP side. It is caused by having incorrect carrier state (OFF) for the STA
> in successful roaming. This patch sets the carrier state ON for the case.
>
> Signed-off-by: Chung-Hsien Hsu <[email protected]>
> Acked-by: Arend van Spriel <[email protected]>

Patch applied to wireless-drivers-next.git, thanks.

8b943e36e24a brcmfmac: add setting carrier state ON for successful roaming

--
https://patchwork.kernel.org/patch/9884669/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches