TWD/FirmwareApi/public_descriptors.h
changeset 0 10c42ec6c05f
--- /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*/
+
+
+