diff options
author | André Fabian Silva Delgado <emulatorman@parabola.nu> | 2016-01-20 14:01:31 -0300 |
---|---|---|
committer | André Fabian Silva Delgado <emulatorman@parabola.nu> | 2016-01-20 14:01:31 -0300 |
commit | b4b7ff4b08e691656c9d77c758fc355833128ac0 (patch) | |
tree | 82fcb00e6b918026dc9f2d1f05ed8eee83874cc0 /drivers/staging/wilc1000/wilc_wlan_cfg.c | |
parent | 35acfa0fc609f2a2cd95cef4a6a9c3a5c38f1778 (diff) |
Linux-libre 4.4-gnupck-4.4-gnu
Diffstat (limited to 'drivers/staging/wilc1000/wilc_wlan_cfg.c')
-rw-r--r-- | drivers/staging/wilc1000/wilc_wlan_cfg.c | 189 |
1 files changed, 73 insertions, 116 deletions
diff --git a/drivers/staging/wilc1000/wilc_wlan_cfg.c b/drivers/staging/wilc1000/wilc_wlan_cfg.c index e2842d37b..a34a81cde 100644 --- a/drivers/staging/wilc1000/wilc_wlan_cfg.c +++ b/drivers/staging/wilc1000/wilc_wlan_cfg.c @@ -7,16 +7,12 @@ /* */ /* ///////////////////////////////////////////////////////////////////////// */ +#include <linux/string.h> #include "wilc_wlan_if.h" #include "wilc_wlan.h" #include "wilc_wlan_cfg.h" #include "coreconfigurator.h" -#ifdef WILC_FULLY_HOSTING_AP -#include "wilc_host_ap.h" -void WILC_mgm_HOSTAPD_ACK(void *priv, bool bStatus); -#endif - /******************************************** * * Global Data @@ -27,23 +23,23 @@ typedef struct { wilc_debug_func dPrint; int mac_status; - uint8_t mac_address[7]; - uint8_t ip_address[5]; - uint8_t bssid[7]; - uint8_t ssid[34]; - uint8_t firmware_version[129]; - uint8_t supp_rate[24]; - uint8_t wep_key[28]; - uint8_t i_psk[66]; - uint8_t hardwareProductVersion[33]; - uint8_t phyversion[17]; - uint8_t supp_username[21]; - uint8_t supp_password[64]; - uint8_t assoc_req[256]; - uint8_t assoc_rsp[256]; - uint8_t firmware_info[8]; - uint8_t scan_result[256]; - uint8_t scan_result1[256]; + u8 mac_address[7]; + u8 ip_address[5]; + u8 bssid[7]; + u8 ssid[34]; + u8 firmware_version[129]; + u8 supp_rate[24]; + u8 wep_key[28]; + u8 i_psk[66]; + u8 hardwareProductVersion[33]; + u8 phyversion[17]; + u8 supp_username[21]; + u8 supp_password[64]; + u8 assoc_req[256]; + u8 assoc_rsp[256]; + u8 firmware_info[8]; + u8 scan_result[256]; + u8 scan_result1[256]; } wilc_mac_cfg_t; static wilc_mac_cfg_t g_mac; @@ -165,72 +161,72 @@ static wilc_cfg_str_t g_cfg_str[] = { * ********************************************/ -static int wilc_wlan_cfg_set_byte(uint8_t *frame, uint32_t offset, uint16_t id, uint8_t val8) +static int wilc_wlan_cfg_set_byte(u8 *frame, u32 offset, u16 id, u8 val8) { - uint8_t *buf; + u8 *buf; if ((offset + 4) >= MAX_CFG_FRAME_SIZE) return 0; buf = &frame[offset]; - buf[0] = (uint8_t)id; - buf[1] = (uint8_t)(id >> 8); + buf[0] = (u8)id; + buf[1] = (u8)(id >> 8); buf[2] = 1; buf[3] = val8; return 4; } -static int wilc_wlan_cfg_set_hword(uint8_t *frame, uint32_t offset, uint16_t id, uint16_t val16) +static int wilc_wlan_cfg_set_hword(u8 *frame, u32 offset, u16 id, u16 val16) { - uint8_t *buf; + u8 *buf; if ((offset + 5) >= MAX_CFG_FRAME_SIZE) return 0; buf = &frame[offset]; - buf[0] = (uint8_t)id; - buf[1] = (uint8_t)(id >> 8); + buf[0] = (u8)id; + buf[1] = (u8)(id >> 8); buf[2] = 2; - buf[3] = (uint8_t)val16; - buf[4] = (uint8_t)(val16 >> 8); + buf[3] = (u8)val16; + buf[4] = (u8)(val16 >> 8); return 5; } -static int wilc_wlan_cfg_set_word(uint8_t *frame, uint32_t offset, uint16_t id, uint32_t val32) +static int wilc_wlan_cfg_set_word(u8 *frame, u32 offset, u16 id, u32 val32) { - uint8_t *buf; + u8 *buf; if ((offset + 7) >= MAX_CFG_FRAME_SIZE) return 0; buf = &frame[offset]; - buf[0] = (uint8_t)id; - buf[1] = (uint8_t)(id >> 8); + buf[0] = (u8)id; + buf[1] = (u8)(id >> 8); buf[2] = 4; - buf[3] = (uint8_t)val32; - buf[4] = (uint8_t)(val32 >> 8); - buf[5] = (uint8_t)(val32 >> 16); - buf[6] = (uint8_t)(val32 >> 24); + buf[3] = (u8)val32; + buf[4] = (u8)(val32 >> 8); + buf[5] = (u8)(val32 >> 16); + buf[6] = (u8)(val32 >> 24); return 7; } -static int wilc_wlan_cfg_set_str(uint8_t *frame, uint32_t offset, uint16_t id, uint8_t *str, uint32_t size) +static int wilc_wlan_cfg_set_str(u8 *frame, u32 offset, u16 id, u8 *str, u32 size) { - uint8_t *buf; + u8 *buf; if ((offset + size + 3) >= MAX_CFG_FRAME_SIZE) return 0; buf = &frame[offset]; - buf[0] = (uint8_t)id; - buf[1] = (uint8_t)(id >> 8); - buf[2] = (uint8_t)size; + buf[0] = (u8)id; + buf[1] = (u8)(id >> 8); + buf[2] = (u8)size; if ((str != NULL) && (size != 0)) memcpy(&buf[3], str, size); @@ -238,20 +234,20 @@ static int wilc_wlan_cfg_set_str(uint8_t *frame, uint32_t offset, uint16_t id, u return (size + 3); } -static int wilc_wlan_cfg_set_bin(uint8_t *frame, uint32_t offset, uint16_t id, uint8_t *b, uint32_t size) +static int wilc_wlan_cfg_set_bin(u8 *frame, u32 offset, u16 id, u8 *b, u32 size) { - uint8_t *buf; - uint32_t i; - uint8_t checksum = 0; + u8 *buf; + u32 i; + u8 checksum = 0; if ((offset + size + 5) >= MAX_CFG_FRAME_SIZE) return 0; buf = &frame[offset]; - buf[0] = (uint8_t)id; - buf[1] = (uint8_t)(id >> 8); - buf[2] = (uint8_t)size; - buf[3] = (uint8_t)(size >> 8); + buf[0] = (u8)id; + buf[1] = (u8)(id >> 8); + buf[2] = (u8)size; + buf[3] = (u8)(size >> 8); if ((b != NULL) && (size != 0)) { memcpy(&buf[4], b, size); @@ -271,9 +267,9 @@ static int wilc_wlan_cfg_set_bin(uint8_t *frame, uint32_t offset, uint16_t id, u * ********************************************/ -static void wilc_wlan_parse_response_frame(uint8_t *info, int size) +static void wilc_wlan_parse_response_frame(u8 *info, int size) { - uint32_t wid, len = 0, i = 0; + u32 wid, len = 0, i = 0; static int seq; while (size > 0) { @@ -342,6 +338,7 @@ static void wilc_wlan_parse_response_frame(uint8_t *info, int size) if (g_cfg_str[i].id == wid) { if (wid == WID_SITE_SURVEY_RESULTS) { static int toggle; + PRINT_INFO(GENERIC_DBG, "Site survey results received[%d]\n", size); @@ -365,10 +362,10 @@ static void wilc_wlan_parse_response_frame(uint8_t *info, int size) } } -static int wilc_wlan_parse_info_frame(uint8_t *info, int size) +static int wilc_wlan_parse_info_frame(u8 *info, int size) { - wilc_mac_cfg_t *pd = (wilc_mac_cfg_t *)&g_mac; - uint32_t wid, len; + wilc_mac_cfg_t *pd = &g_mac; + u32 wid, len; int type = WILC_CFG_RSP_STATUS; wid = info[0] | (info[1] << 8); @@ -389,9 +386,9 @@ static int wilc_wlan_parse_info_frame(uint8_t *info, int size) * ********************************************/ -static int wilc_wlan_cfg_set_wid(uint8_t *frame, uint32_t offset, uint16_t id, uint8_t *buf, int size) +int wilc_wlan_cfg_set_wid(u8 *frame, u32 offset, u16 id, u8 *buf, int size) { - uint8_t type = (id >> 12) & 0xf; + u8 type = (id >> 12) & 0xf; int ret = 0; if (type == 0) { /* byte command */ @@ -399,10 +396,10 @@ static int wilc_wlan_cfg_set_wid(uint8_t *frame, uint32_t offset, uint16_t id, u ret = wilc_wlan_cfg_set_byte(frame, offset, id, *buf); } else if (type == 1) { /* half word command */ if (size >= 2) - ret = wilc_wlan_cfg_set_hword(frame, offset, id, *((uint16_t *)buf)); + ret = wilc_wlan_cfg_set_hword(frame, offset, id, *((u16 *)buf)); } else if (type == 2) { /* word command */ if (size >= 4) - ret = wilc_wlan_cfg_set_word(frame, offset, id, *((uint32_t *)buf)); + ret = wilc_wlan_cfg_set_word(frame, offset, id, *((u32 *)buf)); } else if (type == 3) { /* string command */ ret = wilc_wlan_cfg_set_str(frame, offset, id, buf, size); } else if (type == 4) { /* binary command */ @@ -414,28 +411,28 @@ static int wilc_wlan_cfg_set_wid(uint8_t *frame, uint32_t offset, uint16_t id, u return ret; } -static int wilc_wlan_cfg_get_wid(uint8_t *frame, uint32_t offset, uint16_t id) +int wilc_wlan_cfg_get_wid(u8 *frame, u32 offset, u16 id) { - uint8_t *buf; + u8 *buf; if ((offset + 2) >= MAX_CFG_FRAME_SIZE) return 0; buf = &frame[offset]; - buf[0] = (uint8_t)id; - buf[1] = (uint8_t)(id >> 8); + buf[0] = (u8)id; + buf[1] = (u8)(id >> 8); return 2; } -static int wilc_wlan_cfg_get_wid_value(uint16_t wid, uint8_t *buffer, uint32_t buffer_size) +int wilc_wlan_cfg_get_wid_value(u16 wid, u8 *buffer, u32 buffer_size) { - uint32_t type = (wid >> 12) & 0xf; + u32 type = (wid >> 12) & 0xf; int i, ret = 0; if (wid == WID_STATUS) { - *((uint32_t *)buffer) = g_mac.mac_status; + *((u32 *)buffer) = g_mac.mac_status; return 4; } @@ -482,10 +479,12 @@ static int wilc_wlan_cfg_get_wid_value(uint16_t wid, uint8_t *buffer, uint32_t b break; if (g_cfg_str[i].id == wid) { - uint32_t size = g_cfg_str[i].str[0]; + u32 size = g_cfg_str[i].str[0]; + if (buffer_size >= size) { if (g_cfg_str[i].id == WID_SITE_SURVEY_RESULTS) { static int toggle; + PRINT_INFO(GENERIC_DBG, "Site survey results value[%d]\n", size); i += toggle; @@ -506,22 +505,11 @@ static int wilc_wlan_cfg_get_wid_value(uint16_t wid, uint8_t *buffer, uint32_t b return ret; } -static int wilc_wlan_cfg_indicate_rx(uint8_t *frame, int size, wilc_cfg_rsp_t *rsp) +int wilc_wlan_cfg_indicate_rx(u8 *frame, int size, wilc_cfg_rsp_t *rsp) { int ret = 1; - uint8_t msg_type; - uint8_t msg_id; - #ifdef WILC_FULLY_HOSTING_AP - u32 *ptru32Frame; - bool bStatus = frame[2]; - - #ifdef BIG_ENDIAN - ptru32Frame = (frame[4] << 24) | (frame[5] << 16) | (frame[6] << 8) | frame[7]; - #else - ptru32Frame = (frame[7] << 24) | (frame[6] << 16) | (frame[5] << 8) | frame[4]; - #endif /* BIG_ENDIAN */ - - #endif /* WILC_FULLY_HOSTING_AP */ + u8 msg_type; + u8 msg_id; msg_type = frame[0]; msg_id = frame[1]; /* seq no */ @@ -547,39 +535,16 @@ static int wilc_wlan_cfg_indicate_rx(uint8_t *frame, int size, wilc_cfg_rsp_t *r GnrlAsyncInfoReceived(frame - 4, size + 4); break; - case 'L': -#ifndef SWITCH_LOG_TERMINAL - PRINT_ER("Unexpected firmware log message received\n"); -#else - PRINT_D(FIRM_DBG, "\nFIRMWARE LOGS :\n<<\n%s\n>>\n", frame); - break; - -#endif -#if 1 case 'N': NetworkInfoReceived(frame - 4, size + 4); rsp->type = 0; break; -#endif -/*bug3819:*/ case 'S': PRINT_INFO(RX_DBG, "Scan Notification Received\n"); host_int_ScanCompleteReceived(frame - 4, size + 4); break; -#ifdef WILC_FULLY_HOSTING_AP - case 'T': - PRINT_INFO(RX_DBG, "TBTT Notification Received\n"); - process_tbtt_isr(); - break; - - case 'A': - PRINT_INFO(RX_DBG, "HOSTAPD ACK Notification Received\n"); - WILC_mgm_HOSTAPD_ACK(ptru32Frame, bStatus); - break; -#endif - default: PRINT_INFO(RX_DBG, "Receive unknown message type[%d-%d-%d-%d-%d-%d-%d-%d]\n", frame[0], frame[1], frame[2], frame[3], frame[4], @@ -593,17 +558,9 @@ static int wilc_wlan_cfg_indicate_rx(uint8_t *frame, int size, wilc_cfg_rsp_t *r return ret; } -static int wilc_wlan_cfg_init(wilc_debug_func func) +int wilc_wlan_cfg_init(wilc_debug_func func) { memset((void *)&g_mac, 0, sizeof(wilc_mac_cfg_t)); g_mac.dPrint = func; return 1; } - -wilc_cfg_func_t mac_cfg = { - wilc_wlan_cfg_set_wid, - wilc_wlan_cfg_get_wid, - wilc_wlan_cfg_get_wid_value, - wilc_wlan_cfg_indicate_rx, - wilc_wlan_cfg_init, -}; |