linux_dsm_epyc7002/drivers/net/wireless
Rafał Miłecki fd3667a8d1 brcmfmac: don't remove interface on link down firmware event
There are two firmware events we handle similarly in brcmfmac:
BRCMF_E_LINK and BRCMF_E_IF. The difference from firmware point of view
is that the first one means BSS remains present in the firmware. Trying
to (re)create it (e.g. when adding new virtual interface) will result in
an error.

Current code treats both events in a similar way. It removes Linux
interface for each of them. It works OK with e.g. BCM43602. Its firmware
generates both events for each interface. It means we get BRCMF_E_LINK
and remove interface. That is soon followed by BRCMF_E_IF which means
BSS was also removed in a firmware. The only downside of this is a
harmless error like:
[  208.643180] brcmfmac: brcmf_fweh_call_event_handler: no interface object

Unfortunately BCM4366 firmware doesn't automatically remove BSS and so
it doesn't generate BRCMF_E_IF. In such case we incorrectly remove Linux
interface on BRCMF_E_LINK as BSS is still present in the firmware. It
results in an error when trying to re-create virtual interface, e.g.:
> iw phy phy1 interface add wlan1-1 type __ap
[ 3602.929199] brcmfmac: brcmf_ap_add_vif: timeout occurred
command failed: I/O error (-5)

With this patch we don't remove Linux interface while firmware keeps
BSS. Thanks to this we keep a consistent states of host driver and
device firmware.

Further improvement should be to mark BSS as disabled and remove
interface on BRCMF_E_LINK. Then we should add support for reusing
BSS-es.

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
2016-06-16 18:12:01 +03:00
..
admtek cfg80211: remove enum ieee80211_band 2016-04-12 15:56:15 +02:00
ath carl9170: Clarify kconfig text 2016-06-04 17:58:14 +03:00
atmel atmel: potential underflow in atmel_set_freq() 2016-05-11 22:02:20 +03:00
broadcom brcmfmac: don't remove interface on link down firmware event 2016-06-16 18:12:01 +03:00
cisco wireless-drivers patches for 4.7 2016-05-20 19:40:35 -04:00
intel iwlegacy: avoid warning about missing braces 2016-06-14 17:26:22 +03:00
intersil treewide: replace dev->trans_start update with helper 2016-05-04 14:16:49 -04:00
marvell mwifiex: use better message and error code when OF node doesn't match 2016-06-16 18:05:09 +03:00
mediatek cfg80211: remove enum ieee80211_band 2016-04-12 15:56:15 +02:00
ralink rt2800lib: enable MFP if hw crypt is disabled 2016-04-26 12:30:43 +03:00
realtek rtlwifi: rtl8192ee: simplify coding 2016-06-14 17:22:34 +03:00
rsi rsi: eliminate superfluous NULL check 2016-06-14 17:17:58 +03:00
st cfg80211: remove enum ieee80211_band 2016-04-12 15:56:15 +02:00
ti remove lots of IS_ERR_VALUE abuses 2016-05-27 15:26:11 -07:00
zydas treewide: replace dev->trans_start update with helper 2016-05-04 14:16:49 -04:00
Kconfig mac80211_hwsim: move Kconfig entry for sorting alphabetically 2015-11-18 15:23:36 +02:00
mac80211_hwsim.c drivers/wireless: use nla_put_u64_64bit() 2016-04-26 12:00:48 -04:00
mac80211_hwsim.h drivers/wireless: use nla_put_u64_64bit() 2016-04-26 12:00:48 -04:00
Makefile ath: unify Kconfig with other vendors 2015-11-18 14:28:31 +02:00
ray_cs.c ray_cs: Change 1 to true for bool type variable. 2015-06-02 23:30:14 +03:00
ray_cs.h
rayctl.h
rndis_wlan.c cfg80211: remove enum ieee80211_band 2016-04-12 15:56:15 +02:00
wl3501_cs.c wl3501_cs: avoid bogus gcc-6 warning 2016-06-16 18:06:08 +03:00
wl3501.h