⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hwacproc.c

📁 marvell8385 GSPI开发驱动
💻 C
📖 第 1 页 / 共 5 页
字号:
        break;
#endif //BCA
        
    case HostCmd_RET_802_11_LED_CONTROL:
        TT_CMDPARSE_CMD_RESP2( HostCmd_DS_802_11_LED_CONTROL, NumLed, data[0] );
        break;
        
#ifdef CAL_DATA
    case HostCmd_RET_802_11_CAL_DATA_EXT:
        TT_CMDPARSE_CMD_RESP2(HostCmd_DS_802_11_CAL_DATA_EXT, Revision, CalDataLen );
        break;
    case HostCmd_RET_802_11_CAL_DATA:
        TT_CMDPARSE_CMD_RESP2(HostCmd_DS_802_11_CAL_DATA, PAOption, Domain );
        break;
#endif //CAL_DATA

    case HostCmd_RET_802_11_PWR_CFG:
        TT_CMDPARSE_CMD_RESP2(HostCmd_DS_802_11_PWR_CFG, Enable, P2);
//      TT_CMDPARSE_QUERY_BACKUP_CMD_RESP( Adapter, HostCmd_DS_802_11_PWR_CFG, Enable, P2);
//      TT_CMDPARSE_DUMP_DATA3( Adapter->OidCmdRespBuf, OID_MRVL_DS_PWR_CFG, P0, P1, P2 );
//      TT_CMDPARSE_SET_EVENT( Adapter );
        break;

    case HostCmd_RET_802_11_TPC_CFG:
        TT_CMDPARSE_CMD_RESP2(HostCmd_DS_802_11_TPC_CFG, Enable, P2);
//      TT_CMDPARSE_QUERY_BACKUP_CMD_RESP( Adapter, HostCmd_DS_802_11_TPC_CFG, Enable, P2);
//      TT_CMDPARSE_DUMP_DATA3( Adapter->OidCmdRespBuf, OID_MRVL_DS_TPC_CFG, P0, P1, P2 );
//      TT_CMDPARSE_SET_EVENT( Adapter );
/*      {
            PHostCmd_DS_802_11_TPC_CFG      pCmdResult;
            
            NKDbgPrintfW( L"-v5- CMD_RSP: TPC_CFG, Result=%d\n",
                pCmdResult->Result );
        }
*/      break;
        
    case HostCmd_RET_802_11_RATE_ADAPT_RATESET:
        TT_CMDPARSE_CMD_RESP2(HostCmd_RATE_ADAPT_RATESET, EnableHwAuto, Bitmap);
//      TT_CMDPARSE_QUERY_BACKUP_CMD_RESP( Adapter, HostCmd_RATE_ADAPT_RATESET, EnableHwAuto );
//      TT_CMDPARSE_DUMP_DATA3( Adapter->OidCmdRespBuf, OID_MRVL_DS_RATE_ADAPT_RATESET, EnableHwAuto, Bitmap, Bitmap );
//      TT_CMDPARSE_SET_EVENT( Adapter );
/*      {
            PHostCmd_RATE_ADAPT_RATESET pCmdResult;

            pCmdResult = (PHostCmd_RATE_ADAPT_RATESET) pRetPtr;

            NKDbgPrintfW( L"-v5- CMD_RSP: RATE_ADAPT, Act=%d, Result=%d, Enable=%d, Bitmap=0x%x\n", 
                pCmdResult->Action, pCmdResult->Result, pCmdResult->EnableHwAuto, pCmdResult->Bitmap );

        }
*/      break;

//tt --

/* tt
#ifdef ADHOCAES
    case HostCmd_RET_802_11_PWK_KEY:
    {
      PHostCmd_DS_802_11_PWK_KEY pCmd = (PHostCmd_DS_802_11_PWK_KEY)pRetPtr;
      if (pCmd->Action == HostCmd_ACT_GET_AES)
      {
        HandleAdhocAES( Adapter,
                  pCmd,
                  Adapter->CurCmd->InformationBuffer,
                  Adapter->CurCmd->BytesWritten);
      }
      
    }
    break;
#endif    
*/

        case HostCmd_RET_802_11_RSSI:
        {
            PHostCmd_DS_802_11_RSSI pCmd = (PHostCmd_DS_802_11_RSSI)pRetPtr;
           
#ifdef NEW_RSSI
  /* store the non average value */
  Adapter->SNR[TYPE_BEACON][TYPE_NOAVG] = pCmd->SNR ;
  Adapter->NF[TYPE_BEACON][TYPE_NOAVG]  = pCmd->NoiseFloor ;
      
  Adapter->SNR[TYPE_BEACON][TYPE_AVG] = 
    CAL_AVG_SNR_NF(Adapter->SNR[TYPE_BEACON][TYPE_AVG],(pCmd->SNR));
  Adapter->NF[TYPE_BEACON][TYPE_AVG] = 
    CAL_AVG_SNR_NF(Adapter->NF[TYPE_BEACON][TYPE_AVG],(pCmd->NoiseFloor));

  /* store the beacon values in SNRNF variable, which 
   * is present in adapter structure */

  Adapter->SNRNF[SNR_BEACON][TYPE_NOAVG]  = 
    (UCHAR)Adapter->SNR[TYPE_BEACON][TYPE_NOAVG];
  Adapter->SNRNF[SNR_BEACON][TYPE_AVG]  =
    Adapter->SNR[TYPE_BEACON][TYPE_AVG] / AVG_SCALE;

  Adapter->SNRNF[NF_BEACON][TYPE_NOAVG] = 
    (UCHAR)Adapter->NF[TYPE_BEACON][TYPE_NOAVG];
  Adapter->SNRNF[NF_BEACON][TYPE_AVG]   =
    Adapter->NF[TYPE_BEACON][TYPE_AVG] / AVG_SCALE;
   
  // NOTE: Adapter->SNRNF[SNR_RXPD][X] - represents RXPD for SNR
  //       Adapter->SNRNF[NF_RXPD][X] - represents RXPD for NF
    
  Adapter->RSSI[TYPE_BEACON][TYPE_NOAVG] = 
    CAL_RSSI(Adapter->SNR[TYPE_BEACON][TYPE_NOAVG],
        Adapter->NF[TYPE_BEACON][TYPE_NOAVG]);

  Adapter->RSSI[TYPE_BEACON][TYPE_AVG] = 
    CAL_RSSI(Adapter->SNR[TYPE_BEACON][TYPE_AVG] / AVG_SCALE,
      Adapter->NF[TYPE_BEACON][TYPE_AVG] / AVG_SCALE);

    if ((Adapter->RSSI[TYPE_BEACON][TYPE_AVG] > -10) || (Adapter->RSSI[TYPE_BEACON][TYPE_AVG] < -200))
        {
            DBGPRINT(DBG_ERROR, ("ERROR: Incorrect RSSI Value1 - SNR = %d, "
                                 "NF= %d, Adapter->RSSI[TYPE_BEACON][TYPE_AVG] = %d, Adapter->LastRSSI = %d\n", 
                                 pCmd->SNR, 
                                 pCmd->NoiseFloor,
                                 Adapter->RSSI[TYPE_BEACON][TYPE_AVG],
                                 Adapter->LastRSSI));
        }
        else
        {    
            if (Adapter->LastRSSI == MRVL_DEFAULT_INITIAL_RSSI)
            {
                Adapter->LastRSSI = Adapter->RSSI[TYPE_BEACON][TYPE_AVG];                    
            }else
              {
                   Adapter->LastRSSI = ((Adapter->LastRSSI * 3)+(Adapter->RSSI[TYPE_BEACON][TYPE_AVG]))/4;
              }   
        }
    
        
  //PRINTK1("Beacon RSSI value = 0x%x\n", 
  //  Adapter->RSSI[TYPE_BEACON][TYPE_AVG]);  
  
  DBGPRINT(DBG_CMDRESP, ("HostCmd_RET_802_11_RSSI: pCmd->SNR = %d,pCmd->NoiseFloor= %d,Adapter->RSSI[TYPE_BEACON][TYPE_NOAVG] = %d, Adapter->RSSI[TYPE_BEACON][TYPE_AVG]= %d, Adapter->LastRSSI=%d\n", 
                                    pCmd->SNR, 
                                    pCmd->NoiseFloor,
                                    Adapter->RSSI[TYPE_BEACON][TYPE_NOAVG],
                                    Adapter->RSSI[TYPE_BEACON][TYPE_AVG],
                                    Adapter->LastRSSI));

#else 
    //CHAR                    cNF; // noise floor value
    //LONG              CurRSSI;
  SHORT    sNF; 
  LONG   CurRSSI;
  #ifndef MRV_CHIP_8385PN 
        SHORT    sSNR;
    #endif 
   #ifdef MRV_CHIP_8385PN        
           // cNF =-(SHORT)(~(pCmd->NoiseFloor)&0X7F);
           //                 
           // CurRSSI = pCmd->SNR + cNF;  

       sNF =-((SHORT)((pCmd->NoiseFloor & 0X7F) + 5));                    
         CurRSSI = -((SHORT)((pCmd->SNR & 0X7F) + 5));
          
            //DBGPRINT(DBG_LOAD, ("Print B0 RSSI Value - SNR = %d, "
            //       "NFRaw = %d, NF = %d, Ave = %d\n", 
            //       pCmd->SNR, 
            //       pCmd->NoiseFloor,
            //       cNF,
            //       Adapter->LastRSSI));   
   #elif defined(MRV_CHIP_8686PN)   //dralee_1209
       sNF =-((SHORT)((pCmd->NoiseFloor & 0X7F) + 5));                    
       CurRSSI = -((SHORT)((pCmd->SNR & 0X7F) + 5));
   #else      
            //cNF = pCmd->NoiseFloor << 2;
            //cNF -= 96;
            //cNF -= 60; // normalization
            //CurRSSI = pCmd->SNR + cNF;
             sNF = -((SHORT)((pCmd->NoiseFloor & 0X7F) + 30 + 5));
             sSNR = (SHORT)((pCmd->SNR& 0X7F)
             CurRSSI = sSNR + sNF;
   #endif 
            
            if ( (CurRSSI > 0) || (CurRSSI < -200) )
            {
                DBGPRINT(DBG_ERROR, ("ERROR: Incorrect RSSI Value1 - SNR = %d, "
                                    "NFRaw = %d, NF = %d, Ave = %d\n", 
                                    pCmd->SNR, 
                                    pCmd->NoiseFloor,
                                    sNF,
                                    Adapter->LastRSSI));
            } 
            else
            {
                if ( Adapter->LastRSSI == MRVL_DEFAULT_INITIAL_RSSI )
                {
                    Adapter->LastRSSI = CurRSSI;                    
                }
                else
                {
                    Adapter->LastRSSI = ((Adapter->LastRSSI * 3)+CurRSSI)/4;
                }
            }    
            //HexDump(DBG_ALL, "RSSI CMD Resp:", (PUCHAR)pRetPtr, pRetPtr->Size);
            //DBGPRINT(DBG_ALL, ("RSSI CMD: SNR = %d, NFRaw = %d, NF = %d, AveRSSI = %d\n",
            //    pCmd->SNR, pCmd->NoiseFloor, cNF, Adapter->LastRSSI));
#endif //NEW_RSSI

#ifdef CONFIG_VERTICAL_HANDOFF

#ifdef DEBUG_PARA_ROAMING_PRINT
		RETAILMSG(1,(TEXT("Wake up beacon rssi listen thread!Caused by HostCmd_RET_802_11_RSSI...\n")));
#endif
		SetEvent(priv.hBeaconRSSIUpdatedEvent);
		
#endif
        }

        break;

    case HostCmd_RET_HW_SPEC_INFO:
      pHWSpec = (PHostCmd_DS_GET_HW_SPEC)pRetPtr;
      HandleHardwareSpec(pHWSpec, Adapter);
    break;

    case HostCmd_RET_802_11_RESET:

      DBGPRINT(DBG_CMDRESP,("HWAC - Reset command successful\n"));  
  
      SetMacPacketFilter(
        Adapter,
        Adapter->CurrentPacketFilter);
    break;

    case HostCmd_RET_802_11_STATUS_INFO:
      pStatus = (PHostCmd_DS_802_11_QUERY_STATUS)pRetPtr;
      Adapter->HardwareStatus = NdisHardwareStatusReady;
      Adapter->LinkSpeed      = pStatus->MaxLinkSpeed;
      Adapter->FWStatus       = pStatus->FWStatus;
      Adapter->MACStatus      = pStatus->MACStatus;
      Adapter->RFStatus       = pStatus->RFStatus;
      Adapter->CurentChannel  = pStatus->CurentChannel;
    break;

  
    case HostCmd_RET_802_11_STAT:
      // TODO: 802.11 stat in adapter object
/*
      p11Stat = (PHostCmd_DS_802_11_GET_STAT)pRetPtr;
      Adapter->TransmittedFragmentCount.LowPart   = p11Stat->TXFragmentCnt;
      Adapter->MulticastTransmittedFrameCount.LowPart = p11Stat->MCastTXFrameCnt;
      Adapter->FailedCount.LowPart          = p11Stat->FailedCnt;
      Adapter->RetryCount.LowPart           = p11Stat->RetryCnt;
      Adapter->MultipleRetryCount.LowPart       = p11Stat->MultipleRetryCnt;
      Adapter->RTSSuccessCount.LowPart        = p11Stat->RTSSuccessCnt;
      Adapter->RTSFailureCount.LowPart        = p11Stat->RTSFailureCnt;
      Adapter->ACKFailureCount.LowPart        = p11Stat->ACKFailureCnt;
      Adapter->FrameDuplicateCount.LowPart      = p11Stat->FrameDuplicateCnt;
      Adapter->ReceivedFragmentCount.LowPart      = p11Stat->RXFragmentCnt;
      Adapter->MulticastReceivedFrameCount.LowPart  = p11Stat->MCastRXFrameCnt;
      Adapter->FCSErrorCount.LowPart          = p11Stat->FCSErrorCnt;
*/
    break;
  
    case HostCmd_RET_802_3_STAT:
      p3Stat = (PHostCmd_DS_802_3_GET_STAT)pRetPtr;
      Adapter->XmitOK      = p3Stat->XmitOK;
      Adapter->RcvOK       = p3Stat->RcvOK;
      Adapter->XmitError   = p3Stat->XmitError;
      Adapter->RcvError    = p3Stat->RcvError;
      Adapter->RcvNoBuffer = p3Stat->RcvNoBuffer;
      Adapter->RcvCRCError = p3Stat->RcvCRCError;
    break;
    case HostCmd_RET_802_11_PS_MODE:    
        DBGPRINT(DBG_NEWPS,("PS command response \n"));
        UpdatePowerSaveState( Adapter, Adapter->CurCmd, 0);
      
      break;
    case HostCmd_RET_802_11_SCAN:
            pScanResponse = (PHostCmd_DS_802_11_SCAN_RSP) pRetPtr;
              
/* dralee_0112, dummy            //dralee 
            if( Adapter->ResourcesEvts & RSC_SCANNING )
            {  
                Adapter->ResourcesEvts &= ~RSC_SCANNING;
                if( Adapter->ResourcesEvts == 0 )
                    NdisMSendResourcesAvailable(Adapter->MrvDrvAdapterHdl);
            }
*/
            
            //if( Adapter->ResourceFlag )
            //{
            //  NdisMSendResourcesAvailable(Adapter->MrvDrvAdapterHdl);
            //  Adapter->ResourceFlag = 0;
            //}

            HandleScanResponse(pScanResponse, Adapter);

#ifdef AUTO_REASSOCIATION
    DBGPRINT( DBG_MACEVENT, ("    -> Got SCAN cmd return\n") ); //tt
    if ( Adapter->CurCmd->PendingInfo == HostCmd_PENDING_ON_REASSOCIATION )
    {
        if ( Adapter->ReAssociationInProgress )
            DoReAssociation( Adapter );
    }
#endif //AUTO_REASSOCIATION

#ifdef DEBUG_PARA_ROAMING_PRINT
	RETAILMSG(1,(TEXT("Got SCAN cmd return! :( \n")));
#endif

#ifdef DEBUG_PARA_ROAMING
#ifdef PARA_WPA_1X
if(!IsRoamingWantWZCWorkProperly()){//internal block added by zhangbing

#else
{//internal block added by zhangbing
#endif
	UCHAR           ucScanCmdEnd, ucScanCmdStart;
	
		if(priv.bAutoRoamingInProcess 
			|| priv.bManualRoamingInProcess 
			|| priv.bWlanSmartDetectionInProcess
			|| priv.bWlanAllDetectionInProcess
			|| priv.bOID_BSSID_LIST_SCAN)
		{

		    ucScanCmdEnd = ( (Adapter->CurCmd->Pad[2] & MRVDRV_SCAN_CMD_END) ? 1 : 0 );
		    ucScanCmdStart = ( (Adapter->CurCmd->Pad[2] & MRVDRV_SCAN_CMD_START) ? 1 : 0 );

		    if ( ucScanCmdEnd == 1)
		    {
			  if(priv.bOID_BSSID_LIST_SCAN)
			  {
				  priv.bOID_BSSID_LIST_SCAN = FALSE;
			  }
#ifdef DEBUG_PARA_ROAMING_PRINT
			  RETAILMSG(1,(TEXT("    Scan Finished! :) \n")));
#endif
			  SetEvent(priv.hScanFinishedEvent);
		    }
		    else 
		    {
#ifdef DEBUG_PARA_ROAMING_PRINT
		        RETAILMSG(1,(TEXT("    SCAN is still in progress, skip this\n")));
#endif				
		        break;
		    }
			
		}
}
#endif

    break;

#ifdef DEBUG_PARA_ROAMING
    case HostCmd_RET_802_11_AUTHENTICATE:
		if(priv.bAutoRoamingInProcess || priv.bManualRoamingInProcess)
		{
			priv.bAuthenticated = TRUE;
			SetEvent(priv.hAuthFinishedEvent);
		}
    break;
#endif

    case HostCmd_RET_802_11_ASSOCIATE:
    case HostCmd_RET_802_11_REASSOCIATE:
      pAssoResult = (PHostCmd_DS_802_11_ASSOCIATE_RESULT) 
              (Adapter->CurCmd->BufVirtualAddr);
#ifdef AUTO_REASSOCIATION
            DBGPRINT( DBG_MACEVENT, ("CmdRet - (Re)Associate [CmdCode: %x, Result: %x]\n", 
                        pAssoResult->Command, pAssoResult->Result) );
#endif
      HandleAssocReassoc(pAssoResult, Adapter); 
    break;

    case HostCmd_RET_802_11_AD_HOC_JOIN:
    case HostCmd_RET_802_11_AD_HOC_START:
      pAdHocResult = (PHostCmd_DS_802_11_AD_HOC_RESULT) 
              (Adapter->CurCmd->BufVirtualAddr);
      HandleAdHocJoinStart(pAdHocResult, Ret, Adapter);
    break;
  
    case HostCmd_RET_802_11_DISASSOCIATE:

#ifdef AUTO_REASSOCIATION
            DBGPRINT( DBG_MACEVENT, ("CmdRet - DisAssociate\n") );
#endif
    case HostCmd_RET_802_11_DEAUTHENTICATE:

#ifdef AUTO_REASSOCIATION
            if ( Ret == HostCmd_RET_802_11_DEAUTHENTICATE )
            {
                PHostCmd_DS_802_11_DEAUTHENTICATE_RESULT    pRetDeauth = (PHostCmd_DS_802_11_DEAUTHENTICATE_RESULT) pRetPtr;
                DBGPRINT( DBG_MACEVENT, ("CmdRet - DeAuthenticate [AuthStatus: %x, Result: %x]\n", 
                            pRetDeauth->AuthStatus, pRetDeauth->Result) );
            }
#endif
               
// tt ++ v5 firmware
    if ( Adapter->CurCmd->PendingInfo != HostCmd_PENDING_ON_SET_OID )
    {
#ifdef DEBUG_PARA_ROAMING
#ifdef PARA_WPA_1X
		if((!priv.bAutoRoamingInProcess)&&(!priv.bManualRoamingInProcess)||IsRoamingWantWZCWorkProperly())

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -