broadcom-wl: perform additional cleanup on wl module unload
authorHauke Mehrtens <hauke@hauke-m.de>
Mon, 11 Nov 2013 22:03:58 +0000 (22:03 +0000)
committerHauke Mehrtens <hauke@hauke-m.de>
Mon, 11 Nov 2013 22:03:58 +0000 (22:03 +0000)
Signed-off-by: Nathan Hintz <nlhintz@hotmail.com>
SVN-Revision: 38761

package/kernel/broadcom-wl/patches/007-use-glue-driver.patch
package/kernel/broadcom-wl/patches/008-fix_virtual_interfaces.patch
package/kernel/broadcom-wl/patches/012-compat-3.10.patch
package/kernel/broadcom-wl/patches/013-interface-name.patch
package/kernel/broadcom-wl/patches/110-add_number_to_dev_name.patch

index 2639abcf6acb14e3a2069149ad08b99cc7a31132..a30dcc4edf372fdba4644b19e635187b46ef777f 100644 (file)
  
  #ifdef CONFIG_PCI
        error = pci_register_driver(&wl_pci_driver);
-@@ -1082,7 +1053,9 @@ wl_module_init(void)
+@@ -1082,7 +1053,11 @@ wl_module_init(void)
        return 0;
  
  error_pci:
 -      ssb_driver_unregister(&wl_ssb_driver);
 +#if defined(CONFIG_SSB) || defined(CONFIG_BCMA)
 +      wl_glue_unregister();
++      wl_glue_set_attach_callback(NULL);
++      wl_glue_set_remove_callback(NULL);
 +#endif /* defined(CONFIG_SSB) || defined(CONFIG_BCMA) */
        return error;
  }
  
-@@ -1099,9 +1072,9 @@ wl_module_exit(void)
+@@ -1099,9 +1074,11 @@ wl_module_exit(void)
  #ifdef CONFIG_PCI
        pci_unregister_driver(&wl_pci_driver);
  #endif        /* CONFIG_PCI */
 -#endif        /* CONFIG_SSB */
 +#if defined(CONFIG_SSB) || defined(CONFIG_BCMA)
 +      wl_glue_unregister();
++      wl_glue_set_attach_callback(NULL);
++      wl_glue_set_remove_callback(NULL);
 +#endif /* defined(CONFIG_SSB) || defined(CONFIG_BCMA) */
  }
  
index 6cffa27810cf131314a37243c16a9eb81626eb48..360593115b50ea137211b53145ac7ae2b7525979 100644 (file)
@@ -1,6 +1,6 @@
 --- a/driver/wl_linux.c
 +++ b/driver/wl_linux.c
-@@ -1541,6 +1541,8 @@ wl_add_if(wl_info_t *wl, struct wlc_if* 
+@@ -1545,6 +1545,8 @@ wl_add_if(wl_info_t *wl, struct wlc_if* 
                return NULL;
        }
  
index 0e0415f9cd844a1d8a56ab01831fab6a87bf04f8..1ab853967a29d93d9526eae5cd6c2e35718965bc 100644 (file)
@@ -36,7 +36,7 @@
  static int
  wl_read_proc(char *buffer, char **start, off_t offset, int length, int *eof, void *data)
  {
-@@ -1137,7 +1137,7 @@ wl_free(wl_info_t *wl)
+@@ -1141,7 +1141,7 @@ wl_free(wl_info_t *wl)
  
        /* free common resources */
        if (wl->wlc) {
index 3a136de037b6f34627cc17c4419dd6edbc9b5ab3..a19e3a9882ebfd93ddd6571e1090ad94353e4216 100644 (file)
@@ -1,6 +1,6 @@
 --- a/driver/wl_linux.c
 +++ b/driver/wl_linux.c
-@@ -1556,7 +1556,7 @@ wl_add_if(wl_info_t *wl, struct wlc_if*
+@@ -1560,7 +1560,7 @@ wl_add_if(wl_info_t *wl, struct wlc_if*
  
        wl_if_setup(wlif->dev);
  
index 13ce72741e7da4e21d90ad8eee7f2cf56e2b5801..28917d912af2734ee99cc4ce004250fef6c84f58 100644 (file)
@@ -1,6 +1,6 @@
 --- a/driver/wl_linux.c
 +++ b/driver/wl_linux.c
-@@ -1412,7 +1412,7 @@ wl_alloc_if(wl_info_t *wl, int iftype, u
+@@ -1416,7 +1416,7 @@ wl_alloc_if(wl_info_t *wl, int iftype, u
        dev = alloc_etherdev(sizeof(wl_if_t));
        wlif = netdev_priv(dev);
        bzero(wlif, sizeof(wl_if_t));