OSDN Git Service

rtl8723au: Remove typedef for _pkt and replace with correct struct
[android-x86/external-modules-rtl8723au.git] / include / rtw_xmit.h
old mode 100755 (executable)
new mode 100644 (file)
index caa1167..41a2a5a
@@ -25,7 +25,7 @@
 #include <drv_types.h>
 
 #ifdef CONFIG_USB_TX_AGGREGATION
-#define MAX_XMITBUF_SZ 20480   // 20k
+#define MAX_XMITBUF_SZ (20480) // 20k
 #else
 #define MAX_XMITBUF_SZ (2048)
 #endif
@@ -66,7 +66,7 @@ do{\
        pattrib_iv[2] = dot11txpn._byte_.TSC2;\
        pattrib_iv[3] = ((keyidx & 0x3)<<6);\
        dot11txpn.val = (dot11txpn.val == 0xffffff) ? 0: (dot11txpn.val+1);\
-}while (0)
+}while(0)
 
 
 #define TKIP_IV(pattrib_iv, dot11txpn, keyidx)\
@@ -80,7 +80,7 @@ do{\
        pattrib_iv[6] = dot11txpn._byte_.TSC4;\
        pattrib_iv[7] = dot11txpn._byte_.TSC5;\
        dot11txpn.val = dot11txpn.val == 0xffffffffffffULL ? 0: (dot11txpn.val+1);\
-}while (0)
+}while(0)
 
 #define AES_IV(pattrib_iv, dot11txpn, keyidx)\
 do{\
@@ -93,7 +93,7 @@ do{\
        pattrib_iv[6] = dot11txpn._byte_.TSC4;\
        pattrib_iv[7] = dot11txpn._byte_.TSC5;\
        dot11txpn.val = dot11txpn.val == 0xffffffffffffULL ? 0: (dot11txpn.val+1);\
-}while (0)
+}while(0)
 
 
 #define HWXMIT_ENTRY   4
@@ -105,29 +105,42 @@ do{\
 #define EARLY_MODE_INFO_SIZE   8
 #endif
 
+
 #define PACKET_OFFSET_SZ (8)
 #define TXDESC_OFFSET (TXDESC_SIZE + PACKET_OFFSET_SZ)
 
-
 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];
 };
 
 struct hw_xmit {
+       //spinlock_t xmit_lock;
+       //struct list_head      pending;
        _queue *sta_queue;
+       //struct hw_txqueue *phwtxqueue;
+       //int   txcmdcnt;
        int     accnt;
 };
 
@@ -213,6 +226,8 @@ enum {
        RTW_SCTX_DONE_TX_DESC_NA,
        RTW_SCTX_DONE_TX_DENY,
        RTW_SCTX_DONE_CCX_PKT_FAIL,
+       RTW_SCTX_DONE_DRV_STOP,
+       RTW_SCTX_DONE_DEV_REMOVE,
 };
 
 
@@ -223,7 +238,7 @@ void rtw_sctx_done(struct submit_ctx **sctx);
 
 struct xmit_buf
 {
-       _list   list;
+       struct list_head        list;
 
        _adapter *padapter;
 
@@ -236,57 +251,47 @@ struct xmit_buf
        u16 ext_tag; // 0: Normal xmitbuf, 1: extension xmitbuf.
        u16 flags;
        u32 alloc_sz;
-
        u32  len;
-
        struct submit_ctx *sctx;
-
        u32     ff_hwaddr;
-
        struct urb *pxmit_urb[8];
        dma_addr_t dma_transfer_addr;   /* (in) dma addr for transfer_buffer */
-
        u8 bpending[8];
-
-       sint last[8];
-
-
+       int last[8];
 #if defined(DBG_XMIT_BUF )|| defined(DBG_XMIT_BUF_EXT)
        u8 no;
 #endif
-
 };
 
-
-struct xmit_frame
-{
-       _list   list;
-
+struct xmit_frame {
+       struct list_head        list;
        struct pkt_attrib attrib;
-
        struct sk_buff *pkt;
-
        int     frame_tag;
-
        _adapter *padapter;
-
        u8      *buf_addr;
-
        struct xmit_buf *pxmitbuf;
 
 #ifdef CONFIG_USB_TX_AGGREGATION
        u8      agg_num;
 #endif
        s8      pkt_offset;
+#ifdef CONFIG_RTL8192D
+       u8      EMPktNum;
+       u16     EMPktLen[5];//The max value by HW
+#endif
 
 #ifdef CONFIG_XMIT_ACK
        u8 ack_report;
 #endif
 
+       u8 *alloc_addr; /* the actual address this xmitframe allocated */
+       u8 ext_tag; /* 0:data, 1:mgmt */
+
 };
 
 struct tx_servq {
-       _list   tx_pending;
+       struct list_head        tx_pending;
        _queue  sta_pending;
        int qcnt;
 };
@@ -294,9 +299,9 @@ struct tx_servq {
 
 struct sta_xmit_priv
 {
-       _lock   lock;
-       sint    option;
-       sint    apsd_setting;   //When bit mask is on, the associated edca queue supports APSD.
+       spinlock_t      lock;
+       int     option;
+       int     apsd_setting;   //When bit mask is on, the associated edca queue supports APSD.
 
 
        //struct tx_servq blk_q[MAX_NUMBLKS];
@@ -304,8 +309,8 @@ struct sta_xmit_priv
        struct tx_servq bk_q;                   //priority == 1,2
        struct tx_servq vi_q;                   //priority == 4,5
        struct tx_servq vo_q;                   //priority == 6,7
-       _list   legacy_dz;
-       _list  apsd;
+       struct list_head legacy_dz;
+       struct list_head apsd;
 
        u16 txseq_tid[16];
 
@@ -318,14 +323,14 @@ struct sta_xmit_priv
 
 
 struct hw_txqueue      {
-       volatile sint   head;
-       volatile sint   tail;
-       volatile sint   free_sz;        //in units of 64 bytes
-       volatile sint      free_cmdsz;
-       volatile sint    txsz[8];
+       volatile int    head;
+       volatile int    tail;
+       volatile int    free_sz;        //in units of 64 bytes
+       volatile int      free_cmdsz;
+       volatile int     txsz[8];
        uint    ff_hwaddr;
        uint    cmd_hwaddr;
-       sint    ac_tag;
+       int     ac_tag;
 };
 
 struct agg_pkt_info{
@@ -335,10 +340,10 @@ struct agg_pkt_info{
 
 struct xmit_priv       {
 
-       _lock   lock;
+       spinlock_t      lock;
 
-       _sema   xmit_sema;
-       _sema   terminate_xmitthread_sema;
+       struct semaphore        xmit_sema;
+       struct semaphore        terminate_xmitthread_sema;
 
        //_queue        blk_strms[MAX_NUMBLKS];
        _queue  be_pending;
@@ -353,11 +358,15 @@ struct    xmit_priv       {
        u8 *pallocated_frame_buf;
        u8 *pxmit_frame_buf;
        uint free_xmitframe_cnt;
+       _queue  free_xmit_queue;
 
        //uint mapping_addr;
        //uint pkt_sz;
 
-       _queue  free_xmit_queue;
+       u8 *xframe_ext_alloc_addr;
+       u8 *xframe_ext;
+       uint free_xframe_ext_cnt;
+       _queue free_xframe_ext_queue;
 
        //struct        hw_txqueue      be_txqueue;
        //struct        hw_txqueue      bk_txqueue;
@@ -385,7 +394,7 @@ struct      xmit_priv       {
 
        u8      wmm_para_seq[4];//sequence for wmm ac parameter strength from large to small. it's value is 0->vo, 1->vi, 2->be, 3->bk.
 
-       _sema   tx_retevt;//all tx return event;
+       struct semaphore        tx_retevt;//all tx return event;
        u8              txirp_cnt;//
 
        struct tasklet_struct xmit_tasklet;
@@ -416,10 +425,10 @@ struct    xmit_priv       {
 
 #ifdef CONFIG_XMIT_ACK
        int     ack_tx;
-       _mutex ack_tx_mutex;
+       struct mutex ack_tx_mutex;
        struct submit_ctx ack_tx_ops;
 #endif
-
+       spinlock_t lock_sctx;
 };
 
 extern struct xmit_buf *rtw_alloc_xmitbuf_ext(struct xmit_priv *pxmitpriv);
@@ -434,11 +443,13 @@ extern s32 rtw_make_wlanhdr(_adapter *padapter, u8 *hdr, struct pkt_attrib *patt
 extern s32 rtw_put_snap(u8 *data, u16 h_proto);
 
 extern struct xmit_frame *rtw_alloc_xmitframe(struct xmit_priv *pxmitpriv);
+struct xmit_frame *rtw_alloc_xmitframe_ext(struct xmit_priv *pxmitpriv);
+struct xmit_frame *rtw_alloc_xmitframe_once(struct xmit_priv *pxmitpriv);
 extern s32 rtw_free_xmitframe(struct xmit_priv *pxmitpriv, struct xmit_frame *pxmitframe);
 extern void rtw_free_xmitframe_queue(struct xmit_priv *pxmitpriv, _queue *pframequeue);
-struct tx_servq *rtw_get_sta_pending(_adapter *padapter, struct sta_info *psta, sint up, u8 *ac);
+struct tx_servq *rtw_get_sta_pending(_adapter *padapter, struct sta_info *psta, int up, u8 *ac);
 extern s32 rtw_xmitframe_enqueue(_adapter *padapter, struct xmit_frame *pxmitframe);
-extern struct xmit_frame* rtw_dequeue_xframe(struct xmit_priv *pxmitpriv, struct hw_xmit *phwxmit_i, sint entry);
+extern struct xmit_frame* rtw_dequeue_xframe(struct xmit_priv *pxmitpriv, struct hw_xmit *phwxmit_i, int entry);
 
 extern s32 rtw_xmit_classifier(_adapter *padapter, struct xmit_frame *pxmitframe);
 extern u32 rtw_calculate_wlan_pkt_size_by_attribue(struct pkt_attrib *pattrib);
@@ -453,7 +464,7 @@ void _rtw_init_sta_xmit_priv(struct sta_xmit_priv *psta_xmitpriv);
 
 s32 rtw_txframes_pending(_adapter *padapter);
 s32 rtw_txframes_sta_ac_pending(_adapter *padapter, struct pkt_attrib *pattrib);
-void rtw_init_hwxmits(struct hw_xmit *phwxmit, sint entry);
+void rtw_init_hwxmits(struct hw_xmit *phwxmit, int entry);
 
 
 s32 _rtw_init_xmit_priv(struct xmit_priv *pxmitpriv, _adapter *padapter);
@@ -467,7 +478,7 @@ void rtw_free_hwxmits(_adapter *padapter);
 s32 rtw_xmit(_adapter *padapter, struct sk_buff **pkt);
 
 #if defined(CONFIG_AP_MODE) || defined(CONFIG_TDLS)
-sint xmitframe_enqueue_for_sleeping_sta(_adapter *padapter, struct xmit_frame *pxmitframe);
+int xmitframe_enqueue_for_sleeping_sta(_adapter *padapter, struct xmit_frame *pxmitframe);
 void stop_sta_xmit(_adapter *padapter, struct sta_info *psta);
 void wakeup_sta_to_xmit(_adapter *padapter, struct sta_info *psta);
 void xmit_delivery_enabled_frames(_adapter *padapter, struct sta_info *psta);
@@ -479,8 +490,8 @@ u8  qos_acm(u8 acm_mask, u8 priority);
 void   enqueue_pending_xmitbuf(struct xmit_priv *pxmitpriv, struct xmit_buf *pxmitbuf);
 struct xmit_buf*       dequeue_pending_xmitbuf(struct xmit_priv *pxmitpriv);
 struct xmit_buf*       dequeue_pending_xmitbuf_under_survey(struct xmit_priv *pxmitpriv);
-sint   check_pending_xmitbuf(struct xmit_priv *pxmitpriv);
-thread_return  rtw_xmit_thread(thread_context context);
+int    check_pending_xmitbuf(struct xmit_priv *pxmitpriv);
+int    rtw_xmit_thread(void *context);
 #endif
 
 u32    rtw_get_ff_hwaddr(struct xmit_frame     *pxmitframe);