Merge remote-tracking branch 'asoc/fix/rt5645' into asoc-linus
[firefly-linux-kernel-4.4.55.git] / drivers / staging / wilc1000 / wilc_wlan_cfg.c
index e2842d37b07826000ec1bbb773157ecd346af71d..a34a81cdeb5e1042d39ea28a3f058c2f1cc8a4c5 100644 (file)
@@ -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,
-};