From: Chi-Hsien Lin <Chi-Hsien.Lin@cypress.com>
To: Soeren Moch <smoch@web.de>, Kalle Valo <kvalo@codeaurora.org>
Cc: Wright Feng <Wright.Feng@cypress.com>,
Arend van Spriel <arend.vanspriel@broadcom.com>,
Franky Lin <franky.lin@broadcom.com>,
Hante Meuleman <hante.meuleman@broadcom.com>,
"linux-wireless@vger.kernel.org" <linux-wireless@vger.kernel.org>,
"brcm80211-dev-list.pdl@broadcom.com"
<brcm80211-dev-list.pdl@broadcom.com>,
brcm80211-dev-list <brcm80211-dev-list@cypress.com>,
"netdev@vger.kernel.org" <netdev@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 6/8] brcmfmac: add RSDB condition when setting interface combinations
Date: Tue, 10 Dec 2019 03:38:41 +0000 [thread overview]
Message-ID: <b55e037f-80f5-3f65-5f76-e0ba2cdf9a29@cypress.com> (raw)
In-Reply-To: <20191209223822.27236-6-smoch@web.de>
On 12/10/2019 6:38, Soeren Moch wrote:
> From: Wright Feng <wright.feng@cypress.com>
>
> With firmware RSDB feature
> 1. The maximum support interface is four.
> 2. The maximum difference channel is two.
> 3. The maximum interfaces of {station/p2p client/AP} are two.
> 4. The maximum interface of p2p device is one.
>
> Signed-off-by: Wright Feng <wright.feng@cypress.com>
Reviewed-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
> ---
> Cc: Kalle Valo <kvalo@codeaurora.org>
> Cc: Arend van Spriel <arend.vanspriel@broadcom.com>
> Cc: Franky Lin <franky.lin@broadcom.com>
> Cc: Hante Meuleman <hante.meuleman@broadcom.com>
> Cc: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
> Cc: Wright Feng <wright.feng@cypress.com>
> Cc: linux-wireless@vger.kernel.org
> Cc: brcm80211-dev-list.pdl@broadcom.com
> Cc: brcm80211-dev-list@cypress.com
> Cc: netdev@vger.kernel.org
> Cc: linux-kernel@vger.kernel.org
> ---
> .../broadcom/brcm80211/brcmfmac/cfg80211.c | 54 ++++++++++++++++---
> 1 file changed, 46 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
> index 0cf13cea1dbe..9d9dc9195e9e 100644
> --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
> +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
> @@ -6520,6 +6520,9 @@ brcmf_txrx_stypes[NUM_NL80211_IFTYPES] = {
> * #STA <= 1, #AP <= 1, channels = 1, 2 total
> * #AP <= 4, matching BI, channels = 1, 4 total
> *
> + * no p2p and rsdb:
> + * #STA <= 2, #AP <= 2, channels = 2, 4 total
> + *
> * p2p, no mchan, and mbss:
> *
> * #STA <= 1, #P2P-DEV <= 1, #{P2P-CL, P2P-GO} <= 1, channels = 1, 3 total
> @@ -6531,6 +6534,10 @@ brcmf_txrx_stypes[NUM_NL80211_IFTYPES] = {
> * #STA <= 1, #P2P-DEV <= 1, #{P2P-CL, P2P-GO} <= 1, channels = 2, 3 total
> * #STA <= 1, #P2P-DEV <= 1, #AP <= 1, #P2P-CL <= 1, channels = 1, 4 total
> * #AP <= 4, matching BI, channels = 1, 4 total
> + *
> + * p2p, rsdb, and no mbss:
> + * #STA <= 2, #P2P-DEV <= 1, #{P2P-CL, P2P-GO} <= 2, AP <= 2,
> + * channels = 2, 4 total
> */
> static int brcmf_setup_ifmodes(struct wiphy *wiphy, struct brcmf_if *ifp)
> {
> @@ -6538,13 +6545,14 @@ static int brcmf_setup_ifmodes(struct wiphy *wiphy, struct brcmf_if *ifp)
> struct ieee80211_iface_limit *c0_limits = NULL;
> struct ieee80211_iface_limit *p2p_limits = NULL;
> struct ieee80211_iface_limit *mbss_limits = NULL;
> - bool mbss, p2p;
> + bool mbss, p2p, rsdb;
> int i, c, n_combos;
>
> mbss = brcmf_feat_is_enabled(ifp, BRCMF_FEAT_MBSS);
> p2p = brcmf_feat_is_enabled(ifp, BRCMF_FEAT_P2P);
> + rsdb = brcmf_feat_is_enabled(ifp, BRCMF_FEAT_RSDB);
>
> - n_combos = 1 + !!p2p + !!mbss;
> + n_combos = 1 + !!(p2p && !rsdb) + !!mbss;
> combo = kcalloc(n_combos, sizeof(*combo), GFP_KERNEL);
> if (!combo)
> goto err;
> @@ -6555,16 +6563,36 @@ static int brcmf_setup_ifmodes(struct wiphy *wiphy, struct brcmf_if *ifp)
>
> c = 0;
> i = 0;
> - c0_limits = kcalloc(p2p ? 3 : 2, sizeof(*c0_limits), GFP_KERNEL);
> + if (p2p && rsdb)
> + c0_limits = kcalloc(4, sizeof(*c0_limits), GFP_KERNEL);
> + else if (p2p)
> + c0_limits = kcalloc(3, sizeof(*c0_limits), GFP_KERNEL);
> + else
> + c0_limits = kcalloc(2, sizeof(*c0_limits), GFP_KERNEL);
> if (!c0_limits)
> goto err;
> - c0_limits[i].max = 1;
> - c0_limits[i++].types = BIT(NL80211_IFTYPE_STATION);
> - if (p2p) {
> + if (p2p && rsdb) {
> + combo[c].num_different_channels = 2;
> + wiphy->interface_modes |= BIT(NL80211_IFTYPE_P2P_CLIENT) |
> + BIT(NL80211_IFTYPE_P2P_GO) |
> + BIT(NL80211_IFTYPE_P2P_DEVICE);
> + c0_limits[i].max = 2;
> + c0_limits[i++].types = BIT(NL80211_IFTYPE_STATION);
> + c0_limits[i].max = 1;
> + c0_limits[i++].types = BIT(NL80211_IFTYPE_P2P_DEVICE);
> + c0_limits[i].max = 2;
> + c0_limits[i++].types = BIT(NL80211_IFTYPE_P2P_CLIENT) |
> + BIT(NL80211_IFTYPE_P2P_GO);
> + c0_limits[i].max = 2;
> + c0_limits[i++].types = BIT(NL80211_IFTYPE_AP);
> + combo[c].max_interfaces = 5;
> + } else if (p2p) {
> if (brcmf_feat_is_enabled(ifp, BRCMF_FEAT_MCHAN))
> combo[c].num_different_channels = 2;
> else
> combo[c].num_different_channels = 1;
> + c0_limits[i].max = 1;
> + c0_limits[i++].types = BIT(NL80211_IFTYPE_STATION);
> wiphy->interface_modes |= BIT(NL80211_IFTYPE_P2P_CLIENT) |
> BIT(NL80211_IFTYPE_P2P_GO) |
> BIT(NL80211_IFTYPE_P2P_DEVICE);
> @@ -6573,16 +6601,26 @@ static int brcmf_setup_ifmodes(struct wiphy *wiphy, struct brcmf_if *ifp)
> c0_limits[i].max = 1;
> c0_limits[i++].types = BIT(NL80211_IFTYPE_P2P_CLIENT) |
> BIT(NL80211_IFTYPE_P2P_GO);
> + combo[c].max_interfaces = i;
> + } else if (rsdb) {
> + combo[c].num_different_channels = 2;
> + c0_limits[i].max = 2;
> + c0_limits[i++].types = BIT(NL80211_IFTYPE_STATION);
> + c0_limits[i].max = 2;
> + c0_limits[i++].types = BIT(NL80211_IFTYPE_AP);
> + combo[c].max_interfaces = 3;
> } else {
> combo[c].num_different_channels = 1;
> c0_limits[i].max = 1;
> + c0_limits[i++].types = BIT(NL80211_IFTYPE_STATION);
> + c0_limits[i].max = 1;
> c0_limits[i++].types = BIT(NL80211_IFTYPE_AP);
> + combo[c].max_interfaces = i;
> }
> - combo[c].max_interfaces = i;
> combo[c].n_limits = i;
> combo[c].limits = c0_limits;
>
> - if (p2p) {
> + if (p2p && !rsdb) {
> c++;
> i = 0;
> p2p_limits = kcalloc(4, sizeof(*p2p_limits), GFP_KERNEL);
> --
> 2.17.1
>
> .
>
next prev parent reply other threads:[~2019-12-10 3:38 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-12-09 22:38 [PATCH 1/8] brcmfmac: reset two D11 cores if chip has two D11 cores Soeren Moch
2019-12-09 22:38 ` [PATCH 2/8] brcmfmac: set F2 blocksize and watermark for 4359 Soeren Moch
2019-12-10 3:37 ` Chi-Hsien Lin
2019-12-09 22:38 ` [PATCH 3/8] brcmfmac: fix rambase for 4359/9 Soeren Moch
2019-12-09 22:38 ` [PATCH 4/8] brcmfmac: make errors when setting roaming parameters non-fatal Soeren Moch
2019-12-10 3:37 ` Chi-Hsien Lin
2019-12-09 22:38 ` [PATCH 5/8] brcmfmac: add support for BCM4359 SDIO chipset Soeren Moch
2019-12-10 3:38 ` Chi-Hsien Lin
2019-12-10 6:32 ` Chi-Hsien Lin
2019-12-10 10:12 ` Soeren Moch
2019-12-09 22:38 ` [PATCH 6/8] brcmfmac: add RSDB condition when setting interface combinations Soeren Moch
2019-12-10 3:38 ` Chi-Hsien Lin [this message]
2019-12-09 22:38 ` [PATCH 7/8] brcmfmac: not set mbss in vif if firmware does not support MBSS Soeren Moch
2019-12-10 3:38 ` Chi-Hsien Lin
2019-12-09 22:38 ` [PATCH 8/8] arm64: dts: rockchip: RockPro64: enable wifi module at sdio0 Soeren Moch
2019-12-09 22:38 ` Soeren Moch
2019-12-09 23:08 ` Heiko Stübner
2019-12-09 23:08 ` Heiko Stübner
2019-12-09 23:29 ` Soeren Moch
2019-12-09 23:29 ` Soeren Moch
2019-12-10 1:18 ` Heiko Stübner
2019-12-10 1:18 ` Heiko Stübner
2019-12-10 9:14 ` Kalle Valo
2019-12-10 9:14 ` Kalle Valo
2019-12-10 9:14 ` Kalle Valo
2019-12-10 10:08 ` Soeren Moch
2019-12-10 10:08 ` Soeren Moch
2019-12-10 10:08 ` Soeren Moch
2019-12-10 10:13 ` Heiko Stübner
2019-12-10 10:13 ` Heiko Stübner
[not found] ` <5d3bde69-9102-cc81-c1d2-d71b60258906@web.de>
2019-12-11 15:50 ` Soeren Moch
2019-12-11 15:50 ` Soeren Moch
[not found] ` <0101016eef171394-2c71e1b8-45b9-4e38-96f9-2841dd0607ba-000000@us-west-2.amazonses.com>
[not found] ` <0101016eef171394-2c71e1b8-45b9-4e38-96f9-2841dd0607ba-000000-j0qUFrXf9azQVAzzCBYphlNw9kRHFGba@public.gmane.org>
2019-12-10 10:15 ` Soeren Moch
2019-12-10 10:15 ` Soeren Moch
2019-12-10 10:15 ` Soeren Moch
[not found] ` <20191209223822.27236-8-smoch-S0/GAf8tV78@public.gmane.org>
2019-12-16 13:16 ` Johan Jonker
2019-12-10 3:36 ` [PATCH 1/8] brcmfmac: reset two D11 cores if chip has two D11 cores Chi-Hsien Lin
2019-12-10 9:08 ` Kalle Valo
[not found] ` <0101016eef117d24-d6de85e6-6356-4c73-bff4-f787e8c982bc-000000@us-west-2.amazonses.com>
2019-12-10 10:14 ` Soeren Moch
2019-12-10 10:20 ` 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=b55e037f-80f5-3f65-5f76-e0ba2cdf9a29@cypress.com \
--to=chi-hsien.lin@cypress.com \
--cc=Wright.Feng@cypress.com \
--cc=arend.vanspriel@broadcom.com \
--cc=brcm80211-dev-list.pdl@broadcom.com \
--cc=brcm80211-dev-list@cypress.com \
--cc=franky.lin@broadcom.com \
--cc=hante.meuleman@broadcom.com \
--cc=kvalo@codeaurora.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-wireless@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=smoch@web.de \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.