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: 27+ 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 23:08 ` Heiko Stübner
2019-12-09 23:29 ` Soeren Moch
2019-12-10 1:18 ` Heiko Stübner
2019-12-10 9:14 ` Kalle Valo
2019-12-10 10:08 ` Soeren Moch
2019-12-10 10:13 ` Heiko Stübner
[not found] ` <5d3bde69-9102-cc81-c1d2-d71b60258906@web.de>
2019-12-11 15:50 ` Soeren Moch
[not found] ` <0101016eef171394-2c71e1b8-45b9-4e38-96f9-2841dd0607ba-000000@us-west-2.amazonses.com>
2019-12-10 10:15 ` Soeren Moch
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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®