--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/TWD/FirmwareApi/public_descriptors.h Tue Jun 29 12:34:26 2010 +0100
@@ -0,0 +1,266 @@
+/*
+ * public_descriptors.h
+ *
+ * Copyright(c) 1998 - 2010 Texas Instruments. All rights reserved.
+ * All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 or BSD License which accompanies
+ * this distribution. The Eclipse Public License is available at
+ * http://www.eclipse.org/legal/epl-v10.html and the BSD License is as below.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name Texas Instruments nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/**********************************************************************************************************************
+
+ FILENAME: public_descriptors.h
+
+ DESCRIPTION: Contains the host interface descriptor types in use.
+
+
+
+***********************************************************************************************************************/
+#ifndef PUBLIC_DESCRIPTORS_H
+#define PUBLIC_DESCRIPTORS_H
+
+
+#include "public_types.h"
+
+
+
+/******************************************************************************
+
+ TX PATH
+
+******************************************************************************/
+
+#define AID_BROADCAST 0x0 /* broadcast frames AID */
+#define AID_GLOBAL 0xFF /* unassociated STAs AID */
+
+#define TRQ_DEPTH 16 /* depth of TX Result Queue */
+
+#define NUM_TX_DESCRIPTORS 32 /* Total number of Tx descriptors in the FW */
+
+/* TX attributes masks and offset used in the txAttr of TxIfDescriptor_t. */
+#define TX_ATTR_SAVE_RETRIES BIT_0
+#define TX_ATTR_HEADER_PAD BIT_1
+#define TX_ATTR_SESSION_COUNTER (BIT_2 | BIT_3 | BIT_4)
+#define TX_ATTR_RATE_POLICY (BIT_5 | BIT_6 | BIT_7 | BIT_8 | BIT_9)
+#define TX_ATTR_LAST_WORD_PAD (BIT_10 | BIT_11)
+#define TX_ATTR_TX_CMPLT_REQ BIT_12
+
+#define TX_ATTR_OFST_SAVE_RETRIES 0
+#define TX_ATTR_OFST_HEADER_PAD 1
+#define TX_ATTR_OFST_SESSION_COUNTER 2
+#define TX_ATTR_OFST_RATE_POLICY 5
+#define TX_ATTR_OFST_LAST_WORD_PAD 10
+#define TX_ATTR_OFST_TX_CMPLT_REQ 12
+
+/* The packet transmission result, written in the status field of TxResultDescriptor_t */
+typedef enum
+{
+ TX_SUCCESS = 0,
+ TX_HW_ERROR = 1,
+ TX_DISABLED = 2,
+ TX_RETRY_EXCEEDED = 3,
+ TX_TIMEOUT = 4,
+ TX_KEY_NOT_FOUND = 5,
+ TX_PEER_NOT_FOUND = 6,
+ TX_SESSION_MISMATCH = 7
+} TxDescStatus_enum;
+
+#ifdef HOST_COMPILE
+typedef uint8 TxDescStatus_e;
+#else
+typedef TxDescStatus_enum TxDescStatus_e;
+#endif
+
+/* The Tx Descriptor preceding each Tx packet copied to the FW (before the packet). */
+typedef struct TxIfDescriptor_t
+{
+ uint16 length; /* Length of packet in words, including descriptor+header+data */
+ uint8 extraMemBlks; /* Number of extra memory blocks to allocate for this packet in addition
+ to the number of blocks derived from the packet length */
+ uint8 totalMemBlks; /* Total number of memory blocks allocated by the host for this packet.
+ Must be equal or greater than the actual blocks number allocated by HW!! */
+ uint32 startTime; /* Device time (in us) when the packet arrived to the driver */
+ uint16 lifeTime; /* Max delay in TUs until transmission. The last device time the
+ packet can be transmitted is: startTime+(1024*LifeTime) */
+ uint16 txAttr; /* Bitwise fields - see TX_ATTR... definitions above. */
+ uint8 descID; /* Packet identifier used also in the Tx-Result. */
+ uint8 tid; /* The packet TID value (as User-Priority) */
+ uint8 aid; /* Identifier of the remote STA in IBSS, 1 in infra-BSS */
+ uint8 reserved; /* For HW use, set to 0 */
+
+} TxIfDescriptor_t;
+
+
+/* The Tx result retrieved from FW upon TX completion. */
+typedef struct TxResultDescriptor_t
+{
+ uint8 descID; /* Packet Identifier - same value used in the Tx descriptor.*/
+ TxDescStatus_e status; /* The status of the transmission, indicating success or one of several
+ possible reasons for failure. Refer to TxDescStatus_enum above.*/
+ uint16 mediumUsage; /* Total air access duration including all retrys and overheads.*/
+ uint32 fwHandlingTime; /* The time passed from host xfer to Tx-complete.*/
+ uint32 mediumDelay; /* Total media delay (from 1st EDCA AIFS counter until TX Complete). */
+ uint8 lsbSecuritySequenceNumber; /* LS-byte of last TKIP seq-num (saved per AC for recovery).*/
+ uint8 ackFailures; /* Retry count - number of transmissions without successful ACK.*/
+ TxRateIndex_t rate; /* The rate that succeeded getting ACK (Valid only if status=SUCCESS). */
+ uint8 spare; /* for 4-byte alignment. */
+} TxResultDescriptor_t;
+
+/* The Host-FW Tx-Result control counters */
+typedef struct
+{
+ uint32 TxResultFwCounter; /* FW updates num of results written to results-queue since FW-init. */
+ uint32 TxResultHostCounter; /* Host updates num of results read from results-queue since FW-init. */
+} TxResultControl_t;
+
+/* The Host-FW Tx-Result Interface */
+typedef struct
+{
+ TxResultControl_t TxResultControl; /* See above. */
+ TxResultDescriptor_t TxResultQueue[TRQ_DEPTH];
+} TxResultInterface_t;
+
+
+/******************************************************************************
+
+ RX PATH
+
+******************************************************************************/
+/* ------------------------------------- */
+/* flags field in the RxIfDescriptor_t */
+/* ------------------------------------- */
+/* Bit5-7: Encryption type: */
+/* 0 - none */
+/* 1 - WEP */
+/* 2 - TKIP */
+/* 3 - AES */
+/* 4 - GEM */
+/* Bit4: HT */
+/* Bit3: Was part of A-MPDU */
+/* Bit2: STBC */
+/* Bit0-1: Band the frame was received */
+/* from (0=2.4, 1=4.9, 2=5.0) */
+/* ------------------------------------- */
+#define RX_DESC_BAND_MASK 0x03 /* Band is in Bits 0-1 */
+#define RX_DESC_BAND_BG 0x00
+#define RX_DESC_BAND_J 0x01
+#define RX_DESC_BAND_A 0x02
+#define RX_DESC_STBC 0x04
+#define RX_DESC_A_MPDU 0x08
+#define RX_DESC_HT 0x10
+ #define RX_DESC_ENCRYPT_MASK 0xE0 /* Encryption is in Bits 5-7 */
+#define RX_DESC_ENCRYPT_WEP 0x20
+#define RX_DESC_ENCRYPT_TKIP 0x40
+#define RX_DESC_ENCRYPT_AES 0x60
+ #define RX_DESC_ENCRYPT_GEM 0x80
+
+
+/* ------------------------------------- */
+/* Status field in the RxIfDescriptor_t */
+/* ------------------------------------- */
+/* Bit3-7: reserved (0) */
+/* Bit0-2: 0 - Success, */
+/* 1 - RX_DECRYPT_FAIL, */
+/* 2 - RX_MIC_FAIL */
+/* ------------------------------------- */
+#define RX_DESC_STATUS_SUCCESS 0
+#define RX_DESC_STATUS_DECRYPT_FAIL 1
+#define RX_DESC_STATUS_MIC_FAIL 2
+#define RX_DESC_STATUS_DRIVER_RX_Q_FAIL 3
+
+#define RX_DESC_STATUS_MASK 7
+
+
+/**********************************************
+ clasify tagging
+***********************************************/
+typedef enum
+{
+ TAG_CLASS_UNKNOWN = 0,
+ TAG_CLASS_MANAGEMENT = 1, /* other than Beacon or Probe Resp */
+ TAG_CLASS_DATA = 2,
+ TAG_CLASS_QOS_DATA = 3,
+ TAG_CLASS_BCN_PRBRSP = 4,
+ TAG_CLASS_EAPOL = 5,
+ TAG_CLASS_BA_EVENT = 6,
+ TAG_CLASS_AMSDU = 7
+} PacketClassTag_enum;
+
+#ifdef HOST_COMPILE
+typedef uint8 PacketClassTag_e;
+#else
+typedef PacketClassTag_enum PacketClassTag_e;
+#endif
+
+typedef uint8 ProcessIDTag_e;
+
+/******************************************************************************
+
+ RxIfDescriptor_t
+
+ the structure of the Rx Descriptor recieved by HOST.
+
+******************************************************************************/
+typedef struct
+{
+ uint16 length; /* Length of payload (including headers)*/
+
+ uint8 status; /* 0 = Success, 1 = RX Decrypt Fail, 2 = RX MIC Fail */
+
+ uint8 flags; /* See RX_DESC_xxx above */
+
+ TxRateIndex_t rate; /* Recevied Rate:at ETxRateClassId format */
+
+ uint8 channel; /* The received channel*/
+
+ int8 rx_level; /* The computed RSSI value in db of current frame */
+
+ uint8 rx_snr; /* The computed SNR value in db of current frame */
+
+ uint32 timestamp; /* Timestamp in microseconds, */
+
+ PacketClassTag_e packet_class_tag; /* Packet classification tagging info */
+
+ ProcessIDTag_e proccess_id_tag; /* Driver defined ID */
+
+ uint8 extraBytes; /* Number of padding bytes added to actual packet length */
+
+ uint8 reserved;
+
+} RxIfDescriptor_t;
+
+
+
+#endif /* PUBLIC_DESCRIPTORS_H*/
+
+
+