2
0
mirror of https://github.com/edk2-porting/linux-next.git synced 2025-01-11 07:04:04 +08:00
linux-next/drivers/net/wireless
Rafał Miłecki a63b09872c brcmfmac: delete interface directly in code that sent fw request
So far when receiving event about in-firmware-interface removal our
event worker was notifying listener and afterwards it was removing Linux
interface.

First of all it was resulting in slightly unexpected order. The listener
(del_virtual_intf callback) was (usually) returning with success before
we even called unregister_netdev(ice).

Please note this couldn't be simply fixed by changing order of calls in
brcmf_fweh_handle_if_event as unregistering interface earlier could free
struct brcmf_if.

Another problem of current implementation are possible lockups. Focus on
the time slot between calling event handler and removing Linux
interface. During that time original caller may leave (unlocking rtnl
semaphore) *and* another call to the same code may be done (locking it
again). If that happens our event handler will stuck at removing Linux
interface, it won't handle another event and will block process holding
rtnl lock.

This can be simply solved by unregistering interface in a proper
callback, right after receiving confirmation event from firmware. This
only required modifying worker to don't unregister on its own if there
is someone waiting for the event.

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
2016-07-08 16:45:47 +03:00
..
admtek cfg80211: remove enum ieee80211_band 2016-04-12 15:56:15 +02:00
ath Merge ath-next from ath.git 2016-06-19 11:19:30 +03:00
atmel atmel: potential underflow in atmel_set_freq() 2016-05-11 22:02:20 +03:00
broadcom brcmfmac: delete interface directly in code that sent fw request 2016-07-08 16:45:47 +03:00
cisco wireless: airo: rename 'register' variable 2016-06-29 18:56:20 +03:00
intel * work on DQA continued 2016-07-08 12:20:30 +03:00
intersil treewide: replace dev->trans_start update with helper 2016-05-04 14:16:49 -04:00
marvell mwifiex: fix scan_block flag handling 2016-07-08 16:44:03 +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: Fix typo in printk 2016-07-08 16:42:51 +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 wlcore: time sync : add support for 64 bit clock 2016-07-08 13:00:08 +03: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 For the next cycle, we have the following: 2016-06-10 23:13:32 -07: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.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