Commit e2e0c12e authored by Jes Sorensen's avatar Jes Sorensen Committed by Greg Kroah-Hartman
Browse files

staging: rtl8723au: Remove unused rtl8723a_update_txdesc() and child functions

parent b81f3f26
Loading
Loading
Loading
Loading
+0 −248
Original line number Diff line number Diff line
@@ -1975,254 +1975,6 @@ static void rtl8723a_cal_txdesc_chksum(struct tx_desc *ptxdesc)
	ptxdesc->txdw7 |= cpu_to_le32(checksum & 0x0000ffff);
}

static void fill_txdesc_sectype(struct pkt_attrib *pattrib,
				struct txdesc_8723a *ptxdesc)
{
	if ((pattrib->encrypt > 0) && !pattrib->bswenc) {
		switch (pattrib->encrypt) {
			/*  SEC_TYPE */
		case WLAN_CIPHER_SUITE_WEP40:
		case WLAN_CIPHER_SUITE_WEP104:
		case WLAN_CIPHER_SUITE_TKIP:
			ptxdesc->sectype = 1;
			break;

		case WLAN_CIPHER_SUITE_CCMP:
			ptxdesc->sectype = 3;
			break;

		case 0:
		default:
			break;
		}
	}
}

static void fill_txdesc_vcs(struct pkt_attrib *pattrib,
			    struct txdesc_8723a *ptxdesc)
{
	/* DBG_8723A("cvs_mode =%d\n", pattrib->vcs_mode); */

	switch (pattrib->vcs_mode) {
	case RTS_CTS:
		ptxdesc->rtsen = 1;
		break;

	case CTS_TO_SELF:
		ptxdesc->cts2self = 1;
		break;

	case NONE_VCS:
	default:
		break;
	}

	if (pattrib->vcs_mode) {
		ptxdesc->hw_rts_en = 1;	/*  ENABLE HW RTS */

		/*  Set RTS BW */
		if (pattrib->ht_en) {
			if (pattrib->bwmode & HT_CHANNEL_WIDTH_40)
				ptxdesc->rts_bw = 1;

			switch (pattrib->ch_offset) {
			case HAL_PRIME_CHNL_OFFSET_DONT_CARE:
				ptxdesc->rts_sc = 0;
				break;

			case HAL_PRIME_CHNL_OFFSET_LOWER:
				ptxdesc->rts_sc = 1;
				break;

			case HAL_PRIME_CHNL_OFFSET_UPPER:
				ptxdesc->rts_sc = 2;
				break;

			default:
				ptxdesc->rts_sc = 3;	/*  Duplicate */
				break;
			}
		}
	}
}

static void fill_txdesc_phy(struct pkt_attrib *pattrib,
			    struct txdesc_8723a *ptxdesc)
{
	if (pattrib->ht_en) {
		if (pattrib->bwmode & HT_CHANNEL_WIDTH_40)
			ptxdesc->data_bw = 1;

		switch (pattrib->ch_offset) {
		case HAL_PRIME_CHNL_OFFSET_DONT_CARE:
			ptxdesc->data_sc = 0;
			break;

		case HAL_PRIME_CHNL_OFFSET_LOWER:
			ptxdesc->data_sc = 1;
			break;

		case HAL_PRIME_CHNL_OFFSET_UPPER:
			ptxdesc->data_sc = 2;
			break;

		default:
			ptxdesc->data_sc = 3;	/*  Duplicate */
			break;
		}
	}
}

static void rtl8723a_fill_default_txdesc(struct xmit_frame *pxmitframe,
					 u8 *pbuf)
{
	struct rtw_adapter *padapter;
	struct hal_data_8723a *pHalData;
	struct dm_priv *pdmpriv;
	struct mlme_ext_priv *pmlmeext;
	struct mlme_ext_info *pmlmeinfo;
	struct pkt_attrib *pattrib;
	struct txdesc_8723a *ptxdesc;
	s32 bmcst;

	padapter = pxmitframe->padapter;
	pHalData = GET_HAL_DATA(padapter);
	pdmpriv = &pHalData->dmpriv;
	pmlmeext = &padapter->mlmeextpriv;
	pmlmeinfo = &pmlmeext->mlmext_info;

	pattrib = &pxmitframe->attrib;
	bmcst = is_multicast_ether_addr(pattrib->ra);

	ptxdesc = (struct txdesc_8723a *)pbuf;

	if (pxmitframe->frame_tag == DATA_FRAMETAG) {
		ptxdesc->macid = pattrib->mac_id;	/*  CAM_ID(MAC_ID) */

		if (pattrib->ampdu_en == true)
			ptxdesc->agg_en = 1;	/*  AGG EN */
		else
			ptxdesc->bk = 1;	/*  AGG BK */

		ptxdesc->qsel = pattrib->qsel;
		ptxdesc->rate_id = pattrib->raid;

		fill_txdesc_sectype(pattrib, ptxdesc);

		ptxdesc->seq = pattrib->seqnum;

		if ((pattrib->ether_type != 0x888e) &&
		    (pattrib->ether_type != 0x0806) &&
		    (pattrib->dhcp_pkt != 1)) {
			/*  Non EAP & ARP & DHCP type data packet */

			fill_txdesc_vcs(pattrib, ptxdesc);
			fill_txdesc_phy(pattrib, ptxdesc);

			ptxdesc->rtsrate = 8;	/*  RTS Rate = 24M */
			ptxdesc->data_ratefb_lmt = 0x1F;
			ptxdesc->rts_ratefb_lmt = 0xF;

			/*  use REG_INIDATA_RATE_SEL value */
			ptxdesc->datarate =
				pdmpriv->INIDATA_RATE[pattrib->mac_id];

		} else {
			/*  EAP data packet and ARP packet. */
			/*  Use the 1M data rate to send the EAP/ARP packet. */
			/*  This will maybe make the handshake smooth. */

			ptxdesc->bk = 1;	/*  AGG BK */
			ptxdesc->userate = 1;	/*  driver uses rate */
			if (pmlmeinfo->preamble_mode == PREAMBLE_SHORT)
				ptxdesc->data_short = 1;
			ptxdesc->datarate = MRateToHwRate23a(pmlmeext->tx_rate);
		}
	} else if (pxmitframe->frame_tag == MGNT_FRAMETAG) {
/*		RT_TRACE(_module_hal_xmit_c_, _drv_notice_,
		("%s: MGNT_FRAMETAG\n", __func__)); */

		ptxdesc->macid = pattrib->mac_id;	/*  CAM_ID(MAC_ID) */
		ptxdesc->qsel = pattrib->qsel;
		ptxdesc->rate_id = pattrib->raid;	/*  Rate ID */
		ptxdesc->seq = pattrib->seqnum;
		ptxdesc->userate = 1;	/*  driver uses rate, 1M */
		ptxdesc->rty_lmt_en = 1;	/*  retry limit enable */
		ptxdesc->data_rt_lmt = 6;	/*  retry limit = 6 */

		/* CCX-TXRPT ack for xmit mgmt frames. */
		if (pxmitframe->ack_report)
			ptxdesc->ccx = 1;

		ptxdesc->datarate = MRateToHwRate23a(pmlmeext->tx_rate);
	} else if (pxmitframe->frame_tag == TXAGG_FRAMETAG) {
		RT_TRACE(_module_hal_xmit_c_, _drv_warning_,
			 ("%s: TXAGG_FRAMETAG\n", __func__));
	} else {
		RT_TRACE(_module_hal_xmit_c_, _drv_warning_,
			 ("%s: frame_tag = 0x%x\n", __func__,
			  pxmitframe->frame_tag));

		ptxdesc->macid = 4;	/*  CAM_ID(MAC_ID) */
		ptxdesc->rate_id = 6;	/*  Rate ID */
		ptxdesc->seq = pattrib->seqnum;
		ptxdesc->userate = 1;	/*  driver uses rate */
		ptxdesc->datarate = MRateToHwRate23a(pmlmeext->tx_rate);
	}

	ptxdesc->pktlen = pattrib->last_txcmdsz;
	ptxdesc->offset = TXDESC_SIZE + OFFSET_SZ;
	if (bmcst)
		ptxdesc->bmc = 1;
	ptxdesc->ls = 1;
	ptxdesc->fs = 1;
	ptxdesc->own = 1;

	/*  2009.11.05. tynli_test. Suggested by SD4 Filen for FW LPS. */
	/*  (1) The sequence number of each non-Qos frame / broadcast /
	 *   multicast / mgnt frame should be controled by Hw because Fw
	 * will also send null data which we cannot control when Fw LPS enable.
	 *  --> default enable non-Qos data sequense number.
	 2010.06.23. by tynli. */
	/*  (2) Enable HW SEQ control for beacon packet,
	 * because we use Hw beacon. */
	/*  (3) Use HW Qos SEQ to control the seq num of Ext port
	 * non-Qos packets. */
	/*  2010.06.23. Added by tynli. */
	if (!pattrib->qos_en) {
		/*  Hw set sequence number */
		ptxdesc->hwseq_en = 1;	/*  HWSEQ_EN */
		ptxdesc->hwseq_sel = 0;	/*  HWSEQ_SEL */
	}
}

/*
 *	Description:
 *
 *	Parameters:
 *		pxmitframe	xmitframe
 *		pbuf		where to fill tx desc
 */
void rtl8723a_update_txdesc(struct xmit_frame *pxmitframe, u8 *pbuf)
{
	struct tx_desc *pdesc;

	pdesc = (struct tx_desc *)pbuf;
	memset(pdesc, 0, sizeof(struct tx_desc));

	rtl8723a_fill_default_txdesc(pxmitframe, pbuf);

	pdesc->txdw0 = cpu_to_le32(pdesc->txdw0);
	pdesc->txdw1 = cpu_to_le32(pdesc->txdw1);
	pdesc->txdw2 = cpu_to_le32(pdesc->txdw2);
	pdesc->txdw3 = cpu_to_le32(pdesc->txdw3);
	pdesc->txdw4 = cpu_to_le32(pdesc->txdw4);
	pdesc->txdw5 = cpu_to_le32(pdesc->txdw5);
	pdesc->txdw6 = cpu_to_le32(pdesc->txdw6);
	pdesc->txdw7 = cpu_to_le32(pdesc->txdw7);
	rtl8723a_cal_txdesc_chksum(pdesc);
}

/*
 *  Description: In normal chip, we should send some packet to Hw which
 *  will be used by Fw in FW LPS mode. The function is to fill the Tx
+0 −1
Original line number Diff line number Diff line
@@ -212,7 +212,6 @@ struct txrpt_ccx_8723a {
#define txrpt_ccx_qtime_8723a(txrpt_ccx) ((txrpt_ccx)->ccx_qtime0+((txrpt_ccx)->ccx_qtime1<<8))

void handle_txrpt_ccx_8723a(struct rtw_adapter *adapter, void *buf);
void rtl8723a_update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem);
void rtl8723a_fill_fake_txdesc(struct rtw_adapter *padapter, u8 *pDesc, u32 BufferLen, u8 IsPsPoll, u8 IsBTQosNull);

int rtl8723au_hal_xmitframe_enqueue(struct rtw_adapter *padapter, struct xmit_frame *pxmitframe);