linux/drivers/staging/ks7010/ks_hostif.h
<<
>>
Prefs
   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_ */
 618