#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
#define MAX_TID (15)
#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)
#define PKT_OFFSET_SZ (0)
#define QSEL_SHT (8)
#define HWPC BIT(31)
#define BMC BIT(7)
#define BK BIT(30)
#define AGG_EN BIT(29)
#define RTS_RC_SHT (16)
#define SEQ_SHT (16)
#define TXBW BIT(18)
#define DISFB BIT(15)
#define RSVD6_MSK (0x00E00000)
#define RSVD6_SHT (21)
struct tx_desc {
__le32 txdw0;
__le32 txdw1;
__le32 txdw2;
__le32 txdw3;
__le32 txdw4;
__le32 txdw5;
__le32 txdw6;
__le32 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
void r8712_xmitframe_aggr_1st(struct xmit_buf *pxmitbuf,
struct xmit_frame *pxmitframe);
void r8712_dump_aggr_xframe(struct xmit_buf *pxmitbuf,
struct xmit_frame *pxmitframe);
#endif
#endif