GNU Linux-libre 4.14.332-gnu1
[releases.git] / drivers / staging / rtl8188eu / hal / rtl8188e_xmit.c
1 /******************************************************************************
2  *
3  * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
4  *
5  * This program is free software; you can redistribute it and/or modify it
6  * under the terms of version 2 of the GNU General Public License as
7  * published by the Free Software Foundation.
8  *
9  * This program is distributed in the hope that it will be useful, but WITHOUT
10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11  * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12  * more details.
13  *
14  ******************************************************************************/
15 #define _RTL8188E_XMIT_C_
16
17 #include <osdep_service.h>
18 #include <drv_types.h>
19 #include <rtl8188e_hal.h>
20
21 void dump_txrpt_ccx_88e(void *buf)
22 {
23         struct txrpt_ccx_88e *txrpt_ccx = buf;
24
25         DBG_88E("%s:\n"
26                 "tag1:%u, pkt_num:%u, txdma_underflow:%u, int_bt:%u, int_tri:%u, int_ccx:%u\n"
27                 "mac_id:%u, pkt_ok:%u, bmc:%u\n"
28                 "retry_cnt:%u, lifetime_over:%u, retry_over:%u\n"
29                 "ccx_qtime:%u\n"
30                 "final_data_rate:0x%02x\n"
31                 "qsel:%u, sw:0x%03x\n",
32                 __func__, txrpt_ccx->tag1, txrpt_ccx->pkt_num,
33                 txrpt_ccx->txdma_underflow, txrpt_ccx->int_bt,
34                 txrpt_ccx->int_tri, txrpt_ccx->int_ccx,
35                 txrpt_ccx->mac_id, txrpt_ccx->pkt_ok, txrpt_ccx->bmc,
36                 txrpt_ccx->retry_cnt, txrpt_ccx->lifetime_over,
37                 txrpt_ccx->retry_over, txrpt_ccx_qtime_88e(txrpt_ccx),
38                 txrpt_ccx->final_data_rate, txrpt_ccx->qsel,
39                 txrpt_ccx_sw_88e(txrpt_ccx)
40         );
41 }
42
43 void handle_txrpt_ccx_88e(struct adapter *adapter, u8 *buf)
44 {
45         struct txrpt_ccx_88e *txrpt_ccx = (struct txrpt_ccx_88e *)buf;
46
47         if (txrpt_ccx->int_ccx) {
48                 if (txrpt_ccx->pkt_ok)
49                         rtw_ack_tx_done(&adapter->xmitpriv,
50                                         RTW_SCTX_DONE_SUCCESS);
51                 else
52                         rtw_ack_tx_done(&adapter->xmitpriv,
53                                         RTW_SCTX_DONE_CCX_PKT_FAIL);
54         }
55 }
56
57 void _dbg_dump_tx_info(struct adapter *padapter, int frame_tag,
58                        struct tx_desc *ptxdesc)
59 {
60         u8 dmp_txpkt;
61         bool dump_txdesc = false;
62
63         rtw_hal_get_def_var(padapter, HAL_DEF_DBG_DUMP_TXPKT, &(dmp_txpkt));
64
65         if (dmp_txpkt == 1) {/* dump txdesc for data frame */
66                 DBG_88E("dump tx_desc for data frame\n");
67                 if ((frame_tag & 0x0f) == DATA_FRAMETAG)
68                         dump_txdesc = true;
69         } else if (dmp_txpkt == 2) {/* dump txdesc for mgnt frame */
70                 DBG_88E("dump tx_desc for mgnt frame\n");
71                 if ((frame_tag & 0x0f) == MGNT_FRAMETAG)
72                         dump_txdesc = true;
73         }
74
75         if (dump_txdesc) {
76                 DBG_88E("=====================================\n");
77                 DBG_88E("txdw0(0x%08x)\n", ptxdesc->txdw0);
78                 DBG_88E("txdw1(0x%08x)\n", ptxdesc->txdw1);
79                 DBG_88E("txdw2(0x%08x)\n", ptxdesc->txdw2);
80                 DBG_88E("txdw3(0x%08x)\n", ptxdesc->txdw3);
81                 DBG_88E("txdw4(0x%08x)\n", ptxdesc->txdw4);
82                 DBG_88E("txdw5(0x%08x)\n", ptxdesc->txdw5);
83                 DBG_88E("txdw6(0x%08x)\n", ptxdesc->txdw6);
84                 DBG_88E("txdw7(0x%08x)\n", ptxdesc->txdw7);
85                 DBG_88E("=====================================\n");
86         }
87 }