2013-05-08 21:45:39 +00:00
|
|
|
/******************************************************************************
|
|
|
|
*
|
|
|
|
* Copyright(c) 2007 - 2011 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
|
|
|
|
*
|
|
|
|
*
|
|
|
|
******************************************************************************/
|
|
|
|
#define _RTL8188E_XMIT_C_
|
|
|
|
|
|
|
|
#include <drv_conf.h>
|
|
|
|
#include <osdep_service.h>
|
|
|
|
#include <drv_types.h>
|
|
|
|
#include <rtl8188e_hal.h>
|
|
|
|
|
|
|
|
void dump_txrpt_ccx_88e(void *buf)
|
|
|
|
{
|
|
|
|
struct txrpt_ccx_88e *txrpt_ccx = (struct txrpt_ccx_88e *)buf;
|
|
|
|
|
2013-05-25 23:35:42 +00:00
|
|
|
DBG_88E("%s:\n"
|
2013-05-08 21:45:39 +00:00
|
|
|
"tag1:%u, pkt_num:%u, txdma_underflow:%u, int_bt:%u, int_tri:%u, int_ccx:%u\n"
|
|
|
|
"mac_id:%u, pkt_ok:%u, bmc:%u\n"
|
|
|
|
"retry_cnt:%u, lifetime_over:%u, retry_over:%u\n"
|
|
|
|
"ccx_qtime:%u\n"
|
|
|
|
"final_data_rate:0x%02x\n"
|
|
|
|
"qsel:%u, sw:0x%03x\n"
|
|
|
|
, __func__
|
|
|
|
, txrpt_ccx->tag1, txrpt_ccx->pkt_num, txrpt_ccx->txdma_underflow, txrpt_ccx->int_bt, txrpt_ccx->int_tri, txrpt_ccx->int_ccx
|
|
|
|
, txrpt_ccx->mac_id, txrpt_ccx->pkt_ok, txrpt_ccx->bmc
|
2013-05-19 04:28:07 +00:00
|
|
|
, txrpt_ccx->retry_cnt, txrpt_ccx->lifetime_over, txrpt_ccx->retry_over
|
2013-05-08 21:45:39 +00:00
|
|
|
, txrpt_ccx_qtime_88e(txrpt_ccx)
|
|
|
|
, txrpt_ccx->final_data_rate
|
|
|
|
, txrpt_ccx->qsel, txrpt_ccx_sw_88e(txrpt_ccx)
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
void handle_txrpt_ccx_88e(_adapter *adapter, u8 *buf)
|
|
|
|
{
|
|
|
|
struct txrpt_ccx_88e *txrpt_ccx = (struct txrpt_ccx_88e *)buf;
|
|
|
|
|
|
|
|
#ifdef DBG_CCX
|
|
|
|
dump_txrpt_ccx_88e(buf);
|
|
|
|
#endif
|
|
|
|
|
|
|
|
if (txrpt_ccx->int_ccx) {
|
|
|
|
if (txrpt_ccx->pkt_ok)
|
|
|
|
rtw_ack_tx_done(&adapter->xmitpriv, RTW_SCTX_DONE_SUCCESS);
|
|
|
|
else
|
|
|
|
rtw_ack_tx_done(&adapter->xmitpriv, RTW_SCTX_DONE_CCX_PKT_FAIL);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void _dbg_dump_tx_info(_adapter *padapter,int frame_tag,struct tx_desc *ptxdesc)
|
|
|
|
{
|
|
|
|
u8 bDumpTxPkt;
|
2013-05-26 03:02:10 +00:00
|
|
|
u8 bDumpTxDesc = false;
|
2013-05-08 21:45:39 +00:00
|
|
|
rtw_hal_get_def_var(padapter, HAL_DEF_DBG_DUMP_TXPKT, &(bDumpTxPkt));
|
|
|
|
|
2013-07-10 18:25:07 +00:00
|
|
|
if (bDumpTxPkt ==1){/* dump txdesc for data frame */
|
2013-05-25 23:35:42 +00:00
|
|
|
DBG_88E("dump tx_desc for data frame\n");
|
2013-05-19 04:28:07 +00:00
|
|
|
if ((frame_tag&0x0f) == DATA_FRAMETAG){
|
2013-05-26 03:02:10 +00:00
|
|
|
bDumpTxDesc = true;
|
2013-05-08 21:45:39 +00:00
|
|
|
}
|
2013-05-19 04:28:07 +00:00
|
|
|
}
|
2013-07-10 18:25:07 +00:00
|
|
|
else if (bDumpTxPkt ==2){/* dump txdesc for mgnt frame */
|
2013-05-25 23:35:42 +00:00
|
|
|
DBG_88E("dump tx_desc for mgnt frame\n");
|
2013-05-19 04:28:07 +00:00
|
|
|
if ((frame_tag&0x0f) == MGNT_FRAMETAG){
|
2013-05-26 03:02:10 +00:00
|
|
|
bDumpTxDesc = true;
|
2013-05-08 21:45:39 +00:00
|
|
|
}
|
2013-05-19 04:28:07 +00:00
|
|
|
}
|
2013-07-10 18:25:07 +00:00
|
|
|
else if (bDumpTxPkt ==3){/* dump early info */
|
2013-05-08 21:45:39 +00:00
|
|
|
}
|
|
|
|
|
2013-05-09 04:04:25 +00:00
|
|
|
if (bDumpTxDesc){
|
2013-05-25 23:35:42 +00:00
|
|
|
DBG_88E("=====================================\n");
|
|
|
|
DBG_88E("txdw0(0x%08x)\n",ptxdesc->txdw0);
|
|
|
|
DBG_88E("txdw1(0x%08x)\n",ptxdesc->txdw1);
|
|
|
|
DBG_88E("txdw2(0x%08x)\n",ptxdesc->txdw2);
|
|
|
|
DBG_88E("txdw3(0x%08x)\n",ptxdesc->txdw3);
|
|
|
|
DBG_88E("txdw4(0x%08x)\n",ptxdesc->txdw4);
|
|
|
|
DBG_88E("txdw5(0x%08x)\n",ptxdesc->txdw5);
|
|
|
|
DBG_88E("txdw6(0x%08x)\n",ptxdesc->txdw6);
|
|
|
|
DBG_88E("txdw7(0x%08x)\n",ptxdesc->txdw7);
|
|
|
|
DBG_88E("=====================================\n");
|
2013-05-08 21:45:39 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
}
|