Commit ec3428bb authored by Wright Feng's avatar Wright Feng Committed by Kalle Valo

brcmfmac: reduce maximum station interface from 2 to 1 in RSDB mode

The firmware state machines are not fully suitable for concurrent
station interface support, it may hit unexpected error if we have 2
different SSIDs and the roaming scenarios concurrently.
To avoid the bad user-experience if this is not fully validated, we
dis-allow user to create two concurrent station interfaces.
Signed-off-by: default avatarWright Feng <wright.feng@cypress.com>
Signed-off-by: default avatarChi-hsien Lin <chi-hsien.lin@cypress.com>
Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/20200604071835.3842-5-wright.feng@cypress.com
parent eccbf46b
...@@ -6801,7 +6801,7 @@ brcmf_txrx_stypes[NUM_NL80211_IFTYPES] = { ...@@ -6801,7 +6801,7 @@ brcmf_txrx_stypes[NUM_NL80211_IFTYPES] = {
* #AP <= 4, matching BI, channels = 1, 4 total * #AP <= 4, matching BI, channels = 1, 4 total
* *
* no p2p and rsdb: * no p2p and rsdb:
* #STA <= 2, #AP <= 2, channels = 2, 4 total * #STA <= 1, #AP <= 2, channels = 2, 4 total
* *
* p2p, no mchan, and mbss: * p2p, no mchan, and mbss:
* *
...@@ -6816,7 +6816,7 @@ brcmf_txrx_stypes[NUM_NL80211_IFTYPES] = { ...@@ -6816,7 +6816,7 @@ brcmf_txrx_stypes[NUM_NL80211_IFTYPES] = {
* #AP <= 4, matching BI, channels = 1, 4 total * #AP <= 4, matching BI, channels = 1, 4 total
* *
* p2p, rsdb, and no mbss: * p2p, rsdb, and no mbss:
* #STA <= 2, #P2P-DEV <= 1, #{P2P-CL, P2P-GO} <= 2, AP <= 2, * #STA <= 1, #P2P-DEV <= 1, #{P2P-CL, P2P-GO} <= 2, AP <= 2,
* channels = 2, 4 total * channels = 2, 4 total
*/ */
static int brcmf_setup_ifmodes(struct wiphy *wiphy, struct brcmf_if *ifp) static int brcmf_setup_ifmodes(struct wiphy *wiphy, struct brcmf_if *ifp)
...@@ -6857,7 +6857,7 @@ static int brcmf_setup_ifmodes(struct wiphy *wiphy, struct brcmf_if *ifp) ...@@ -6857,7 +6857,7 @@ static int brcmf_setup_ifmodes(struct wiphy *wiphy, struct brcmf_if *ifp)
goto err; goto err;
combo[c].num_different_channels = 1 + (rsdb || (p2p && mchan)); combo[c].num_different_channels = 1 + (rsdb || (p2p && mchan));
c0_limits[i].max = 1 + rsdb; c0_limits[i].max = 1;
c0_limits[i++].types = BIT(NL80211_IFTYPE_STATION); c0_limits[i++].types = BIT(NL80211_IFTYPE_STATION);
if (mon_flag) { if (mon_flag) {
c0_limits[i].max = 1; c0_limits[i].max = 1;
...@@ -6873,7 +6873,7 @@ static int brcmf_setup_ifmodes(struct wiphy *wiphy, struct brcmf_if *ifp) ...@@ -6873,7 +6873,7 @@ static int brcmf_setup_ifmodes(struct wiphy *wiphy, struct brcmf_if *ifp)
if (p2p && rsdb) { if (p2p && rsdb) {
c0_limits[i].max = 2; c0_limits[i].max = 2;
c0_limits[i++].types = BIT(NL80211_IFTYPE_AP); c0_limits[i++].types = BIT(NL80211_IFTYPE_AP);
combo[c].max_interfaces = 5; combo[c].max_interfaces = 4;
} else if (p2p) { } else if (p2p) {
combo[c].max_interfaces = i; combo[c].max_interfaces = i;
} else if (rsdb) { } else if (rsdb) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment