s32 wilc_parse_assoc_resp_info(u8 *pu8Buffer, u32 u32BufferLen,
                       tstrConnectRespInfo **ppstrConnectRespInfo);
 s32 wilc_dealloc_assoc_resp_info(tstrConnectRespInfo *pstrConnectRespInfo);
-
-void wilc_network_info_received(u8 *pu8Buffer, u32 u32Length);
-void wilc_gnrl_async_info_received(u8 *pu8Buffer, u32 u32Length);
-void wilc_scan_complete_received(u8 *pu8Buffer, u32 u32Length);
-
+void wilc_scan_complete_received(struct wilc *wilc, u8 *pu8Buffer,
+                                u32 u32Length);
+void wilc_network_info_received(struct wilc *wilc, u8 *pu8Buffer,
+                               u32 u32Length);
+void wilc_gnrl_async_info_received(struct wilc *wilc, u8 *pu8Buffer,
+                                  u32 u32Length);
 #endif
 
        return result;
 }
 
-void wilc_network_info_received(u8 *pu8Buffer, u32 u32Length)
+void wilc_network_info_received(struct wilc *wilc, u8 *pu8Buffer,
+                               u32 u32Length)
 {
        s32 result = 0;
        struct host_if_msg msg;
                PRINT_ER("Error in sending network info message queue message parameters: Error(%d)\n", result);
 }
 
-void wilc_gnrl_async_info_received(u8 *pu8Buffer, u32 u32Length)
+void wilc_gnrl_async_info_received(struct wilc *wilc, u8 *pu8Buffer,
+                                  u32 u32Length)
 {
        s32 result = 0;
        struct host_if_msg msg;
        up(&hif_sema_deinit);
 }
 
-void wilc_scan_complete_received(u8 *pu8Buffer, u32 u32Length)
+void wilc_scan_complete_received(struct wilc *wilc, u8 *pu8Buffer,
+                                u32 u32Length)
 {
        s32 result = 0;
        struct host_if_msg msg;
 
                                } else {
                                        struct wilc_cfg_rsp rsp;
 
-                                       wilc_wlan_cfg_indicate_rx(&buffer[pkt_offset + offset], pkt_len, &rsp);
+                                       wilc_wlan_cfg_indicate_rx(wilc, &buffer[pkt_offset + offset], pkt_len, &rsp);
                                        if (rsp.type == WILC_CFG_RSP) {
                                                PRINT_D(RX_DBG, "wilc->cfg_seq_no = %d - rsp.seq_no = %d\n", wilc->cfg_seq_no, rsp.seq_no);
                                                if (wilc->cfg_seq_no == rsp.seq_no)
 
        return ret;
 }
 
-int wilc_wlan_cfg_indicate_rx(u8 *frame, int size, struct wilc_cfg_rsp *rsp)
+int wilc_wlan_cfg_indicate_rx(struct wilc *wilc, u8 *frame, int size,
+                             struct wilc_cfg_rsp *rsp)
 {
        int ret = 1;
        u8 msg_type;
                rsp->seq_no = msg_id;
                /*call host interface info parse as well*/
                PRINT_INFO(RX_DBG, "Info message received\n");
-               wilc_gnrl_async_info_received(frame - 4, size + 4);
+               wilc_gnrl_async_info_received(wilc, frame - 4, size + 4);
                break;
 
        case 'N':
-               wilc_network_info_received(frame - 4, size + 4);
+               wilc_network_info_received(wilc, frame - 4, size + 4);
                rsp->type = 0;
                break;
 
        case 'S':
                PRINT_INFO(RX_DBG, "Scan Notification Received\n");
-               wilc_scan_complete_received(frame - 4, size + 4);
+               wilc_scan_complete_received(wilc, frame - 4, size + 4);
                break;
 
        default:
 
        u8 *str;
 } wilc_cfg_str_t;
 
+struct wilc;
 int wilc_wlan_cfg_set_wid(u8 *frame, u32 offset, u16 id, u8 *buf, int size);
 int wilc_wlan_cfg_get_wid(u8 *frame, u32 offset, u16 id);
 int wilc_wlan_cfg_get_wid_value(u16 wid, u8 *buffer, u32 buffer_size);
-int wilc_wlan_cfg_indicate_rx(u8 *frame, int size, struct wilc_cfg_rsp *rsp);
+int wilc_wlan_cfg_indicate_rx(struct wilc *wilc, u8 *frame, int size,
+                             struct wilc_cfg_rsp *rsp);
 int wilc_wlan_cfg_init(wilc_debug_func func);
 
 #endif