194a79942SLarry Finger /******************************************************************************
294a79942SLarry Finger  * Copyright(c) 2008 - 2010 Realtek Corporation. All rights reserved.
394a79942SLarry Finger  *
494a79942SLarry Finger  * This program is distributed in the hope that it will be useful, but WITHOUT
594a79942SLarry Finger  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
694a79942SLarry Finger  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
794a79942SLarry Finger  * more details.
894a79942SLarry Finger  *
994a79942SLarry Finger  * You should have received a copy of the GNU General Public License along with
1094a79942SLarry Finger  * this program; if not, write to the Free Software Foundation, Inc.,
1194a79942SLarry Finger  * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
1294a79942SLarry Finger  *
1394a79942SLarry Finger  * The full GNU General Public License is included in this distribution in the
1494a79942SLarry Finger  * file called LICENSE.
1594a79942SLarry Finger  *
1694a79942SLarry Finger  * Contact Information:
1794a79942SLarry Finger  * wlanfae <wlanfae@realtek.com>
1894a79942SLarry Finger ******************************************************************************/
1994a79942SLarry Finger #ifndef _BATYPE_H_
2094a79942SLarry Finger #define _BATYPE_H_
2194a79942SLarry Finger 
2294a79942SLarry Finger #define		TOTAL_TXBA_NUM	16
2394a79942SLarry Finger #define	TOTAL_RXBA_NUM	16
2494a79942SLarry Finger 
2594a79942SLarry Finger #define	BA_SETUP_TIMEOUT	200
2694a79942SLarry Finger #define	BA_INACT_TIMEOUT	60000
2794a79942SLarry Finger 
2894a79942SLarry Finger #define	BA_POLICY_DELAYED		0
2994a79942SLarry Finger #define	BA_POLICY_IMMEDIATE	1
3094a79942SLarry Finger 
3194a79942SLarry Finger #define	ADDBA_STATUS_SUCCESS			0
3294a79942SLarry Finger #define	ADDBA_STATUS_REFUSED		37
3394a79942SLarry Finger #define	ADDBA_STATUS_INVALID_PARAM	38
3494a79942SLarry Finger 
3594a79942SLarry Finger #define	DELBA_REASON_QSTA_LEAVING	36
3694a79942SLarry Finger #define	DELBA_REASON_END_BA			37
3794a79942SLarry Finger #define	DELBA_REASON_UNKNOWN_BA	38
3894a79942SLarry Finger #define	DELBA_REASON_TIMEOUT			39
3994a79942SLarry Finger typedef union _SEQUENCE_CONTROL{
4094a79942SLarry Finger 	u16 ShortData;
4194a79942SLarry Finger 	struct
4294a79942SLarry Finger 	{
4394a79942SLarry Finger 		u16	FragNum:4;
4494a79942SLarry Finger 		u16	SeqNum:12;
4594a79942SLarry Finger 	}field;
4694a79942SLarry Finger }SEQUENCE_CONTROL, *PSEQUENCE_CONTROL;
4794a79942SLarry Finger 
4894a79942SLarry Finger typedef union _BA_PARAM_SET {
4994a79942SLarry Finger 	u8 charData[2];
5094a79942SLarry Finger 	u16 shortData;
5194a79942SLarry Finger 	struct {
5294a79942SLarry Finger 		u16 AMSDU_Support:1;
5394a79942SLarry Finger 		u16 BAPolicy:1;
5494a79942SLarry Finger 		u16 TID:4;
5594a79942SLarry Finger 		u16 BufferSize:10;
5694a79942SLarry Finger 	} field;
5794a79942SLarry Finger } BA_PARAM_SET, *PBA_PARAM_SET;
5894a79942SLarry Finger 
5994a79942SLarry Finger typedef union _DELBA_PARAM_SET {
6094a79942SLarry Finger 	u8 charData[2];
6194a79942SLarry Finger 	u16 shortData;
6294a79942SLarry Finger 	struct {
6394a79942SLarry Finger 		u16 Reserved:11;
6494a79942SLarry Finger 		u16 Initiator:1;
6594a79942SLarry Finger 		u16 TID:4;
6694a79942SLarry Finger 	} field;
6794a79942SLarry Finger } DELBA_PARAM_SET, *PDELBA_PARAM_SET;
6894a79942SLarry Finger 
698cf33316SLarry Finger struct ba_record {
7094a79942SLarry Finger 	struct timer_list		Timer;
7194a79942SLarry Finger 	u8				bValid;
7294a79942SLarry Finger 	u8				DialogToken;
7394a79942SLarry Finger 	BA_PARAM_SET		BaParamSet;
7494a79942SLarry Finger 	u16				BaTimeoutValue;
7594a79942SLarry Finger 	SEQUENCE_CONTROL	BaStartSeqCtrl;
768cf33316SLarry Finger };
7794a79942SLarry Finger 
7894a79942SLarry Finger #endif
79