void rtl8192c_sreset_xmit_status_check(_adapter *padapter)
{
    HAL_DATA_TYPE	*pHalData = GET_HAL_DATA(padapter);
    struct sreset_priv *psrtpriv = &pHalData->srestpriv;

    unsigned long current_time;
    struct xmit_priv	*pxmitpriv = &padapter->xmitpriv;
    unsigned int diff_time;
    u32 txdma_status;
    if( (txdma_status=rtw_read32(padapter, REG_TXDMA_STATUS)) !=0x00) {
        DBG_871X("%s REG_TXDMA_STATUS:0x%08x\n", __FUNCTION__, txdma_status);
        rtl8192c_silentreset_for_specific_platform(padapter);
    }

    //total xmit irp = 4
    //DBG_8192C("==>%s free_xmitbuf_cnt(%d),txirp_cnt(%d)\n",__FUNCTION__,pxmitpriv->free_xmitbuf_cnt,pxmitpriv->txirp_cnt);
    //if(pxmitpriv->txirp_cnt == NR_XMITBUFF+1)
    current_time = rtw_get_current_time();
    if(0==pxmitpriv->free_xmitbuf_cnt)
    {
        diff_time = jiffies_to_msecs(current_time - psrtpriv->last_tx_time);

        if(diff_time > 2000) {
            if(psrtpriv->last_tx_complete_time==0) {
                psrtpriv->last_tx_complete_time = current_time;
            }
            else {
                diff_time = jiffies_to_msecs(current_time - psrtpriv->last_tx_complete_time);
                if(diff_time > 4000) {
                    //padapter->Wifi_Error_Status = WIFI_TX_HANG;
                    DBG_8192C("%s tx hang\n", __FUNCTION__);
                    rtl8192c_silentreset_for_specific_platform(padapter);
                }
            }
        }
    }
}
void rtl8192c_sreset_linked_status_check(_adapter *padapter)
{
	u32 regc50,regc58,reg824,reg800;
	regc50 = rtw_read32(padapter,0xc50);
	regc58 = rtw_read32(padapter,0xc58);
	reg824 = rtw_read32(padapter,0x824);
	reg800 = rtw_read32(padapter,0x800);	
	if(	((regc50&0xFFFFFF00)!= 0x69543400)||
		((regc58&0xFFFFFF00)!= 0x69543400)||
		(((reg824&0xFFFFFF00)!= 0x00390000)&&(((reg824&0xFFFFFF00)!= 0x80390000)))||
		( ((reg800&0xFFFFFF00)!= 0x03040000)&&((reg800&0xFFFFFF00)!= 0x83040000)))
	{
		rtl8192c_silentreset_for_specific_platform(padapter);	
	}
}