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

📄 hwacproc.c

📁 Windows CE 6.0 BSP for VOIP sample phone. Intel PXA270 platform.
💻 C
📖 第 1 页 / 共 5 页
字号:
//		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 --

	
//#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_RSP rssirsp = (PHostCmd_DS_802_11_RSSI_RSP)pRetPtr;

 				Adapter->SNR[TYPE_BEACON][TYPE_NOAVG]	= rssirsp->SNR;
				Adapter->NF[TYPE_BEACON][TYPE_NOAVG]	= rssirsp->NoiseFloor;
				Adapter->SNR[TYPE_BEACON][TYPE_AVG] 	= rssirsp->AvgSNR;
				Adapter->NF[TYPE_BEACON][TYPE_AVG] 		= rssirsp->AvgNoiseFloor;

///				AllenDBGPRINT(DBG_RXDATA, ("rssirsp->SNR = %d \n rssirsp->NoiseFloor = %d \n rssirsp->AvgSNR = %d \n rssirsp->AvgNoiseFloor %d\n", 
///              			                            rssirsp->SNR, 
///                                    		              rssirsp->NoiseFloor,
///                                    		              rssirsp->AvgSNR,
///                                    		              rssirsp->AvgNoiseFloor));

				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] ,
						Adapter->NF[TYPE_BEACON][TYPE_AVG]);

				Adapter->LastRSSI = Adapter->RSSI[TYPE_BEACON][TYPE_AVG];
				
			}
			break;

		case HostCmd_RET_REGION_CODE:
			
#ifndef ENABLE_802_11D
			{
                     	PHostCmd_DS_CMD_REGION_CODE pCmd = (PHostCmd_DS_CMD_REGION_CODE)pRetPtr;
                            if (pCmd->Action == HostCmd_ACT_SET)
                            {
					Adapter->RegionCode = pCmd->RegionCode;
					SetRegionCode(Adapter);
                            }
				else
				{
            				POID_MRVL_DS_REGION_CODE    pUserBuffer;

            				pUserBuffer = (POID_MRVL_DS_REGION_CODE) Adapter->CurCmd->InformationBuffer;

            				pUserBuffer->ulRegionCode = pCmd->RegionCode;
            				*(Adapter->CurCmd->BytesWritten) = sizeof(OID_MRVL_DS_REGION_CODE);	
				}
			}
#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"));
//			RETAILMSG(1, (TEXT("Response PS Command 0x%x >>> "), Ret));
//			RETAILMSG(1, (TEXT("Response PS Result 0x%x >>> "), pRetPtr->Result));
			{	
			       USHORT 			PsSubCommand = 0;	
				PsSubCommand = ((PHostCmd_DS_802_11_PS_MODE)pRetPtr)->SubCommand;
				
				if (PsSubCommand == HostCmd_SubCmd_Exit_PS)
				{
					UpdatePowerSaveState( Adapter, Adapter->CurCmd, 0);
				}
			}	
			break;

		case HostCmd_RET_802_11_SCAN:

			pScanResponse = (PHostCmd_DS_802_11_SCAN_RSP) pRetPtr;

            		HandleScanResponse(pScanResponse, Adapter);

			break;

		case HostCmd_RET_802_11_ASSOCIATE:
		case HostCmd_RET_802_11_REASSOCIATE:

			pAssoResult = (PHostCmd_DS_802_11_ASSOCIATE_RESULT) 
						(Adapter->CurCmd->BufVirtualAddr);

			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:
		case HostCmd_RET_802_11_DEAUTHENTICATE:

			ResetDisconnectStatus(Adapter);
			
			CleanUpSingleTxBuffer(Adapter);

			break;
			
#ifndef MRVL_RFCHANNEL
		case HostCmd_RET_802_11_RF_CHANNEL:	 
			pRF = (PHostCmd_DS_802_11_RF_CHANNEL)pRetPtr;

			if (pRF) 
			{
				Adapter->Channel = pRF->CurentChannel;
			}
			DBGPRINT(DBG_OID,("RETURN - HostCmd_RET_802_11_RF_CHANNEL,  Adapter->Channel=0x%x ****\n",Adapter->Channel)); 

			break;
#endif
		case HostCmd_RET_802_11_ENABLE_QOS_WME:

			HandleEnableQosWmeCommand(
				(PHostCmd_CMD_QOS_WME_ENABLE_STATE)pRetPtr, Adapter);

			break;

		case HostCmd_RET_802_11_WME_AC_PARAMS:

			HandleWmeACParamsCommand(
				(PHostCmd_CMD_QOS_WME_ACCESS_CATEGORY_PARAMETERS)pRetPtr, 
				Adapter);

			break;

        	case HostCmd_RET_802_11_GRP_KEY:
            
            		break;

 		case HostCmd_RET_802_11_QUERY_TRAFFIC:
		case HostCmd_RET_MAC_CONTROL:
		case HostCmd_RET_MAC_MULTICAST_ADR:
		case HostCmd_RET_802_11_SNMP_MIB: 
		case HostCmd_RET_802_11_SET_WEP:
		case HostCmd_RET_802_11_DEEP_SLEEP:	
        break;
        
#ifdef HOST_WAKEUP
		case HostCmd_RET_802_11_HOST_SLEEP_CFG:		
                {  
                    DBGPRINT(DBG_HOSTWAKEUP, ("HWAC : Host Wakeup Config cmd resp received\n"));
                
                    if (Adapter->bHostWakeCfgSet == 1)
                    {
                        Adapter->HostPowerState = HTWK_STATE_SLEEP;
                    }
                    else
                    {
                        Adapter->HostPowerState = HTWK_STATE_FULL_POWER;
                    }
                }
                break;
            
    	        case HostCmd_RET_802_11_HOST_SLEEP_AWAKE_CONFIRM:
                    DBGPRINT(DBG_HOSTWAKEUP, ("HWAC : Host Awake Confirm cmd resp received\n"));
			break;
#endif  
		
	    	case HostCmd_RET_802_11_BAND_CONFIG:
			
			pBandConf = (PHostCmd_DS_802_11_BAND_CONFIG)pRetPtr;
			
			DBGPRINT(DBG_CMDRESP,("*** pBandConf->BandSelection %d\n",pBandConf->BandSelection));
			DBGPRINT(DBG_CMDRESP,("*** pBandConf->Command %x\n",pBandConf->Command));	
			DBGPRINT(DBG_CMDRESP,("*** pBandConf->Channel %d\n",pBandConf->Channel));	
			
			break;

		default:
			
			break;
		
	} // end of switch

	// Check pending OID or command
	if ( Adapter->CurCmd->PendingInfo == HostCmd_PENDING_ON_GET_OID )
	{
		HandleHostPendGetOid(Ret,Adapter,pRetPtr);
	}
	else if ( Adapter->CurCmd->PendingInfo == HostCmd_PENDING_ON_SET_OID )
    	{
		HandleHostPendSetOid(Ret,Adapter);
    	}

	ReturnCmdNode(Adapter, Adapter->CurCmd);
	Adapter->CurCmd = NULL;
	GetCmdFromQueueToExecute (Adapter);

	return NDIS_STATUS_SUCCESS;
}

/******************************************************************************
 *
 *  Name: HandleHardwareSpec()
 *
 *  Description: Handle hardware spec command
 *
 *  Arguments:	PHostCmd_DS_802_11_SCAN_RSP pRetPtr
 *				PMRVDRV_ADAPTER Adapter
 *    			
 *
 *  Return Value:        
 * 
 *  Notes:               
 *
 *****************************************************************************/
VOID
HandleHardwareSpec(
	PHostCmd_DS_GET_HW_SPEC pHWSpec,
	PMRVDRV_ADAPTER Adapter
	)
{
	ULONG i;
	UCHAR TempBuf[4];
    	UCHAR ucA, ucB, ucC, ucP;
/*
#ifdef INTERFACE20
    	// check if the interface number is correct
    	if ( pHWSpec->HWIfVersion != 2 )
    	{
       	DBGPRINT(DBG_ERROR, ("Fatal error: HW interface version mismatch! \n"));
        	DBGPRINT(DBG_ERROR, ("Expected version 2, got %d\n", pHWSpec->HWIfVersion));
        	ASSERT(FALSE);
    	}
#endif 
*/

	Adapter->HardwareStatus = NdisHardwareStatusReady;

	// permanent address should only be set once at start up
	// if ( Adapter->PermanentAddr[0] == 0xff )
	{
		// permanent address has not been set yet, set it

		
		
		NdisMoveMemory(
			(PVOID)Adapter->PermanentAddr, 
			(PVOID)pHWSpec->PermanentAddr,
			MRVDRV_ETH_ADDR_LEN);


		// if( Adapter->CurrentAddr[0] == 0xff )
		{ 
			NdisMoveMemory(
		    		(PVOID)Adapter->CurrentAddr, 
		    		(PVOID)pHWSpec->PermanentAddr,
		    		MRVDRV_ETH_ADDR_LEN);
		}

		if (Adapter->bIsAddress == FALSE)
		{
			if (Adapter->PendingMacAddressOid.bIsPendingOID)
			{
				PPENDING_OID 	pPending;

				DBGPRINT(DBG_LOAD,("HandleHardwareSpec Return PendingMacAddressOid \n"));
				
				pPending = &(Adapter->PendingMacAddressOid);
				pPending->bIsPendingOID = FALSE;
				ETH_COPY_NETWORK_ADDRESS((PCHAR) pPending->InformationBuffer, Adapter->PermanentAddr);
		
				*(pPending->BytesReadWrite) = MRVDRV_ETH_ADDR_LEN;
				*(pPending->BytesNeeded) = 0;


				NdisMQueryInformationComplete(
							Adapter->MrvDrvAdapterHdl,
							NDIS_STATUS_SUCCESS);
			}	
		}
		Adapter->bIsAddress = TRUE;

	       DBGPRINT(DBG_CMDRESP | DBG_LOAD,("*** PermanentAddr %02x.%02x.%02x.%02x.%02x.%02x ***\n", 
              									Adapter->PermanentAddr[0],
											Adapter->PermanentAddr[1],
											Adapter->PermanentAddr[2],
											Adapter->PermanentAddr[3],
											Adapter->PermanentAddr[4],
											Adapter->PermanentAddr[5]
		  									 ));
	}
 
	NdisMoveMemory(
			&(Adapter->FWReleaseNumber), 
			&(pHWSpec->FWReleaseNumber),
			4);

    	ucA = (UCHAR)((Adapter->FWReleaseNumber >> 16) & 0xff);
    	ucB = (UCHAR)((Adapter->FWReleaseNumber >> 8 ) & 0xff);
    	ucC = (UCHAR)((Adapter->FWReleaseNumber         ) & 0xff);
    	ucP = (UCHAR)((Adapter->FWReleaseNumber >> 24) & 0xff);
    	DBGPRINT(DBG_CMDRESP | DBG_LOAD,("*** FW Release number (0x%x) %d.%d.%d.%d ***\n", 
       	      Adapter->FWReleaseNumber, ucA, ucB, ucC, ucP));

⌨️ 快捷键说明

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