• Arend van Spriel's avatar
    brcmfmac: inform cfg80211 about disconnect when device is unplugged · a538ae31
    Arend van Spriel authored
    When the brcmfmac device is physically removed cfg80211 gives a
    warning upon unregistering the net device (see below).
    [23052.390197] WARNING: CPU: 0 PID: 30 at net/wireless/core.c:937 cfg80211_netdev_notifier_call+0x164/0x600 [cfg80211]()
    [23052.400843] Modules linked in: brcmfmac(O) brcmutil(O) cfg80211(O) pl2303 usbserial binfmt_misc snd_hda_codec_hdmi snd_hda_codec_idt snd_hda_intel snd_hda_codec snd_hwdep snd_pcm snd_seq_midi snd_rawmidi snd_seq_midi_event lpc_ich snd_seq snd_timer snd_seq_device snd psmouse mfd_core serio_raw soundcore snd_page_alloc intel_ips dell_laptop dell_wmi sparse_keymap dcdbas nouveau ttm drm_kms_helper drm i2c_algo_bit mxm_wmi ahci libahci sdhci_pci firewire_ohci firewire_core sdhci crc_itu_t mmc_core intel_agp intel_gtt e1000e ptp pps_core agpgart video [last unloaded: brcmfmac]
    [23052.452987] CPU: 0 PID: 30 Comm: khubd Tainted: G           O 3.11.0-rc1-wl-testing-lockdep-00002-g41cc093-dirty #1
    [23052.463480] Hardware name: Dell Inc. Latitude E6410/07XJP9, BIOS A07 02/15/2011
    [23052.470852]  00000000 00000000 f4efdc18 c1522e3d f845bed2 f4efdc48 c103fbe4 c16a9254
    [23052.478762]  00000000 0000001e f845bed2 000003a9 f841da44 f841da44 f3790004 f25539c0
    [23052.486741]  e2700200 f4efdc58 c103fc22 00000009 00000000 f4efdcc0 f841da44 00000002
    [23052.494712] Call Trace:
    [23052.497165]  [<c1522e3d>] dump_stack+0x4b/0x66
    [23052.501685]  [<c103fbe4>] warn_slowpath_common+0x84/0xa0
    [23052.507085]  [<f841da44>] ? cfg80211_netdev_notifier_call+0x164/0x600 [cfg80211]
    [23052.514542]  [<f841da44>] ? cfg80211_netdev_notifier_call+0x164/0x600 [cfg80211]
    [23052.521981]  [<c103fc22>] warn_slowpath_null+0x22/0x30
    [23052.527191]  [<f841da44>] cfg80211_netdev_notifier_call+0x164/0x600 [cfg80211]
    [23052.534494]  [<c150abe8>] ? packet_notifier+0xc8/0x1d0
    [23052.539703]  [<c150abfc>] ? packet_notifier+0xdc/0x1d0
    [23052.544880]  [<c150ab20>] ? packet_seq_stop+0x30/0x30
    [23052.550002]  [<c152d655>] notifier_call_chain+0x45/0x60
    [23052.555298]  [<c106839f>] raw_notifier_call_chain+0x1f/0x30
    [23052.560963]  [<c143c693>] call_netdevice_notifiers_info+0x33/0x70
    [23052.567153]  [<c1459869>] ? qdisc_destroy+0x99/0xb0
    [23052.572116]  [<c143c6e3>] call_netdevice_notifiers+0x13/0x20
    [23052.577861]  [<c143df93>] rollback_registered_many+0xf3/0x1d0
    [23052.583687]  [<c1524cfc>] ? mutex_lock_nested+0x25c/0x350
    [23052.589150]  [<c143e0f4>] rollback_registered+0x24/0x40
    [23052.594445]  [<c143e15f>] unregister_netdevice_queue+0x4f/0xb0
    [23052.600344]  [<c143e299>] unregister_netdev+0x19/0x30
    [23052.605484]  [<f865b38f>] brcmf_del_if+0xbf/0x160 [brcmfmac]
    [23052.611223]  [<f865b7ae>] brcmf_detach+0x5e/0xd0 [brcmfmac]
    [23052.616881]  [<f8667413>] brcmf_usb_disconnect+0x63/0xa0 [brcmfmac]
    [23052.623217]  [<c13e09aa>] usb_unbind_interface+0x4a/0x180
    When the device is physically connected the driver sends a disassoc
    command to the device and response triggers the driver to inform cfg80211
    about it. However, with the device removed the disassoc command fails.
    This patch adds a call to cfg80211_disconnected() when that command fails.
    The warning was added by commit below and also cleans up, but better
    doing it in the driver if only to get rid of the warning.
    commit f9bef3df
    Author: Ben Greear <greearb@candelatech.com>
    Date:   Wed Jun 19 14:06:26 2013 -0700
        wireless: check for dangling wdev->current_bss pointer
    Cc: Ben Greear <greearb@candelatech.com>
    Reviewed-by: default avatarPieter-Paul Giesberts <pieterpg@broadcom.com>
    Signed-off-by: default avatarArend van Spriel <arend@broadcom.com>
    Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
wl_cfg80211.c 143 KB