broadcom-wl: perform additional cleanup on wl module unload
Signed-off-by: Nathan Hintz <nlhintz@hotmail.com> SVN-Revision: 38761
This commit is contained in:
		| @@ -108,18 +108,20 @@ | |||||||
|   |   | ||||||
|  #ifdef CONFIG_PCI |  #ifdef CONFIG_PCI | ||||||
|  	error = pci_register_driver(&wl_pci_driver); |  	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; |  	return 0; | ||||||
|   |   | ||||||
|  error_pci: |  error_pci: | ||||||
| -	ssb_driver_unregister(&wl_ssb_driver); | -	ssb_driver_unregister(&wl_ssb_driver); | ||||||
| +#if defined(CONFIG_SSB) || defined(CONFIG_BCMA) | +#if defined(CONFIG_SSB) || defined(CONFIG_BCMA) | ||||||
| +	wl_glue_unregister(); | +	wl_glue_unregister(); | ||||||
|  | +	wl_glue_set_attach_callback(NULL); | ||||||
|  | +	wl_glue_set_remove_callback(NULL); | ||||||
| +#endif /* defined(CONFIG_SSB) || defined(CONFIG_BCMA) */ | +#endif /* defined(CONFIG_SSB) || defined(CONFIG_BCMA) */ | ||||||
|  	return error; |  	return error; | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -1099,9 +1072,9 @@ wl_module_exit(void) | @@ -1099,9 +1074,11 @@ wl_module_exit(void) | ||||||
|  #ifdef CONFIG_PCI |  #ifdef CONFIG_PCI | ||||||
|  	pci_unregister_driver(&wl_pci_driver); |  	pci_unregister_driver(&wl_pci_driver); | ||||||
|  #endif	/* CONFIG_PCI */ |  #endif	/* CONFIG_PCI */ | ||||||
| @@ -128,6 +130,8 @@ | |||||||
| -#endif	/* CONFIG_SSB */ | -#endif	/* CONFIG_SSB */ | ||||||
| +#if defined(CONFIG_SSB) || defined(CONFIG_BCMA) | +#if defined(CONFIG_SSB) || defined(CONFIG_BCMA) | ||||||
| +	wl_glue_unregister(); | +	wl_glue_unregister(); | ||||||
|  | +	wl_glue_set_attach_callback(NULL); | ||||||
|  | +	wl_glue_set_remove_callback(NULL); | ||||||
| +#endif /* defined(CONFIG_SSB) || defined(CONFIG_BCMA) */ | +#endif /* defined(CONFIG_SSB) || defined(CONFIG_BCMA) */ | ||||||
|  } |  } | ||||||
|   |   | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| --- a/driver/wl_linux.c | --- a/driver/wl_linux.c | ||||||
| +++ b/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; |  		return NULL; | ||||||
|  	} |  	} | ||||||
|   |   | ||||||
|   | |||||||
| @@ -36,7 +36,7 @@ | |||||||
|  static int |  static int | ||||||
|  wl_read_proc(char *buffer, char **start, off_t offset, int length, int *eof, void *data) |  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 */ |  	/* free common resources */ | ||||||
|  	if (wl->wlc) { |  	if (wl->wlc) { | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| --- a/driver/wl_linux.c | --- a/driver/wl_linux.c | ||||||
| +++ b/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); |  	wl_if_setup(wlif->dev); | ||||||
|   |   | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| --- a/driver/wl_linux.c | --- a/driver/wl_linux.c | ||||||
| +++ b/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)); |  	dev = alloc_etherdev(sizeof(wl_if_t)); | ||||||
|  	wlif = netdev_priv(dev); |  	wlif = netdev_priv(dev); | ||||||
|  	bzero(wlif, sizeof(wl_if_t)); |  	bzero(wlif, sizeof(wl_if_t)); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Hauke Mehrtens
					Hauke Mehrtens