1 /******************************************************************************
3 * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
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.
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
14 * You should have received a copy of the GNU General Public License along with
15 * this program; if not, write to the Free Software Foundation, Inc.,
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
19 ******************************************************************************/
20 #define _RTL8188E_XMIT_C_
22 #include <osdep_service.h>
23 #include <drv_types.h>
24 #include <rtl8188e_hal.h>
26 void dump_txrpt_ccx_88e(void *buf
)
28 struct txrpt_ccx_88e
*txrpt_ccx
= buf
;
31 "tag1:%u, pkt_num:%u, txdma_underflow:%u, int_bt:%u, int_tri:%u, int_ccx:%u\n"
32 "mac_id:%u, pkt_ok:%u, bmc:%u\n"
33 "retry_cnt:%u, lifetime_over:%u, retry_over:%u\n"
35 "final_data_rate:0x%02x\n"
36 "qsel:%u, sw:0x%03x\n",
37 __func__
, txrpt_ccx
->tag1
, txrpt_ccx
->pkt_num
,
38 txrpt_ccx
->txdma_underflow
, txrpt_ccx
->int_bt
,
39 txrpt_ccx
->int_tri
, txrpt_ccx
->int_ccx
,
40 txrpt_ccx
->mac_id
, txrpt_ccx
->pkt_ok
, txrpt_ccx
->bmc
,
41 txrpt_ccx
->retry_cnt
, txrpt_ccx
->lifetime_over
,
42 txrpt_ccx
->retry_over
, txrpt_ccx_qtime_88e(txrpt_ccx
),
43 txrpt_ccx
->final_data_rate
, txrpt_ccx
->qsel
,
44 txrpt_ccx_sw_88e(txrpt_ccx
)
48 void handle_txrpt_ccx_88e(struct adapter
*adapter
, u8
*buf
)
50 struct txrpt_ccx_88e
*txrpt_ccx
= (struct txrpt_ccx_88e
*)buf
;
52 if (txrpt_ccx
->int_ccx
) {
53 if (txrpt_ccx
->pkt_ok
)
54 rtw_ack_tx_done(&adapter
->xmitpriv
,
55 RTW_SCTX_DONE_SUCCESS
);
57 rtw_ack_tx_done(&adapter
->xmitpriv
,
58 RTW_SCTX_DONE_CCX_PKT_FAIL
);
62 void _dbg_dump_tx_info(struct adapter
*padapter
, int frame_tag
,
63 struct tx_desc
*ptxdesc
)
66 bool dump_txdesc
= false;
68 rtw_hal_get_def_var(padapter
, HAL_DEF_DBG_DUMP_TXPKT
, &(dmp_txpkt
));
70 if (dmp_txpkt
== 1) {/* dump txdesc for data frame */
71 DBG_88E("dump tx_desc for data frame\n");
72 if ((frame_tag
& 0x0f) == DATA_FRAMETAG
)
74 } else if (dmp_txpkt
== 2) {/* dump txdesc for mgnt frame */
75 DBG_88E("dump tx_desc for mgnt frame\n");
76 if ((frame_tag
& 0x0f) == MGNT_FRAMETAG
)
81 DBG_88E("=====================================\n");
82 DBG_88E("txdw0(0x%08x)\n", ptxdesc
->txdw0
);
83 DBG_88E("txdw1(0x%08x)\n", ptxdesc
->txdw1
);
84 DBG_88E("txdw2(0x%08x)\n", ptxdesc
->txdw2
);
85 DBG_88E("txdw3(0x%08x)\n", ptxdesc
->txdw3
);
86 DBG_88E("txdw4(0x%08x)\n", ptxdesc
->txdw4
);
87 DBG_88E("txdw5(0x%08x)\n", ptxdesc
->txdw5
);
88 DBG_88E("txdw6(0x%08x)\n", ptxdesc
->txdw6
);
89 DBG_88E("txdw7(0x%08x)\n", ptxdesc
->txdw7
);
90 DBG_88E("=====================================\n");