diff --git a/drivers/staging/wilc1000/linux_wlan.c b/drivers/staging/wilc1000/linux_wlan.c index 06b80088f9cfe9ccf285d4bf4098ed4c46b7ff8c..39f07923ef1c158d1d26e2f2fdcc395bfe5a548a 100644 --- a/drivers/staging/wilc1000/linux_wlan.c +++ b/drivers/staging/wilc1000/linux_wlan.c @@ -159,9 +159,9 @@ static void deinit_irq(struct net_device *dev) 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); diff --git a/drivers/staging/wilc1000/wilc_wfi_netdevice.h b/drivers/staging/wilc1000/wilc_wfi_netdevice.h index 30151b202cce8e821b963bb257d219f3b849ab3c..70bae3a9945bed02b412103dfe8dd3913eaed409 100644 --- a/drivers/staging/wilc1000/wilc_wfi_netdevice.h +++ b/drivers/staging/wilc1000/wilc_wfi_netdevice.h @@ -155,7 +155,7 @@ struct wilc_vif { struct wilc { const struct wilc_hif_func *hif_func; int io_type; - int mac_status; + s8 mac_status; struct gpio_desc *gpio_irq; bool initialized; int dev_irq_num; diff --git a/drivers/staging/wilc1000/wilc_wlan_cfg.c b/drivers/staging/wilc1000/wilc_wlan_cfg.c index 541251b2fe0d7ab1da0f023ad8f48dec51222709..4434976fa90a7f16839ff0261f927f7011a89842 100644 --- a/drivers/staging/wilc1000/wilc_wlan_cfg.c +++ b/drivers/staging/wilc1000/wilc_wlan_cfg.c @@ -18,7 +18,6 @@ enum cfg_cmd_type { }; struct wilc_mac_cfg { - int mac_status; u8 mac_address[7]; u8 firmware_version[129]; u8 assoc_rsp[256]; @@ -251,15 +250,26 @@ static void wilc_wlan_parse_response_frame(u8 *info, int size) 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); + } } /******************************************** @@ -323,11 +333,6 @@ int wilc_wlan_cfg_get_wid_value(u16 wid, u8 *buffer, u32 buffer_size) 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 {