mirror of
git://projects.qi-hardware.com/openwrt-packages.git
synced 2024-11-18 01:11:32 +02:00
649 lines
19 KiB
C
649 lines
19 KiB
C
/*
|
|
* Driver for KeyStream wireless LAN
|
|
*
|
|
* ks_hostif.h
|
|
* $Id: ks_hostif.h 994 2009-09-14 01:51:16Z sekine $
|
|
*
|
|
* Copyright (c) 2005-2008 KeyStream Corp.
|
|
* Copyright (C) 2009 Renesas Technology Corp.
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it undr the terms of the GNU General Public License version 2 as
|
|
* published by the Free Sotware Foundation.
|
|
*/
|
|
|
|
#ifndef _KS_HOSTIF_H_
|
|
#define _KS_HOSTIF_H_
|
|
/*
|
|
* HOST-MAC I/F events
|
|
*/
|
|
#define HIF_DATA_REQ 0xE001
|
|
#define HIF_DATA_IND 0xE801
|
|
#define HIF_MIB_GET_REQ 0xE002
|
|
#define HIF_MIB_GET_CONF 0xE802
|
|
#define HIF_MIB_SET_REQ 0xE003
|
|
#define HIF_MIB_SET_CONF 0xE803
|
|
#define HIF_POWERMGT_REQ 0xE004
|
|
#define HIF_POWERMGT_CONF 0xE804
|
|
#define HIF_START_REQ 0xE005
|
|
#define HIF_START_CONF 0xE805
|
|
#define HIF_CONNECT_IND 0xE806
|
|
#define HIF_STOP_REQ 0xE006
|
|
#define HIF_STOP_CONF 0xE807
|
|
#define HIF_PS_ADH_SET_REQ 0xE007
|
|
#define HIF_PS_ADH_SET_CONF 0xE808
|
|
#define HIF_INFRA_SET_REQ 0xE008
|
|
#define HIF_INFRA_SET_CONF 0xE809
|
|
#define HIF_ADH_SET_REQ 0xE009
|
|
#define HIF_ADH_SET_CONF 0xE80A
|
|
#define HIF_AP_SET_REQ 0xE00A
|
|
#define HIF_AP_SET_CONF 0xE80B
|
|
#define HIF_ASSOC_INFO_IND 0xE80C
|
|
#define HIF_MIC_FAILURE_REQ 0xE00B
|
|
#define HIF_MIC_FAILURE_CONF 0xE80D
|
|
#define HIF_SCAN_REQ 0xE00C
|
|
#define HIF_SCAN_CONF 0xE80E
|
|
#define HIF_PHY_INFO_REQ 0xE00D
|
|
#define HIF_PHY_INFO_CONF 0xE80F
|
|
#define HIF_SLEEP_REQ 0xE00E
|
|
#define HIF_SLEEP_CONF 0xE810
|
|
#define HIF_PHY_INFO_IND 0xE811
|
|
#define HIF_SCAN_IND 0xE812
|
|
#define HIF_INFRA_SET2_REQ 0xE00F
|
|
#define HIF_INFRA_SET2_CONF 0xE813
|
|
#define HIF_ADH_SET2_REQ 0xE010
|
|
#define HIF_ADH_SET2_CONF 0xE814
|
|
|
|
#define HIF_REQ_MAX 0xE010
|
|
|
|
/*
|
|
* HOST-MAC I/F data structure
|
|
* Byte alignmet Little Endian
|
|
*/
|
|
|
|
struct hostif_hdr {
|
|
uint16_t size;
|
|
uint16_t event;
|
|
} __attribute__((packed));
|
|
|
|
struct hostif_data_request_t {
|
|
struct hostif_hdr header;
|
|
uint16_t auth_type;
|
|
#define TYPE_DATA 0x0000
|
|
#define TYPE_AUTH 0x0001
|
|
uint16_t reserved;
|
|
uint8_t data[0];
|
|
} __attribute__((packed));
|
|
|
|
struct hostif_data_indication_t {
|
|
struct hostif_hdr header;
|
|
uint16_t auth_type;
|
|
/* #define TYPE_DATA 0x0000 */
|
|
#define TYPE_PMK1 0x0001
|
|
#define TYPE_GMK1 0x0002
|
|
#define TYPE_GMK2 0x0003
|
|
uint16_t reserved;
|
|
uint8_t data[0];
|
|
} __attribute__((packed));
|
|
|
|
#define CHANNEL_LIST_MAX_SIZE 14
|
|
struct channel_list_t {
|
|
uint8_t size;
|
|
uint8_t body[CHANNEL_LIST_MAX_SIZE];
|
|
uint8_t pad;
|
|
} __attribute__((packed));
|
|
|
|
/* MIB Attribute */
|
|
#define DOT11_MAC_ADDRESS 0x21010100 /* MAC Address (R) */
|
|
#define DOT11_PRODUCT_VERSION 0x31024100 /* FirmWare Version (R)*/
|
|
#define DOT11_RTS_THRESHOLD 0x21020100 /* RTS Threshold (R/W) */
|
|
#define DOT11_FRAGMENTATION_THRESHOLD 0x21050100 /* Fragment Threshold (R/W) */
|
|
#define DOT11_PRIVACY_INVOKED 0x15010100 /* WEP ON/OFF (W) */
|
|
#define DOT11_WEP_DEFAULT_KEY_ID 0x15020100 /* WEP Index (W) */
|
|
#define DOT11_WEP_DEFAULT_KEY_VALUE1 0x13020101 /* WEP Key#1(TKIP AES: PairwiseTemporalKey) (W) */
|
|
#define DOT11_WEP_DEFAULT_KEY_VALUE2 0x13020102 /* WEP Key#2(TKIP AES: GroupKey1) (W) */
|
|
#define DOT11_WEP_DEFAULT_KEY_VALUE3 0x13020103 /* WEP Key#3(TKIP AES: GroupKey2) (W) */
|
|
#define DOT11_WEP_DEFAULT_KEY_VALUE4 0x13020104 /* WEP Key#4 (W) */
|
|
#define DOT11_WEP_LIST 0x13020100 /* WEP LIST */
|
|
#define DOT11_DESIRED_SSID 0x11090100 /* SSID */
|
|
#define DOT11_CURRENT_CHANNEL 0x45010100 /* channel set */
|
|
#define DOT11_OPERATION_RATE_SET 0x11110100 /* rate set */
|
|
|
|
#define LOCAL_AP_SEARCH_INTEAVAL 0xF1010100 /* AP search interval (R/W) */
|
|
#define LOCAL_CURRENTADDRESS 0xF1050100 /* MAC Adress change (W) */
|
|
#define LOCAL_MULTICAST_ADDRESS 0xF1060100 /* Multicast Adress (W) */
|
|
#define LOCAL_MULTICAST_FILTER 0xF1060200 /* Multicast Adress Filter enable/disable (W) */
|
|
#define LOCAL_SEARCHED_AP_LIST 0xF1030100 /* AP list (R) */
|
|
#define LOCAL_LINK_AP_STATUS 0xF1040100 /* Link AP status (R) */
|
|
#define LOCAL_PACKET_STATISTICS 0xF1020100 /* tx,rx packets statistics */
|
|
#define LOCAL_AP_SCAN_LIST_TYPE_SET 0xF1030200 /* AP_SCAN_LIST_TYPE */
|
|
|
|
#define DOT11_RSN_ENABLED 0x15070100 /* WPA enable/disable (W) */
|
|
#define LOCAL_RSN_MODE 0x56010100 /* RSN mode WPA/WPA2 (W) */
|
|
#define DOT11_RSN_CONFIG_MULTICAST_CIPHER 0x51040100 /* GroupKeyCipherSuite (W) */
|
|
#define DOT11_RSN_CONFIG_UNICAST_CIPHER 0x52020100 /* PairwiseKeyCipherSuite (W) */
|
|
#define DOT11_RSN_CONFIG_AUTH_SUITE 0x53020100 /* AuthenticationKeyManagementSuite (W) */
|
|
#define DOT11_RSN_CONFIG_VERSION 0x51020100 /* RSN version (W) */
|
|
#define LOCAL_RSN_CONFIG_ALL 0x5F010100 /* RSN CONFIG ALL (W) */
|
|
#define DOT11_PMK_TSC 0x55010100 /* PMK_TSC (W) */
|
|
#define DOT11_GMK1_TSC 0x55010101 /* GMK1_TSC (W) */
|
|
#define DOT11_GMK2_TSC 0x55010102 /* GMK2_TSC (W) */
|
|
#define DOT11_GMK3_TSC 0x55010103 /* GMK3_TSC */
|
|
#define LOCAL_PMK 0x58010100 /* Pairwise Master Key cache (W) */
|
|
|
|
#define LOCAL_REGION 0xF10A0100 /* Region setting */
|
|
|
|
#ifdef WPS
|
|
#define LOCAL_WPS_ENABLE 0xF10B0100 /* WiFi Protected Setup */
|
|
#define LOCAL_WPS_PROBE_REQ 0xF10C0100 /* WPS Probe Request */
|
|
#endif /* WPS */
|
|
|
|
#define LOCAL_GAIN 0xF10D0100 /* Carrer sense threshold for demo ato show */
|
|
#define LOCAL_EEPROM_SUM 0xF10E0100 /* EEPROM checksum information */
|
|
|
|
struct hostif_mib_get_request_t {
|
|
struct hostif_hdr header;
|
|
uint32_t mib_attribute;
|
|
} __attribute__((packed));
|
|
|
|
|
|
struct hostif_mib_value_t {
|
|
uint16_t size;
|
|
uint16_t type;
|
|
#define MIB_VALUE_TYPE_NULL 0
|
|
#define MIB_VALUE_TYPE_INT 1
|
|
#define MIB_VALUE_TYPE_BOOL 2
|
|
#define MIB_VALUE_TYPE_COUNT32 3
|
|
#define MIB_VALUE_TYPE_OSTRING 4
|
|
uint8_t body[0];
|
|
} __attribute__((packed));
|
|
|
|
struct hostif_mib_get_confirm_t {
|
|
struct hostif_hdr header;
|
|
uint32_t mib_status;
|
|
#define MIB_SUCCESS 0
|
|
#define MIB_INVALID 1
|
|
#define MIB_READ_ONLY 2
|
|
#define MIB_WRITE_ONLY 3
|
|
uint32_t mib_attribute;
|
|
struct hostif_mib_value_t mib_value;
|
|
} __attribute__((packed));
|
|
|
|
struct hostif_mib_set_request_t {
|
|
struct hostif_hdr header;
|
|
uint32_t mib_attribute;
|
|
struct hostif_mib_value_t mib_value;
|
|
} __attribute__((packed));
|
|
|
|
struct hostif_mib_set_confirm_t {
|
|
struct hostif_hdr header;
|
|
uint32_t mib_status;
|
|
uint32_t mib_attribute;
|
|
} __attribute__((packed));
|
|
|
|
struct hostif_power_mngmt_request_t {
|
|
struct hostif_hdr header;
|
|
uint32_t mode;
|
|
#define POWER_ACTIVE 1
|
|
#define POWER_SAVE 2
|
|
uint32_t wake_up;
|
|
#define SLEEP_FALSE 0
|
|
#define SLEEP_TRUE 1 /* not used */
|
|
uint32_t receiveDTIMs;
|
|
#define DTIM_FALSE 0
|
|
#define DTIM_TRUE 1
|
|
} __attribute__((packed));
|
|
|
|
/* power management mode */
|
|
enum {
|
|
POWMGT_ACTIVE_MODE=0,
|
|
POWMGT_SAVE1_MODE,
|
|
POWMGT_SAVE2_MODE
|
|
};
|
|
|
|
#define RESULT_SUCCESS 0
|
|
#define RESULT_INVALID_PARAMETERS 1
|
|
#define RESULT_NOT_SUPPORTED 2
|
|
/* #define RESULT_ALREADY_RUNNING 3 */
|
|
#define RESULT_ALREADY_RUNNING 7
|
|
|
|
struct hostif_power_mngmt_confirm_t {
|
|
struct hostif_hdr header;
|
|
uint16_t result_code;
|
|
} __attribute__((packed));
|
|
|
|
struct hostif_start_request_t {
|
|
struct hostif_hdr header;
|
|
uint16_t mode;
|
|
#define MODE_PSEUDO_ADHOC 0
|
|
#define MODE_INFRASTRUCTURE 1
|
|
#define MODE_AP 2 /* not used */
|
|
#define MODE_ADHOC 3
|
|
} __attribute__((packed));
|
|
|
|
struct hostif_start_confirm_t {
|
|
struct hostif_hdr header;
|
|
uint16_t result_code;
|
|
} __attribute__((packed));
|
|
|
|
#define SSID_MAX_SIZE 32
|
|
struct ssid_t {
|
|
uint8_t size;
|
|
uint8_t body[SSID_MAX_SIZE];
|
|
uint8_t ssid_pad;
|
|
} __attribute__((packed));
|
|
|
|
#define RATE_SET_MAX_SIZE 16
|
|
struct rate_set8_t {
|
|
uint8_t size;
|
|
uint8_t body[8];
|
|
uint8_t rate_pad;
|
|
} __attribute__((packed));
|
|
|
|
struct FhParms_t {
|
|
uint16_t dwellTime;
|
|
uint8_t hopSet;
|
|
uint8_t hopPattern;
|
|
uint8_t hopIndex;
|
|
} __attribute__((packed));
|
|
|
|
struct DsParms_t {
|
|
uint8_t channel;
|
|
} __attribute__((packed));
|
|
|
|
struct CfParms_t {
|
|
uint8_t count;
|
|
uint8_t period;
|
|
uint16_t maxDuration;
|
|
uint16_t durRemaining;
|
|
} __attribute__((packed));
|
|
|
|
struct IbssParms_t {
|
|
uint16_t atimWindow;
|
|
} __attribute__((packed));
|
|
|
|
|
|
struct rsn_t {
|
|
uint8_t size;
|
|
#define RSN_BODY_SIZE 64
|
|
uint8_t body[RSN_BODY_SIZE];
|
|
} __attribute__((packed));
|
|
|
|
struct ErpParams_t {
|
|
uint8_t erp_info;
|
|
} __attribute__((packed));
|
|
|
|
struct rate_set16_t{
|
|
uint8_t size;
|
|
uint8_t body[16];
|
|
uint8_t rate_pad;
|
|
} __attribute__((packed));
|
|
|
|
struct ap_info_t{
|
|
uint8_t bssid[6]; /* +00 */
|
|
uint8_t rssi; /* +06 */
|
|
uint8_t sq; /* +07 */
|
|
uint8_t noise; /* +08 */
|
|
uint8_t pad0; /* +09 */
|
|
uint16_t beacon_period; /* +10 */
|
|
uint16_t capability; /* +12 */
|
|
#define BSS_CAP_ESS (1<<0)
|
|
#define BSS_CAP_IBSS (1<<1)
|
|
#define BSS_CAP_CF_POLABLE (1<<2)
|
|
#define BSS_CAP_CF_POLL_REQ (1<<3)
|
|
#define BSS_CAP_PRIVACY (1<<4)
|
|
#define BSS_CAP_SHORT_PREAMBLE (1<<5)
|
|
#define BSS_CAP_PBCC (1<<6)
|
|
#define BSS_CAP_CHANNEL_AGILITY (1<<7)
|
|
#define BSS_CAP_SHORT_SLOT_TIME (1<<10)
|
|
#define BSS_CAP_DSSS_OFDM (1<<13)
|
|
uint8_t frame_type; /* +14 */
|
|
uint8_t ch_info; /* +15 */
|
|
#define FRAME_TYPE_BEACON 0x80
|
|
#define FRAME_TYPE_PROBE_RESP 0x50
|
|
uint16_t body_size; /* +16 */
|
|
uint8_t body[1024]; /* +18 */
|
|
/* +1032 */
|
|
} __attribute__((packed));
|
|
|
|
struct link_ap_info_t{
|
|
uint8_t bssid[6]; /* +00 */
|
|
uint8_t rssi; /* +06 */
|
|
uint8_t sq; /* +07 */
|
|
uint8_t noise; /* +08 */
|
|
uint8_t pad0; /* +09 */
|
|
uint16_t beacon_period; /* +10 */
|
|
uint16_t capability; /* +12 */
|
|
struct rate_set8_t rate_set; /* +14 */
|
|
struct FhParms_t fh_parameter; /* +24 */
|
|
struct DsParms_t ds_parameter; /* +29 */
|
|
struct CfParms_t cf_parameter; /* +30 */
|
|
struct IbssParms_t ibss_parameter; /* +36 */
|
|
struct ErpParams_t erp_parameter; /* +38 */
|
|
uint8_t pad1; /* +39 */
|
|
struct rate_set8_t ext_rate_set; /* +40 */
|
|
uint8_t DTIM_period; /* +50 */
|
|
uint8_t rsn_mode; /* +51 */
|
|
#define RSN_MODE_NONE 0
|
|
#define RSN_MODE_WPA 1
|
|
#define RSN_MODE_WPA2 2
|
|
struct {
|
|
uint8_t size; /* +52 */
|
|
uint8_t body[128]; /* +53 */
|
|
} __attribute__((packed)) rsn;
|
|
} __attribute__((packed));
|
|
|
|
struct hostif_connect_indication_t {
|
|
struct hostif_hdr header;
|
|
uint16_t connect_code;
|
|
#define RESULT_CONNECT 0
|
|
#define RESULT_DISCONNECT 1
|
|
struct link_ap_info_t link_ap_info;
|
|
} __attribute__((packed));
|
|
|
|
struct hostif_stop_request_t {
|
|
struct hostif_hdr header;
|
|
} __attribute__((packed));
|
|
|
|
struct hostif_stop_confirm_t {
|
|
struct hostif_hdr header;
|
|
uint16_t result_code;
|
|
} __attribute__((packed));
|
|
|
|
struct hostif_ps_adhoc_set_request_t {
|
|
struct hostif_hdr header;
|
|
uint16_t phy_type;
|
|
#define D_11B_ONLY_MODE 0
|
|
#define D_11G_ONLY_MODE 1
|
|
#define D_11BG_COMPATIBLE_MODE 2
|
|
#define D_11A_ONLY_MODE 3
|
|
uint16_t cts_mode;
|
|
#define CTS_MODE_FALSE 0
|
|
#define CTS_MODE_TRUE 1
|
|
uint16_t channel;
|
|
struct rate_set16_t rate_set;
|
|
uint16_t capability; /* bit5:preamble bit6:pbcc pbcc not supported always 0
|
|
* bit10:ShortSlotTime bit13:DSSS-OFDM DSSS-OFDM not supported always 0 */
|
|
uint16_t scan_type;
|
|
} __attribute__((packed));
|
|
|
|
struct hostif_ps_adhoc_set_confirm_t {
|
|
struct hostif_hdr header;
|
|
uint16_t result_code;
|
|
} __attribute__((packed));
|
|
|
|
struct hostif_infrastructure_set_request_t {
|
|
struct hostif_hdr header;
|
|
uint16_t phy_type;
|
|
uint16_t cts_mode;
|
|
struct rate_set16_t rate_set;
|
|
struct ssid_t ssid;
|
|
uint16_t capability; /* bit5:preamble bit6:pbcc pbcc not supported always 0
|
|
* bit10:ShortSlotTime bit13:DSSS-OFDM DSSS-OFDM not supported always 0 */
|
|
uint16_t beacon_lost_count;
|
|
uint16_t auth_type;
|
|
#define AUTH_TYPE_OPEN_SYSTEM 0
|
|
#define AUTH_TYPE_SHARED_KEY 1
|
|
struct channel_list_t channel_list;
|
|
uint16_t scan_type;
|
|
} __attribute__((packed));
|
|
|
|
struct hostif_infrastructure_set2_request_t {
|
|
struct hostif_hdr header;
|
|
uint16_t phy_type;
|
|
uint16_t cts_mode;
|
|
struct rate_set16_t rate_set;
|
|
struct ssid_t ssid;
|
|
uint16_t capability; /* bit5:preamble bit6:pbcc pbcc not supported always 0
|
|
* bit10:ShortSlotTime bit13:DSSS-OFDM DSSS-OFDM not supported always 0 */
|
|
uint16_t beacon_lost_count;
|
|
uint16_t auth_type;
|
|
#define AUTH_TYPE_OPEN_SYSTEM 0
|
|
#define AUTH_TYPE_SHARED_KEY 1
|
|
struct channel_list_t channel_list;
|
|
uint16_t scan_type;
|
|
uint8_t bssid[ETH_ALEN];
|
|
} __attribute__((packed));
|
|
|
|
|
|
struct hostif_infrastructure_set_confirm_t {
|
|
struct hostif_hdr header;
|
|
uint16_t result_code;
|
|
} __attribute__((packed));
|
|
|
|
struct hostif_adhoc_set_request_t {
|
|
struct hostif_hdr header;
|
|
uint16_t phy_type;
|
|
uint16_t cts_mode;
|
|
uint16_t channel;
|
|
struct rate_set16_t rate_set;
|
|
struct ssid_t ssid;
|
|
uint16_t capability; /* bit5:preamble bit6:pbcc pbcc not supported always 0
|
|
* bit10:ShortSlotTime bit13:DSSS-OFDM DSSS-OFDM not supported always 0 */
|
|
uint16_t scan_type;
|
|
} __attribute__((packed));
|
|
|
|
struct hostif_adhoc_set2_request_t {
|
|
struct hostif_hdr header;
|
|
uint16_t phy_type;
|
|
uint16_t cts_mode;
|
|
uint16_t reserved;
|
|
struct rate_set16_t rate_set;
|
|
struct ssid_t ssid;
|
|
uint16_t capability; /* bit5:preamble bit6:pbcc pbcc not supported always 0
|
|
* bit10:ShortSlotTime bit13:DSSS-OFDM DSSS-OFDM not supported always 0 */
|
|
uint16_t scan_type;
|
|
struct channel_list_t channel_list;
|
|
uint8_t bssid[ETH_ALEN];
|
|
} __attribute__((packed));
|
|
|
|
struct hostif_adhoc_set_confirm_t {
|
|
struct hostif_hdr header;
|
|
uint16_t result_code;
|
|
} __attribute__((packed));
|
|
|
|
|
|
struct last_associate_t {
|
|
uint8_t type;
|
|
uint8_t status;
|
|
} __attribute__((packed));
|
|
|
|
struct association_request_t {
|
|
uint8_t type;
|
|
#define FRAME_TYPE_ASSOC_REQ 0x00
|
|
#define FRAME_TYPE_REASSOC_REQ 0x20
|
|
uint8_t pad;
|
|
uint16_t capability;
|
|
uint16_t listen_interval;
|
|
uint8_t ap_address[6];
|
|
uint16_t reqIEs_size;
|
|
} __attribute__((packed));
|
|
|
|
struct association_response_t {
|
|
uint8_t type;
|
|
#define FRAME_TYPE_ASSOC_RESP 0x10
|
|
#define FRAME_TYPE_REASSOC_RESP 0x30
|
|
uint8_t pad;
|
|
uint16_t capability;
|
|
uint16_t status;
|
|
uint16_t association_id;
|
|
uint16_t respIEs_size;
|
|
} __attribute__((packed));
|
|
|
|
struct hostif_associate_indication_t {
|
|
struct hostif_hdr header;
|
|
struct association_request_t assoc_req;
|
|
struct association_response_t assoc_resp;
|
|
/* followed by (reqIEs_size + respIEs_size) octets of data */
|
|
/* reqIEs data *//* respIEs data */
|
|
} __attribute__((packed));
|
|
|
|
struct hostif_bss_scan_request_t {
|
|
struct hostif_hdr header;
|
|
uint8_t scan_type;
|
|
#define ACTIVE_SCAN 0
|
|
#define PASSIVE_SCAN 1
|
|
uint8_t pad[3];
|
|
uint32_t ch_time_min;
|
|
uint32_t ch_time_max;
|
|
struct channel_list_t channel_list;
|
|
struct ssid_t ssid;
|
|
} __attribute__((packed));
|
|
|
|
struct hostif_bss_scan_confirm_t {
|
|
struct hostif_hdr header;
|
|
uint16_t result_code;
|
|
uint16_t reserved;
|
|
} __attribute__((packed));
|
|
|
|
struct hostif_phy_information_request_t {
|
|
struct hostif_hdr header;
|
|
uint16_t type;
|
|
#define NORMAL_TYPE 0
|
|
#define TIME_TYPE 1
|
|
uint16_t time; /* unit 100ms */
|
|
} __attribute__((packed));
|
|
|
|
struct hostif_phy_information_confirm_t {
|
|
struct hostif_hdr header;
|
|
uint8_t rssi;
|
|
uint8_t sq;
|
|
uint8_t noise;
|
|
uint8_t link_speed;
|
|
uint32_t tx_frame;
|
|
uint32_t rx_frame;
|
|
uint32_t tx_error;
|
|
uint32_t rx_error;
|
|
} __attribute__((packed));
|
|
|
|
/* sleep mode */
|
|
#define SLP_ACTIVE 0
|
|
#define SLP_SLEEP 1
|
|
struct hostif_sleep_request_t {
|
|
struct hostif_hdr header;
|
|
} __attribute__((packed));
|
|
|
|
struct hostif_sleep_confirm_t {
|
|
struct hostif_hdr header;
|
|
uint16_t result_code;
|
|
} __attribute__((packed));
|
|
|
|
struct hostif_mic_failure_request_t {
|
|
struct hostif_hdr header;
|
|
uint16_t failure_count;
|
|
uint16_t timer;
|
|
} __attribute__((packed));
|
|
|
|
struct hostif_mic_failure_confirm_t {
|
|
struct hostif_hdr header;
|
|
uint16_t result_code;
|
|
} __attribute__((packed));
|
|
|
|
#define BASIC_RATE 0x80
|
|
#define RATE_MASK 0x7F
|
|
|
|
#define TX_RATE_AUTO 0xff
|
|
#define TX_RATE_1M_FIXED 0
|
|
#define TX_RATE_2M_FIXED 1
|
|
#define TX_RATE_1_2M_AUTO 2
|
|
#define TX_RATE_5M_FIXED 3
|
|
#define TX_RATE_11M_FIXED 4
|
|
|
|
#define TX_RATE_FULL_AUTO 0
|
|
#define TX_RATE_11_AUTO 1
|
|
#define TX_RATE_11B_AUTO 2
|
|
#define TX_RATE_11BG_AUTO 3
|
|
#define TX_RATE_MANUAL_AUTO 4
|
|
#define TX_RATE_FIXED 5
|
|
|
|
/* 11b rate */
|
|
#define TX_RATE_1M (uint8_t)(10/5) /* 11b 11g basic rate */
|
|
#define TX_RATE_2M (uint8_t)(20/5) /* 11b 11g basic rate */
|
|
#define TX_RATE_5M (uint8_t)(55/5) /* 11g basic rate */
|
|
#define TX_RATE_11M (uint8_t)(110/5) /* 11g basic rate */
|
|
|
|
/* 11g rate */
|
|
#define TX_RATE_6M (uint8_t)(60/5) /* 11g basic rate */
|
|
#define TX_RATE_12M (uint8_t)(120/5) /* 11g basic rate */
|
|
#define TX_RATE_24M (uint8_t)(240/5) /* 11g basic rate */
|
|
#define TX_RATE_9M (uint8_t)(90/5)
|
|
#define TX_RATE_18M (uint8_t)(180/5)
|
|
#define TX_RATE_36M (uint8_t)(360/5)
|
|
#define TX_RATE_48M (uint8_t)(480/5)
|
|
#define TX_RATE_54M (uint8_t)(540/5)
|
|
|
|
#define IS_11B_RATE(A) (((A&RATE_MASK)==TX_RATE_1M)||((A&RATE_MASK)==TX_RATE_2M)||\
|
|
((A&RATE_MASK)==TX_RATE_5M)||((A&RATE_MASK)==TX_RATE_11M))
|
|
|
|
#define IS_OFDM_RATE(A) (((A&RATE_MASK)==TX_RATE_6M)||((A&RATE_MASK)==TX_RATE_12M)||\
|
|
((A&RATE_MASK)==TX_RATE_24M)||((A&RATE_MASK)==TX_RATE_9M)||\
|
|
((A&RATE_MASK)==TX_RATE_18M)||((A&RATE_MASK)==TX_RATE_36M)||\
|
|
((A&RATE_MASK)==TX_RATE_48M)||((A&RATE_MASK)==TX_RATE_54M))
|
|
|
|
#define IS_11BG_RATE(A) (IS_11B_RATE(A)||IS_OFDM_RATE(A))
|
|
|
|
#define IS_OFDM_EXT_RATE(A) (((A&RATE_MASK)==TX_RATE_9M)||((A&RATE_MASK)==TX_RATE_18M)||\
|
|
((A&RATE_MASK)==TX_RATE_36M)||((A&RATE_MASK)==TX_RATE_48M)||\
|
|
((A&RATE_MASK)==TX_RATE_54M))
|
|
|
|
enum {
|
|
CONNECT_STATUS=0,
|
|
DISCONNECT_STATUS
|
|
};
|
|
|
|
/* preamble type */
|
|
enum {
|
|
LONG_PREAMBLE=0,
|
|
SHORT_PREAMBLE
|
|
};
|
|
|
|
/* multicast filter */
|
|
#define MCAST_FILTER_MCAST 0
|
|
#define MCAST_FILTER_MCASTALL 1
|
|
#define MCAST_FILTER_PROMISC 2
|
|
|
|
#define NIC_MAX_MCAST_LIST 32
|
|
|
|
/* macro function */
|
|
#define HIF_EVENT_MASK 0xE800
|
|
#define IS_HIF_IND(_EVENT) ((_EVENT&HIF_EVENT_MASK)==0xE800 && \
|
|
((_EVENT&~HIF_EVENT_MASK)==0x0001 || \
|
|
(_EVENT&~HIF_EVENT_MASK)==0x0006 || \
|
|
(_EVENT&~HIF_EVENT_MASK)==0x000C || \
|
|
(_EVENT&~HIF_EVENT_MASK)==0x0011 || \
|
|
(_EVENT&~HIF_EVENT_MASK)==0x0012))
|
|
|
|
#define IS_HIF_CONF(_EVENT) ((_EVENT&HIF_EVENT_MASK)==0xE800 && \
|
|
(_EVENT&~HIF_EVENT_MASK)>0x0000 && \
|
|
(_EVENT&~HIF_EVENT_MASK)<0x0012 && \
|
|
!IS_HIF_IND(_EVENT) )
|
|
|
|
#ifdef __KERNEL__
|
|
|
|
#include "ks_wlan.h"
|
|
|
|
/* function prototype */
|
|
extern int hostif_data_request( ks_wlan_private *priv, struct sk_buff *packet );
|
|
extern void hostif_receive( ks_wlan_private *priv, unsigned char *p, unsigned int size );
|
|
extern void hostif_sme_enqueue(ks_wlan_private *priv, uint16_t event);
|
|
extern int hostif_init( ks_wlan_private *priv );
|
|
extern void hostif_exit( ks_wlan_private *priv );
|
|
|
|
static
|
|
inline int hif_align_size(int size)
|
|
{
|
|
#ifdef KS_ATOM
|
|
if( size < 1024 )
|
|
size = 1024;
|
|
#endif
|
|
#ifdef DEVICE_ALIGNMENT
|
|
return (size%DEVICE_ALIGNMENT) ? size + DEVICE_ALIGNMENT - (size % DEVICE_ALIGNMENT) : size;
|
|
#else
|
|
return size;
|
|
#endif
|
|
}
|
|
|
|
#endif /* __KERNEL__ */
|
|
|
|
#endif /* _KS_HOSTIF_H_ */
|