mwifiex starts out by setting up 3 possible interfaces, but usually only 1 of them gets initialized later. Currently, we leave the "uninitialized" interfaces with bss_type==0, which means MWIFIEX_BSS_TYPE_STA. This gives misleading results for things like mwifiex_get_intf_num(..., MWIFIEX_BSS_TYPE_STA), giving the answer "3" even when we only have 1 initialized STA. This bug doesn't affect functions like mwifiex_get_unused_bss_num(), which are looking at the bss_mode field instead (to see NL80211_IFTYPE_UNSPECIFIED, which happens to be 0...) for finding uninitialized interfaces. Let's make mwifiex_get_intf_num() give a proper answer, by making its initial value the proper uninitialized value -- ANY. Signed-off-by: Brian Norris <briannorris@xxxxxxxxxxxx> --- drivers/net/wireless/marvell/mwifiex/main.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/net/wireless/marvell/mwifiex/main.c b/drivers/net/wireless/marvell/mwifiex/main.c index a9657ae6d782..a9063411d243 100644 --- a/drivers/net/wireless/marvell/mwifiex/main.c +++ b/drivers/net/wireless/marvell/mwifiex/main.c @@ -97,6 +97,8 @@ static int mwifiex_register(void *card, struct device *dev, adapter->priv[i]->adapter = adapter; adapter->priv_num++; + /* Start out as uninitialized. */ + adapter->priv[i]->bss_type = MWIFIEX_BSS_TYPE_ANY; } mwifiex_init_lock_list(adapter); -- 2.24.0.393.g34dc348eaf-goog