| Index: chromeos/drivers/ath6kl/include/wmi_thin.h
|
| diff --git a/chromeos/drivers/ath6kl/include/wmi_thin.h b/chromeos/drivers/ath6kl/include/wmi_thin.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..b637f96d8b2b4df4d493f68633d9e3238128d24e
|
| --- /dev/null
|
| +++ b/chromeos/drivers/ath6kl/include/wmi_thin.h
|
| @@ -0,0 +1,319 @@
|
| +//------------------------------------------------------------------------------
|
| +// <copyright file="wmi_thin.h" company="Atheros">
|
| +// Copyright (c) 2004-2008 Atheros Corporation. All rights reserved.
|
| +//
|
| +// This program is free software; you can redistribute it and/or modify
|
| +// it under the terms of the GNU General Public License version 2 as
|
| +// published by the Free Software Foundation;
|
| +//
|
| +// Software distributed under the License is distributed on an "AS
|
| +// IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
| +// implied. See the License for the specific language governing
|
| +// rights and limitations under the License.
|
| +//
|
| +//
|
| +//------------------------------------------------------------------------------
|
| +//==============================================================================
|
| +// Author(s): ="Atheros"
|
| +//==============================================================================
|
| +
|
| +/*
|
| + * This file contains the definitions of the WMI protocol specified in the
|
| + * Wireless Module Interface (WMI). It includes definitions of all the
|
| + * commands and events. Commands are messages from the host to the WM.
|
| + * Events and Replies are messages from the WM to the host.
|
| + *
|
| + * Ownership of correctness in regards to WMI commands
|
| + * belongs to the host driver and the WM is not required to validate
|
| + * parameters for value, proper range, or any other checking.
|
| + *
|
| + */
|
| +
|
| +#ifndef _WMI_THIN_H_
|
| +#define _WMI_THIN_H_
|
| +
|
| +#ifdef __cplusplus
|
| +extern "C" {
|
| +#endif
|
| +
|
| +
|
| +typedef enum {
|
| + WMI_THIN_CONFIG_CMDID = 0x8000, // WMI_THIN_RESERVED_START
|
| + WMI_THIN_SET_MIB_CMDID,
|
| + WMI_THIN_GET_MIB_CMDID,
|
| + WMI_THIN_JOIN_CMDID,
|
| +} WMI_THIN_COMMAND_ID;
|
| +
|
| +typedef enum{
|
| + TEMPLATE_FRM_FIRST = 0,
|
| + TEMPLATE_FRM_PROBE_REQ =TEMPLATE_FRM_FIRST,
|
| + TEMPLATE_FRM_BEACON,
|
| + TEMPLATE_FRM_PROBE_RESP,
|
| + TEMPLATE_FRM_NULL,
|
| + TEMPLATE_FRM_QOS_NULL,
|
| + TEMPLATE_FRM_PSPOLL,
|
| + TEMPLATE_FRM_MAX
|
| +}WMI_TEMPLATE_FRM_TYPE;
|
| +
|
| +/* TEMPLATE_FRM_LEN... represent the maximum allowable
|
| + * data lengths (bytes) for each frame type */
|
| +#define TEMPLATE_FRM_LEN_PROBE_REQ (256) /* Symbian dictates a minimum of 256 for these 3 frame types */
|
| +#define TEMPLATE_FRM_LEN_BEACON (256)
|
| +#define TEMPLATE_FRM_LEN_PROBE_RESP (256)
|
| +#define TEMPLATE_FRM_LEN_NULL (32)
|
| +#define TEMPLATE_FRM_LEN_QOS_NULL (32)
|
| +#define TEMPLATE_FRM_LEN_PSPOLL (32)
|
| +#define TEMPLATE_FRM_LEN_SUM (TEMPLATE_FRM_LEN_PROBE_REQ + TEMPLATE_FRM_LEN_BEACON + TEMPLATE_FRM_LEN_PROBE_RESP + \
|
| + TEMPLATE_FRM_LEN_NULL + TEMPLATE_FRM_LEN_QOS_NULL + TEMPLATE_FRM_LEN_PSPOLL)
|
| +
|
| +
|
| +/* MAC Header Build Rules */
|
| +/* These values allow the host to configure the
|
| + * target code that is responsible for constructing
|
| + * the MAC header. In cases where the MAC header
|
| + * is provided by the host framework, the target
|
| + * has a diminished responsibility over what fields
|
| + * it must write. This will vary from framework to framework.
|
| + * Symbian requires different behavior from MAC80211 which
|
| + * requires different behavior from MS Native Wifi. */
|
| +#define WMI_WRT_VER_TYPE 0x00000001
|
| +#define WMI_WRT_DURATION 0x00000002
|
| +#define WMI_WRT_DIRECTION 0x00000004
|
| +#define WMI_WRT_POWER 0x00000008
|
| +#define WMI_WRT_WEP 0x00000010
|
| +#define WMI_WRT_MORE 0x00000020
|
| +#define WMI_WRT_BSSID 0x00000040
|
| +#define WMI_WRT_QOS 0x00000080
|
| +#define WMI_WRT_SEQNO 0x00000100
|
| +#define WMI_GUARD_TX 0x00000200 /* prevents TX ops that are not allowed for a current state */
|
| +#define WMI_WRT_DEFAULT_CONFIG (WMI_WRT_VER_TYPE | WMI_WRT_DURATION | WMI_WRT_DIRECTION | \
|
| + WMI_WRT_POWER | WMI_WRT_MORE | WMI_WRT_WEP | WMI_WRT_BSSID | \
|
| + WMI_WRT_QOS | WMI_WRT_SEQNO | WMI_GUARD_TX)
|
| +
|
| +/* WMI_THIN_CONFIG_TXCOMPLETE -- Used to configure the params and content for
|
| + * TX Complete messages the will come from the Target. these messages are
|
| + * disabled by default but can be enabled using this structure and the
|
| + * WMI_THIN_CONFIG_CMDID. */
|
| +typedef PREPACK struct {
|
| + A_UINT8 version; /* the versioned type of messages to use or 0 to disable */
|
| + A_UINT8 countThreshold; /* msg count threshold triggering a tx complete message */
|
| + A_UINT16 timeThreshold; /* timeout interval in MSEC triggering a tx complete message */
|
| +} POSTPACK WMI_THIN_CONFIG_TXCOMPLETE;
|
| +
|
| +/* WMI_THIN_CONFIG_DECRYPT_ERR -- Used to configure behavior for received frames
|
| + * that have decryption errors. The default behavior is to discard the frame
|
| + * without notification. Alternately, the MAC Header is forwarded to the host
|
| + * with the failed status. */
|
| +typedef PREPACK struct {
|
| + A_UINT8 enable; /* 1 == send decrypt errors to the host, 0 == don't */
|
| + A_UINT8 reserved[3]; /* align padding */
|
| +} POSTPACK WMI_THIN_CONFIG_DECRYPT_ERR;
|
| +
|
| +/* WMI_THIN_CONFIG_TX_MAC_RULES -- Used to configure behavior for transmitted
|
| + * frames that require partial MAC header construction. These rules
|
| + * are used by the target to indicate which fields need to be written. */
|
| +typedef PREPACK struct {
|
| + A_UINT32 rules; /* combination of WMI_WRT_... values */
|
| +} POSTPACK WMI_THIN_CONFIG_TX_MAC_RULES;
|
| +
|
| +/* WMI_THIN_CONFIG_RX_FILTER_RULES -- Used to configure behavior for received
|
| + * frames as to which frames should get forwarded to the host and which
|
| + * should get processed internally. */
|
| +typedef PREPACK struct {
|
| + A_UINT32 rules; /* combination of WMI_FILT_... values */
|
| +} POSTPACK WMI_THIN_CONFIG_RX_FILTER_RULES;
|
| +
|
| +/* WMI_THIN_CONFIG_CMD -- Used to contain some combination of the above
|
| + * WMI_THIN_CONFIG_... structures. The actual combination is indicated
|
| + * by the value of cfgField. Each bit in this field corresponds to
|
| + * one of the above structures. */
|
| +typedef PREPACK struct {
|
| +#define WMI_THIN_CFG_TXCOMP 0x00000001
|
| +#define WMI_THIN_CFG_DECRYPT 0x00000002
|
| +#define WMI_THIN_CFG_MAC_RULES 0x00000004
|
| +#define WMI_THIN_CFG_FILTER_RULES 0x00000008
|
| + A_UINT32 cfgField; /* combination of WMI_THIN_CFG_... describes contents of config command */
|
| + A_UINT16 length; /* length in bytes of appended sub-commands */
|
| + A_UINT8 reserved[2]; /* align padding */
|
| +} POSTPACK WMI_THIN_CONFIG_CMD;
|
| +
|
| +/* MIB Access Identifiers tailored for Symbian. */
|
| +enum {
|
| + MIB_ID_STA_MAC = 1, // [READONLY]
|
| + MIB_ID_RX_LIFE_TIME, // [NOT IMPLEMENTED]
|
| + MIB_ID_SLOT_TIME, // [READ/WRITE]
|
| + MIB_ID_RTS_THRESHOLD, // [READ/WRITE]
|
| + MIB_ID_CTS_TO_SELF, // [READ/WRITE]
|
| + MIB_ID_TEMPLATE_FRAME, // [WRITE ONLY]
|
| + MIB_ID_RXFRAME_FILTER, // [READ/WRITE]
|
| + MIB_ID_BEACON_FILTER_TABLE, // [WRITE ONLY]
|
| + MIB_ID_BEACON_FILTER, // [READ/WRITE]
|
| + MIB_ID_BEACON_LOST_COUNT, // [WRITE ONLY]
|
| + MIB_ID_RSSI_THRESHOLD, // [WRITE ONLY]
|
| + MIB_ID_HT_CAP, // [NOT IMPLEMENTED]
|
| + MIB_ID_HT_OP, // [NOT IMPLEMENTED]
|
| + MIB_ID_HT_2ND_BEACON, // [NOT IMPLEMENTED]
|
| + MIB_ID_HT_BLOCK_ACK, // [NOT IMPLEMENTED]
|
| + MIB_ID_PREAMBLE, // [READ/WRITE]
|
| + /*MIB_ID_GROUP_ADDR_TABLE,*/
|
| + /*MIB_ID_WEP_DEFAULT_KEY_ID */
|
| + /*MIB_ID_TX_POWER */
|
| + /*MIB_ID_ARP_IP_TABLE */
|
| + /*MIB_ID_SLEEP_MODE */
|
| + /*MIB_ID_WAKE_INTERVAL*/
|
| + /*MIB_ID_STAT_TABLE*/
|
| + /*MIB_ID_IBSS_PWR_SAVE*/
|
| + /*MIB_ID_COUNTERS_TABLE*/
|
| + /*MIB_ID_ETHERTYPE_FILTER*/
|
| + /*MIB_ID_BC_UDP_FILTER*/
|
| +
|
| +};
|
| +
|
| +typedef PREPACK struct {
|
| + A_UINT8 addr[ATH_MAC_LEN];
|
| +} POSTPACK WMI_THIN_MIB_STA_MAC;
|
| +
|
| +typedef PREPACK struct {
|
| + A_UINT32 time; // units == msec
|
| +} POSTPACK WMI_THIN_MIB_RX_LIFE_TIME;
|
| +
|
| +typedef PREPACK struct {
|
| + A_UINT8 enable; //1 = on, 0 = off
|
| +} POSTPACK WMI_THIN_MIB_CTS_TO_SELF;
|
| +
|
| +typedef PREPACK struct {
|
| + A_UINT32 time; // units == usec
|
| +} POSTPACK WMI_THIN_MIB_SLOT_TIME;
|
| +
|
| +typedef PREPACK struct {
|
| + A_UINT16 length; //units == bytes
|
| +} POSTPACK WMI_THIN_MIB_RTS_THRESHOLD;
|
| +
|
| +typedef PREPACK struct {
|
| + A_UINT8 type; // type of frame
|
| + A_UINT8 rate; // tx rate to be used (one of WMI_BIT_RATE)
|
| + A_UINT16 length; // num bytes following this structure as the template data
|
| +} POSTPACK WMI_THIN_MIB_TEMPLATE_FRAME;
|
| +
|
| +typedef PREPACK struct {
|
| +#define FRAME_FILTER_PROMISCUOUS 0x00000001
|
| +#define FRAME_FILTER_BSSID 0x00000002
|
| + A_UINT32 filterMask;
|
| +} POSTPACK WMI_THIN_MIB_RXFRAME_FILTER;
|
| +
|
| +
|
| +#define IE_FILTER_TREATMENT_CHANGE 1
|
| +#define IE_FILTER_TREATMENT_APPEAR 2
|
| +
|
| +typedef PREPACK struct {
|
| + A_UINT8 ie;
|
| + A_UINT8 treatment;
|
| +} POSTPACK WMI_THIN_MIB_BEACON_FILTER_TABLE;
|
| +
|
| +typedef PREPACK struct {
|
| + A_UINT8 ie;
|
| + A_UINT8 treatment;
|
| + A_UINT8 oui[3];
|
| + A_UINT8 type;
|
| + A_UINT16 version;
|
| +} POSTPACK WMI_THIN_MIB_BEACON_FILTER_TABLE_OUI;
|
| +
|
| +typedef PREPACK struct {
|
| + A_UINT16 numElements;
|
| + A_UINT8 entrySize; // sizeof(WMI_THIN_MIB_BEACON_FILTER_TABLE) on host cpu may be 2 may be 4
|
| + A_UINT8 reserved;
|
| +} POSTPACK WMI_THIN_MIB_BEACON_FILTER_TABLE_HEADER;
|
| +
|
| +typedef PREPACK struct {
|
| + A_UINT32 count; /* num beacons between deliveries */
|
| + A_UINT8 enable;
|
| + A_UINT8 reserved[3];
|
| +} POSTPACK WMI_THIN_MIB_BEACON_FILTER;
|
| +
|
| +typedef PREPACK struct {
|
| + A_UINT32 count; /* num consec lost beacons after which send event */
|
| +} POSTPACK WMI_THIN_MIB_BEACON_LOST_COUNT;
|
| +
|
| +typedef PREPACK struct {
|
| + A_UINT8 rssi; /* the low threshold which can trigger an event warning */
|
| + A_UINT8 tolerance; /* the range above and below the threshold to prevent event flooding to the host. */
|
| + A_UINT8 count; /* the sample count of consecutive frames necessary to trigger an event. */
|
| + A_UINT8 reserved[1]; /* padding */
|
| +} POSTPACK WMI_THIN_MIB_RSSI_THRESHOLD;
|
| +
|
| +
|
| +typedef PREPACK struct {
|
| + A_UINT32 cap;
|
| + A_UINT32 rxRateField;
|
| + A_UINT32 beamForming;
|
| + A_UINT8 addr[ATH_MAC_LEN];
|
| + A_UINT8 enable;
|
| + A_UINT8 stbc;
|
| + A_UINT8 maxAMPDU;
|
| + A_UINT8 msduSpacing;
|
| + A_UINT8 mcsFeedback;
|
| + A_UINT8 antennaSelCap;
|
| +} POSTPACK WMI_THIN_MIB_HT_CAP;
|
| +
|
| +typedef PREPACK struct {
|
| + A_UINT32 infoField;
|
| + A_UINT32 basicRateField;
|
| + A_UINT8 protection;
|
| + A_UINT8 secondChanneloffset;
|
| + A_UINT8 channelWidth;
|
| + A_UINT8 reserved;
|
| +} POSTPACK WMI_THIN_MIB_HT_OP;
|
| +
|
| +typedef PREPACK struct {
|
| +#define SECOND_BEACON_PRIMARY 1
|
| +#define SECOND_BEACON_EITHER 2
|
| +#define SECOND_BEACON_SECONDARY 3
|
| + A_UINT8 cfg;
|
| + A_UINT8 reserved[3]; /* padding */
|
| +} POSTPACK WMI_THIN_MIB_HT_2ND_BEACON;
|
| +
|
| +typedef PREPACK struct {
|
| + A_UINT8 txTIDField;
|
| + A_UINT8 rxTIDField;
|
| + A_UINT8 reserved[2]; /* padding */
|
| +} POSTPACK WMI_THIN_MIB_HT_BLOCK_ACK;
|
| +
|
| +typedef PREPACK struct {
|
| + A_UINT8 enableLong; // 1 == long preamble, 0 == short preamble
|
| + A_UINT8 reserved[3];
|
| +} POSTPACK WMI_THIN_MIB_PREAMBLE;
|
| +
|
| +typedef PREPACK struct {
|
| + A_UINT16 length; /* the length in bytes of the appended MIB data */
|
| + A_UINT8 mibID; /* the ID of the MIB element being set */
|
| + A_UINT8 reserved; /* align padding */
|
| +} POSTPACK WMI_THIN_SET_MIB_CMD;
|
| +
|
| +typedef PREPACK struct {
|
| + A_UINT8 mibID; /* the ID of the MIB element being set */
|
| + A_UINT8 reserved[3]; /* align padding */
|
| +} POSTPACK WMI_THIN_GET_MIB_CMD;
|
| +
|
| +typedef PREPACK struct {
|
| + A_UINT32 basicRateMask; /* bit mask of basic rates */
|
| + A_UINT32 beaconIntval; /* TUs */
|
| + A_UINT16 atimWindow; /* TUs */
|
| + A_UINT16 channel; /* frequency in Mhz */
|
| + A_UINT8 networkType; /* INFRA_NETWORK | ADHOC_NETWORK */
|
| + A_UINT8 ssidLength; /* 0 - 32 */
|
| + A_UINT8 probe; /* != 0 : issue probe req at start */
|
| + A_UINT8 reserved; /* alignment */
|
| + A_UCHAR ssid[WMI_MAX_SSID_LEN];
|
| + A_UINT8 bssid[ATH_MAC_LEN];
|
| +} POSTPACK WMI_THIN_JOIN_CMD;
|
| +
|
| +typedef PREPACK struct {
|
| + A_UINT16 dtim; /* dtim interval in num beacons */
|
| + A_UINT16 aid; /* 80211 AID from Assoc resp */
|
| +} POSTPACK WMI_THIN_POST_ASSOC_CMD;
|
| +
|
| +#ifdef __cplusplus
|
| +}
|
| +#endif
|
| +
|
| +#endif /* _WMI_THIN_H_ */
|
|
|