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

📄 cmdsend.c

📁 此压缩包为杰得开发得z228的BSP的源代码,可以实现很多功能,尤其是视频解码有很好的效果.
💻 C
📖 第 1 页 / 共 5 页
字号:
          GetCmdFromQueueToExecute(Adapter);
          
                cmd_index ++;
        }
      } 

      Adapter->SeqNum--; 
      NdisAcquireSpinLock(&Adapter->FreeQSpinLock);
      CleanUpCmdCtrlNode(pTempCmd);
      InsertQNodeAtTail(&Adapter->CmdFreeQ, (PQ_NODE)pTempCmd);
      NdisReleaseSpinLock(&Adapter->FreeQSpinLock);              

      DBGPRINT(DBG_CMDRESP,("HWAC - Progressive SCAN commnad is ready\n"));

        return NDIS_STATUS_SUCCESS;   
    } 

    break;
#else
    case HostCmd_CMD_802_11_SCAN:
    {   
      // RETAILMSG(1,(TEXT("Enter HostCmd_CMD_802_11_SCAN : 1 : \n"))); 
      Adapter->SeqNum--; 
          NdisAcquireSpinLock(&Adapter->FreeQSpinLock);
          CleanUpCmdCtrlNode(pTempCmd);
          InsertQNodeAtTail(&Adapter->CmdFreeQ, (PQ_NODE)pTempCmd);
          NdisReleaseSpinLock(&Adapter->FreeQSpinLock);   

      pTempCmd = NULL;

#ifdef AUTO_REASSOCIATION
      SetupScanCommand (Adapter, PendingInfo );
#else
       #ifdef ACTIVE_ROAMING
          if((Adapter->bIsActiveRoaming == TRUE && Adapter->bActiveRoamingScanOneChannel==TRUE) || (Adapter->bIsBeaconLoseEvent== TRUE && Adapter->bLinkLostScanOneChannel==TRUE))
          	{
          	      #ifdef MRVL_DBG_ACTIVE_ROAMING
			 #ifdef MRVL_PRINT_DBG_MSG
			        MrvPrintFile("\t\t[Marvell]HostCmd_CMD_802_11_SCAN: CallSetupScanOneChannelCommand!!\n");
	              #endif
                   #endif  		
                    SetupScanOneChannelCommand (Adapter);
          	}else	
      #endif	
	SetupScanCommand (Adapter );
#endif
    } 
    
    break;

#endif
    case HostCmd_CMD_802_11_SET_WEP:
        pSetWEP = (PHostCmd_DS_802_11_SET_WEP)pCmdPtr;
      pNewWEP = (PNDIS_802_11_WEP)InformationBuffer;

      // RETAILMSG(1,(TEXT("Enter HostCmd_DS_802_11_SET_WEP : \n")));
      
      Size = (USHORT)(sizeof(HostCmd_DS_802_11_SET_WEP));

      SetupWepKeys(
        PendingOID,
        pSetWEP, 
        pNewWEP,
        InformationBuffer,
        Adapter,
        CmdOption);
  
      break;

    case HostCmd_CMD_802_11_SNMP_MIB:

      switch (PendingOID)
      {
        case OID_802_11_INFRASTRUCTURE_MODE:
        {
          Size = (USHORT)(sizeof(HostCmd_DS_802_11_SNMP_MIB));
          pSNMPMIB = (PHostCmd_DS_802_11_SNMP_MIB)pCmdPtr;
          pSNMPMIB->QueryType = HostCmd_ACT_GEN_SET;
          pSNMPMIB->OID = (USHORT)DesiredBssType_i; // InfrastructureMode Index = 0
          pSNMPMIB->BufSize = sizeof(UCHAR);
        
          if( Adapter->InfrastructureMode == Ndis802_11Infrastructure )
            ucTemp = 1; // Infrastructure mode
          else
            ucTemp = 2; // Ad hoc mode
        
          NdisMoveMemory(pSNMPMIB->Value, &ucTemp, sizeof(UCHAR));        
          break;
        }   
      
        case OID_802_11_FRAGMENTATION_THRESHOLD:
        {
          NDIS_802_11_FRAGMENTATION_THRESHOLD ulTemp;
          USHORT usTemp;
        
          Size = (USHORT)(sizeof(HostCmd_DS_802_11_SNMP_MIB));
          pSNMPMIB = (PHostCmd_DS_802_11_SNMP_MIB)pCmdPtr;
          pSNMPMIB->OID = (USHORT)FragThresh_i; 
          
          if(PendingInfo==HostCmd_PENDING_ON_GET_OID){
            pSNMPMIB->QueryType = HostCmd_ACT_GEN_GET;
          }
          else if(PendingInfo==HostCmd_PENDING_ON_SET_OID){
            pSNMPMIB->QueryType = HostCmd_ACT_GEN_SET;
            pSNMPMIB->BufSize = sizeof(USHORT);
            ulTemp=*((NDIS_802_11_FRAGMENTATION_THRESHOLD *)InformationBuffer);
            *((PUSHORT)(pSNMPMIB->Value))=(USHORT)ulTemp;
            DBGPRINT(DBG_OID,("OID: Setting Fragmentation threshold to %d\n", ulTemp ));
          }
          else if(PendingInfo==HostCmd_PENDING_ON_NONE){
            pSNMPMIB->QueryType = HostCmd_ACT_GEN_SET;
            pSNMPMIB->BufSize = sizeof(USHORT);
            usTemp=(USHORT)Adapter->FragThsd;
            NdisMoveMemory(pSNMPMIB->Value, &usTemp, sizeof(USHORT));
          }                       
          break;          
        } 
      
        case OID_802_11_RTS_THRESHOLD:
        {
          USHORT usTemp;
          NDIS_802_11_RTS_THRESHOLD ulTemp;
        
          Size = (USHORT)(sizeof(HostCmd_DS_802_11_SNMP_MIB));
          pSNMPMIB = (PHostCmd_DS_802_11_SNMP_MIB)pCmdPtr;
          pSNMPMIB->OID = (USHORT)RtsThresh_i; 
      
          if(PendingInfo==HostCmd_PENDING_ON_GET_OID){
            pSNMPMIB->QueryType = HostCmd_ACT_GEN_GET;
          }
          else if(PendingInfo==HostCmd_PENDING_ON_SET_OID){
            pSNMPMIB->QueryType = HostCmd_ACT_GEN_SET;
            pSNMPMIB->BufSize = sizeof(USHORT);
            ulTemp=*((NDIS_802_11_RTS_THRESHOLD *)InformationBuffer);
            *((PUSHORT)(pSNMPMIB->Value))=(USHORT)ulTemp;
            DBGPRINT(DBG_OID,("OID: Setting RTS threshold to %d\n", ulTemp ));
          }
          else if(PendingInfo==HostCmd_PENDING_ON_NONE){
            pSNMPMIB->QueryType = HostCmd_ACT_GEN_SET;
            pSNMPMIB->BufSize = sizeof(USHORT);
            usTemp=(USHORT)Adapter->RTSThsd;
            NdisMoveMemory(pSNMPMIB->Value, &usTemp, sizeof(USHORT));
          }       
          break;    
        }         
#ifdef ENABLE_802_11D
        case OID_802_11D_ENABLE:
        {
          USHORT  usTemp;

          Size = (USHORT)(sizeof(HostCmd_DS_802_11_SNMP_MIB));
          pSNMPMIB = (PHostCmd_DS_802_11_SNMP_MIB)pCmdPtr;
          pSNMPMIB->OID = Dot11D_i;

          if( CmdOption == HostCmd_ACT_GEN_SET )
          {
              pSNMPMIB->QueryType = HostCmd_ACT_GEN_SET;
              pSNMPMIB->BufSize = sizeof(USHORT);
              usTemp = *(USHORT*) InformationBuffer;
              *((USHORT *) (pSNMPMIB->Value)) = usTemp;
                  
              //RETAILMSG(1,(L"CMD SET enable11d:%x\n\r",usTemp)); 
              //dralee_20060613
              if( Adapter->MediaConnectStatus == NdisMediaStateDisconnected )          
                  ResetAllScanTypeAndPower(Adapter);
          }
          else 
          {   
              pSNMPMIB->QueryType = HostCmd_ACT_GEN_GET;
              pSNMPMIB->BufSize = sizeof(USHORT);
              //RETAILMSG(1,(L"CMD GET enable11d:%x\n\r"));
          } 
        }
#endif
        break;
        default:
          break;
            }     
    break;    

    case HostCmd_CMD_802_11_AUTHENTICATE:
        {
            UCHAR ucAuth;

      Size = (USHORT)(sizeof(HostCmd_DS_802_11_AUTHENTICATE));
      pAuthenticate = (PHostCmd_DS_802_11_AUTHENTICATE) pCmdPtr;

      // if the authentication type need to be determined at initialization time
      if(PendingInfo == HostCmd_PENDING_ON_NONE)
            {
        ucAuth = (UCHAR)Adapter->AuthenticationMode;          
      } 
      else
            {
                ucAuth = (UCHAR) (*((PNDIS_802_11_AUTHENTICATION_MODE) InformationBuffer));
            }

            switch (ucAuth)
            {
            case Ndis802_11AuthModeWPAPSK:
            case Ndis802_11AuthModeWPA:
            case Ndis802_11AuthModeOpen:
      case Ndis802_11AuthModeWPA2:       
        case Ndis802_11AuthModeWPA2PSK: 
                pAuthenticate->AuthType = 0;  // open authentication
                break;

            case Ndis802_11AuthModeShared:
                pAuthenticate->AuthType = 1;  // shared authentication
                break;

            default:
                DBGPRINT(DBG_WARNING, ("Received unsupported authentication mode: %d\n",
                    ucAuth));
                return NDIS_STATUS_FAILURE;
            }

      // set AP MAC address
      NdisMoveMemory(pAuthenticate->MacAddr, Adapter->CurrentBSSID, MRVDRV_ETH_ADDR_LEN);
        }
    break;
   
    case HostCmd_CMD_802_11_ASSOCIATE_EXT:
    case HostCmd_CMD_802_11_ASSOCIATE:
    case HostCmd_CMD_802_11_REASSOCIATE:
      //dralee 081105, V4 
            //Size = (USHORT)(sizeof(HostCmd_DS_802_11_ASSOCIATE_EXT));
      pAsso = (PHostCmd_DS_802_11_ASSOCIATE_EXT)pCmdPtr;

           if ( Adapter->bIsAssociateInProgress == TRUE )
            {
                DBGPRINT(DBG_CMDRESP | DBG_WARNING, 
                    ("There is already an association command pending, "
                     "fail the current request!\n"));

                NdisAcquireSpinLock(&Adapter->FreeQSpinLock);
                CleanUpCmdCtrlNode(pTempCmd);
                InsertQNodeAtTail(&Adapter->CmdFreeQ, (PQ_NODE)pTempCmd);
                NdisReleaseSpinLock(&Adapter->FreeQSpinLock);

		   #ifdef REASSOCIATE
                    if (Adapter->bIsReconnectEnable == TRUE)    
                        Adapter->bIsReConnectNow = FALSE;

                    Adapter->bIsSystemConnectNow = FALSE;	
                #endif //REASSOCIATE		
                return NDIS_STATUS_NOT_ACCEPTED;
            }
      
      Status = SetupAssociationExt(
              (PHostCmd_DS_802_11_ASSOCIATE_EXT)pCmdPtr, 
              PendingInfo, 
              Adapter, 
              pTempCmd, 
              InformationBuffer
              );
      Size = pAsso->Size;
      
      DBGPRINT(DBG_ALLEN, ("HostCmd_CMD_802_11_ASSOCIATE_EXT size = %d \n",Size));
#ifdef CCX_CCKM
	if (Status == NDIS_STATUS_PENDING) {
	      DBGPRINT(DBG_CCX, ("[PrepareAndSendCommand] return NDIS_STATUS_PENDING\n"));
	      return Status;
	}
#endif


      if (Status != NDIS_STATUS_SUCCESS)
      {
           #ifdef REASSOCIATE
               if (Adapter->bIsReconnectEnable == TRUE)    
                        Adapter->bIsReConnectNow = FALSE;

                    Adapter->bIsSystemConnectNow = FALSE;
	    #endif //REASSOCIATE
        return Status;
      }

            //HexDump(DBG_CMDRESP, "ASSO_EXT CMD Buffer: ", 
            //    (PUCHAR)pCmdPtr, sizeof(HostCmd_DS_802_11_ASSOCIATE_EXT));

//      DBGPRINT(DBG_CMDRESP,("HWAC - ASSOCIATION_EXT command to %2x-%2x-%2x-"
//                    "%2x-%2x-%2x is ready\n",
//                    pAsso->DestMacAddr[0],
//                    pAsso->DestMacAddr[1],
//                    pAsso->DestMacAddr[2],
//                    pAsso->DestMacAddr[3],
//                    pAsso->DestMacAddr[4],
//                    pAsso->DestMacAddr[5]));
            break;

    case HostCmd_CMD_802_11_AD_HOC_START:
      
      Size = (USHORT)(sizeof(HostCmd_DS_802_11_AD_HOC_START));
      pAdHocStart = (PHostCmd_DS_802_11_AD_HOC_START)pCmdPtr;

      if (Adapter->ulPSNumOfBSSIDs >= MRVDRV_MAX_BSSID_LIST)
      {
        ReturnCmdNode(Adapter, pTempCmd); 
        return NDIS_STATUS_FAILURE;
      }

      SetupAdHocStart( pAdHocStart,
               PendingInfo,
               Adapter, 
               pTempCmd,
               InformationBuffer
               );

      DBGPRINT(DBG_CMDRESP,("HWAC - AD HOC Start command is ready\n"));
      
    break;

    case HostCmd_CMD_802_11_AD_HOC_JOIN:
      
      // The command structure is HostCmd_CMD_802_11_AD_HOC_JOIN
      Size = (USHORT)(sizeof(HostCmd_DS_802_11_AD_HOC_JOIN));
      pAdHocJoin = (PHostCmd_DS_802_11_AD_HOC_JOIN)pCmdPtr;

      SetupAdHocJoin( pAdHocJoin,
                PendingInfo,
              Adapter, 
              pTempCmd,
              InformationBuffer
              );
      
      DBGPRINT(DBG_CMDRESP,("HWAC - AD HOC Join command is ready\n"));
      
    break;

      case HostCmd_CMD_802_11_DEAUTHENTICATE:
      case HostCmd_CMD_802_11_DISASSOCIATE:

        if (Cmd == HostCmd_CMD_802_11_DEAUTHENTICATE)
      {
          Size = (USHORT)(sizeof(HostCmd_DS_802_11_DEAUTHENTICATE));
          pDeAuthenticate = (PHostCmd_DS_802_11_DEAUTHENTICATE) pCmdPtr;

          // set AP MAC address
          NdisMoveMemory(pDeAuthenticate->MacAddr,Adapter->CurrentBSSID, MRVDRV_ETH_ADDR_LEN);
        
          // Reason code 3 = Station is leaving
          pDeAuthenticate->ReasonCode = 3;

	   #ifdef AvoidOidSetScan	      
	      if(Adapter->bAvoidScanAfterConnectedforMSecs == TRUE)  
	     {
                NdisMCancelTimer(&Adapter->MrvD

⌨️ 快捷键说明

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