void wilc_mac_indicate(struct wilc *wilc)
 {
-       int status;
+       s8 status;
 
-       wilc_wlan_cfg_get_val(WID_STATUS, (unsigned char *)&status, 4);
+       wilc_wlan_cfg_get_val(WID_STATUS, &status, 1);
        if (wilc->mac_status == MAC_STATUS_INIT) {
                wilc->mac_status = status;
                complete(&wilc->sync_event);
 
 };
 
 struct wilc_mac_cfg {
-       int mac_status;
        u8 mac_address[7];
        u8 firmware_version[129];
        u8 assoc_rsp[256];
 
 static void wilc_wlan_parse_info_frame(u8 *info)
 {
-       struct wilc_mac_cfg *pd = &g_mac;
        u32 wid, len;
 
        wid = info[0] | (info[1] << 8);
 
        len = info[2];
 
-       if (len == 1 && wid == WID_STATUS)
-               pd->mac_status = info[3];
+       if (len == 1 && wid == WID_STATUS) {
+               int i = 0;
+
+               do {
+                       if (g_cfg_byte[i].id == WID_NIL)
+                               break;
+
+                       if (g_cfg_byte[i].id == wid) {
+                               g_cfg_byte[i].val = info[3];
+                               break;
+                       }
+                       i++;
+               } while (1);
+       }
 }
 
 /********************************************
        u32 type = (wid >> 12) & 0xf;
        int i, ret = 0;
 
-       if (wid == WID_STATUS) {
-               *((u32 *)buffer) = g_mac.mac_status;
-               return 4;
-       }
-
        i = 0;
        if (type == CFG_BYTE_CMD) {
                do {