/*! * @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; /**/ u16 u16FlagsSet; /*