PRINT_D(INIT_DBG, "Deinitializing IRQ\n");
                deinit_irq(g_linux_wlan);
 
-               if (&g_linux_wlan->oup != NULL) {
-                       if (g_linux_wlan->oup.wlan_stop != NULL)
-                               g_linux_wlan->oup.wlan_stop();
-               }
+               wilc_wlan_stop();
 
                PRINT_D(INIT_DBG, "Deinitializing WILC Wlan\n");
                wilc_wlan_deinit(nic);
                return 0; /*success*/
 
 _fail_fw_start_:
-               if (&g_linux_wlan->oup != NULL) {
-                       if (g_linux_wlan->oup.wlan_stop != NULL)
-                               g_linux_wlan->oup.wlan_stop();
-               }
+               wilc_wlan_stop();
 
 _fail_irq_enable_:
 #if (defined WILC_SDIO) && (!defined WILC_SDIO_IRQ_GPIO)
 
        p->hif_func.hif_write_reg(WILC_GLB_RESET_0, 0x0);
        release_bus(RELEASE_ONLY);
 }
-static int wilc_wlan_stop(void)
+int wilc_wlan_stop(void)
 {
        wilc_wlan_dev_t *p = (wilc_wlan_dev_t *)&g_wlan;
        u32 reg = 0;
        /**
         *      export functions
         **/
-       oup->wlan_stop = wilc_wlan_stop;
        oup->wlan_add_to_tx_que = wilc_wlan_txq_add_net_pkt;
        oup->wlan_handle_tx_que = wilc_wlan_handle_txq;
        oup->wlan_handle_rx_isr = wilc_handle_isr;
 
 
 int wilc_wlan_firmware_download(const u8 *buffer, u32 buffer_size);
 int wilc_wlan_start(void);
+int wilc_wlan_stop(void);
 #endif
 
 #define WILC_TX_ERR_NO_BUF     (-2)
 
 typedef struct {
-       int (*wlan_stop)(void);
        int (*wlan_add_to_tx_que)(void *, u8 *, u32, wilc_tx_complete_func_t);
        int (*wlan_handle_tx_que)(u32 *);
        void (*wlan_handle_rx_isr)(void);