/****************************************************************************** * * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved. * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as * published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * * You should have received a copy of the GNU General Public License along with * this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA * * Modifications for inclusion into the Linux staging tree are * Copyright(c) 2010 Larry Finger. All rights reserved. * * Contact information: * WLAN FAE <wlanfae@realtek.com> * Larry Finger <Larry.Finger@lwfinger.net> * ******************************************************************************/ #ifndef _RTL8712_XMIT_H_ #define _RTL8712_XMIT_H_ #define HWXMIT_ENTRY 4 #define VO_QUEUE_INX 0 #define VI_QUEUE_INX 1 #define BE_QUEUE_INX 2 #define BK_QUEUE_INX 3 #define TS_QUEUE_INX 4 #define MGT_QUEUE_INX 5 #define BMC_QUEUE_INX 6 #define BCN_QUEUE_INX 7 #define HW_QUEUE_ENTRY 8 #define TXDESC_SIZE 32 #define TXDESC_OFFSET TXDESC_SIZE #define NR_AMSDU_XMITFRAME 8 #define NR_TXAGG_XMITFRAME 8 #define MAX_AMSDU_XMITBUF_SZ 8704 #define MAX_TXAGG_XMITBUF_SZ 16384 /*16k*/ #define tx_cmd tx_desc /* *defined for TX DESC Operation */ #define MAX_TID (15) /*OFFSET 0*/ #define OFFSET_SZ (0) #define OFFSET_SHT (16) #define OWN BIT(31) #define FSG BIT(27) #define LSG BIT(26) #define TYPE_SHT (24) #define TYPE_MSK (0x03000000) /*OFFSET 4*/ #define PKT_OFFSET_SZ (0) #define QSEL_SHT (8) #define HWPC BIT(31) /*OFFSET 8*/ #define BMC BIT(7) #define BK BIT(30) #define AGG_EN BIT(29) #define RTS_RC_SHT (16) /*OFFSET 12*/ #define SEQ_SHT (16) /*OFFSET 16*/ #define TXBW BIT(18) /*OFFSET 20*/ #define DISFB BIT(15) #define RSVD6_MSK (0x00E00000) #define RSVD6_SHT (21) struct tx_desc { /*DWORD 0*/ unsigned int txdw0; unsigned int txdw1; unsigned int txdw2; unsigned int txdw3; unsigned int txdw4; unsigned int txdw5; unsigned int txdw6; unsigned int txdw7; }; union txdesc { struct tx_desc txdesc; unsigned int value[TXDESC_SIZE>>2]; }; int r8712_xmitframe_complete(struct _adapter *padapter, struct xmit_priv *pxmitpriv, struct xmit_buf *pxmitbuf); void r8712_do_queue_select(struct _adapter *padapter, struct pkt_attrib *pattrib); #ifdef CONFIG_R8712_TX_AGGR u8 r8712_xmitframe_aggr_1st(struct xmit_buf *pxmitbuf, struct xmit_frame *pxmitframe); u8 r8712_dump_aggr_xframe(struct xmit_buf *pxmitbuf, struct xmit_frame *pxmitframe); #endif #endif