linux/drivers/staging/rtl8188eu/hal/rtl8188e_xmit.c
<<
>>
Prefs
   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
  21void 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
  43void 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
  57void _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}
  88