From b98f77f3d9d40cbe4542196c4324bf0a31a4f352 Mon Sep 17 00:00:00 2001 From: Hauke Mehrtens Date: Mon, 11 Nov 2013 22:03:58 +0000 Subject: [PATCH] broadcom-wl: perform additional cleanup on wl module unload Signed-off-by: Nathan Hintz SVN-Revision: 38761 --- .../kernel/broadcom-wl/patches/007-use-glue-driver.patch | 8 ++++++-- .../broadcom-wl/patches/008-fix_virtual_interfaces.patch | 2 +- package/kernel/broadcom-wl/patches/012-compat-3.10.patch | 2 +- .../kernel/broadcom-wl/patches/013-interface-name.patch | 2 +- .../broadcom-wl/patches/110-add_number_to_dev_name.patch | 2 +- 5 files changed, 10 insertions(+), 6 deletions(-) diff --git a/package/kernel/broadcom-wl/patches/007-use-glue-driver.patch b/package/kernel/broadcom-wl/patches/007-use-glue-driver.patch index 2639abcf6a..a30dcc4edf 100644 --- a/package/kernel/broadcom-wl/patches/007-use-glue-driver.patch +++ b/package/kernel/broadcom-wl/patches/007-use-glue-driver.patch @@ -108,18 +108,20 @@ #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 */ @@ -128,6 +130,8 @@ -#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) */ } diff --git a/package/kernel/broadcom-wl/patches/008-fix_virtual_interfaces.patch b/package/kernel/broadcom-wl/patches/008-fix_virtual_interfaces.patch index 6cffa27810..360593115b 100644 --- a/package/kernel/broadcom-wl/patches/008-fix_virtual_interfaces.patch +++ b/package/kernel/broadcom-wl/patches/008-fix_virtual_interfaces.patch @@ -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; } diff --git a/package/kernel/broadcom-wl/patches/012-compat-3.10.patch b/package/kernel/broadcom-wl/patches/012-compat-3.10.patch index 0e0415f9cd..1ab853967a 100644 --- a/package/kernel/broadcom-wl/patches/012-compat-3.10.patch +++ b/package/kernel/broadcom-wl/patches/012-compat-3.10.patch @@ -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) { diff --git a/package/kernel/broadcom-wl/patches/013-interface-name.patch b/package/kernel/broadcom-wl/patches/013-interface-name.patch index 3a136de037..a19e3a9882 100644 --- a/package/kernel/broadcom-wl/patches/013-interface-name.patch +++ b/package/kernel/broadcom-wl/patches/013-interface-name.patch @@ -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); diff --git a/package/kernel/broadcom-wl/patches/110-add_number_to_dev_name.patch b/package/kernel/broadcom-wl/patches/110-add_number_to_dev_name.patch index 13ce72741e..28917d912a 100644 --- a/package/kernel/broadcom-wl/patches/110-add_number_to_dev_name.patch +++ b/package/kernel/broadcom-wl/patches/110-add_number_to_dev_name.patch @@ -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));