/*! * @file host_interface.h * @brief File containg host interface APIs * @author zsalah * @sa host_interface.c * @date 8 March 2012 * @version 1.0 */ #ifndef HOST_INT_H #define HOST_INT_H #include "coreconfigurator.h" #define IP_ALEN 4 #define IDLE_MODE 0x00 #define AP_MODE 0x01 #define STATION_MODE 0x02 #define GO_MODE 0x03 #define CLIENT_MODE 0x04 #define MAX_NUM_STA 9 #define ACTIVE_SCAN_TIME 10 #define PASSIVE_SCAN_TIME 1200 #define MIN_SCAN_TIME 10 #define MAX_SCAN_TIME 1200 #define DEFAULT_SCAN 0 #define USER_SCAN BIT(0) #define OBSS_PERIODIC_SCAN BIT(1) #define OBSS_ONETIME_SCAN BIT(2) #define GTK_RX_KEY_BUFF_LEN 24 #define ADDKEY 0x1 #define REMOVEKEY 0x2 #define DEFAULTKEY 0x4 #define ADDKEY_AP 0x8 #define MAX_NUM_SCANNED_NETWORKS 100 #define MAX_NUM_SCANNED_NETWORKS_SHADOW 130 #define MAX_NUM_PROBED_SSID 10 #define CHANNEL_SCAN_TIME 250 #define TX_MIC_KEY_LEN 8 #define RX_MIC_KEY_LEN 8 #define PTK_KEY_LEN 16 #define TX_MIC_KEY_MSG_LEN 26 #define RX_MIC_KEY_MSG_LEN 48 #define PTK_KEY_MSG_LEN 39 #define PMKSA_KEY_LEN 22 #define ETH_ALEN 6 #define PMKID_LEN 16 #define WILC_MAX_NUM_PMKIDS 16 #define WILC_SUPP_MCS_SET_SIZE 16 #define WILC_ADD_STA_LENGTH 40 #define SCAN_EVENT_DONE_ABORTED #define NUM_CONCURRENT_IFC 2 struct rf_info { u8 u8LinkSpeed; s8 s8RSSI; u32 u32TxCount; u32 u32RxCount; u32 u32TxFailureCount; }; enum host_if_state { HOST_IF_IDLE = 0, HOST_IF_SCANNING = 1, HOST_IF_CONNECTING = 2, HOST_IF_WAITING_CONN_RESP = 3, HOST_IF_CONNECTED = 4, HOST_IF_P2P_LISTEN = 5, HOST_IF_FORCE_32BIT = 0xFFFFFFFF }; struct host_if_pmkid { u8 bssid[ETH_ALEN]; u8 pmkid[PMKID_LEN]; }; struct host_if_pmkid_attr { u8 numpmkid; struct host_if_pmkid pmkidlist[WILC_MAX_NUM_PMKIDS]; }; enum CURRENT_TXRATE { AUTORATE = 0, MBPS_1 = 1, MBPS_2 = 2, MBPS_5_5 = 5, MBPS_11 = 11, MBPS_6 = 6, MBPS_9 = 9, MBPS_12 = 12, MBPS_18 = 18, MBPS_24 = 24, MBPS_36 = 36, MBPS_48 = 48, MBPS_54 = 54 }; struct cfg_param_val { u32 flag; u8 ht_enable; u8 bss_type; u8 auth_type; u16 auth_timeout; u8 power_mgmt_mode; u16 short_retry_limit; u16 long_retry_limit; u16 frag_threshold; u16 rts_threshold; u16 preamble_type; u8 short_slot_allowed; u8 txop_prot_disabled; u16 beacon_interval; u16 dtim_period; enum SITESURVEY site_survey_enabled; u16 site_survey_scan_time; u8 scan_source; u16 active_scan_time; u16 passive_scan_time; enum CURRENT_TXRATE curr_tx_rate; }; enum cfg_param { RETRY_SHORT = BIT(0), RETRY_LONG = BIT(1), FRAG_THRESHOLD = BIT(2), RTS_THRESHOLD = BIT(3), BSS_TYPE = BIT(4), AUTH_TYPE = BIT(5), AUTHEN_TIMEOUT = BIT(6), POWER_MANAGEMENT = BIT(7), PREAMBLE = BIT(8), SHORT_SLOT_ALLOWED = BIT(9), TXOP_PROT_DISABLE = BIT(10), BEACON_INTERVAL = BIT(11), DTIM_PERIOD = BIT(12), SITE_SURVEY = BIT(13), SITE_SURVEY_SCAN_TIME = BIT(14), ACTIVE_SCANTIME = BIT(15), PASSIVE_SCANTIME = BIT(16), CURRENT_TX_RATE = BIT(17), HT_ENABLE = BIT(18), }; struct found_net_info { u8 au8bssid[6]; s8 s8rssi; }; enum scan_event { SCAN_EVENT_NETWORK_FOUND = 0, SCAN_EVENT_DONE = 1, SCAN_EVENT_ABORTED = 2, SCAN_EVENT_FORCE_32BIT = 0xFFFFFFFF }; enum conn_event { CONN_DISCONN_EVENT_CONN_RESP = 0, CONN_DISCONN_EVENT_DISCONN_NOTIF = 1, CONN_DISCONN_EVENT_FORCE_32BIT = 0xFFFFFFFF }; enum KEY_TYPE { WEP, WPARxGtk, WPAPtk, PMKSA, }; /*Scan callBack function definition*/ typedef void (*wilc_scan_result)(enum scan_event, tstrNetworkInfo *, void *, void *); /*Connect callBack function definition*/ typedef void (*wilc_connect_result)(enum conn_event, tstrConnectInfo *, u8, tstrDisconnectNotifInfo *, void *); typedef void (*wilc_remain_on_chan_expired)(void *, u32); /*Remain on channel expiration callback function*/ typedef void (*wilc_remain_on_chan_ready)(void *); /*Remain on channel callback function*/ /*! * @struct rcvd_net_info * @brief Structure to hold Received Asynchronous Network info * @details * @todo * @sa * @author Mostafa Abu Bakr * @date 25 March 2012 * @version 1.0 */ struct rcvd_net_info { u8 *buffer; u32 len; }; struct hidden_net_info { u8 *pu8ssid; u8 u8ssidlen; }; struct hidden_network { struct hidden_net_info *pstrHiddenNetworkInfo; u8 u8ssidnum; }; struct user_scan_req { /* Scan user call back function */ wilc_scan_result pfUserScanResult; /* User specific parameter to be delivered through the Scan User Callback function */ void *u32UserScanPvoid; u32 u32RcvdChCount; struct found_net_info astrFoundNetworkInfo[MAX_NUM_SCANNED_NETWORKS]; }; struct user_conn_req { u8 *pu8bssid; u8 *pu8ssid; u8 u8security; enum AUTHTYPE tenuAuth_type; size_t ssidLen; u8 *pu8ConnReqIEs; size_t ConnReqIEsLen; /* Connect user call back function */ wilc_connect_result pfUserConnectResult; bool IsHTCapable; /* User specific parameter to be delivered through the Connect User Callback function */ void *u32UserConnectPvoid; }; struct drv_handler { u32 handler; }; struct op_mode { u32 mode; }; struct set_mac_addr { u8 mac_addr[ETH_ALEN]; }; struct get_mac_addr { u8 *mac_addr; }; struct ba_session_info { u8 au8Bssid[ETH_ALEN]; u8 u8Ted; u16 u16BufferSize; u16 u16SessionTimeout; }; struct remain_ch { u16 u16Channel; u32 u32duration; wilc_remain_on_chan_expired pRemainOnChanExpired; wilc_remain_on_chan_ready pRemainOnChanReady; void *pVoid; u32 u32ListenSessionID; }; struct reg_frame { bool bReg; u16 u16FrameType; u8 u8Regid; }; #define ACTION 0xD0 #define PROBE_REQ 0x40 #define PROBE_RESP 0x50 #define ACTION_FRM_IDX 0 #define PROBE_REQ_IDX 1 enum p2p_listen_state { P2P_IDLE, P2P_LISTEN, P2P_GRP_FORMATION }; struct host_if_drv { struct user_scan_req usr_scan_req; struct user_conn_req usr_conn_req; struct remain_ch remain_on_ch; u8 remain_on_ch_pending; u64 u64P2p_MgmtTimeout; u8 u8P2PConnect; enum host_if_state enuHostIFstate; u8 au8AssociatedBSSID[ETH_ALEN]; struct cfg_param_val strCfgValues; /* semaphores */ struct semaphore gtOsCfgValuesSem; struct semaphore hSemTestKeyBlock; struct semaphore hSemTestDisconnectBlock; struct semaphore hSemGetRSSI; struct semaphore hSemGetLINKSPEED; struct semaphore hSemGetCHNL; struct semaphore hSemInactiveTime; /* timer handlers */ struct timer_list hScanTimer; struct timer_list hConnectTimer; struct timer_list hRemainOnChannel; bool IFC_UP; }; struct add_sta_param { u8 au8BSSID[ETH_ALEN]; u16 u16AssocID; u8 u8NumRates; const u8 *pu8Rates; bool bIsHTSupported; u16 u16HTCapInfo; u8 u8AmpduParams; u8 au8SuppMCsSet[16]; u16 u16HTExtParams; u32 u32TxBeamformingCap; u8 u8ASELCap; u16 u16FlagsMask; /*<! Determines which of u16FlagsSet were changed>*/ u16 u16FlagsSet; /*<! Decoded according to tenuWILC_StaFlag */ }; /*****************************************************************************/ /* */ /* Host Interface API */ /* */ /*****************************************************************************/ /** * @brief removes wpa/wpa2 keys * @details only in BSS STA mode if External Supplicant support is enabled. * removes all WPA/WPA2 station key entries from MAC hardware. * @param[in,out] handle to the wifi driver * @param[in] 6 bytes of Station Adress in the station entry table * @return Error code indicating success/failure * @note * @author zsalah * @date 8 March 2012 * @version 1.0 */ s32 host_int_remove_key(struct host_if_drv *hWFIDrv, const u8 *pu8StaAddress); /** * @brief removes WEP key * @details valid only in BSS STA mode if External Supplicant support is enabled. * remove a WEP key entry from MAC HW. * The BSS Station automatically finds the index of the entry using its * BSS ID and removes that entry from the MAC hardware. * @param[in,out] handle to the wifi driver * @param[in] 6 bytes of Station Adress in the station entry table * @return Error code indicating success/failure * @note NO need for the STA add since it is not used for processing * @author zsalah * @date 8 March 2012 * @version 1.0 */ int host_int_remove_wep_key(struct host_if_drv *wfi_drv, u8 index); /** * @brief sets WEP deafault key * @details Sets the index of the WEP encryption key in use, * in the key table * @param[in,out] handle to the wifi driver * @param[in] key index ( 0, 1, 2, 3) * @return Error code indicating success/failure * @note * @author zsalah * @date 8 March 2012 * @version 1.0 */ int host_int_set_wep_default_key(struct host_if_drv *hif_drv, u8 index); /** * @brief sets WEP deafault key * @details valid only in BSS STA mode if External Supplicant support is enabled. * sets WEP key entry into MAC hardware when it receives the * corresponding request from NDIS. * @param[in,out] handle to the wifi driver * @param[in] message containing WEP Key in the following format *|---------------------------------------| *|Key ID Value | Key Length | Key | *|-------------|------------|------------| | 1byte | 1byte | Key Length | ||---------------------------------------| | * @return Error code indicating success/failure * @note * @author zsalah * @date 8 March 2012 * @version 1.0 */ int host_int_add_wep_key_bss_sta(struct host_if_drv *hif_drv, const u8 *key, u8 len, u8 index); /** * @brief host_int_add_wep_key_bss_ap * @details valid only in AP mode if External Supplicant support is enabled. * sets WEP key entry into MAC hardware when it receives the * corresponding request from NDIS. * @param[in,out] handle to the wifi driver * * * @return Error code indicating success/failure * @note * @author mdaftedar * @date 28 Feb 2013 * @version 1.0 */ int host_int_add_wep_key_bss_ap(struct host_if_drv *hif_drv, const u8 *key, u8 len, u8 index, u8 mode, enum AUTHTYPE auth_type); /** * @brief adds ptk Key * @details * @param[in,out] handle to the wifi driver * @param[in] message containing PTK Key in the following format *|-------------------------------------------------------------------------| *|Sta Adress | Key Length | Temporal Key | Rx Michael Key |Tx Michael Key | *|-----------|------------|---------------|----------------|---------------| | 6 bytes | 1byte | 16 bytes | 8 bytes | 8 bytes | ||-------------------------------------------------------------------------| * @return Error code indicating success/failure * @note * @author zsalah * @date 8 March 2012 * @version 1.0 */ s32 host_int_add_ptk(struct host_if_drv *hWFIDrv, const u8 *pu8Ptk, u8 u8PtkKeylen, const u8 *mac_addr, const u8 *pu8RxMic, const u8 *pu8TxMic, u8 mode, u8 u8Ciphermode, u8 u8Idx); /** * @brief host_int_get_inactive_time * @details * @param[in,out] handle to the wifi driver * @param[in] message containing inactive time * * @return Error code indicating success/failure * @note * @author mdaftedar * @date 15 April 2013 * @version 1.0 */ s32 host_int_get_inactive_time(struct host_if_drv *hWFIDrv, const u8 *mac, u32 *pu32InactiveTime); /** * @brief adds Rx GTk Key * @details * @param[in,out] handle to the wifi driver * @param[in] message containing Rx GTK Key in the following format *|----------------------------------------------------------------------------| *|Sta Address | Key RSC | KeyID | Key Length | Temporal Key | Rx Michael Key | *|------------|---------|-------|------------|---------------|----------------| | 6 bytes | 8 byte |1 byte | 1 byte | 16 bytes | 8 bytes | ||----------------------------------------------------------------------------| * @return Error code indicating success/failure * @note * @author zsalah * @date 8 March 2012 * @version 1.0 */ s32 host_int_add_rx_gtk(struct host_if_drv *hWFIDrv, const u8 *pu8RxGtk, u8 u8GtkKeylen, u8 u8KeyIdx, u32 u32KeyRSClen, const u8 *KeyRSC, const u8 *pu8RxMic, const u8 *pu8TxMic, u8 mode, u8 u8Ciphermode); /** * @brief adds Tx GTk Key * @details * @param[in,out] handle to the wifi driver * @param[in] message containing Tx GTK Key in the following format *|----------------------------------------------------| | KeyID | Key Length | Temporal Key | Tx Michael Key | ||-------|------------|--------------|----------------| ||1 byte | 1 byte | 16 bytes | 8 bytes | ||----------------------------------------------------| * @return Error code indicating success/failure * @note * @author zsalah * @date 8 March 2012 * @version 1.0 */ s32 host_int_add_tx_gtk(struct host_if_drv *hWFIDrv, u8 u8KeyLen, u8 *pu8TxGtk, u8 u8KeyIdx); /** * @brief caches the pmkid * @details valid only in BSS STA mode if External Supplicant * support is enabled. This Function sets the PMKID in firmware * when host drivr receives the corresponding request from NDIS. * The firmware then includes theset PMKID in the appropriate * management frames * @param[in,out] handle to the wifi driver * @param[in] message containing PMKID Info in the following format *|-----------------------------------------------------------------| *|NumEntries | BSSID[1] | PMKID[1] | ... | BSSID[K] | PMKID[K] | *|-----------|------------|----------|-------|----------|----------| | 1 | 6 | 16 | ... | 6 | 16 | ||-----------------------------------------------------------------| * @return Error code indicating success/failure * @note * @author zsalah * @date 8 March 2012 * @version 1.0 */ s32 host_int_set_pmkid_info(struct host_if_drv *hWFIDrv, struct host_if_pmkid_attr *pu8PmkidInfoArray); /** * @brief gets the cached the pmkid info * @details valid only in BSS STA mode if External Supplicant * support is enabled. This Function sets the PMKID in firmware * when host drivr receives the corresponding request from NDIS. * The firmware then includes theset PMKID in the appropriate * management frames * @param[in,out] handle to the wifi driver, * * message containing PMKID Info in the following format *|-----------------------------------------------------------------| *|NumEntries | BSSID[1] | PMKID[1] | ... | BSSID[K] | PMKID[K] | *|-----------|------------|----------|-------|----------|----------| | 1 | 6 | 16 | ... | 6 | 16 | ||-----------------------------------------------------------------| * @param[in] * @return Error code indicating success/failure * @note * @author zsalah * @date 8 March 2012 * @version 1.0 */ s32 host_int_get_pmkid_info(struct host_if_drv *hWFIDrv, u8 *pu8PmkidInfoArray, u32 u32PmkidInfoLen); /** * @brief sets the pass phrase * @details AP/STA mode. This function gives the pass phrase used to * generate the Pre-Shared Key when WPA/WPA2 is enabled * The length of the field can vary from 8 to 64 bytes, * the lower layer should get the * @param[in,out] handle to the wifi driver, * @param[in] String containing PSK * @return Error code indicating success/failure * @note * @author zsalah * @date 8 March 2012 * @version 1.0 */ s32 host_int_set_RSNAConfigPSKPassPhrase(struct host_if_drv *hWFIDrv, u8 *pu8PassPhrase, u8 u8Psklength); /** * @brief gets the pass phrase * @details AP/STA mode. This function gets the pass phrase used to * generate the Pre-Shared Key when WPA/WPA2 is enabled * The length of the field can vary from 8 to 64 bytes, * the lower layer should get the * @param[in,out] handle to the wifi driver, * String containing PSK * @return Error code indicating success/failure * @note * @author zsalah * @date 8 March 2012 * @version 1.0 */ s32 host_int_get_RSNAConfigPSKPassPhrase(struct host_if_drv *hWFIDrv, u8 *pu8PassPhrase, u8 u8Psklength); /** * @brief gets mac address * @details * @param[in,out] handle to the wifi driver, * * @return Error code indicating success/failure * @note * @author mdaftedar * @date 19 April 2012 * @version 1.0 */ s32 host_int_get_MacAddress(struct host_if_drv *hWFIDrv, u8 *pu8MacAddress); /** * @brief sets mac address * @details * @param[in,out] handle to the wifi driver, * * @return Error code indicating success/failure * @note * @author mabubakr * @date 16 July 2012 * @version 1.0 */ s32 host_int_set_MacAddress(struct host_if_drv *hWFIDrv, u8 *pu8MacAddress); /** * @brief wait until msg q is empty * @details * @param[in,out] * * @return Error code indicating success/failure * @note * @author asobhy * @date 19 march 2014 * @version 1.0 */ int host_int_wait_msg_queue_idle(void); /** * @brief sets a start scan request * @details * @param[in,out] handle to the wifi driver, * @param[in] Scan Source one of the following values * DEFAULT_SCAN 0 * USER_SCAN BIT0 * OBSS_PERIODIC_SCAN BIT1 * OBSS_ONETIME_SCAN BIT2 * @return Error code indicating success/failure * @note * @author zsalah * @date 8 March 2012 * @version 1.0 */ s32 host_int_set_start_scan_req(struct host_if_drv *hWFIDrv, u8 scanSource); /** * @brief gets scan source of the last scan * @details * @param[in,out] handle to the wifi driver, * Scan Source one of the following values * DEFAULT_SCAN 0 * USER_SCAN BIT0 * OBSS_PERIODIC_SCAN BIT1 * OBSS_ONETIME_SCAN BIT2 * @return Error code indicating success/failure * @note * @author zsalah * @date 8 March 2012 * @version 1.0 */ s32 host_int_get_start_scan_req(struct host_if_drv *hWFIDrv, u8 *pu8ScanSource); /** * @brief sets a join request * @details * @param[in,out] handle to the wifi driver, * @param[in] Index of the bss descriptor * @return Error code indicating success/failure * @note * @author zsalah * @date 8 March 2012 * @version 1.0 */ s32 host_int_set_join_req(struct host_if_drv *hWFIDrv, u8 *pu8bssid, const u8 *pu8ssid, size_t ssidLen, const u8 *pu8IEs, size_t IEsLen, wilc_connect_result pfConnectResult, void *pvUserArg, u8 u8security, enum AUTHTYPE tenuAuth_type, u8 u8channel, void *pJoinParams); /** * @brief Flush a join request parameters to FW, but actual connection * @details The function is called in situation where WILC is connected to AP and * required to switch to hybrid FW for P2P connection * @param[in] handle to the wifi driver, * @return Error code indicating success/failure * @note * @author Amr Abdel-Moghny * @date 19 DEC 2013 * @version 8.0 */ s32 host_int_flush_join_req(struct host_if_drv *hWFIDrv); /** * @brief disconnects from the currently associated network * @details * @param[in,out] handle to the wifi driver, * @param[in] Reason Code of the Disconnection * @return Error code indicating success/failure * @note * @author zsalah * @date 8 March 2012 * @version 1.0 */ s32 host_int_disconnect(struct host_if_drv *hWFIDrv, u16 u16ReasonCode); /** * @brief disconnects a sta * @details * @param[in,out] handle to the wifi driver, * @param[in] Association Id of the station to be disconnected * @return Error code indicating success/failure * @note * @author zsalah * @date 8 March 2012 * @version 1.0 */ s32 host_int_disconnect_station(struct host_if_drv *hWFIDrv, u8 assoc_id); /** * @brief gets a Association request info * @details * @param[in,out] handle to the wifi driver, * Message containg assoc. req info in the following format * ------------------------------------------------------------------------ | Management Frame Format | ||-------------------------------------------------------------------| ||Frame Control|Duration|DA|SA|BSSID|Sequence Control|Frame Body|FCS | ||-------------|--------|--|--|-----|----------------|----------|----| | 2 |2 |6 |6 |6 | 2 |0 - 2312 | 4 | ||-------------------------------------------------------------------| | | | Association Request Frame - Frame Body | ||-------------------------------------------------------------------| | Capability Information | Listen Interval | SSID | Supported Rates | ||------------------------|-----------------|------|-----------------| | 2 | 2 | 2-34 | 3-10 | | --------------------------------------------------------------------- * @return Error code indicating success/failure * @note * @author zsalah * @date 8 March 2012 * @version 1.0 */ s32 host_int_get_assoc_req_info(struct host_if_drv *hWFIDrv, u8 *pu8AssocReqInfo, u32 u32AssocReqInfoLen); /** * @brief gets a Association Response info * @details * @param[in,out] handle to the wifi driver, * Message containg assoc. resp info * @return Error code indicating success/failure * @note * @author zsalah * @date 8 March 2012 * @version 1.0 */ s32 host_int_get_assoc_res_info(struct host_if_drv *hWFIDrv, u8 *pu8AssocRespInfo, u32 u32MaxAssocRespInfoLen, u32 *pu32RcvdAssocRespInfoLen); /** * @brief gets a Association Response info * @details Valid only in STA mode. This function gives the RSSI * values observed in all the channels at the time of scanning. * The length of the field is 1 greater that the total number of * channels supported. Byte 0 contains the number of channels while * each of Byte N contains the observed RSSI value for the channel index N. * @param[in,out] handle to the wifi driver, * array of scanned channels' RSSI * @return Error code indicating success/failure * @note * @author zsalah * @date 8 March 2012 * @version 1.0 */ s32 host_int_get_rx_power_level(struct host_if_drv *hWFIDrv, u8 *pu8RxPowerLevel, u32 u32RxPowerLevelLen); /** * @brief sets a channel * @details * @param[in,out] handle to the wifi driver, * @param[in] Index of the channel to be set *|-------------------------------------------------------------------| | CHANNEL1 CHANNEL2 .... CHANNEL14 | | Input: 1 2 14 | ||-------------------------------------------------------------------| * @return Error code indicating success/failure * @note * @author zsalah * @date 8 March 2012 * @version 1.0 */ int host_int_set_mac_chnl_num(struct host_if_drv *wfi_drv, u8 channel); /** * @brief gets the current channel index * @details * @param[in,out] handle to the wifi driver, * current channel index *|-----------------------------------------------------------------------| | CHANNEL1 CHANNEL2 .... CHANNEL14 | | Input: 1 2 14 | ||-----------------------------------------------------------------------| * @return Error code indicating success/failure * @note * @author zsalah * @date 8 March 2012 * @version 1.0 */ s32 host_int_get_host_chnl_num(struct host_if_drv *hWFIDrv, u8 *pu8ChNo); /** * @brief gets the sta rssi * @details gets the currently maintained RSSI value for the station. * The received signal strength value in dB. * The range of valid values is -128 to 0. * @param[in,out] handle to the wifi driver, * rssi value in dB * @return Error code indicating success/failure * @note * @author zsalah * @date 8 March 2012 * @version 1.0 */ s32 host_int_get_rssi(struct host_if_drv *hWFIDrv, s8 *ps8Rssi); s32 host_int_get_link_speed(struct host_if_drv *hWFIDrv, s8 *ps8lnkspd); /** * @brief scans a set of channels * @details * @param[in,out] handle to the wifi driver, * @param[in] Scan source * Scan Type PASSIVE_SCAN = 0, * ACTIVE_SCAN = 1 * Channels Array * Channels Array length * Scan Callback function * User Argument to be delivered back through the Scan Cllback function * @return Error code indicating success/failure * @note * @author zsalah * @date 8 March 2012 * @version 1.0 */ s32 host_int_scan(struct host_if_drv *hWFIDrv, u8 u8ScanSource, u8 u8ScanType, u8 *pu8ChnlFreqList, u8 u8ChnlListLen, const u8 *pu8IEs, size_t IEsLen, wilc_scan_result ScanResult, void *pvUserArg, struct hidden_network *pstrHiddenNetwork); /** * @brief sets configuration wids values * @details * @param[in,out] handle to the wifi driver, * @param[in] WID, WID value * @return Error code indicating success/failure * @note * @author zsalah * @date 8 March 2012 * @version 1.0 */ s32 hif_set_cfg(struct host_if_drv *hWFIDrv, struct cfg_param_val *pstrCfgParamVal); /** * @brief gets configuration wids values * @details * @param[in,out] handle to the wifi driver, * WID value * @param[in] WID, * @return Error code indicating success/failure * @note * @author zsalah * @date 8 March 2012 * @version 1.0 */ s32 hif_get_cfg(struct host_if_drv *hWFIDrv, u16 u16WID, u16 *pu16WID_Value); /*****************************************************************************/ /* Notification Functions */ /*****************************************************************************/ /** * @brief host interface initialization function * @details * @param[in,out] handle to the wifi driver, * @note * @author zsalah * @date 8 March 2012 * @version 1.0 */ s32 host_int_init(struct net_device *dev, struct host_if_drv **phWFIDrv); /** * @brief host interface initialization function * @details * @param[in,out] handle to the wifi driver, * @note * @author zsalah * @date 8 March 2012 * @version 1.0 */ s32 host_int_deinit(struct host_if_drv *hWFIDrv); /*! * @fn s32 host_int_add_beacon(WILC_WFIDrvHandle hWFIDrv,u8 u8Index) * @brief Sends a beacon to the firmware to be transmitted over the air * @details * @param[in,out] hWFIDrv handle to the wifi driver * @param[in] u32Interval Beacon Interval. Period between two successive beacons on air * @param[in] u32DTIMPeriod DTIM Period. Indicates how many Beacon frames * (including the current frame) appear before the next DTIM * @param[in] u32Headlen Length of the head buffer in bytes * @param[in] pu8Head Pointer to the beacon's head buffer. Beacon's head * is the part from the beacon's start till the TIM element, NOT including the TIM * @param[in] u32Taillen Length of the tail buffer in bytes * @param[in] pu8Tail Pointer to the beacon's tail buffer. Beacon's tail * starts just after the TIM inormation element * @return 0 for Success, error otherwise * @todo * @sa * @author Adham Abozaeid * @date 10 Julys 2012 * @version 1.0 Description * */ s32 host_int_add_beacon(struct host_if_drv *hWFIDrv, u32 u32Interval, u32 u32DTIMPeriod, u32 u32HeadLen, u8 *pu8Head, u32 u32TailLen, u8 *pu8tail); /*! * @fn s32 host_int_del_beacon(WILC_WFIDrvHandle hWFIDrv) * @brief Removes the beacon and stops trawilctting it over the air * @details * @param[in,out] hWFIDrv handle to the wifi driver * @return 0 for Success, error otherwise * @todo * @sa * @author Adham Abozaeid * @date 10 Julys 2012 * @version 1.0 Description */ s32 host_int_del_beacon(struct host_if_drv *hWFIDrv); /*! * @fn s32 host_int_add_station(WILC_WFIDrvHandle hWFIDrv, * struct add_sta_param *pstrStaParams) * @brief Notifies the firmware with a new associated stations * @details * @param[in,out] hWFIDrv handle to the wifi driver * @param[in] pstrStaParams Station's parameters * @return 0 for Success, error otherwise * @todo * @sa * @author Adham Abozaeid * @date 12 July 2012 * @version 1.0 Description */ s32 host_int_add_station(struct host_if_drv *hWFIDrv, struct add_sta_param *pstrStaParams); /*! * @fn s32 host_int_del_allstation(WILC_WFIDrvHandle hWFIDrv, const u8* pu8MacAddr) * @brief Deauthenticates clients when group is terminating * @details * @param[in,out] hWFIDrv handle to the wifi driver * @param[in] pu8MacAddr Station's mac address * @return 0 for Success, error otherwise * @todo * @sa * @author Mai Daftedar * @date 09 April 2014 * @version 1.0 Description */ s32 host_int_del_allstation(struct host_if_drv *hWFIDrv, u8 pu8MacAddr[][ETH_ALEN]); /*! * @fn s32 host_int_del_station(WILC_WFIDrvHandle hWFIDrv, u8* pu8MacAddr) * @brief Notifies the firmware with a new deleted station * @details * @param[in,out] hWFIDrv handle to the wifi driver * @param[in] pu8MacAddr Station's mac address * @return 0 for Success, error otherwise * @todo * @sa * @author Adham Abozaeid * @date 15 July 2012 * @version 1.0 Description */ s32 host_int_del_station(struct host_if_drv *hWFIDrv, const u8 *pu8MacAddr); /*! * @fn s32 host_int_edit_station(WILC_WFIDrvHandle hWFIDrv, * struct add_sta_param *pstrStaParams) * @brief Notifies the firmware with new parameters of an already associated station * @details * @param[in,out] hWFIDrv handle to the wifi driver * @param[in] pstrStaParams Station's parameters * @return 0 for Success, error otherwise * @todo * @sa * @author Adham Abozaeid * @date 15 July 2012 * @version 1.0 Description */ s32 host_int_edit_station(struct host_if_drv *hWFIDrv, struct add_sta_param *pstrStaParams); /*! * @fn s32 host_int_set_power_mgmt(WILC_WFIDrvHandle hWFIDrv, bool bIsEnabled, u32 u32Timeout) * @brief Set the power management mode to enabled or disabled * @details * @param[in,out] hWFIDrv handle to the wifi driver * @param[in] bIsEnabled TRUE if enabled, FALSE otherwise * @param[in] u32Timeout A timeout value of -1 allows the driver to adjust * the dynamic ps timeout value * @return 0 for Success, error otherwise * @todo * @sa * @author Adham Abozaeid * @date 24 November 2012 * @version 1.0 Description */ s32 host_int_set_power_mgmt(struct host_if_drv *hWFIDrv, bool bIsEnabled, u32 u32Timeout); /* @param[in,out] hWFIDrv handle to the wifi driver * @param[in] bIsEnabled TRUE if enabled, FALSE otherwise * @param[in] u8count count of mac address entries in the filter table * * @return 0 for Success, error otherwise * @todo * @sa * @author Adham Abozaeid * @date 24 November 2012 * @version 1.0 Description */ s32 host_int_setup_multicast_filter(struct host_if_drv *hWFIDrv, bool bIsEnabled, u32 u32count); /** * @brief host_int_setup_ipaddress * @details set IP address on firmware * @param[in] * @return Error code. * @author Abdelrahman Sobhy * @date * @version 1.0 */ s32 host_int_setup_ipaddress(struct host_if_drv *hWFIDrv, u8 *pu8IPAddr, u8 idx); /** * @brief host_int_delBASession * @details Delete single Rx BA session * @param[in] * @return Error code. * @author Abdelrahman Sobhy * @date * @version 1.0 */ s32 host_int_delBASession(struct host_if_drv *hWFIDrv, char *pBSSID, char TID); /** * @brief host_int_delBASession * @details Delete all Rx BA session * @param[in] * @return Error code. * @author Abdelrahman Sobhy * @date * @version 1.0 */ s32 host_int_del_All_Rx_BASession(struct host_if_drv *hWFIDrv, char *pBSSID, char TID); /** * @brief host_int_get_ipaddress * @details get IP address on firmware * @param[in] * @return Error code. * @author Abdelrahman Sobhy * @date * @version 1.0 */ s32 host_int_get_ipaddress(struct host_if_drv *hWFIDrv, u8 *pu8IPAddr, u8 idx); /** * @brief host_int_remain_on_channel * @details * @param[in] * @return Error code. * @author * @date * @version 1.0 */ s32 host_int_remain_on_channel(struct host_if_drv *hWFIDrv, u32 u32SessionID, u32 u32duration, u16 chan, wilc_remain_on_chan_expired RemainOnChanExpired, wilc_remain_on_chan_ready RemainOnChanReady, void *pvUserArg); /** * @brief host_int_ListenStateExpired * @details * @param[in] Handle to wifi driver * Duration to remain on channel * Channel to remain on * Pointer to fn to be called on receive frames in listen state * Pointer to remain-on-channel expired fn * Priv * @return Error code. * @author * @date * @version 1.0 */ s32 host_int_ListenStateExpired(struct host_if_drv *hWFIDrv, u32 u32SessionID); /** * @brief host_int_frame_register * @details * @param[in] * @return Error code. * @author * @date * @version 1.0 */ s32 host_int_frame_register(struct host_if_drv *hWFIDrv, u16 u16FrameType, bool bReg); /** * @brief host_int_set_wfi_drv_handler * @details * @param[in] * @return Error code. * @author * @date * @version 1.0 */ int host_int_set_wfi_drv_handler(struct host_if_drv *address); int host_int_set_operation_mode(struct host_if_drv *wfi_drv, u32 mode); static s32 Handle_ScanDone(struct host_if_drv *drvHandler, enum scan_event enuEvent); void host_int_freeJoinParams(void *pJoinParams); s32 host_int_get_statistics(struct host_if_drv *hWFIDrv, struct rf_info *pstrStatistics); #endif