コード例 #1
0
ファイル: mds.c プロジェクト: flwh/Alcatel_OT_985_kernel
void
Mds_SendComplete(struct wbsoft_priv *adapter, PT02_DESCRIPTOR pT02)
{
	struct wb35_mds *pMds = &adapter->Mds;
	struct hw_data *pHwData = &adapter->sHwData;
	u8	PacketId = (u8)pT02->T02_Tx_PktID;
	unsigned char	SendOK = true;
	u8	RetryCount, TxRate;

	if (pT02->T02_IgnoreResult) /* Don't care the result */
		return;
	if (pT02->T02_IsLastMpdu) {
		/* TODO: DTO -- get the retry count and fragment count */
		/* Tx rate */
		TxRate = pMds->TxRate[ PacketId ][ 0 ];
		RetryCount = (u8)pT02->T02_MPDU_Cnt;
		if (pT02->value & FLAG_ERROR_TX_MASK) {
			SendOK = false;

			if (pT02->T02_transmit_abort || pT02->T02_out_of_MaxTxMSDULiftTime) {
				/* retry error */
				pHwData->dto_tx_retry_count += (RetryCount+1);
				/* [for tx debug] */
				if (RetryCount<7)
					pHwData->tx_retry_count[RetryCount] += RetryCount;
				else
					pHwData->tx_retry_count[7] += RetryCount;
				#ifdef _PE_STATE_DUMP_
				printk("dto_tx_retry_count =%d\n", pHwData->dto_tx_retry_count);
				#endif
				MTO_SetTxCount(adapter, TxRate, RetryCount);
			}
			pHwData->dto_tx_frag_count += (RetryCount+1);

			/* [for tx debug] */
			if (pT02->T02_transmit_abort_due_to_TBTT)
				pHwData->tx_TBTT_start_count++;
			if (pT02->T02_transmit_without_encryption_due_to_wep_on_false)
				pHwData->tx_WepOn_false_count++;
			if (pT02->T02_discard_due_to_null_wep_key)
				pHwData->tx_Null_key_count++;
		} else {
			if (pT02->T02_effective_transmission_rate)
				pHwData->tx_ETR_count++;
			MTO_SetTxCount(adapter, TxRate, RetryCount);
		}

		/* Clear send result buffer */
		pMds->TxResult[ PacketId ] = 0;
	} else
		pMds->TxResult[ PacketId ] |= ((u16)(pT02->value & 0x0ffff));
}
コード例 #2
0
ファイル: mds.c プロジェクト: romanbb/android_kernel_lge_d851
void
Mds_SendComplete(struct wbsoft_priv *adapter, struct T02_descriptor *pT02)
{
	struct wb35_mds *pMds = &adapter->Mds;
	struct hw_data *pHwData = &adapter->sHwData;
	u8	PacketId = (u8)pT02->T02_Tx_PktID;
	unsigned char	SendOK = true;
	u8	RetryCount, TxRate;

	if (pT02->T02_IgnoreResult) /*                       */
		return;
	if (pT02->T02_IsLastMpdu) {
		/*                                                     */
		/*         */
		TxRate = pMds->TxRate[PacketId][0];
		RetryCount = (u8)pT02->T02_MPDU_Cnt;
		if (pT02->value & FLAG_ERROR_TX_MASK) {
			SendOK = false;

			if (pT02->T02_transmit_abort || pT02->T02_out_of_MaxTxMSDULiftTime) {
				/*             */
				pHwData->dto_tx_retry_count += (RetryCount+1);
				/*                */
				if (RetryCount < 7)
					pHwData->tx_retry_count[RetryCount] += RetryCount;
				else
					pHwData->tx_retry_count[7] += RetryCount;
				pr_debug("dto_tx_retry_count =%d\n", pHwData->dto_tx_retry_count);
				MTO_SetTxCount(adapter, TxRate, RetryCount);
			}
			pHwData->dto_tx_frag_count += (RetryCount+1);

			/*                */
			if (pT02->T02_transmit_abort_due_to_TBTT)
				pHwData->tx_TBTT_start_count++;
			if (pT02->T02_transmit_without_encryption_due_to_wep_on_false)
				pHwData->tx_WepOn_false_count++;
			if (pT02->T02_discard_due_to_null_wep_key)
				pHwData->tx_Null_key_count++;
		} else {
			if (pT02->T02_effective_transmission_rate)
				pHwData->tx_ETR_count++;
			MTO_SetTxCount(adapter, TxRate, RetryCount);
		}

		/*                          */
		pMds->TxResult[PacketId] = 0;
	} else
		pMds->TxResult[PacketId] |= ((u16)(pT02->value & 0x0ffff));
}