Staging: wilc1000: coreconfigurator: Remove trailing whitespace
[firefly-linux-kernel-4.4.55.git] / drivers / staging / wilc1000 / coreconfigurator.c
index 16a0abc970c001d5a3f26ce1f2bf81e86df90f85..e10c6ffa698a6f541ad4e40c7007ddc4852b50cd 100644 (file)
@@ -8,47 +8,29 @@
  *  @version   1.0
  */
 
-
-/*****************************************************************************/
-/* File Includes                                                             */
-/*****************************************************************************/
 #include "coreconfigurator.h"
-/*****************************************************************************/
-/* Constants                                                                 */
-/*****************************************************************************/
-#define INLINE static __inline
-#define PHY_802_11n
-#define MAX_CFG_PKTLEN     1450
-#define MSG_HEADER_LEN     4
-#define QUERY_MSG_TYPE     'Q'
-#define WRITE_MSG_TYPE     'W'
-#define RESP_MSG_TYPE      'R'
-#define WRITE_RESP_SUCCESS 1
-#define INVALID         255
-#define MAC_ADDR_LEN    6
+#include "wilc_wlan_if.h"
+#include "wilc_wlan.h"
+#include <linux/errno.h>
+#include <linux/slab.h>
+#include <linux/etherdevice.h>
 #define TAG_PARAM_OFFSET       (MAC_HDR_LEN + TIME_STAMP_LEN + \
                                                        BEACON_INTERVAL_LEN + CAP_INFO_LEN)
-
-/*****************************************************************************/
-/* Function Macros                                                           */
-/*****************************************************************************/
-
-
-/*****************************************************************************/
-/* Type Definitions                                                          */
-/*****************************************************************************/
+#define ADDR1 4
+#define ADDR2 10
+#define ADDR3 16
 
 /* Basic Frame Type Codes (2-bit) */
-typedef enum {
+enum basic_frame_type {
        FRAME_TYPE_CONTROL     = 0x04,
        FRAME_TYPE_DATA        = 0x08,
        FRAME_TYPE_MANAGEMENT  = 0x00,
        FRAME_TYPE_RESERVED    = 0x0C,
        FRAME_TYPE_FORCE_32BIT = 0xFFFFFFFF
-} tenuBasicFrmType;
+};
 
 /* Frame Type and Subtype Codes (6-bit) */
-typedef enum {
+enum sub_frame_type {
        ASSOC_REQ             = 0x00,
        ASSOC_RSP             = 0x10,
        REASSOC_REQ           = 0x20,
@@ -85,18 +67,10 @@ typedef enum {
        BLOCKACK_REQ          = 0x84,
        BLOCKACK              = 0x94,
        FRAME_SUBTYPE_FORCE_32BIT  = 0xFFFFFFFF
-} tenuFrmSubtype;
-
-/* Basic Frame Classes */
-typedef enum {
-       CLASS1_FRAME_TYPE      = 0x00,
-       CLASS2_FRAME_TYPE      = 0x01,
-       CLASS3_FRAME_TYPE      = 0x02,
-       FRAME_CLASS_FORCE_32BIT  = 0xFFFFFFFF
-} tenuFrameClass;
+};
 
 /* Element ID  of various Information Elements */
-typedef enum {
+enum info_element_id {
        ISSID               = 0,   /* Service Set Identifier         */
        ISUPRATES           = 1,   /* Supported Rates                */
        IFHPARMS            = 2,   /* FH parameter set               */
@@ -137,343 +111,13 @@ typedef enum {
        IWMM                = 221, /* WMM parameters                 */
        IWPAELEMENT         = 221, /* WPA Information Element        */
        INFOELEM_ID_FORCE_32BIT  = 0xFFFFFFFF
-} tenuInfoElemID;
-
-
-typedef struct {
-       char *pcRespBuffer;
-       s32 s32MaxRespBuffLen;
-       s32 s32BytesRead;
-       bool bRespRequired;
-} tstrConfigPktInfo;
-
-
-
-/*****************************************************************************/
-/* Extern Variable Declarations                                              */
-/*****************************************************************************/
-
-
-/*****************************************************************************/
-/* Extern Function Declarations                                              */
-/*****************************************************************************/
-extern s32 SendRawPacket(s8 *ps8Packet, s32 s32PacketLen);
-extern void NetworkInfoReceived(u8 *pu8Buffer, u32 u32Length);
-extern void GnrlAsyncInfoReceived(u8 *pu8Buffer, u32 u32Length);
-extern void host_int_ScanCompleteReceived(u8 *pu8Buffer, u32 u32Length);
-/*****************************************************************************/
-/* Global Variables                                                          */
-/*****************************************************************************/
-static struct semaphore SemHandleSendPkt;
-static struct semaphore SemHandlePktResp;
-
-
-static tstrConfigPktInfo gstrConfigPktInfo;
-
-static u8 g_seqno;
-
-static s16 g_wid_num          = -1;
-
-static u16 Res_Len;
-
-static u8 g_oper_mode    = SET_CFG;
-
-/* WID Switches */
-static tstrWID gastrWIDs[] = {
-       {WID_FIRMWARE_VERSION,          WID_STR},
-       {WID_PHY_VERSION,               WID_STR},
-       {WID_HARDWARE_VERSION,          WID_STR},
-       {WID_BSS_TYPE,                  WID_CHAR},
-       {WID_QOS_ENABLE,                WID_CHAR},
-       {WID_11I_MODE,                  WID_CHAR},
-       {WID_CURRENT_TX_RATE,           WID_CHAR},
-       {WID_LINKSPEED,                 WID_CHAR},
-       {WID_RTS_THRESHOLD,             WID_SHORT},
-       {WID_FRAG_THRESHOLD,            WID_SHORT},
-       {WID_SSID,                      WID_STR},
-       {WID_BSSID,                     WID_ADR},
-       {WID_BEACON_INTERVAL,           WID_SHORT},
-       {WID_POWER_MANAGEMENT,          WID_CHAR},
-       {WID_LISTEN_INTERVAL,           WID_CHAR},
-       {WID_DTIM_PERIOD,               WID_CHAR},
-       {WID_CURRENT_CHANNEL,           WID_CHAR},
-       {WID_TX_POWER_LEVEL_11A,        WID_CHAR},
-       {WID_TX_POWER_LEVEL_11B,        WID_CHAR},
-       {WID_PREAMBLE,                  WID_CHAR},
-       {WID_11G_OPERATING_MODE,        WID_CHAR},
-       {WID_MAC_ADDR,                  WID_ADR},
-       {WID_IP_ADDRESS,                WID_ADR},
-       {WID_ACK_POLICY,                WID_CHAR},
-       {WID_PHY_ACTIVE_REG,            WID_CHAR},
-       {WID_AUTH_TYPE,                 WID_CHAR},
-       {WID_REKEY_POLICY,              WID_CHAR},
-       {WID_REKEY_PERIOD,              WID_INT},
-       {WID_REKEY_PACKET_COUNT,        WID_INT},
-       {WID_11I_PSK,                   WID_STR},
-       {WID_1X_KEY,                    WID_STR},
-       {WID_1X_SERV_ADDR,              WID_IP},
-       {WID_SUPP_USERNAME,             WID_STR},
-       {WID_SUPP_PASSWORD,             WID_STR},
-       {WID_USER_CONTROL_ON_TX_POWER,  WID_CHAR},
-       {WID_MEMORY_ADDRESS,            WID_INT},
-       {WID_MEMORY_ACCESS_32BIT,       WID_INT},
-       {WID_MEMORY_ACCESS_16BIT,       WID_SHORT},
-       {WID_MEMORY_ACCESS_8BIT,        WID_CHAR},
-       {WID_SITE_SURVEY_RESULTS,       WID_STR},
-       {WID_PMKID_INFO,                WID_STR},
-       {WID_ASSOC_RES_INFO,            WID_STR},
-       {WID_MANUFACTURER,              WID_STR}, /* 4 Wids added for the CAPI tool*/
-       {WID_MODEL_NAME,                WID_STR},
-       {WID_MODEL_NUM,                 WID_STR},
-       {WID_DEVICE_NAME,               WID_STR},
-       {WID_SSID_PROBE_REQ,            WID_STR},
-
-#ifdef MAC_802_11N
-       {WID_11N_ENABLE,                WID_CHAR},
-       {WID_11N_CURRENT_TX_MCS,        WID_CHAR},
-       {WID_TX_POWER_LEVEL_11N,        WID_CHAR},
-       {WID_11N_OPERATING_MODE,        WID_CHAR},
-       {WID_11N_SMPS_MODE,             WID_CHAR},
-       {WID_11N_PROT_MECH,             WID_CHAR},
-       {WID_11N_ERP_PROT_TYPE,         WID_CHAR},
-       {WID_11N_HT_PROT_TYPE,          WID_CHAR},
-       {WID_11N_PHY_ACTIVE_REG_VAL,    WID_INT},
-       {WID_11N_PRINT_STATS,           WID_CHAR},
-       {WID_11N_AUTORATE_TABLE,        WID_BIN_DATA},
-       {WID_HOST_CONFIG_IF_TYPE,       WID_CHAR},
-       {WID_HOST_DATA_IF_TYPE,         WID_CHAR},
-       {WID_11N_SIG_QUAL_VAL,          WID_SHORT},
-       {WID_11N_IMMEDIATE_BA_ENABLED,  WID_CHAR},
-       {WID_11N_TXOP_PROT_DISABLE,     WID_CHAR},
-       {WID_11N_SHORT_GI_20MHZ_ENABLE, WID_CHAR},
-       {WID_SHORT_SLOT_ALLOWED,        WID_CHAR},
-       {WID_11W_ENABLE,                WID_CHAR},
-       {WID_11W_MGMT_PROT_REQ,         WID_CHAR},
-       {WID_2040_ENABLE,               WID_CHAR},
-       {WID_2040_COEXISTENCE,          WID_CHAR},
-       {WID_USER_SEC_CHANNEL_OFFSET,   WID_CHAR},
-       {WID_2040_CURR_CHANNEL_OFFSET,  WID_CHAR},
-       {WID_2040_40MHZ_INTOLERANT,     WID_CHAR},
-       {WID_HUT_RESTART,               WID_CHAR},
-       {WID_HUT_NUM_TX_PKTS,           WID_INT},
-       {WID_HUT_FRAME_LEN,             WID_SHORT},
-       {WID_HUT_TX_FORMAT,             WID_CHAR},
-       {WID_HUT_BANDWIDTH,             WID_CHAR},
-       {WID_HUT_OP_BAND,               WID_CHAR},
-       {WID_HUT_STBC,                  WID_CHAR},
-       {WID_HUT_ESS,                   WID_CHAR},
-       {WID_HUT_ANTSET,                WID_CHAR},
-       {WID_HUT_HT_OP_MODE,            WID_CHAR},
-       {WID_HUT_RIFS_MODE,             WID_CHAR},
-       {WID_HUT_SMOOTHING_REC,         WID_CHAR},
-       {WID_HUT_SOUNDING_PKT,          WID_CHAR},
-       {WID_HUT_HT_CODING,             WID_CHAR},
-       {WID_HUT_TEST_DIR,              WID_CHAR},
-       {WID_HUT_TXOP_LIMIT,            WID_SHORT},
-       {WID_HUT_DEST_ADDR,             WID_ADR},
-       {WID_HUT_TX_PATTERN,            WID_BIN_DATA},
-       {WID_HUT_TX_TIME_TAKEN,         WID_INT},
-       {WID_HUT_PHY_TEST_MODE,         WID_CHAR},
-       {WID_HUT_PHY_TEST_RATE_HI,      WID_CHAR},
-       {WID_HUT_PHY_TEST_RATE_LO,      WID_CHAR},
-       {WID_HUT_TX_TEST_TIME,          WID_INT},
-       {WID_HUT_LOG_INTERVAL,          WID_INT},
-       {WID_HUT_DISABLE_RXQ_REPLENISH, WID_CHAR},
-       {WID_HUT_TEST_ID,               WID_STR},
-       {WID_HUT_KEY_ORIGIN,            WID_CHAR},
-       {WID_HUT_BCST_PERCENT,          WID_CHAR},
-       {WID_HUT_GROUP_CIPHER_TYPE,     WID_CHAR},
-       {WID_HUT_STATS,                 WID_BIN_DATA},
-       {WID_HUT_TSF_TEST_MODE,         WID_CHAR},
-       {WID_HUT_SIG_QUAL_AVG,          WID_SHORT},
-       {WID_HUT_SIG_QUAL_AVG_CNT,      WID_SHORT},
-       {WID_HUT_TSSI_VALUE,            WID_CHAR},
-       {WID_HUT_MGMT_PERCENT,          WID_CHAR},
-       {WID_HUT_MGMT_BCST_PERCENT,     WID_CHAR},
-       {WID_HUT_MGMT_ALLOW_HT,         WID_CHAR},
-       {WID_HUT_UC_MGMT_TYPE,          WID_CHAR},
-       {WID_HUT_BC_MGMT_TYPE,          WID_CHAR},
-       {WID_HUT_UC_MGMT_FRAME_LEN,     WID_SHORT},
-       {WID_HUT_BC_MGMT_FRAME_LEN,     WID_SHORT},
-       {WID_HUT_11W_MFP_REQUIRED_TX,   WID_CHAR},
-       {WID_HUT_11W_MFP_PEER_CAPABLE,  WID_CHAR},
-       {WID_HUT_11W_TX_IGTK_ID,        WID_CHAR},
-       {WID_HUT_FC_TXOP_MOD,           WID_CHAR},
-       {WID_HUT_FC_PROT_TYPE,          WID_CHAR},
-       {WID_HUT_SEC_CCA_ASSERT,        WID_CHAR},
-#endif /* MAC_802_11N */
 };
 
-u16 g_num_total_switches = (sizeof(gastrWIDs) / sizeof(tstrWID));
-/*****************************************************************************/
-/* Static Function Declarations                                              */
-/*****************************************************************************/
-
-
-
-/*****************************************************************************/
-/* Functions                                                                 */
-/*****************************************************************************/
-INLINE u8 ascii_hex_to_dec(u8 num)
-{
-       if ((num >= '0') && (num <= '9'))
-               return (num - '0');
-       else if ((num >= 'A') && (num <= 'F'))
-               return (10 + (num - 'A'));
-       else if ((num >= 'a') && (num <= 'f'))
-               return (10 + (num - 'a'));
-
-       return INVALID;
-}
-
-INLINE u8 get_hex_char(u8 inp)
-{
-       u8 *d2htab = "0123456789ABCDEF";
-
-       return d2htab[inp & 0xF];
-}
-
-/* This function extracts the MAC address held in a string in standard format */
-/* into another buffer as integers.                                           */
-INLINE u16 extract_mac_addr(char *str, u8 *buff)
-{
-       *buff = 0;
-       while (*str != '\0') {
-               if ((*str == ':') || (*str == '-'))
-                       *(++buff) = 0;
-               else
-                       *buff = (*buff << 4) + ascii_hex_to_dec(*str);
-
-               str++;
-       }
-
-       return MAC_ADDR_LEN;
-}
-
-/* This function creates MAC address in standard format from a buffer of      */
-/* integers.                                                                  */
-INLINE void create_mac_addr(u8 *str, u8 *buff)
-{
-       u32 i = 0;
-       u32 j = 0;
-
-       for (i = 0; i < MAC_ADDR_LEN; i++) {
-               str[j++] = get_hex_char((u8)((buff[i] >> 4) & 0x0F));
-               str[j++] = get_hex_char((u8)(buff[i] & 0x0F));
-               str[j++] = ':';
-       }
-       str[--j] = '\0';
-}
-
-/* This function converts the IP address string in dotted decimal format to */
-/* unsigned integer. This functionality is similar to the library function  */
-/* inet_addr() but is reimplemented here since I could not confirm that     */
-/* inet_addr is platform independent.                                       */
-/* ips=>IP Address String in dotted decimal format                          */
-/* ipn=>Pointer to IP Address in integer format                             */
-INLINE u8 conv_ip_to_int(u8 *ips, u32 *ipn)
-{
-       u8 i   = 0;
-       u8 ipb = 0;
-       *ipn = 0;
-       /* Integer to string for each component */
-       while (ips[i] != '\0') {
-               if (ips[i] == '.') {
-                       *ipn = ((*ipn) << 8) | ipb;
-                       ipb = 0;
-               } else {
-                       ipb = ipb * 10 + ascii_hex_to_dec(ips[i]);
-               }
-
-               i++;
-       }
-
-       /* The last byte of the IP address is read in here */
-       *ipn = ((*ipn) << 8) | ipb;
-
-       return 0;
-}
-
-/* This function converts the IP address from integer format to dotted    */
-/* decimal string format. Alternative to std library fn inet_ntoa().      */
-/* ips=>Buffer to hold IP Address String dotted decimal format (Min 17B)  */
-/* ipn=>IP Address in integer format                                      */
-INLINE u8 conv_int_to_ip(u8 *ips, u32 ipn)
-{
-       u8 i   = 0;
-       u8 ipb = 0;
-       u8 cnt = 0;
-       u8 ipbsize = 0;
-
-       for (cnt = 4; cnt > 0; cnt--) {
-               ipb = (ipn >> (8 * (cnt - 1))) & 0xFF;
-
-               if (ipb >= 100)
-                       ipbsize = 2;
-               else if (ipb >= 10)
-                       ipbsize = 1;
-               else
-                       ipbsize = 0;
-
-               switch (ipbsize) {
-               case 2:
-                       ips[i++] = get_hex_char(ipb / 100);
-                       ipb %= 100;
-
-               case 1:
-                       ips[i++] = get_hex_char(ipb / 10);
-                       ipb %= 10;
-
-               default:
-                       ips[i++] = get_hex_char(ipb);
-               }
-
-               if (cnt > 1)
-                       ips[i++] = '.';
-       }
-
-       ips[i] = '\0';
-
-       return i;
-}
-
-INLINE tenuWIDtype get_wid_type(u32 wid_num)
-{
-       /* Check for iconfig specific WID types first */
-       if ((wid_num == WID_BSSID) ||
-           (wid_num == WID_MAC_ADDR) ||
-           (wid_num == WID_IP_ADDRESS) ||
-           (wid_num == WID_HUT_DEST_ADDR)) {
-               return WID_ADR;
-       }
-
-       if ((WID_1X_SERV_ADDR == wid_num) ||
-           (WID_STACK_IP_ADDR == wid_num) ||
-           (WID_STACK_NETMASK_ADDR == wid_num)) {
-               return WID_IP;
-       }
-
-       /* Next check for standard WID types */
-       if (wid_num < 0x1000)
-               return WID_CHAR;
-       else if (wid_num < 0x2000)
-               return WID_SHORT;
-       else if (wid_num < 0x3000)
-               return WID_INT;
-       else if (wid_num < 0x4000)
-               return WID_STR;
-       else if (wid_num < 0x5000)
-               return WID_BIN_DATA;
-
-       return WID_UNDEF;
-}
-
-
 /* This function extracts the beacon period field from the beacon or probe   */
 /* response frame.                                                           */
-INLINE u16 get_beacon_period(u8 *data)
+static inline u16 get_beacon_period(u8 *data)
 {
-       u16 bcn_per = 0;
+       u16 bcn_per;
 
        bcn_per  = data[0];
        bcn_per |= (data[1] << 8);
@@ -481,7 +125,7 @@ INLINE u16 get_beacon_period(u8 *data)
        return bcn_per;
 }
 
-INLINE u32 get_beacon_timestamp_lo(u8 *data)
+static inline u32 get_beacon_timestamp_lo(u8 *data)
 {
        u32 time_stamp = 0;
        u32 index    = MAC_HDR_LEN;
@@ -494,7 +138,7 @@ INLINE u32 get_beacon_timestamp_lo(u8 *data)
        return time_stamp;
 }
 
-INLINE u32 get_beacon_timestamp_hi(u8 *data)
+static inline u32 get_beacon_timestamp_hi(u8 *data)
 {
        u32 time_stamp = 0;
        u32 index    = (MAC_HDR_LEN + 4);
@@ -507,26 +151,18 @@ INLINE u32 get_beacon_timestamp_hi(u8 *data)
        return time_stamp;
 }
 
-/* This function extracts the 'frame type' bits from the MAC header of the   */
-/* input frame.                                                              */
-/* Returns the value in the LSB of the returned value.                       */
-INLINE tenuBasicFrmType get_type(u8 *header)
-{
-       return ((tenuBasicFrmType)(header[0] & 0x0C));
-}
-
 /* This function extracts the 'frame type and sub type' bits from the MAC    */
 /* header of the input frame.                                                */
 /* Returns the value in the LSB of the returned value.                       */
-INLINE tenuFrmSubtype get_sub_type(u8 *header)
+static inline enum sub_frame_type get_sub_type(u8 *header)
 {
-       return ((tenuFrmSubtype)(header[0] & 0xFC));
+       return ((enum sub_frame_type)(header[0] & 0xFC));
 }
 
 /* This function extracts the 'to ds' bit from the MAC header of the input   */
 /* frame.                                                                    */
 /* Returns the value in the LSB of the returned value.                       */
-INLINE u8 get_to_ds(u8 *header)
+static inline u8 get_to_ds(u8 *header)
 {
        return (header[1] & 0x01);
 }
@@ -534,47 +170,41 @@ INLINE u8 get_to_ds(u8 *header)
 /* This function extracts the 'from ds' bit from the MAC header of the input */
 /* frame.                                                                    */
 /* Returns the value in the LSB of the returned value.                       */
-INLINE u8 get_from_ds(u8 *header)
+static inline u8 get_from_ds(u8 *header)
 {
        return ((header[1] & 0x02) >> 1);
 }
 
-/* This function extracts the MAC Address in 'address1' field of the MAC     */
-/* header and updates the MAC Address in the allocated 'addr' variable.      */
-INLINE void get_address1(u8 *pu8msa, u8 *addr)
-{
-       memcpy(addr, pu8msa + 4, 6);
-}
-
-/* This function extracts the MAC Address in 'address2' field of the MAC     */
-/* header and updates the MAC Address in the allocated 'addr' variable.      */
-INLINE void get_address2(u8 *pu8msa, u8 *addr)
-{
-       memcpy(addr, pu8msa + 10, 6);
-}
-
-/* This function extracts the MAC Address in 'address3' field of the MAC     */
-/* header and updates the MAC Address in the allocated 'addr' variable.      */
-INLINE void get_address3(u8 *pu8msa, u8 *addr)
-{
-       memcpy(addr, pu8msa + 16, 6);
-}
-
 /* This function extracts the BSSID from the incoming WLAN packet based on   */
-/* the 'from ds' bit, and updates the MAC Address in the allocated 'addr'    */
+/* the 'from ds' bit, and updates the MAC Address in the allocated 'data'    */
 /* variable.                                                                 */
-INLINE void get_BSSID(u8 *data, u8 *bssid)
+static inline void get_BSSID(u8 *data, u8 *bssid)
 {
        if (get_from_ds(data) == 1)
-               get_address2(data, bssid);
+               /*
+                * Extract the MAC Address in 'address2' field of the MAC
+                * header and update the MAC Address in the allocated 'data'
+                *  variable.
+                */
+               ether_addr_copy(data, bssid + ADDR2);
        else if (get_to_ds(data) == 1)
-               get_address1(data, bssid);
+               /*
+                * Extract the MAC Address in 'address1' field of the MAC
+                * header and update the MAC Address in the allocated 'data'
+                * variable.
+                */
+               ether_addr_copy(data, bssid + ADDR1);
        else
-               get_address3(data, bssid);
+               /*
+                * Extract the MAC Address in 'address3' field of the MAC
+                * header and update the MAC Address in the allocated 'data'
+                * variable.
+                */
+               ether_addr_copy(data, bssid + ADDR3);
 }
 
 /* This function extracts the SSID from a beacon/probe response frame        */
-INLINE void get_ssid(u8 *data, u8 *ssid, u8 *p_ssid_len)
+static inline void get_ssid(u8 *data, u8 *ssid, u8 *p_ssid_len)
 {
        u8 len = 0;
        u8 i   = 0;
@@ -600,11 +230,11 @@ INLINE void get_ssid(u8 *data, u8 *ssid, u8 *p_ssid_len)
 
 /* This function extracts the capability info field from the beacon or probe */
 /* response frame.                                                           */
-INLINE u16 get_cap_info(u8 *data)
+static inline u16 get_cap_info(u8 *data)
 {
        u16 cap_info = 0;
        u16 index    = MAC_HDR_LEN;
-       tenuFrmSubtype st;
+       enum sub_frame_type st;
 
        st = get_sub_type(data);
 
@@ -621,9 +251,9 @@ INLINE u16 get_cap_info(u8 *data)
 
 /* This function extracts the capability info field from the Association */
 /* response frame.                                                                       */
-INLINE u16 get_assoc_resp_cap_info(u8 *data)
+static inline u16 get_assoc_resp_cap_info(u8 *data)
 {
-       u16 cap_info = 0;
+       u16 cap_info;
 
        cap_info  = data[0];
        cap_info |= (data[1] << 8);
@@ -631,11 +261,11 @@ INLINE u16 get_assoc_resp_cap_info(u8 *data)
        return cap_info;
 }
 
-/* This funcion extracts the association status code from the incoming       */
+/* This function extracts the association status code from the incoming       */
 /* association response frame and returns association status code            */
-INLINE u16 get_asoc_status(u8 *data)
+static inline u16 get_asoc_status(u8 *data)
 {
-       u16 asoc_status = 0;
+       u16 asoc_status;
 
        asoc_status = data[3];
        asoc_status = (asoc_status << 8) | data[2];
@@ -645,9 +275,9 @@ INLINE u16 get_asoc_status(u8 *data)
 
 /* This function extracts association ID from the incoming association       */
 /* response frame                                                                                           */
-INLINE u16 get_asoc_id(u8 *data)
+static inline u16 get_asoc_id(u8 *data)
 {
-       u16 asoc_id = 0;
+       u16 asoc_id;
 
        asoc_id  = data[4];
        asoc_id |= (data[5] << 8);
@@ -655,32 +285,9 @@ INLINE u16 get_asoc_id(u8 *data)
        return asoc_id;
 }
 
-/**
- *  @brief              initializes the Core Configurator
- *  @details
- *  @return     Error code indicating success/failure
- *  @note
- *  @author    mabubakr
- *  @date              1 Mar 2012
- *  @version           1.0
- */
-
-s32 CoreConfiguratorInit(void)
-{
-       s32 s32Error = WILC_SUCCESS;
-       PRINT_D(CORECONFIG_DBG, "CoreConfiguratorInit()\n");
-
-       sema_init(&SemHandleSendPkt, 1);
-       sema_init(&SemHandlePktResp, 0);
-
-
-       memset((void *)(&gstrConfigPktInfo), 0, sizeof(tstrConfigPktInfo));
-       return s32Error;
-}
-
 u8 *get_tim_elm(u8 *pu8msa, u16 u16RxLen, u16 u16TagParamOffset)
 {
-       u16 u16index = 0;
+       u16 u16index;
 
        /*************************************************************************/
        /*                       Beacon Frame - Frame Body                       */
@@ -698,11 +305,10 @@ u8 *get_tim_elm(u8 *pu8msa, u16 u16RxLen, u16 u16TagParamOffset)
        while (u16index < (u16RxLen - FCS_LEN)) {
                if (pu8msa[u16index] == ITIM)
                        return &pu8msa[u16index];
-               else
-                       u16index += (IE_HDR_LEN + pu8msa[u16index + 1]);
+               u16index += (IE_HDR_LEN + pu8msa[u16index + 1]);
        }
 
-       return 0;
+       return NULL;
 }
 
 /* This function gets the current channel information from
@@ -715,9 +321,8 @@ u8 get_current_channel_802_11n(u8 *pu8msa, u16 u16RxLen)
        while (index < (u16RxLen - FCS_LEN)) {
                if (pu8msa[index] == IDSPARMS)
                        return pu8msa[index + 2];
-               else
-                       /* Increment index by length information and header */
-                       index += pu8msa[index + 1] + IE_HDR_LEN;
+               /* Increment index by length information and header */
+               index += pu8msa[index + 1] + IE_HDR_LEN;
        }
 
        /* Return current channel information from the MIB, if beacon/probe  */
@@ -726,23 +331,6 @@ u8 get_current_channel_802_11n(u8 *pu8msa, u16 u16RxLen)
        return 0;  /* no MIB here */
 }
 
-u8 get_current_channel(u8 *pu8msa, u16 u16RxLen)
-{
-#ifdef PHY_802_11n
-#ifdef FIVE_GHZ_BAND
-       /* Get the current channel as its not set in */
-       /* 802.11a beacons/probe response            */
-       return (get_rf_channel() + 1);
-#else /* FIVE_GHZ_BAND */
-       /* Extract current channel information from */
-       /* the beacon/probe response frame          */
-       return get_current_channel_802_11n(pu8msa, u16RxLen);
-#endif /* FIVE_GHZ_BAND */
-#else
-       return 0;
-#endif /* PHY_802_11n */
-}
-
 /**
  *  @brief                      parses the received 'N' message
  *  @details
@@ -754,9 +342,8 @@ u8 get_current_channel(u8 *pu8msa, u16 u16RxLen)
  *  @date                      1 Mar 2012
  *  @version           1.0
  */
-s32 ParseNetworkInfo(u8 *pu8MsgBuffer, tstrNetworkInfo **ppstrNetworkInfo)
+s32 parse_network_info(u8 *pu8MsgBuffer, tstrNetworkInfo **ppstrNetworkInfo)
 {
-       s32 s32Error = WILC_SUCCESS;
        tstrNetworkInfo *pstrNetworkInfo = NULL;
        u8 u8MsgType = 0;
        u8 u8MsgID = 0;
@@ -764,14 +351,14 @@ s32 ParseNetworkInfo(u8 *pu8MsgBuffer, tstrNetworkInfo **ppstrNetworkInfo)
 
        u16 u16WidID = (u16)WID_NIL;
        u16 u16WidLen  = 0;
-       u8  *pu8WidVal = 0;
+       u8  *pu8WidVal = NULL;
 
        u8MsgType = pu8MsgBuffer[0];
 
        /* Check whether the received message type is 'N' */
        if ('N' != u8MsgType) {
                PRINT_ER("Received Message format incorrect.\n");
-               WILC_ERRORREPORT(s32Error, WILC_FAIL);
+               return -EFAULT;
        }
 
        /* Extract message ID */
@@ -791,21 +378,19 @@ s32 ParseNetworkInfo(u8 *pu8MsgBuffer, tstrNetworkInfo **ppstrNetworkInfo)
 
        /* parse the WID value of the WID "WID_NEWORK_INFO" */
        {
-               u8  *pu8msa = 0;
+               u8  *pu8msa = NULL;
                u16 u16RxLen = 0;
-               u8 *pu8TimElm = 0;
-               u8 *pu8IEs = 0;
+               u8 *pu8TimElm = NULL;
+               u8 *pu8IEs = NULL;
                u16 u16IEsLen = 0;
                u8 u8index = 0;
                u32 u32Tsf_Lo;
                u32 u32Tsf_Hi;
 
-               pstrNetworkInfo = kmalloc(sizeof(tstrNetworkInfo), GFP_KERNEL);
+               pstrNetworkInfo = kzalloc(sizeof(tstrNetworkInfo), GFP_KERNEL);
                if (!pstrNetworkInfo)
                        return -ENOMEM;
 
-               memset((void *)(pstrNetworkInfo), 0, sizeof(tstrNetworkInfo));
-
                pstrNetworkInfo->s8rssi = pu8WidVal[0];
 
                /* Assign a pointer to msa "Mac Header Start Address" */
@@ -817,11 +402,9 @@ s32 ParseNetworkInfo(u8 *pu8MsgBuffer, tstrNetworkInfo **ppstrNetworkInfo)
 
                /* Get the cap_info */
                pstrNetworkInfo->u16CapInfo = get_cap_info(pu8msa);
-               #ifdef WILC_P2P
                /* Get time-stamp [Low only 32 bit] */
                pstrNetworkInfo->u32Tsf = get_beacon_timestamp_lo(pu8msa);
                PRINT_D(CORECONFIG_DBG, "TSF :%x\n", pstrNetworkInfo->u32Tsf);
-               #endif
 
                /* Get full time-stamp [Low and High 64 bit] */
                u32Tsf_Lo = get_beacon_timestamp_lo(pu8msa);
@@ -830,36 +413,37 @@ s32 ParseNetworkInfo(u8 *pu8MsgBuffer, tstrNetworkInfo **ppstrNetworkInfo)
                pstrNetworkInfo->u64Tsf = u32Tsf_Lo | ((u64)u32Tsf_Hi << 32);
 
                /* Get SSID */
-               get_ssid(pu8msa, pstrNetworkInfo->au8ssid, &(pstrNetworkInfo->u8SsidLen));
+               get_ssid(pu8msa, pstrNetworkInfo->au8ssid, &pstrNetworkInfo->u8SsidLen);
 
                /* Get BSSID */
                get_BSSID(pu8msa, pstrNetworkInfo->au8bssid);
 
-               /* Get the current channel */
-               pstrNetworkInfo->u8channel = get_current_channel(pu8msa, (u16RxLen + FCS_LEN));
+               /*
+                * Extract current channel information from
+                * the beacon/probe response frame
+                */
+               pstrNetworkInfo->u8channel = get_current_channel_802_11n(pu8msa,
+                                                       u16RxLen + FCS_LEN);
 
                /* Get beacon period */
-               u8index = (MAC_HDR_LEN + TIME_STAMP_LEN);
+               u8index = MAC_HDR_LEN + TIME_STAMP_LEN;
 
                pstrNetworkInfo->u16BeaconPeriod = get_beacon_period(pu8msa + u8index);
 
                u8index += BEACON_INTERVAL_LEN + CAP_INFO_LEN;
 
                /* Get DTIM Period */
-               pu8TimElm = get_tim_elm(pu8msa, (u16RxLen + FCS_LEN), u8index);
-               if (pu8TimElm != 0)
+               pu8TimElm = get_tim_elm(pu8msa, u16RxLen + FCS_LEN, u8index);
+               if (pu8TimElm != NULL)
                        pstrNetworkInfo->u8DtimPeriod = pu8TimElm[3];
                pu8IEs = &pu8msa[MAC_HDR_LEN + TIME_STAMP_LEN + BEACON_INTERVAL_LEN + CAP_INFO_LEN];
                u16IEsLen = u16RxLen - (MAC_HDR_LEN + TIME_STAMP_LEN + BEACON_INTERVAL_LEN + CAP_INFO_LEN);
 
                if (u16IEsLen > 0) {
-                       pstrNetworkInfo->pu8IEs = kmalloc(u16IEsLen, GFP_KERNEL);
+                       pstrNetworkInfo->pu8IEs = kmemdup(pu8IEs, u16IEsLen,
+                                                         GFP_KERNEL);
                        if (!pstrNetworkInfo->pu8IEs)
                                return -ENOMEM;
-
-                       memset((void *)(pstrNetworkInfo->pu8IEs), 0, u16IEsLen);
-
-                       memcpy(pstrNetworkInfo->pu8IEs, pu8IEs, u16IEsLen);
                }
                pstrNetworkInfo->u16IEsLen = u16IEsLen;
 
@@ -867,8 +451,7 @@ s32 ParseNetworkInfo(u8 *pu8MsgBuffer, tstrNetworkInfo **ppstrNetworkInfo)
 
        *ppstrNetworkInfo = pstrNetworkInfo;
 
-ERRORHANDLER:
-       return s32Error;
+       return 0;
 }
 
 /**
@@ -883,21 +466,21 @@ ERRORHANDLER:
  */
 s32 DeallocateNetworkInfo(tstrNetworkInfo *pstrNetworkInfo)
 {
-       s32 s32Error = WILC_SUCCESS;
+       s32 s32Error = 0;
 
        if (pstrNetworkInfo != NULL) {
                if (pstrNetworkInfo->pu8IEs != NULL) {
                        kfree(pstrNetworkInfo->pu8IEs);
                        pstrNetworkInfo->pu8IEs = NULL;
                } else {
-                       s32Error = WILC_FAIL;
+                       s32Error = -EFAULT;
                }
 
                kfree(pstrNetworkInfo);
                pstrNetworkInfo = NULL;
 
        } else {
-               s32Error = WILC_FAIL;
+               s32Error = -EFAULT;
        }
 
        return s32Error;
@@ -917,18 +500,16 @@ s32 DeallocateNetworkInfo(tstrNetworkInfo *pstrNetworkInfo)
 s32 ParseAssocRespInfo(u8 *pu8Buffer, u32 u32BufferLen,
                               tstrConnectRespInfo **ppstrConnectRespInfo)
 {
-       s32 s32Error = WILC_SUCCESS;
+       s32 s32Error = 0;
        tstrConnectRespInfo *pstrConnectRespInfo = NULL;
        u16 u16AssocRespLen = 0;
-       u8 *pu8IEs = 0;
+       u8 *pu8IEs = NULL;
        u16 u16IEsLen = 0;
 
-       pstrConnectRespInfo = kmalloc(sizeof(tstrConnectRespInfo), GFP_KERNEL);
+       pstrConnectRespInfo = kzalloc(sizeof(tstrConnectRespInfo), GFP_KERNEL);
        if (!pstrConnectRespInfo)
                return -ENOMEM;
 
-       memset((void *)(pstrConnectRespInfo), 0, sizeof(tstrConnectRespInfo));
-
        /* u16AssocRespLen = pu8Buffer[0]; */
        u16AssocRespLen = (u16)u32BufferLen;
 
@@ -946,19 +527,15 @@ s32 ParseAssocRespInfo(u8 *pu8Buffer, u32 u32BufferLen,
                pu8IEs = &pu8Buffer[CAP_INFO_LEN + STATUS_CODE_LEN + AID_LEN];
                u16IEsLen = u16AssocRespLen - (CAP_INFO_LEN + STATUS_CODE_LEN + AID_LEN);
 
-               pstrConnectRespInfo->pu8RespIEs = kmalloc(u16IEsLen, GFP_KERNEL);
+               pstrConnectRespInfo->pu8RespIEs = kmemdup(pu8IEs, u16IEsLen, GFP_KERNEL);
                if (!pstrConnectRespInfo->pu8RespIEs)
                        return -ENOMEM;
 
-               memset((void *)(pstrConnectRespInfo->pu8RespIEs), 0, u16IEsLen);
-
-               memcpy(pstrConnectRespInfo->pu8RespIEs, pu8IEs, u16IEsLen);
                pstrConnectRespInfo->u16RespIEsLen = u16IEsLen;
        }
 
        *ppstrConnectRespInfo = pstrConnectRespInfo;
 
-
        return s32Error;
 }
 
@@ -974,993 +551,26 @@ s32 ParseAssocRespInfo(u8 *pu8Buffer, u32 u32BufferLen,
  */
 s32 DeallocateAssocRespInfo(tstrConnectRespInfo *pstrConnectRespInfo)
 {
-       s32 s32Error = WILC_SUCCESS;
+       s32 s32Error = 0;
 
        if (pstrConnectRespInfo != NULL) {
                if (pstrConnectRespInfo->pu8RespIEs != NULL) {
                        kfree(pstrConnectRespInfo->pu8RespIEs);
                        pstrConnectRespInfo->pu8RespIEs = NULL;
                } else {
-                       s32Error = WILC_FAIL;
+                       s32Error = -EFAULT;
                }
 
                kfree(pstrConnectRespInfo);
                pstrConnectRespInfo = NULL;
 
        } else {
-               s32Error = WILC_FAIL;
+               s32Error = -EFAULT;
        }
 
        return s32Error;
 }
 
-#ifndef CONNECT_DIRECT
-s32 ParseSurveyResults(u8 ppu8RcvdSiteSurveyResults[][MAX_SURVEY_RESULT_FRAG_SIZE],
-                              wid_site_survey_reslts_s **ppstrSurveyResults,
-                              u32 *pu32SurveyResultsCount)
-{
-       s32 s32Error = WILC_SUCCESS;
-       wid_site_survey_reslts_s *pstrSurveyResults = NULL;
-       u32 u32SurveyResultsCount = 0;
-       u32 u32SurveyBytesLength = 0;
-       u8 *pu8BufferPtr;
-       u32 u32RcvdSurveyResultsNum = 2;
-       u8 u8ReadSurveyResFragNum;
-       u32 i;
-       u32 j;
-
-       for (i = 0; i < u32RcvdSurveyResultsNum; i++) {
-               u32SurveyBytesLength = ppu8RcvdSiteSurveyResults[i][0];
-
-
-               for (j = 0; j < u32SurveyBytesLength; j += SURVEY_RESULT_LENGTH) {
-                       u32SurveyResultsCount++;
-               }
-       }
-
-       pstrSurveyResults = kmalloc_array(u32SurveyResultsCount,
-                               sizeof(wid_site_survey_reslts_s), GFP_KERNEL);
-       if (!pstrSurveyResults)
-               return -ENOMEM;
-
-       memset((void *)(pstrSurveyResults), 0, u32SurveyResultsCount * sizeof(wid_site_survey_reslts_s));
-
-       u32SurveyResultsCount = 0;
-
-       for (i = 0; i < u32RcvdSurveyResultsNum; i++) {
-               pu8BufferPtr = ppu8RcvdSiteSurveyResults[i];
-
-               u32SurveyBytesLength = pu8BufferPtr[0];
-
-               /* TODO: mostafa: pu8BufferPtr[1] contains the fragment num */
-               u8ReadSurveyResFragNum = pu8BufferPtr[1];
-
-               pu8BufferPtr += 2;
-
-               for (j = 0; j < u32SurveyBytesLength; j += SURVEY_RESULT_LENGTH) {
-                       memcpy(&pstrSurveyResults[u32SurveyResultsCount], pu8BufferPtr, SURVEY_RESULT_LENGTH);
-                       pu8BufferPtr += SURVEY_RESULT_LENGTH;
-                       u32SurveyResultsCount++;
-               }
-       }
-
-ERRORHANDLER:
-       *ppstrSurveyResults = pstrSurveyResults;
-       *pu32SurveyResultsCount = u32SurveyResultsCount;
-
-       return s32Error;
-}
-
-
-s32 DeallocateSurveyResults(wid_site_survey_reslts_s *pstrSurveyResults)
-{
-       s32 s32Error = WILC_SUCCESS;
-
-       if (pstrSurveyResults != NULL) {
-               kfree(pstrSurveyResults);
-       }
-
-       return s32Error;
-}
-#endif
-
-/*****************************************************************************/
-/*                                                                           */
-/*  Function Name : ProcessCharWid                                         */
-/*                                                                           */
-/*  Description   : This function processes a WID of type WID_CHAR and       */
-/*                  updates the cfg packet with the supplied value.          */
-/*                                                                           */
-/*  Inputs        : 1) Pointer to WID cfg structure                          */
-/*                  2) Value to set                                          */
-/*                                                                           */
-/*  Globals       :                                                          */
-/*                                                                           */
-/*  Processing    :                                                          */
-/*                                                                           */
-/*  Outputs       : None                                                     */
-/*                                                                           */
-/*  Returns       : None                                                     */
-/*                                                                           */
-/*  Issues        : None                                                     */
-/*                                                                           */
-/*  Revision History:                                                        */
-/*                                                                           */
-/*         DD MM YYYY   Author(s)       Changes (Describe the changes made)  */
-/*         08 01 2008   Ittiam          Draft                                */
-/*                                                                           */
-/*****************************************************************************/
-
-void ProcessCharWid(char *pcPacket, s32 *ps32PktLen,
-                   tstrWID *pstrWID, s8 *ps8WidVal)
-{
-       u8 *pu8val = (u8 *)ps8WidVal;
-       u8 u8val = 0;
-       s32 s32PktLen = *ps32PktLen;
-       if (pstrWID == NULL) {
-               PRINT_WRN(CORECONFIG_DBG, "Can't set CHAR val 0x%x ,NULL structure\n", u8val);
-               return;
-       }
-
-       /* WID */
-       pcPacket[s32PktLen++] = (u8)(pstrWID->u16WIDid & 0xFF);
-       pcPacket[s32PktLen++] = (u8)(pstrWID->u16WIDid >> 8) & 0xFF;
-       if (g_oper_mode == SET_CFG) {
-               u8val = *pu8val;
-
-               /* Length */
-               pcPacket[s32PktLen++] = sizeof(u8);
-
-
-               /* Value */
-               pcPacket[s32PktLen++] = u8val;
-       }
-       *ps32PktLen = s32PktLen;
-}
-
-/*****************************************************************************/
-/*                                                                           */
-/*  Function Name : ProcessShortWid                                        */
-/*                                                                           */
-/*  Description   : This function processes a WID of type WID_SHORT and      */
-/*                  updates the cfg packet with the supplied value.          */
-/*                                                                           */
-/*  Inputs        : 1) Pointer to WID cfg structure                          */
-/*                  2) Value to set                                          */
-/*                                                                           */
-/*  Globals       :                                                          */
-/*                                                                           */
-/*  Processing    :                                                          */
-/*                                                                           */
-/*  Outputs       : None                                                     */
-/*                                                                           */
-/*  Returns       : None                                                     */
-/*                                                                           */
-/*  Issues        : None                                                     */
-/*                                                                           */
-/*  Revision History:                                                        */
-/*                                                                           */
-/*         DD MM YYYY   Author(s)       Changes (Describe the changes made)  */
-/*         08 01 2008   Ittiam          Draft                                */
-/*                                                                           */
-/*****************************************************************************/
-
-void ProcessShortWid(char *pcPacket, s32 *ps32PktLen,
-                    tstrWID *pstrWID, s8 *ps8WidVal)
-{
-       u16 *pu16val = (u16 *)ps8WidVal;
-       u16 u16val = 0;
-       s32 s32PktLen = *ps32PktLen;
-       if (pstrWID == NULL) {
-               PRINT_WRN(CORECONFIG_DBG, "Can't set SHORT val 0x%x ,NULL structure\n", u16val);
-               return;
-       }
-
-       /* WID */
-       pcPacket[s32PktLen++] = (u8)(pstrWID->u16WIDid & 0xFF);
-       pcPacket[s32PktLen++] = (u8)((pstrWID->u16WIDid >> 8) & 0xFF);
-
-       if (g_oper_mode == SET_CFG) {
-               u16val = *pu16val;
-
-               /* Length */
-               pcPacket[s32PktLen++] = sizeof(u16);
-
-               /* Value */
-               pcPacket[s32PktLen++] = (u8)(u16val & 0xFF);
-               pcPacket[s32PktLen++] = (u8)((u16val >> 8) & 0xFF);
-       }
-       *ps32PktLen = s32PktLen;
-}
-
-/*****************************************************************************/
-/*                                                                           */
-/*  Function Name : ProcessIntWid                                          */
-/*                                                                           */
-/*  Description   : This function processes a WID of type WID_INT and        */
-/*                  updates the cfg packet with the supplied value.          */
-/*                                                                           */
-/*  Inputs        : 1) Pointer to WID cfg structure                          */
-/*                  2) Value to set                                          */
-/*                                                                           */
-/*  Globals       :                                                          */
-/*                                                                           */
-/*  Processing    :                                                          */
-/*                                                                           */
-/*  Outputs       : None                                                     */
-/*                                                                           */
-/*  Returns       : None                                                     */
-/*                                                                           */
-/*  Issues        : None                                                     */
-/*                                                                           */
-/*  Revision History:                                                        */
-/*                                                                           */
-/*         DD MM YYYY   Author(s)       Changes (Describe the changes made)  */
-/*         08 01 2008   Ittiam          Draft                                */
-/*                                                                           */
-/*****************************************************************************/
-
-void ProcessIntWid(char *pcPacket, s32 *ps32PktLen,
-                  tstrWID *pstrWID, s8 *ps8WidVal)
-{
-       u32 *pu32val = (u32 *)ps8WidVal;
-       u32 u32val = 0;
-       s32 s32PktLen = *ps32PktLen;
-       if (pstrWID == NULL) {
-               PRINT_WRN(CORECONFIG_DBG, "Can't set INT val 0x%x , NULL structure\n", u32val);
-               return;
-       }
-
-       /* WID */
-       pcPacket[s32PktLen++] = (u8)(pstrWID->u16WIDid & 0xFF);
-       pcPacket[s32PktLen++] = (u8)((pstrWID->u16WIDid >> 8) & 0xFF);
-
-       if (g_oper_mode == SET_CFG) {
-               u32val = *pu32val;
-
-               /* Length */
-               pcPacket[s32PktLen++] = sizeof(u32);
-
-               /* Value */
-               pcPacket[s32PktLen++] = (u8)(u32val & 0xFF);
-               pcPacket[s32PktLen++] = (u8)((u32val >> 8) & 0xFF);
-               pcPacket[s32PktLen++] = (u8)((u32val >> 16) & 0xFF);
-               pcPacket[s32PktLen++] = (u8)((u32val >> 24) & 0xFF);
-       }
-       *ps32PktLen = s32PktLen;
-}
-
-/*****************************************************************************/
-/*                                                                           */
-/*  Function Name : ProcessIPwid                                           */
-/*                                                                           */
-/*  Description   : This function processes a WID of type WID_IP and         */
-/*                  updates the cfg packet with the supplied value.          */
-/*                                                                           */
-/*  Inputs        : 1) Pointer to WID cfg structure                          */
-/*                  2) Value to set                                          */
-/*                                                                           */
-/*  Globals       :                                                          */
-/*                                                                           */
-/*                                                                           */
-/*  Processing    :                                                          */
-/*                                                                           */
-/*  Outputs       : None                                                     */
-/*                                                                           */
-/*  Returns       : None                                                     */
-/*                                                                           */
-/*  Issues        : None                                                     */
-/*                                                                           */
-/*  Revision History:                                                        */
-/*                                                                           */
-/*         DD MM YYYY   Author(s)       Changes (Describe the changes made)  */
-/*         08 01 2008   Ittiam          Draft                                */
-/*                                                                           */
-/*****************************************************************************/
-
-void ProcessIPwid(char *pcPacket, s32 *ps32PktLen,
-                 tstrWID *pstrWID, u8 *pu8ip)
-{
-       u32 u32val = 0;
-       s32 s32PktLen = *ps32PktLen;
-
-       if (pstrWID == NULL) {
-               PRINT_WRN(CORECONFIG_DBG, "Can't set IP Addr , NULL structure\n");
-               return;
-       }
-
-       /* WID */
-       pcPacket[s32PktLen++] = (u8)(pstrWID->u16WIDid & 0xFF);
-       pcPacket[s32PktLen++] = (u8)((pstrWID->u16WIDid >> 8) & 0xFF);
-
-       if (g_oper_mode == SET_CFG) {
-               /* Length */
-               pcPacket[s32PktLen++] = sizeof(u32);
-
-               /* Convert the IP Address String to Integer */
-               conv_ip_to_int(pu8ip, &u32val);
-
-               /* Value */
-               pcPacket[s32PktLen++] = (u8)(u32val & 0xFF);
-               pcPacket[s32PktLen++] = (u8)((u32val >> 8) & 0xFF);
-               pcPacket[s32PktLen++] = (u8)((u32val >> 16) & 0xFF);
-               pcPacket[s32PktLen++] = (u8)((u32val >> 24) & 0xFF);
-       }
-       *ps32PktLen = s32PktLen;
-}
-
-/*****************************************************************************/
-/*                                                                           */
-/*  Function Name : ProcessStrWid                                          */
-/*                                                                           */
-/*  Description   : This function processes a WID of type WID_STR and        */
-/*                  updates the cfg packet with the supplied value.          */
-/*                                                                           */
-/*  Inputs        : 1) Pointer to WID cfg structure                          */
-/*                  2) Value to set                                          */
-/*                                                                           */
-/*  Globals       :                                                          */
-/*                                                                           */
-/*  Processing    :                                                          */
-/*                                                                           */
-/*  Outputs       : None                                                     */
-/*                                                                           */
-/*  Returns       : None                                                     */
-/*                                                                           */
-/*  Issues        : None                                                     */
-/*                                                                           */
-/*  Revision History:                                                        */
-/*                                                                           */
-/*         DD MM YYYY   Author(s)       Changes (Describe the changes made)  */
-/*         08 01 2008   Ittiam          Draft                                */
-/*                                                                           */
-/*****************************************************************************/
-
-void ProcessStrWid(char *pcPacket, s32 *ps32PktLen,
-                  tstrWID *pstrWID, u8 *pu8val, s32 s32ValueSize)
-{
-       u16 u16MsgLen = 0;
-       u16 idx    = 0;
-       s32 s32PktLen = *ps32PktLen;
-       if (pstrWID == NULL) {
-               PRINT_WRN(CORECONFIG_DBG, "Can't set STR val, NULL structure\n");
-               return;
-       }
-
-       /* WID */
-       pcPacket[s32PktLen++] = (u8)(pstrWID->u16WIDid & 0xFF);
-       pcPacket[s32PktLen++] = (u8)((pstrWID->u16WIDid >> 8) & 0xFF);
-
-       if (g_oper_mode == SET_CFG) {
-               /* Message Length */
-               u16MsgLen = (u16)s32ValueSize;
-
-               /* Length */
-               pcPacket[s32PktLen++] = (u8)u16MsgLen;
-
-               /* Value */
-               for (idx = 0; idx < u16MsgLen; idx++)
-                       pcPacket[s32PktLen++] = pu8val[idx];
-       }
-       *ps32PktLen = s32PktLen;
-}
-
-/*****************************************************************************/
-/*                                                                           */
-/*  Function Name : ProcessAdrWid                                          */
-/*                                                                           */
-/*  Description   : This function processes a WID of type WID_ADR and        */
-/*                  updates the cfg packet with the supplied value.          */
-/*                                                                           */
-/*  Inputs        : 1) Pointer to WID cfg structure                          */
-/*                  2) Value to set                                          */
-/*                                                                           */
-/*  Globals       :                                                          */
-/*                                                                           */
-/*  Processing    :                                                          */
-/*                                                                           */
-/*  Outputs       : None                                                     */
-/*                                                                           */
-/*  Returns       : None                                                     */
-/*                                                                           */
-/*  Issues        : None                                                     */
-/*                                                                           */
-/*  Revision History:                                                        */
-/*                                                                           */
-/*         DD MM YYYY   Author(s)       Changes (Describe the changes made)  */
-/*         08 01 2008   Ittiam          Draft                                */
-/*                                                                           */
-/*****************************************************************************/
-
-void ProcessAdrWid(char *pcPacket, s32 *ps32PktLen,
-                  tstrWID *pstrWID, u8 *pu8val)
-{
-       u16 u16MsgLen = 0;
-       s32 s32PktLen = *ps32PktLen;
-
-       if (pstrWID == NULL) {
-               PRINT_WRN(CORECONFIG_DBG, "Can't set Addr WID, NULL structure\n");
-               return;
-       }
-
-       /* WID */
-       pcPacket[s32PktLen++] = (u8)(pstrWID->u16WIDid & 0xFF);
-       pcPacket[s32PktLen++] = (u8)((pstrWID->u16WIDid >> 8) & 0xFF);
-
-       if (g_oper_mode == SET_CFG) {
-               /* Message Length */
-               u16MsgLen = MAC_ADDR_LEN;
-
-               /* Length */
-               pcPacket[s32PktLen++] = (u8)u16MsgLen;
-
-               /* Value */
-               extract_mac_addr(pu8val, pcPacket + s32PktLen);
-               s32PktLen += u16MsgLen;
-       }
-       *ps32PktLen = s32PktLen;
-}
-
-/*****************************************************************************/
-/*                                                                           */
-/*  Function Name : ProcessBinWid                                          */
-/*                                                                           */
-/*  Description   : This function processes a WID of type WID_BIN_DATA and        */
-/*                  updates the cfg packet with the supplied value.          */
-/*                                                                           */
-/*  Inputs        : 1) Pointer to WID cfg structure                          */
-/*                  2) Name of file containing the binary data in text mode  */
-/*                                                                           */
-/*  Globals       :                                                          */
-/*                                                                           */
-/*  Processing    : The binary data is expected to be supplied through a     */
-/*                  file in text mode. This file is expected to be in the    */
-/*                  finject format. It is parsed, converted to binary format */
-/*                  and copied into g_cfg_pkt for further processing. This   */
-/*                  is obviously a round-about way of processing involving   */
-/*                  multiple (re)conversions between bin & ascii formats.    */
-/*                  But it is done nevertheless to retain uniformity and for */
-/*                  ease of debugging.                                       */
-/*                                                                           */
-/*  Outputs       : None                                                     */
-/*                                                                           */
-/*  Returns       : None                                                     */
-/*                                                                           */
-
-/*  Issues        : None                                                     */
-/*                                                                           */
-/*  Revision History:                                                        */
-/*                                                                           */
-/*         DD MM YYYY   Author(s)       Changes (Describe the changes made)  */
-/*         08 01 2008   Ittiam          Draft                                */
-/*                                                                           */
-/*****************************************************************************/
-
-void ProcessBinWid(char *pcPacket, s32 *ps32PktLen,
-                  tstrWID *pstrWID, u8 *pu8val, s32 s32ValueSize)
-{
-       u16 u16MsgLen = 0;
-       u16 idx    = 0;
-       s32 s32PktLen = *ps32PktLen;
-       u8 u8checksum = 0;
-
-       if (pstrWID == NULL) {
-               PRINT_WRN(CORECONFIG_DBG, "Can't set BIN val, NULL structure\n");
-               return;
-       }
-
-       /* WID */
-       pcPacket[s32PktLen++] = (u8)(pstrWID->u16WIDid & 0xFF);
-       pcPacket[s32PktLen++] = (u8)((pstrWID->u16WIDid >> 8) & 0xFF);
-
-       if (g_oper_mode == SET_CFG) {
-               /* Message Length */
-               u16MsgLen = (u16)s32ValueSize;
-
-               /* Length */
-               /* pcPacket[s32PktLen++] = (u8)u16MsgLen; */
-               pcPacket[s32PktLen++] = (u8)(u16MsgLen  & 0xFF);
-               pcPacket[s32PktLen++] = (u8)((u16MsgLen >> 8) & 0xFF);
-
-               /* Value */
-               for (idx = 0; idx < u16MsgLen; idx++)
-                       pcPacket[s32PktLen++] = pu8val[idx];
-
-               /* checksum */
-               for (idx = 0; idx < u16MsgLen; idx++)
-                       u8checksum += pcPacket[MSG_HEADER_LEN + idx + 4];
-
-               pcPacket[s32PktLen++] = u8checksum;
-       }
-       *ps32PktLen = s32PktLen;
-}
-
-
-/*****************************************************************************/
-/*                                                                           */
-/*  Function Name : further_process_response                                 */
-/*                                                                           */
-/*  Description   : This function parses the response frame got from the     */
-/*                  device.                                                  */
-/*                                                                           */
-/*  Inputs        : 1) The received response frame                           */
-/*                  2) WID                                                   */
-/*                  3) WID Length                                            */
-/*                  4) Output file handle                                    */
-/*                  5) Process Wid Number(i.e wid from --widn switch)        */
-/*                  6) Index the array in the Global Wid Structure.          */
-/*                                                                           */
-/*  Globals       : g_wid_num, gastrWIDs                                     */
-/*                                                                           */
-/*  Processing    : This function parses the response of the device depending*/
-/*                  WID type and writes it to the output file in Hex or      */
-/*                  decimal notation depending on the --getx or --get switch.*/
-/*                                                                           */
-/*  Outputs       : None                                                     */
-/*                                                                           */
-/*  Returns       : 0 on Success & -2 on Failure                             */
-/*                                                                           */
-/*  Issues        : None                                                     */
-/*                                                                           */
-/*  Revision History:                                                        */
-/*                                                                           */
-/*         DD MM YYYY   Author(s)       Changes (Describe the changes made)  */
-/*         08 01 2009   Ittiam          Draft                                */
-/*                                                                           */
-/*****************************************************************************/
-
-s32 further_process_response(u8 *resp,
-                                    u16 u16WIDid,
-                                    u16 cfg_len,
-                                    bool process_wid_num,
-                                    u32 cnt,
-                                    tstrWID *pstrWIDresult)
-{
-       u32 retval = 0;
-       u32 idx = 0;
-       u8 cfg_chr  = 0;
-       u16 cfg_sht  = 0;
-       u32 cfg_int  = 0;
-       u8 cfg_str[256] = {0};
-       tenuWIDtype enuWIDtype = WID_UNDEF;
-
-       if (process_wid_num)
-               enuWIDtype = get_wid_type(g_wid_num);
-       else
-               enuWIDtype = gastrWIDs[cnt].enuWIDtype;
-
-
-       switch (enuWIDtype) {
-       case WID_CHAR:
-               cfg_chr = resp[idx];
-               /*Set local copy of WID*/
-               *(pstrWIDresult->ps8WidVal) = cfg_chr;
-               break;
-
-       case WID_SHORT:
-       {
-               u16 *pu16val = (u16 *)(pstrWIDresult->ps8WidVal);
-               cfg_sht = MAKE_WORD16(resp[idx], resp[idx + 1]);
-               /*Set local copy of WID*/
-               /* pstrWIDresult->ps8WidVal = (s8*)(s32)cfg_sht; */
-               *pu16val = cfg_sht;
-               break;
-       }
-
-       case WID_INT:
-       {
-               u32 *pu32val = (u32 *)(pstrWIDresult->ps8WidVal);
-               cfg_int = MAKE_WORD32(
-                               MAKE_WORD16(resp[idx], resp[idx + 1]),
-                               MAKE_WORD16(resp[idx + 2], resp[idx + 3])
-                               );
-               /*Set local copy of WID*/
-               /* pstrWIDresult->ps8WidVal = (s8*)cfg_int; */
-               *pu32val = cfg_int;
-               break;
-       }
-
-       case WID_STR:
-               memcpy(cfg_str, resp + idx, cfg_len);
-               /* cfg_str[cfg_len] = '\0'; //mostafa: no need currently for NULL termination */
-               if (pstrWIDresult->s32ValueSize >= cfg_len) {
-                       memcpy(pstrWIDresult->ps8WidVal, cfg_str, cfg_len); /* mostafa: no need currently for the extra NULL byte */
-                       pstrWIDresult->s32ValueSize = cfg_len;
-               } else {
-                       PRINT_ER("allocated WID buffer length is smaller than the received WID Length\n");
-                       retval = -2;
-               }
-
-               break;
-
-       case WID_ADR:
-               create_mac_addr(cfg_str, resp + idx);
-
-               strncpy(pstrWIDresult->ps8WidVal, cfg_str, strlen(cfg_str));
-               pstrWIDresult->ps8WidVal[strlen(cfg_str)] = '\0';
-               break;
-
-       case WID_IP:
-               cfg_int = MAKE_WORD32(
-                               MAKE_WORD16(resp[idx], resp[idx + 1]),
-                               MAKE_WORD16(resp[idx + 2], resp[idx + 3])
-                               );
-               conv_int_to_ip(cfg_str, cfg_int);
-               break;
-
-       case WID_BIN_DATA:
-               if (pstrWIDresult->s32ValueSize >= cfg_len) {
-                       memcpy(pstrWIDresult->ps8WidVal, resp + idx, cfg_len);
-                       pstrWIDresult->s32ValueSize = cfg_len;
-               } else {
-                       PRINT_ER("Allocated WID buffer length is smaller than the received WID Length Err(%d)\n", retval);
-                       retval = -2;
-               }
-               break;
-
-       default:
-               PRINT_ER("ERROR: Check config database: Error(%d)\n", retval);
-               retval = -2;
-               break;
-       }
-
-       return retval;
-}
-
-/*****************************************************************************/
-/*                                                                           */
-/*  Function Name : ParseResponse                                           */
-/*                                                                           */
-/*  Description   : This function parses the command-line options and        */
-/*                  creates the config packets which can be sent to the WLAN */
-/*                  station.                                                 */
-/*                                                                           */
-/*  Inputs        : 1) The received response frame                           */
-/*                                                                           */
-/*  Globals       : g_opt_list, gastrWIDs                                       */
-/*                                                                           */
-/*  Processing    : This function parses the options and creates different   */
-/*                  types of packets depending upon the WID-type             */
-/*                  corresponding to the option.                             */
-/*                                                                           */
-/*  Outputs       : None                                                     */
-/*                                                                           */
-/*  Returns       : 0 on Success & -1 on Failure                             */
-/*                                                                           */
-/*  Issues        : None                                                     */
-/*                                                                           */
-/*  Revision History:                                                        */
-/*                                                                           */
-/*         DD MM YYYY   Author(s)       Changes (Describe the changes made)  */
-/*         08 01 2008   Ittiam          Draft                                */
-/*                                                                           */
-/*****************************************************************************/
-
-s32 ParseResponse(u8 *resp, tstrWID *pstrWIDcfgResult)
-{
-       u16 u16RespLen = 0;
-       u16 u16WIDid  = 0;
-       u16 cfg_len  = 0;
-       tenuWIDtype enuWIDtype = WID_UNDEF;
-       bool num_wid_processed = false;
-       u32 cnt = 0;
-       u32 idx = 0;
-       u32 ResCnt = 0;
-       /* Check whether the received frame is a valid response */
-       if (RESP_MSG_TYPE != resp[0]) {
-               PRINT_INFO(CORECONFIG_DBG, "Received Message format incorrect.\n");
-               return -1;
-       }
-
-       /* Extract Response Length */
-       u16RespLen = MAKE_WORD16(resp[2], resp[3]);
-       Res_Len = u16RespLen;
-
-       for (idx = MSG_HEADER_LEN; idx < u16RespLen; ) {
-               u16WIDid = MAKE_WORD16(resp[idx], resp[idx + 1]);
-               cfg_len = resp[idx + 2];
-               /* Incase of Bin Type Wid, the length is given by two byte field      */
-               enuWIDtype = get_wid_type(u16WIDid);
-               if (WID_BIN_DATA == enuWIDtype) {
-                       cfg_len |= ((u16)resp[idx + 3] << 8) & 0xFF00;
-                       idx++;
-               }
-               idx += 3;
-               if ((u16WIDid == g_wid_num) && (!num_wid_processed)) {
-                       num_wid_processed = true;
-
-                       if (-2 == further_process_response(&resp[idx], u16WIDid, cfg_len, true, 0, &pstrWIDcfgResult[ResCnt])) {
-                               return -2;
-                       }
-                       ResCnt++;
-               } else {
-                       for (cnt = 0; cnt < g_num_total_switches; cnt++) {
-                               if (gastrWIDs[cnt].u16WIDid == u16WIDid) {
-                                       if (-2 == further_process_response(&resp[idx], u16WIDid, cfg_len, false, cnt,
-                                                                          &pstrWIDcfgResult[ResCnt])) {
-                                               return -2;
-                                       }
-                                       ResCnt++;
-                               }
-                       }
-               }
-               idx += cfg_len;
-               /* In case if BIN type Wid, The last byte of the Cfg packet is the    */
-               /* Checksum. The WID Length field does not accounts for the checksum. */
-               /* The Checksum is discarded.                                         */
-               if (WID_BIN_DATA == enuWIDtype) {
-                       idx++;
-               }
-       }
-
-       return 0;
-}
-
-/**
- *  @brief              parses the write response [just detects its status: success or failure]
- *  @details
- *  @param[in]  pu8RespBuffer The Response to be parsed
- *  @return     Error code indicating Write Operation status:
- *                            WRITE_RESP_SUCCESS (1) => Write Success.
- *                            WILC_FAIL (-100)               => Write Failure.
- *  @note
- *  @author            Ittiam
- *  @date              11 Aug 2009
- *  @version   1.0
- */
-
-s32 ParseWriteResponse(u8 *pu8RespBuffer)
-{
-       s32 s32Error = WILC_FAIL;
-       u16 u16WIDtype = (u16)WID_NIL;
-
-       /* Check whether the received frame is a valid response */
-       if (RESP_MSG_TYPE != pu8RespBuffer[0]) {
-               PRINT_ER("Received Message format incorrect.\n");
-               return WILC_FAIL;
-       }
-
-       u16WIDtype = MAKE_WORD16(pu8RespBuffer[4], pu8RespBuffer[5]);
-
-       /* Check for WID_STATUS ID and then check the length and status value */
-       if ((u16WIDtype == WID_STATUS) &&
-           (pu8RespBuffer[6] == 1) &&
-           (pu8RespBuffer[7] == WRITE_RESP_SUCCESS)) {
-               s32Error = WRITE_RESP_SUCCESS;
-               return s32Error;
-       }
-
-       /* If the length or status are not as expected return failure    */
-       s32Error = WILC_FAIL;
-       return s32Error;
-
-}
-
-/**
- *  @brief                      creates the header of the Configuration Packet
- *  @details
- *  @param[in,out] pcpacket The Configuration Packet
- *  @param[in,out] ps32PacketLength Length of the Configuration Packet
- *  @return             Error code indicating success/failure
- *  @note
- *  @author            aismail
- *  @date              18 Feb 2012
- *  @version           1.0
- */
-
-s32 CreatePacketHeader(char *pcpacket, s32 *ps32PacketLength)
-{
-       s32 s32Error = WILC_SUCCESS;
-       u16 u16MsgLen = (u16)(*ps32PacketLength);
-       u16 u16MsgInd = 0;
-
-       /* The format of the message is:                                         */
-       /* +-------------------------------------------------------------------+ */
-       /* | Message Type | Message ID |  Message Length |Message body         | */
-       /* +-------------------------------------------------------------------+ */
-       /* |     1 Byte   |   1 Byte   |     2 Bytes     | Message Length - 4  | */
-       /* +-------------------------------------------------------------------+ */
-
-       /* The format of a message body of a message type 'W' is:                */
-       /* +-------------------------------------------------------------------+ */
-       /* | WID0      | WID0 Length | WID0 Value  | ......................... | */
-       /* +-------------------------------------------------------------------+ */
-       /* | 2 Bytes   | 1 Byte      | WID0 Length | ......................... | */
-       /* +-------------------------------------------------------------------+ */
-
-
-
-       /* Message Type */
-       if (g_oper_mode == SET_CFG)
-               pcpacket[u16MsgInd++] = WRITE_MSG_TYPE;
-       else
-               pcpacket[u16MsgInd++] = QUERY_MSG_TYPE;
-
-       /* Sequence Number */
-       pcpacket[u16MsgInd++] = g_seqno++;
-
-       /* Message Length */
-       pcpacket[u16MsgInd++] = (u8)(u16MsgLen & 0xFF);
-       pcpacket[u16MsgInd++] = (u8)((u16MsgLen >> 8) & 0xFF);
-
-       *ps32PacketLength = u16MsgLen;
-
-       return s32Error;
-}
-
-/**
- *  @brief              creates Configuration packet based on the Input WIDs
- *  @details
- *  @param[in]  pstrWIDs WIDs to be sent in the configuration packet
- *  @param[in]  u32WIDsCount number of WIDs to be sent in the configuration packet
- *  @param[out]         ps8packet The created Configuration Packet
- *  @param[out]         ps32PacketLength Length of the created Configuration Packet
- *  @return     Error code indicating success/failure
- *  @note
- *  @author
- *  @date              1 Mar 2012
- *  @version   1.0
- */
-
-s32 CreateConfigPacket(s8 *ps8packet, s32 *ps32PacketLength,
-                              tstrWID *pstrWIDs, u32 u32WIDsCount)
-{
-       s32 s32Error = WILC_SUCCESS;
-       u32 u32idx = 0;
-       *ps32PacketLength = MSG_HEADER_LEN;
-       for (u32idx = 0; u32idx < u32WIDsCount; u32idx++) {
-               switch (pstrWIDs[u32idx].enuWIDtype) {
-               case WID_CHAR:
-                       ProcessCharWid(ps8packet, ps32PacketLength, &pstrWIDs[u32idx],
-                                      pstrWIDs[u32idx].ps8WidVal);
-                       break;
-
-               case WID_SHORT:
-                       ProcessShortWid(ps8packet, ps32PacketLength, &pstrWIDs[u32idx],
-                                       pstrWIDs[u32idx].ps8WidVal);
-                       break;
-
-               case WID_INT:
-                       ProcessIntWid(ps8packet, ps32PacketLength, &pstrWIDs[u32idx],
-                                     pstrWIDs[u32idx].ps8WidVal);
-                       break;
-
-               case WID_STR:
-                       ProcessStrWid(ps8packet, ps32PacketLength, &pstrWIDs[u32idx],
-                                     pstrWIDs[u32idx].ps8WidVal, pstrWIDs[u32idx].s32ValueSize);
-                       break;
-
-               case WID_IP:
-                       ProcessIPwid(ps8packet, ps32PacketLength, &pstrWIDs[u32idx],
-                                    pstrWIDs[u32idx].ps8WidVal);
-                       break;
-
-               case WID_BIN_DATA:
-                       ProcessBinWid(ps8packet, ps32PacketLength, &pstrWIDs[u32idx],
-                                     pstrWIDs[u32idx].ps8WidVal, pstrWIDs[u32idx].s32ValueSize);
-                       break;
-
-               default:
-                       PRINT_ER("ERROR: Check Config database\n");
-               }
-       }
-
-       CreatePacketHeader(ps8packet, ps32PacketLength);
-
-       return s32Error;
-}
-
-s32 ConfigWaitResponse(char *pcRespBuffer, s32 s32MaxRespBuffLen, s32 *ps32BytesRead,
-                              bool bRespRequired)
-{
-       s32 s32Error = WILC_SUCCESS;
-       /*bug 3878*/
-       /*removed to caller function*/
-       /*gstrConfigPktInfo.pcRespBuffer = pcRespBuffer;
-        * gstrConfigPktInfo.s32MaxRespBuffLen = s32MaxRespBuffLen;
-        * gstrConfigPktInfo.bRespRequired = bRespRequired;*/
-
-
-       if (gstrConfigPktInfo.bRespRequired) {
-               down(&SemHandlePktResp);
-
-               *ps32BytesRead = gstrConfigPktInfo.s32BytesRead;
-       }
-
-       memset((void *)(&gstrConfigPktInfo), 0, sizeof(tstrConfigPktInfo));
-
-       return s32Error;
-}
-
-s32 ConfigProvideResponse(char *pcRespBuffer, s32 s32RespLen)
-{
-       s32 s32Error = WILC_SUCCESS;
-
-       if (gstrConfigPktInfo.bRespRequired) {
-               if (s32RespLen <= gstrConfigPktInfo.s32MaxRespBuffLen) {
-                       memcpy(gstrConfigPktInfo.pcRespBuffer, pcRespBuffer, s32RespLen);
-                       gstrConfigPktInfo.s32BytesRead = s32RespLen;
-               } else {
-                       memcpy(gstrConfigPktInfo.pcRespBuffer, pcRespBuffer, gstrConfigPktInfo.s32MaxRespBuffLen);
-                       gstrConfigPktInfo.s32BytesRead = gstrConfigPktInfo.s32MaxRespBuffLen;
-                       PRINT_ER("BusProvideResponse() Response greater than the prepared Buffer Size\n");
-               }
-
-               up(&SemHandlePktResp);
-       }
-
-       return s32Error;
-}
-
-/**
- *  @brief              writes the received packet pu8RxPacket in the global Rx FIFO buffer
- *  @details
- *  @param[in]  pu8RxPacket The received packet
- *  @param[in]  s32RxPacketLen Length of the received packet
- *  @return     Error code indicating success/failure
- *  @note
- *
- *  @author    mabubakr
- *  @date              1 Mar 2012
- *  @version   1.0
- */
-
-s32 ConfigPktReceived(u8 *pu8RxPacket, s32 s32RxPacketLen)
-{
-       s32 s32Error = WILC_SUCCESS;
-       u8 u8MsgType = 0;
-
-       u8MsgType = pu8RxPacket[0];
-
-       switch (u8MsgType) {
-       case 'R':
-               ConfigProvideResponse(pu8RxPacket, s32RxPacketLen);
-
-               break;
-
-       case 'N':
-               PRINT_INFO(CORECONFIG_DBG, "NetworkInfo packet received\n");
-               NetworkInfoReceived(pu8RxPacket, s32RxPacketLen);
-               break;
-
-       case 'I':
-               GnrlAsyncInfoReceived(pu8RxPacket, s32RxPacketLen);
-               break;
-
-       case 'S':
-               host_int_ScanCompleteReceived(pu8RxPacket, s32RxPacketLen);
-               break;
-
-       default:
-               PRINT_ER("ConfigPktReceived(): invalid received msg type at the Core Configurator\n");
-               break;
-       }
-
-       return s32Error;
-}
-
-/**
- *  @brief              Deinitializes the Core Configurator
- *  @details
- *  @return     Error code indicating success/failure
- *  @note
- *  @author    mabubakr
- *  @date              1 Mar 2012
- *  @version   1.0
- */
-
-s32 CoreConfiguratorDeInit(void)
-{
-       s32 s32Error = WILC_SUCCESS;
-
-       PRINT_D(CORECONFIG_DBG, "CoreConfiguratorDeInit()\n");
-
-
-       return s32Error;
-}
-
-/*Using the global handle of the driver*/
-extern wilc_wlan_oup_t *gpstrWlanOps;
 /**
  *  @brief              sends certain Configuration Packet based on the input WIDs pstrWIDs
  *  using driver config layer
@@ -1976,52 +586,40 @@ extern wilc_wlan_oup_t *gpstrWlanOps;
  *  @date              1 Mar 2012
  *  @version   1.0
  */
-s32 SendConfigPkt(u8 u8Mode, tstrWID *pstrWIDs,
-                         u32 u32WIDsCount, bool bRespRequired, u32 drvHandler)
+s32 send_config_pkt(u8 mode, struct wid *wids, u32 count, u32 drv)
 {
        s32 counter = 0, ret = 0;
-       if (gpstrWlanOps == NULL) {
-               PRINT_D(CORECONFIG_DBG, "Net Dev is still not initialized\n");
-               return 1;
-       } else {
-               PRINT_D(CORECONFIG_DBG, "Net Dev is initialized\n");
-       }
-       if (gpstrWlanOps->wlan_cfg_set == NULL ||
-           gpstrWlanOps->wlan_cfg_get == NULL) {
-               PRINT_D(CORECONFIG_DBG, "Set and Get is still not initialized\n");
-               return 1;
-       } else {
-               PRINT_D(CORECONFIG_DBG, "SET is initialized\n");
-       }
-       if (u8Mode == GET_CFG) {
-               for (counter = 0; counter < u32WIDsCount; counter++) {
+
+       if (mode == GET_CFG) {
+               for (counter = 0; counter < count; counter++) {
                        PRINT_INFO(CORECONFIG_DBG, "Sending CFG packet [%d][%d]\n", !counter,
-                                  (counter == u32WIDsCount - 1));
-                       if (!gpstrWlanOps->wlan_cfg_get(!counter,
-                                                       pstrWIDs[counter].u16WIDid,
-                                                       (counter == u32WIDsCount - 1), drvHandler)) {
+                                  (counter == count - 1));
+                       if (!wilc_wlan_cfg_get(!counter,
+                                              wids[counter].id,
+                                              (counter == count - 1),
+                                              drv)) {
                                ret = -1;
                                printk("[Sendconfigpkt]Get Timed out\n");
                                break;
                        }
                }
-               /**
-                *      get the value
-                **/
                counter = 0;
-               for (counter = 0; counter < u32WIDsCount; counter++) {
-                       pstrWIDs[counter].s32ValueSize = gpstrWlanOps->wlan_cfg_get_value(
-                                       pstrWIDs[counter].u16WIDid,
-                                       pstrWIDs[counter].ps8WidVal, pstrWIDs[counter].s32ValueSize);
+               for (counter = 0; counter < count; counter++) {
+                       wids[counter].size = wilc_wlan_cfg_get_val(
+                                       wids[counter].id,
+                                       wids[counter].val,
+                                       wids[counter].size);
 
                }
-       } else if (u8Mode == SET_CFG) {
-               for (counter = 0; counter < u32WIDsCount; counter++) {
-                       PRINT_D(CORECONFIG_DBG, "Sending config SET PACKET WID:%x\n", pstrWIDs[counter].u16WIDid);
-                       if (!gpstrWlanOps->wlan_cfg_set(!counter,
-                                                       pstrWIDs[counter].u16WIDid, pstrWIDs[counter].ps8WidVal,
-                                                       pstrWIDs[counter].s32ValueSize,
-                                                       (counter == u32WIDsCount - 1), drvHandler)) {
+       } else if (mode == SET_CFG) {
+               for (counter = 0; counter < count; counter++) {
+                       PRINT_D(CORECONFIG_DBG, "Sending config SET PACKET WID:%x\n", wids[counter].id);
+                       if (!wilc_wlan_cfg_set(!counter,
+                                              wids[counter].id,
+                                              wids[counter].val,
+                                              wids[counter].size,
+                                              (counter == count - 1),
+                                              drv)) {
                                ret = -1;
                                printk("[Sendconfigpkt]Set Timed out\n");
                                break;