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)); }
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)); }