cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

ks_hostif.h (16167B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2/*
      3 *   Driver for KeyStream wireless LAN
      4 *
      5 *   Copyright (c) 2005-2008 KeyStream Corp.
      6 *   Copyright (C) 2009 Renesas Technology Corp.
      7 */
      8
      9#ifndef _KS_HOSTIF_H_
     10#define _KS_HOSTIF_H_
     11
     12#include <linux/compiler.h>
     13#include <linux/ieee80211.h>
     14
     15/*
     16 * HOST-MAC I/F events
     17 */
     18#define HIF_DATA_REQ		0xE001
     19#define HIF_DATA_IND		0xE801
     20#define HIF_MIB_GET_REQ		0xE002
     21#define HIF_MIB_GET_CONF	0xE802
     22#define HIF_MIB_SET_REQ		0xE003
     23#define HIF_MIB_SET_CONF	0xE803
     24#define HIF_POWER_MGMT_REQ	0xE004
     25#define HIF_POWER_MGMT_CONF	0xE804
     26#define HIF_START_REQ		0xE005
     27#define HIF_START_CONF		0xE805
     28#define HIF_CONNECT_IND		0xE806
     29#define HIF_STOP_REQ		0xE006
     30#define HIF_STOP_CONF		0xE807
     31#define HIF_PS_ADH_SET_REQ	0xE007
     32#define HIF_PS_ADH_SET_CONF	0xE808
     33#define HIF_INFRA_SET_REQ	0xE008
     34#define HIF_INFRA_SET_CONF	0xE809
     35#define HIF_ADH_SET_REQ		0xE009
     36#define HIF_ADH_SET_CONF	0xE80A
     37#define HIF_AP_SET_REQ		0xE00A
     38#define HIF_AP_SET_CONF		0xE80B
     39#define HIF_ASSOC_INFO_IND	0xE80C
     40#define HIF_MIC_FAILURE_REQ	0xE00B
     41#define HIF_MIC_FAILURE_CONF	0xE80D
     42#define HIF_SCAN_REQ		0xE00C
     43#define HIF_SCAN_CONF		0xE80E
     44#define HIF_PHY_INFO_REQ	0xE00D
     45#define HIF_PHY_INFO_CONF	0xE80F
     46#define HIF_SLEEP_REQ		0xE00E
     47#define HIF_SLEEP_CONF		0xE810
     48#define HIF_PHY_INFO_IND	0xE811
     49#define HIF_SCAN_IND		0xE812
     50#define HIF_INFRA_SET2_REQ	0xE00F
     51#define HIF_INFRA_SET2_CONF	0xE813
     52#define HIF_ADH_SET2_REQ	0xE010
     53#define HIF_ADH_SET2_CONF	0xE814
     54
     55#define HIF_REQ_MAX		0xE010
     56
     57/*
     58 * HOST-MAC I/F data structure
     59 * Byte alignment Little Endian
     60 */
     61
     62struct hostif_hdr {
     63	__le16 size;
     64	__le16 event;
     65} __packed;
     66
     67struct hostif_data_request {
     68	struct hostif_hdr header;
     69	__le16 auth_type;
     70#define TYPE_DATA 0x0000
     71#define TYPE_AUTH 0x0001
     72	__le16 reserved;
     73	u8 data[];
     74} __packed;
     75
     76#define TYPE_PMK1 0x0001
     77#define TYPE_GMK1 0x0002
     78#define TYPE_GMK2 0x0003
     79
     80#define CHANNEL_LIST_MAX_SIZE 14
     81struct channel_list {
     82	u8 size;
     83	u8 body[CHANNEL_LIST_MAX_SIZE];
     84	u8 pad;
     85} __packed;
     86
     87/**
     88 * enum mib_attribute - Management Information Base attribute
     89 * Attribute value used for accessing and updating MIB
     90 *
     91 * @DOT11_MAC_ADDRESS: MAC Address (R)
     92 * @DOT11_PRODUCT_VERSION: FirmWare Version (R)
     93 * @DOT11_RTS_THRESHOLD: RTS Threshold (R/W)
     94 * @DOT11_FRAGMENTATION_THRESHOLD: Fragment Threshold (R/W)
     95 * @DOT11_PRIVACY_INVOKED: WEP ON/OFF (W)
     96 * @DOT11_WEP_DEFAULT_KEY_ID: WEP Index (W)
     97 * @DOT11_WEP_DEFAULT_KEY_VALUE1: WEP Key#1(TKIP AES: PairwiseTemporalKey) (W)
     98 * @DOT11_WEP_DEFAULT_KEY_VALUE2: WEP Key#2(TKIP AES: GroupKey1) (W)
     99 * @DOT11_WEP_DEFAULT_KEY_VALUE3: WEP Key#3(TKIP AES: GroupKey2) (W)
    100 * @DOT11_WEP_DEFAULT_KEY_VALUE4: WEP Key#4 (W)
    101 * @DOT11_WEP_LIST: WEP LIST
    102 * @DOT11_DESIRED_SSID: SSID
    103 * @DOT11_CURRENT_CHANNEL: channel set
    104 * @DOT11_OPERATION_RATE_SET: rate set
    105 * @LOCAL_AP_SEARCH_INTERVAL: AP search interval (R/W)
    106 * @LOCAL_CURRENTADDRESS: MAC Address change (W)
    107 * @LOCAL_MULTICAST_ADDRESS: Multicast Address (W)
    108 * @LOCAL_MULTICAST_FILTER: Multicast Address Filter enable/disable (W)
    109 * @LOCAL_SEARCHED_AP_LIST: AP list (R)
    110 * @LOCAL_LINK_AP_STATUS: Link AP status (R)
    111 * @LOCAL_PACKET_STATISTICS: tx,rx packets statistics
    112 * @LOCAL_AP_SCAN_LIST_TYPE_SET: AP_SCAN_LIST_TYPE
    113 * @DOT11_RSN_ENABLED: WPA enable/disable (W)
    114 * @LOCAL_RSN_MODE: RSN mode WPA/WPA2 (W)
    115 * @DOT11_RSN_CONFIG_MULTICAST_CIPHER: GroupKeyCipherSuite (W)
    116 * @DOT11_RSN_CONFIG_UNICAST_CIPHER: PairwiseKeyCipherSuite (W)
    117 * @DOT11_RSN_CONFIG_AUTH_SUITE: AuthenticationKeyManagementSuite (W)
    118 * @DOT11_RSN_CONFIG_VERSION: RSN version (W)
    119 * @LOCAL_RSN_CONFIG_ALL: RSN CONFIG ALL (W)
    120 * @DOT11_PMK_TSC: PMK_TSC (W)
    121 * @DOT11_GMK1_TSC: GMK1_TSC (W)
    122 * @DOT11_GMK2_TSC: GMK2_TSC (W)
    123 * @DOT11_GMK3_TSC: GMK3_TSC
    124 * @LOCAL_PMK: Pairwise Master Key cache (W)
    125 * @LOCAL_REGION: Region setting
    126 * @LOCAL_WPS_ENABLE: WiFi Protected Setup
    127 * @LOCAL_WPS_PROBE_REQ: WPS Probe Request
    128 * @LOCAL_GAIN: Carrer sense threshold for demo ato show
    129 * @LOCAL_EEPROM_SUM: EEPROM checksum information
    130 */
    131enum mib_attribute {
    132	DOT11_MAC_ADDRESS                 = 0x21010100,
    133	DOT11_PRODUCT_VERSION             = 0x31024100,
    134	DOT11_RTS_THRESHOLD               = 0x21020100,
    135	DOT11_FRAGMENTATION_THRESHOLD     = 0x21050100,
    136	DOT11_PRIVACY_INVOKED             = 0x15010100,
    137	DOT11_WEP_DEFAULT_KEY_ID          = 0x15020100,
    138	DOT11_WEP_DEFAULT_KEY_VALUE1      = 0x13020101,
    139	DOT11_WEP_DEFAULT_KEY_VALUE2      = 0x13020102,
    140	DOT11_WEP_DEFAULT_KEY_VALUE3      = 0x13020103,
    141	DOT11_WEP_DEFAULT_KEY_VALUE4      = 0x13020104,
    142	DOT11_WEP_LIST                    = 0x13020100,
    143	DOT11_DESIRED_SSID		  = 0x11090100,
    144	DOT11_CURRENT_CHANNEL		  = 0x45010100,
    145	DOT11_OPERATION_RATE_SET	  = 0x11110100,
    146	LOCAL_AP_SEARCH_INTERVAL          = 0xF1010100,
    147	LOCAL_CURRENTADDRESS              = 0xF1050100,
    148	LOCAL_MULTICAST_ADDRESS           = 0xF1060100,
    149	LOCAL_MULTICAST_FILTER            = 0xF1060200,
    150	LOCAL_SEARCHED_AP_LIST            = 0xF1030100,
    151	LOCAL_LINK_AP_STATUS              = 0xF1040100,
    152	LOCAL_PACKET_STATISTICS		  = 0xF1020100,
    153	LOCAL_AP_SCAN_LIST_TYPE_SET	  = 0xF1030200,
    154	DOT11_RSN_ENABLED                 = 0x15070100,
    155	LOCAL_RSN_MODE                    = 0x56010100,
    156	DOT11_RSN_CONFIG_MULTICAST_CIPHER = 0x51040100,
    157	DOT11_RSN_CONFIG_UNICAST_CIPHER   = 0x52020100,
    158	DOT11_RSN_CONFIG_AUTH_SUITE       = 0x53020100,
    159	DOT11_RSN_CONFIG_VERSION          = 0x51020100,
    160	LOCAL_RSN_CONFIG_ALL              = 0x5F010100,
    161	DOT11_PMK_TSC                     = 0x55010100,
    162	DOT11_GMK1_TSC                    = 0x55010101,
    163	DOT11_GMK2_TSC                    = 0x55010102,
    164	DOT11_GMK3_TSC                    = 0x55010103,
    165	LOCAL_PMK                         = 0x58010100,
    166	LOCAL_REGION                      = 0xF10A0100,
    167	LOCAL_WPS_ENABLE                  = 0xF10B0100,
    168	LOCAL_WPS_PROBE_REQ               = 0xF10C0100,
    169	LOCAL_GAIN                        = 0xF10D0100,
    170	LOCAL_EEPROM_SUM                  = 0xF10E0100
    171};
    172
    173struct hostif_mib_get_request {
    174	struct hostif_hdr header;
    175	__le32 mib_attribute;
    176} __packed;
    177
    178/**
    179 * enum mib_data_type - Message Information Base data type.
    180 * @MIB_VALUE_TYPE_NULL: NULL type
    181 * @MIB_VALUE_TYPE_INT: INTEGER type
    182 * @MIB_VALUE_TYPE_BOOL: BOOL type
    183 * @MIB_VALUE_TYPE_COUNT32: unused
    184 * @MIB_VALUE_TYPE_OSTRING: Chunk of memory
    185 */
    186enum mib_data_type {
    187	MIB_VALUE_TYPE_NULL = 0,
    188	MIB_VALUE_TYPE_INT,
    189	MIB_VALUE_TYPE_BOOL,
    190	MIB_VALUE_TYPE_COUNT32,
    191	MIB_VALUE_TYPE_OSTRING
    192};
    193
    194struct hostif_mib_value {
    195	__le16 size;
    196	__le16 type;
    197	u8 body[];
    198} __packed;
    199
    200struct hostif_mib_get_confirm_t {
    201	struct hostif_hdr header;
    202	__le32 mib_status;
    203#define MIB_SUCCESS    0
    204#define MIB_INVALID    1
    205#define MIB_READ_ONLY  2
    206#define MIB_WRITE_ONLY 3
    207	__le32 mib_attribute;
    208	struct hostif_mib_value mib_value;
    209} __packed;
    210
    211struct hostif_mib_set_request_t {
    212	struct hostif_hdr header;
    213	__le32 mib_attribute;
    214	struct hostif_mib_value mib_value;
    215} __packed;
    216
    217struct hostif_power_mgmt_request {
    218	struct hostif_hdr header;
    219	__le32 mode;
    220#define POWER_ACTIVE  1
    221#define POWER_SAVE    2
    222	__le32 wake_up;
    223#define SLEEP_FALSE 0
    224#define SLEEP_TRUE  1	/* not used */
    225	__le32 receive_dtims;
    226#define DTIM_FALSE 0
    227#define DTIM_TRUE  1
    228} __packed;
    229
    230enum power_mgmt_mode_type {
    231	POWER_MGMT_ACTIVE,
    232	POWER_MGMT_SAVE1,
    233	POWER_MGMT_SAVE2
    234};
    235
    236#define	RESULT_SUCCESS            0
    237#define	RESULT_INVALID_PARAMETERS 1
    238#define	RESULT_NOT_SUPPORTED      2
    239/* #define	RESULT_ALREADY_RUNNING    3 */
    240#define	RESULT_ALREADY_RUNNING    7
    241
    242struct hostif_start_request {
    243	struct hostif_hdr header;
    244	__le16 mode;
    245#define MODE_PSEUDO_ADHOC   0
    246#define MODE_INFRASTRUCTURE 1
    247#define MODE_AP             2	/* not used */
    248#define MODE_ADHOC          3
    249} __packed;
    250
    251struct ssid {
    252	u8 size;
    253	u8 body[IEEE80211_MAX_SSID_LEN];
    254	u8 ssid_pad;
    255} __packed;
    256
    257#define RATE_SET_MAX_SIZE 16
    258struct rate_set8 {
    259	u8 size;
    260	u8 body[8];
    261	u8 rate_pad;
    262} __packed;
    263
    264struct fh_parms {
    265	__le16 dwell_time;
    266	u8 hop_set;
    267	u8 hop_pattern;
    268	u8 hop_index;
    269} __packed;
    270
    271struct ds_parms {
    272	u8 channel;
    273} __packed;
    274
    275struct cf_parms {
    276	u8 count;
    277	u8 period;
    278	__le16 max_duration;
    279	__le16 dur_remaining;
    280} __packed;
    281
    282struct ibss_parms {
    283	__le16 atim_window;
    284} __packed;
    285
    286struct rsn_t {
    287	u8 size;
    288#define RSN_BODY_SIZE 64
    289	u8 body[RSN_BODY_SIZE];
    290} __packed;
    291
    292struct erp_params_t {
    293	u8 erp_info;
    294} __packed;
    295
    296struct rate_set16 {
    297	u8 size;
    298	u8 body[16];
    299	u8 rate_pad;
    300} __packed;
    301
    302struct ap_info {
    303	u8 bssid[6];	/* +00 */
    304	u8 rssi;	/* +06 */
    305	u8 sq;	/* +07 */
    306	u8 noise;	/* +08 */
    307	u8 pad0;	/* +09 */
    308	__le16 beacon_period;	/* +10 */
    309	__le16 capability;	/* +12 */
    310	u8 frame_type;	/* +14 */
    311	u8 ch_info;	/* +15 */
    312	__le16 body_size;	/* +16 */
    313	u8 body[1024];	/* +18 */
    314	/* +1032 */
    315} __packed;
    316
    317struct link_ap_info {
    318	u8 bssid[6];	/* +00 */
    319	u8 rssi;	/* +06 */
    320	u8 sq;	/* +07 */
    321	u8 noise;	/* +08 */
    322	u8 pad0;	/* +09 */
    323	__le16 beacon_period;	/* +10 */
    324	__le16 capability;	/* +12 */
    325	struct rate_set8 rate_set;	/* +14 */
    326	struct fh_parms fh_parameter;	/* +24 */
    327	struct ds_parms ds_parameter;	/* +29 */
    328	struct cf_parms cf_parameter;	/* +30 */
    329	struct ibss_parms ibss_parameter;	/* +36 */
    330	struct erp_params_t erp_parameter;	/* +38 */
    331	u8 pad1;	/* +39 */
    332	struct rate_set8 ext_rate_set;	/* +40 */
    333	u8 DTIM_period;	/* +50 */
    334	u8 rsn_mode;	/* +51 */
    335#define RSN_MODE_NONE	0
    336#define RSN_MODE_WPA	1
    337#define RSN_MODE_WPA2	2
    338	struct {
    339		u8 size;	/* +52 */
    340		u8 body[128];	/* +53 */
    341	} __packed rsn;
    342} __packed;
    343
    344#define RESULT_CONNECT    0
    345#define RESULT_DISCONNECT 1
    346
    347struct hostif_stop_request {
    348	struct hostif_hdr header;
    349} __packed;
    350
    351#define D_11B_ONLY_MODE		0
    352#define D_11G_ONLY_MODE		1
    353#define D_11BG_COMPATIBLE_MODE	2
    354#define D_11A_ONLY_MODE		3
    355
    356#define CTS_MODE_FALSE	0
    357#define CTS_MODE_TRUE	1
    358
    359struct hostif_request {
    360	__le16 phy_type;
    361	__le16 cts_mode;
    362	__le16 scan_type;
    363	__le16 capability;
    364	struct rate_set16 rate_set;
    365} __packed;
    366
    367/**
    368 * struct hostif_ps_adhoc_set_request - pseudo adhoc mode
    369 * @capability: bit5  : preamble
    370 *              bit6  : pbcc - Not supported always 0
    371 *              bit10 : ShortSlotTime
    372 *              bit13 : DSSS-OFDM - Not supported always 0
    373 */
    374struct hostif_ps_adhoc_set_request {
    375	struct hostif_hdr header;
    376	struct hostif_request request;
    377	__le16 channel;
    378} __packed;
    379
    380#define AUTH_TYPE_OPEN_SYSTEM 0
    381#define AUTH_TYPE_SHARED_KEY  1
    382
    383/**
    384 * struct hostif_infrastructure_set_request
    385 * @capability: bit5  : preamble
    386 *              bit6  : pbcc - Not supported always 0
    387 *              bit10 : ShortSlotTime
    388 *              bit13 : DSSS-OFDM - Not supported always 0
    389 */
    390struct hostif_infrastructure_set_request {
    391	struct hostif_hdr header;
    392	struct hostif_request request;
    393	struct ssid ssid;
    394	__le16 beacon_lost_count;
    395	__le16 auth_type;
    396	struct channel_list channel_list;
    397	u8 bssid[ETH_ALEN];
    398} __packed;
    399
    400/**
    401 * struct hostif_adhoc_set_request
    402 * @capability: bit5  : preamble
    403 *              bit6  : pbcc - Not supported always 0
    404 *              bit10 : ShortSlotTime
    405 *              bit13 : DSSS-OFDM - Not supported always 0
    406 */
    407struct hostif_adhoc_set_request {
    408	struct hostif_hdr header;
    409	struct hostif_request request;
    410	struct ssid ssid;
    411	__le16 channel;
    412} __packed;
    413
    414/**
    415 * struct hostif_adhoc_set2_request
    416 * @capability: bit5  : preamble
    417 *              bit6  : pbcc - Not supported always 0
    418 *              bit10 : ShortSlotTime
    419 *              bit13 : DSSS-OFDM - Not supported always 0
    420 */
    421struct hostif_adhoc_set2_request {
    422	struct hostif_hdr header;
    423	struct hostif_request request;
    424	__le16 reserved;
    425	struct ssid ssid;
    426	struct channel_list channel_list;
    427	u8 bssid[ETH_ALEN];
    428} __packed;
    429
    430struct association_request {
    431	u8 type;
    432	u8 pad;
    433	__le16 capability;
    434	__le16 listen_interval;
    435	u8 ap_address[6];
    436	__le16 req_ies_size;
    437} __packed;
    438
    439struct association_response {
    440	u8 type;
    441	u8 pad;
    442	__le16 capability;
    443	__le16 status;
    444	__le16 association_id;
    445	__le16 resp_ies_size;
    446} __packed;
    447
    448struct hostif_bss_scan_request {
    449	struct hostif_hdr header;
    450	u8 scan_type;
    451#define ACTIVE_SCAN  0
    452#define PASSIVE_SCAN 1
    453	u8 pad[3];
    454	__le32 ch_time_min;
    455	__le32 ch_time_max;
    456	struct channel_list channel_list;
    457	struct ssid ssid;
    458} __packed;
    459
    460struct hostif_phy_information_request {
    461	struct hostif_hdr header;
    462	__le16 type;
    463#define NORMAL_TYPE	0
    464#define TIME_TYPE	1
    465	__le16 time;	/* unit 100ms */
    466} __packed;
    467
    468enum sleep_mode_type {
    469	SLP_ACTIVE,
    470	SLP_SLEEP
    471};
    472
    473struct hostif_sleep_request {
    474	struct hostif_hdr header;
    475} __packed;
    476
    477struct hostif_mic_failure_request {
    478	struct hostif_hdr header;
    479	__le16 failure_count;
    480	__le16 timer;
    481} __packed;
    482
    483#define BASIC_RATE	0x80
    484#define RATE_MASK	0x7F
    485
    486#define TX_RATE_AUTO      0xff
    487#define TX_RATE_1M_FIXED  0
    488#define TX_RATE_2M_FIXED  1
    489#define TX_RATE_1_2M_AUTO 2
    490#define TX_RATE_5M_FIXED  3
    491#define TX_RATE_11M_FIXED 4
    492
    493#define TX_RATE_FULL_AUTO	0
    494#define TX_RATE_11_AUTO		1
    495#define TX_RATE_11B_AUTO	2
    496#define TX_RATE_11BG_AUTO	3
    497#define TX_RATE_MANUAL_AUTO	4
    498#define TX_RATE_FIXED		5
    499
    500/* 11b rate */
    501#define TX_RATE_1M	((u8)(10 / 5))	/* 11b 11g basic rate */
    502#define TX_RATE_2M	((u8)(20 / 5))	/* 11b 11g basic rate */
    503#define TX_RATE_5M	((u8)(55 / 5))	/* 11g basic rate */
    504#define TX_RATE_11M	((u8)(110 / 5))	/* 11g basic rate */
    505
    506/* 11g rate */
    507#define TX_RATE_6M	((u8)(60 / 5))	/* 11g basic rate */
    508#define TX_RATE_12M	((u8)(120 / 5))	/* 11g basic rate */
    509#define TX_RATE_24M	((u8)(240 / 5))	/* 11g basic rate */
    510#define TX_RATE_9M	((u8)(90 / 5))
    511#define TX_RATE_18M	((u8)(180 / 5))
    512#define TX_RATE_36M	((u8)(360 / 5))
    513#define TX_RATE_48M	((u8)(480 / 5))
    514#define TX_RATE_54M	((u8)(540 / 5))
    515
    516static inline bool is_11b_rate(u8 rate)
    517{
    518	return (((rate & RATE_MASK) == TX_RATE_1M) ||
    519		((rate & RATE_MASK) == TX_RATE_2M) ||
    520		((rate & RATE_MASK) == TX_RATE_5M) ||
    521		((rate & RATE_MASK) == TX_RATE_11M));
    522}
    523
    524static inline bool is_ofdm_rate(u8 rate)
    525{
    526	return (((rate & RATE_MASK) == TX_RATE_6M)  ||
    527		((rate & RATE_MASK) == TX_RATE_12M) ||
    528		((rate & RATE_MASK) == TX_RATE_24M) ||
    529		((rate & RATE_MASK) == TX_RATE_9M)  ||
    530		((rate & RATE_MASK) == TX_RATE_18M) ||
    531		((rate & RATE_MASK) == TX_RATE_36M) ||
    532		((rate & RATE_MASK) == TX_RATE_48M) ||
    533		((rate & RATE_MASK) == TX_RATE_54M));
    534}
    535
    536static inline bool is_11bg_rate(u8 rate)
    537{
    538	return (is_11b_rate(rate) || is_ofdm_rate(rate));
    539}
    540
    541static inline bool is_ofdm_ext_rate(u8 rate)
    542{
    543	return (((rate & RATE_MASK) == TX_RATE_9M)  ||
    544		((rate & RATE_MASK) == TX_RATE_18M) ||
    545		((rate & RATE_MASK) == TX_RATE_36M) ||
    546		((rate & RATE_MASK) == TX_RATE_48M) ||
    547		((rate & RATE_MASK) == TX_RATE_54M));
    548}
    549
    550enum connect_status_type {
    551	CONNECT_STATUS,
    552	DISCONNECT_STATUS
    553};
    554
    555enum preamble_type {
    556	LONG_PREAMBLE,
    557	SHORT_PREAMBLE
    558};
    559
    560enum multicast_filter_type {
    561	MCAST_FILTER_MCAST,
    562	MCAST_FILTER_MCASTALL,
    563	MCAST_FILTER_PROMISC,
    564};
    565
    566#define NIC_MAX_MCAST_LIST 32
    567
    568#define HIF_EVENT_MASK 0xE800
    569
    570static inline bool is_hif_ind(unsigned short event)
    571{
    572	return (((event & HIF_EVENT_MASK) == HIF_EVENT_MASK) &&
    573		(((event & ~HIF_EVENT_MASK) == 0x0001) ||
    574		 ((event & ~HIF_EVENT_MASK) == 0x0006) ||
    575		 ((event & ~HIF_EVENT_MASK) == 0x000C) ||
    576		 ((event & ~HIF_EVENT_MASK) == 0x0011) ||
    577		 ((event & ~HIF_EVENT_MASK) == 0x0012)));
    578}
    579
    580static inline bool is_hif_conf(unsigned short event)
    581{
    582	return (((event & HIF_EVENT_MASK) == HIF_EVENT_MASK) &&
    583		((event & ~HIF_EVENT_MASK) > 0x0000) &&
    584		((event & ~HIF_EVENT_MASK) < 0x0012) &&
    585		!is_hif_ind(event));
    586}
    587
    588#ifdef __KERNEL__
    589
    590#include "ks_wlan.h"
    591
    592/* function prototype */
    593int hostif_data_request(struct ks_wlan_private *priv, struct sk_buff *skb);
    594void hostif_receive(struct ks_wlan_private *priv, unsigned char *p,
    595		    unsigned int size);
    596void hostif_sme_enqueue(struct ks_wlan_private *priv, u16 event);
    597int hostif_init(struct ks_wlan_private *priv);
    598void hostif_exit(struct ks_wlan_private *priv);
    599int ks_wlan_hw_tx(struct ks_wlan_private *priv, void *p, unsigned long size,
    600		  void (*complete_handler)(struct ks_wlan_private *priv,
    601					   struct sk_buff *skb),
    602		  struct sk_buff *skb);
    603void send_packet_complete(struct ks_wlan_private *priv, struct sk_buff *skb);
    604
    605void ks_wlan_hw_wakeup_request(struct ks_wlan_private *priv);
    606int ks_wlan_hw_power_save(struct ks_wlan_private *priv);
    607
    608#define KS7010_SIZE_ALIGNMENT	32
    609
    610static inline size_t hif_align_size(size_t size)
    611{
    612	return ALIGN(size, KS7010_SIZE_ALIGNMENT);
    613}
    614
    615#endif /* __KERNEL__ */
    616
    617#endif /* _KS_HOSTIF_H_ */