Beispiel #1
0
/** 
 * \fn     setDefaultProbeReqTemplate 
 * \brief  set Default Probe Req Template tp the FW.
 * 
 * set Default Probe Req Template tp the FW.
 * 
 * \param  hSiteMgr	-	Handle to site manager 
 * \return None
 * \sa     
 */
void setDefaultProbeReqTemplate(TI_HANDLE hSiteMgr)
{
	siteMgr_t *pSiteMgr = (siteMgr_t *) hSiteMgr;
	TSetTemplate tTemplateStruct;
	probeReqTemplate_t tProbeReqTemplate;
	TSsid tBroadcastSSID;

	/* 
	 * Setting probe request temapltes for both bands.
	 * allocating EMPTY 32 bytes for the SSID IE, to reserve space for different SSIDs the FW will set
	 */
	tBroadcastSSID.len = MAX_SSID_LEN;
	os_memorySet(pSiteMgr->hOs, &(tBroadcastSSID.str[0]), 0, MAX_SSID_LEN);
	tTemplateStruct.ptr = (TI_UINT8 *) & tProbeReqTemplate;
	tTemplateStruct.type = PROBE_REQUEST_TEMPLATE;
	tTemplateStruct.eBand = RADIO_BAND_2_4_GHZ;
	tTemplateStruct.uRateMask = RATE_MASK_UNSPECIFIED;
	buildProbeReqTemplate(hSiteMgr, &tTemplateStruct, &tBroadcastSSID,
			      RADIO_BAND_2_4_GHZ);
	TWD_CmdTemplate(pSiteMgr->hTWD, &tTemplateStruct, NULL, NULL);
	tTemplateStruct.eBand = RADIO_BAND_5_0_GHZ;
	buildProbeReqTemplate(hSiteMgr, &tTemplateStruct, &tBroadcastSSID,
			      RADIO_BAND_5_0_GHZ);
	TWD_CmdTemplate(pSiteMgr->hTWD, &tTemplateStruct, NULL, NULL);
}
Beispiel #2
0
/****************************************************************************************
 *                        os_memoryCAlloc()
 ****************************************************************************************
DESCRIPTION:    Allocates an array in memory with elements initialized to 0.

ARGUMENTS:      OsContext   -   our adapter context.
                Number      -   Number of elements
                Size        -   Length in bytes of each element

RETURN:         None

NOTES:
*****************************************************************************************/
void* mem_Calloc (TI_HANDLE hMem, TI_UINT32 number, TI_UINT32 size)
{
	TMemMng *pMemMng = (TMemMng *)hMem;
	void *ptr;
	TI_UINT32 total;

	total = number * size;

	ptr = mem_Alloc (hMem, total);

	if (ptr != NULL) {
		os_memorySet (pMemMng->hOs, ptr, 0, total);
	}

	return ptr;
}
Beispiel #3
0
/****************************************************************************************
 *                        os_memoryCAlloc()                                 
 ****************************************************************************************
DESCRIPTION:    Allocates an array in memory with elements initialized to 0.

ARGUMENTS:      OsContext   -   our adapter context.
                Number      -   Number of elements
                Size        -   Length in bytes of each element

RETURN:         None

NOTES:          
*****************************************************************************************/
void *mem_Calloc(TI_HANDLE hMem, TI_UINT32 number, TI_UINT32 size)
{
	TMemMng *pMemMng = (TMemMng *) hMem;
	void *ptr;
	TI_UINT32 total;

	total = number * size;

#ifdef TI_MEM_ALLOC_TRACE
	os_printf("os_memoryCAlloc(%u, %u) : %u\n", number, size, total);
#endif

	ptr = mem_Alloc(hMem, total);

	if (ptr != NULL) {
		os_memorySet(pMemMng->hOs, ptr, 0, total);
	}

	return ptr;
}
TI_STATUS TWD_Debug (TI_HANDLE hTWD, TI_UINT32 funcType, void *pParam)
{
    TTwd *pTWD			= (TTwd *)hTWD;    
    TI_UINT32 GenericVal;
    TFwDebugParams* pMemDebug	= (TFwDebugParams*)pParam;

    static TI_UINT32 GenericAddr;
#ifdef REPORT_LOG
    static int    iStart[100]; /* Note: it is not used properly anyway */
#endif
	/* check paramemters validity */
	if (pMemDebug == NULL)
	{
		WLAN_OS_REPORT(("TWD_Debug: Error - pParam is NULL\n"));
		return TI_NOK;
	}

    switch (funcType)
    {
	case TWD_PRINT_SYS_INFO:
		WLAN_OS_REPORT(("PLATFORM = TNETW125x\n"));
		WLAN_OS_REPORT(("ACCESS MODE = SLAVE\n"));
		break;

	case TWD_SET_GENERIC_ADDR:
		/* check paramemters validity */
		if (pParam == NULL)
		{
			WLAN_OS_REPORT(("TWD_Debug, TWD_SET_GENERIC_ADDR Error: No Perameter received\n"));		
			return TI_NOK;
		}
		GenericAddr = *(TI_UINT32 *)pParam;
        break;

	case TWD_READ_MEM:
        WLAN_OS_REPORT(("TWD_Debug, TWD_READ_MEM, Addr:	0x%X\n", pMemDebug->addr));				

		/* check paramemters validity */
		if (pMemDebug == NULL)
		{
			WLAN_OS_REPORT(("TWD_Debug, TWD_READ_MEM Error: No Perameters received\n"));		
			return TI_NOK;
		}
  
		/* validate length */
		*(TI_UINT32*)&pMemDebug->length = 4;		

		/* If Address in valid Memory area and there is enough space for Length to R/W */
		if (TWD_isValidMemoryAddr(hTWD, pMemDebug) == TI_TRUE)
		{
			WLAN_OS_REPORT(("TWD_Debug, TWD_READ_MEM: Reading Valid memory Address\n"));		

			/* Init buf before reading */
			os_memorySet(pTWD->hOs, (void*)pMemDebug->UBuf.buf8, 0, 4);
			if ( TWD_readMem (hTWD, pMemDebug, NULL, NULL) != TI_OK )
			{
				WLAN_OS_REPORT(("TWD_Debug, read memory failed\n"));	
				return TI_NOK;
			}
		}

		else if (TWD_isValidRegAddr(hTWD, pMemDebug) == TI_TRUE)
		{
			WLAN_OS_REPORT(("TWD_Debug, TWD_READ_MEM: Reading Valid register Address\n"));		

			/* Init buf before reading */
			*(TI_UINT32*)&pMemDebug->UBuf.buf32 = 0;

			if ( TWD_readMem (hTWD, pMemDebug, NULL, NULL) != TI_OK )
			{
				WLAN_OS_REPORT(("TWD_Debug, read register failed\n"));	
				return TI_NOK;
			}

		}

		/* address Not in valid Area */ 
		else
		{
			WLAN_OS_REPORT(("TWD_Debug, TWD_READ_MEM Address is not Valid\n"));		
			return TI_NOK;
		}

		/* print read memory */
		{

			WLAN_OS_REPORT(("Read from MEM Addr 0x%x the following values:\n", ((TFwDebugParams*)pMemDebug)->addr));

			WLAN_OS_REPORT(("0x%X	",((TFwDebugParams*)pMemDebug)->UBuf.buf32[0]));
			WLAN_OS_REPORT(("\n"));
		}

		break;

	case TWD_WRITE_MEM:
        WLAN_OS_REPORT(("TWD_Debug, TWD_WRITE_MEM, Addr:	0x%X\n", pMemDebug->addr));				

		/* check paramemters validity */
		if (pMemDebug == NULL)
		{
			WLAN_OS_REPORT(("TWD_Debug, TWD_WRITE_MEM Error: No Perameters received\n"));				
			return TI_NOK;
		}

		/* validate length */
		*(TI_UINT32*)&pMemDebug->length = 4;		

		/* If Address in valid Memory area and there is enough space for Length to R/W */
		if (TWD_isValidMemoryAddr(hTWD, pMemDebug) == TI_TRUE)
		{
			WLAN_OS_REPORT(("TWD_Debug, TWD_WRITE_MEM:	Writing Valid memory Address\n"));		


			return ( TWD_writeMem (hTWD, pMemDebug, NULL, NULL) );
		}
		
		else if (TWD_isValidRegAddr(hTWD, pMemDebug) == TI_TRUE)
		{

			WLAN_OS_REPORT(("TWD_Debug, TWD_WRITE_MEM: Writing Valid register Address\n"));		

			return ( TWD_writeMem (hTWD, pMemDebug, NULL, NULL) );
		}
		/* address Not in valid Area */ 

		else
		{
			WLAN_OS_REPORT(("TWD_Debug, TWD_WRITE_MEM Address is not Valid\n"));		
			return TI_NOK;
		}

		break;

         /*  HAL Control functions */

	case TWD_PRINT_MBOX_QUEUE_INFO:
		cmdQueue_Print (pTWD->hCmdQueue);         
        break;
            
	case TWD_PRINT_MBOX_PRINT_CMD:
		/* check paramemters validity */
		if (pParam == NULL)
		{
			WLAN_OS_REPORT(("TWD_Debug, TWD_PRINT_MBOX_PRINT_CMD Error: No Perameter received\n"));				
			return TI_NOK;
		}
		cmdQueue_PrintHistory (pTWD->hCmdQueue, *(int *)pParam);            
        break;

	case TWD_PRINT_EVENT_MBOX_INFO:
		eventMbox_Print (pTWD->hEventMbox);         
        break;
        
	case TWD_PRINT_EVENT_MBOX_MASK:
		/* check paramemters validity */
		if (pParam == NULL)
		{
			WLAN_OS_REPORT(("TWD_Debug, TWD_PRINT_EVENT_MBOX_MASK Error: No Perameter received\n"));				
			return TI_NOK;
		}
		if ( eventMbox_MaskEvent (pTWD->hEventMbox, *(int *)pParam, NULL, NULL) == TI_NOK )
		{
			WLAN_OS_REPORT(("TWD_Debug, TWD_PRINT_EVENT_MBOX_MASK Error: eventMbox_EvMask failed\n"));				
			return(TI_NOK);
		}
        break;
        
	case TWD_PRINT_EVENT_MBOX_UNMASK:
		/* check paramemters validity */
		if (pParam == NULL)
		{
			WLAN_OS_REPORT(("TWD_Debug, TWD_PRINT_EVENT_MBOX_UNMASK Error: No Perameter received\n"));				
			return TI_NOK;
		}
		if ( eventMbox_UnMaskEvent (pTWD->hEventMbox, *(int *)pParam, NULL, NULL) == TI_NOK )
		{
			WLAN_OS_REPORT(("TWD_Debug, TWD_PRINT_EVENT_MBOX_UNMASK Error: eventMbox_EvUnMask failed\n"));				
			return(TI_NOK);
		}
        break;

	case TWD_PRINT_ISTART:
		{
			int i;
            for (i=0; i<20; i+=4)
            {
				WLAN_OS_REPORT(("%4d: %08d %08d %08d %08d\n", 
								i, iStart[i+0], iStart[i+1], iStart[i+2], iStart[i+3]));
			}
		}
        break;

	case TWD_PRINT_LIST_REGS_THROG_MBOX:
		{
			int i;
            TI_UINT32 RegAddr;
    
			RegAddr = *(TI_UINT32 *)pParam;
			WLAN_OS_REPORT (("PrintListRegsThroughMbox ---------------------\n"));
    
			for (i = 0; i < 8; i++, RegAddr += 16)
            {
				TWD_PrintMemRegs (hTWD, RegAddr +  0, 4, TNETW_MAC_REGISTERS);
                TWD_PrintMemRegs (hTWD, RegAddr +  4, 4, TNETW_MAC_REGISTERS);
				TWD_PrintMemRegs (hTWD, RegAddr +  8, 4, TNETW_MAC_REGISTERS);
				TWD_PrintMemRegs (hTWD, RegAddr + 12, 4, TNETW_MAC_REGISTERS);
			}
		}
        break;
    
	case TWD_PRINT_LIST_MEM_THROG_MBOX:
		/* check paramemters validity */
		if (pParam == NULL)
		{
			WLAN_OS_REPORT(("TWD_Debug, TWD_PRINT_LIST_MEM_THROG_MBOX Error: No Perameter received\n"));				
			return TI_NOK;
		}
		TWD_PrintMemRegs (hTWD, *(TI_UINT32*)pParam, 256, TNETW_INTERNAL_RAM);
        break;
                  
	case TWD_SET_MAC_CLOCK:
		/* check paramemters validity */
		if (pParam == NULL)
		{
			WLAN_OS_REPORT(("TWD_Debug, TWD_SET_MAC_CLOCK Error: No Perameter received\n"));				
			return TI_NOK;
		}

		GenericVal = *(TI_UINT32*)pParam;
        TWD_CfgMacClock (hTWD, GenericVal);
        break;

#if defined(TNETW1150)
	case TWD_SET_ARM_CLOCK:
		/* check paramemters validity */
		if (pParam == NULL)
		{
			WLAN_OS_REPORT(("TWD_Debug, TWD_SET_ARM_CLOCK Error: No Perameter received\n"));				
			return TI_NOK;
		}

		GenericVal = *(TI_UINT32*)pParam;
        TWD_ArmClockSet (hTWD, GenericVal);
        break;
#endif

	/*
    * Rx functions 
    */
#ifdef TI_DBG
    case TWD_PRINT_RX_INFO:
		rxXfer_PrintStats (pTWD->hRxXfer);  
        break;

	case TWD_CLEAR_RX_INFO:
		rxXfer_ClearStats (pTWD->hRxXfer);  
        break;

#endif /* TI_DBG */

	/*
    * Acx functions 
    */
    case TWD_PRINT_ACX_MAP:
		TWD_PrintMemoryMap (hTWD);           
        break;
            
	case TWD_PRINT_ACX_STAT:
		TWD_ItrStatistics (hTWD, (void*)TWD_StatisticsReadCB, hTWD, (void *)&pTWD->acxStatistic);          
        break;
            			
	/*
	* General functions 
    */
    case TWD_PRINT_HELP:

		WLAN_OS_REPORT(("Registers: \n"));
        WLAN_OS_REPORT(("        %02d - TWD_PRINT_SYS_INFO \n\n", TWD_PRINT_SYS_INFO));
        WLAN_OS_REPORT(("        %02d - TWD_SET_GENERIC_ADDR \n", TWD_SET_GENERIC_ADDR));
		WLAN_OS_REPORT(("        %02d - TWD_READ_REG_OR_4_BYTES_MEM <addr (reg base=0x300000, mem base=0x40000)>\n", TWD_READ_MEM));
		WLAN_OS_REPORT(("        %02d - TWD_WRITE_REG_OR_4_BYTES_MEM <addr (reg base=0x300000, mem base=0x40000)> <val (chars<=4)>\n", TWD_WRITE_MEM));

        WLAN_OS_REPORT(("Control: \n"));
        WLAN_OS_REPORT(("        %02d - TWD_PRINT_MBOX_QUEUE_INFO \n",TWD_PRINT_MBOX_QUEUE_INFO));
        WLAN_OS_REPORT(("        %02d - TWD_PRINT_MBOX_QUEUE_PRINT_CMD \n",TWD_PRINT_MBOX_PRINT_CMD));
        WLAN_OS_REPORT(("        %02d - TWD_MAILBOX_HISTORY_PRINT \n", TWD_MAILBOX_HISTORY_PRINT));
        WLAN_OS_REPORT(("        %02d - TWD_MAC_REG \n", TWD_MAC_REG));
        WLAN_OS_REPORT(("        %02d - TWD_SET_ARM_CLOCK \n", TWD_SET_ARM_CLOCK));
        WLAN_OS_REPORT(("        %02d - TWD_SET_MAC_CLOCK \n", TWD_SET_MAC_CLOCK));

        WLAN_OS_REPORT(("Rx: \n"));
        WLAN_OS_REPORT(("        %02d - TWD_PRINT_RX_INFO \n", TWD_PRINT_RX_INFO));
        WLAN_OS_REPORT(("        %02d - TWD_CLEAR_RX_INFO \n", TWD_CLEAR_RX_INFO));

        WLAN_OS_REPORT(("ACX: \n"));
        WLAN_OS_REPORT(("        %02d - TWD_PRINT_ACX_MAP \n", TWD_PRINT_ACX_MAP));
		WLAN_OS_REPORT(("        %02d - TWD_PRINT_ACX_STAT \n", TWD_PRINT_ACX_STAT));

        WLAN_OS_REPORT(("General: \n")); 
        WLAN_OS_REPORT(("        %02d - TWD_PRINT_LIST_REGS_THROG_MBOX \n",  TWD_PRINT_LIST_REGS_THROG_MBOX));
        WLAN_OS_REPORT(("        %02d - TWD_PRINT_LIST_MEM_THROG_MBOX \n",  TWD_PRINT_LIST_MEM_THROG_MBOX));
            
        WLAN_OS_REPORT(("Recovery: \n")); 
        WLAN_OS_REPORT(("        %02d - TWD_CHECK_HW \n", TWD_CHECK_HW));
        WLAN_OS_REPORT(("        %02d - TWD_PRINT_HW_STATUS \n", TWD_PRINT_HW_STATUS));

		WLAN_OS_REPORT(("Event Mail Box: \n"));
        WLAN_OS_REPORT(("        %02d - PRINT EVENT MBOX INFO \n",  TWD_PRINT_EVENT_MBOX_INFO));
        WLAN_OS_REPORT(("        %02d - PRINT EVENT MBOX MASK \n",  TWD_PRINT_EVENT_MBOX_MASK));
        WLAN_OS_REPORT(("        %02d - PRINT EVENT MBOX UNMASK \n",TWD_PRINT_EVENT_MBOX_UNMASK));

		WLAN_OS_REPORT(("Other: \n"));
        WLAN_OS_REPORT(("        %02d - TWD_PRINT_FW_EVENT_INFO \n",  TWD_PRINT_FW_EVENT_INFO));
        WLAN_OS_REPORT(("        %02d - TWD_PRINT_TW_IF_INFO \n",  TWD_PRINT_TW_IF_INFO));
        WLAN_OS_REPORT(("        %02d - TWD_PRINT_MBOX_INFO \n",  TWD_PRINT_MBOX_INFO));
        WLAN_OS_REPORT(("        %02d - TWD_FORCE_TEMPLATES_RATES \n",  TWD_FORCE_TEMPLATES_RATES));
        break;
       
	case TWD_PRINT_FW_EVENT_INFO:
        fwEvent_PrintStat(pTWD->hFwEvent);
        break;
	case TWD_PRINT_TW_IF_INFO:
        twIf_PrintQueues(pTWD->hTwIf);
        break;
	case TWD_PRINT_MBOX_INFO:
        cmdMbox_PrintInfo(pTWD->hCmdMbox);
        break;

    /*
    * Recovery functions 
    */       
	case TWD_CHECK_HW:
		{
			int Stt;

            Stt = TWD_CmdHealthCheck (hTWD);
            WLAN_OS_REPORT(("CheckHwStatus=%d \n", Stt));
		}
        break;

	case TWD_MAILBOX_HISTORY_PRINT:
		WLAN_OS_REPORT (("PrintMailBoxHistory called \n"));
#ifdef TI_DBG
		/* check paramemters validity */
		if (pParam == NULL)
		{
			WLAN_OS_REPORT(("TWD_Debug, TWD_MAILBOX_HISTORY_PRINT Error: No Perameter received\n"));				
			return TI_NOK;
		}

        cmdQueue_PrintHistory (pTWD->hCmdQueue, *(int *)pParam);
#endif
        break;

	case TWD_FORCE_TEMPLATES_RATES:
		if (pParam == NULL)
		{
			WLAN_OS_REPORT(("TWD_Debug, TWD_FORCE_TEMPLATES_RATES Error: No Perameter received\n"));		
			return TI_NOK;
		}
		cmdBld_DbgForceTemplatesRates (pTWD->hCmdBld, *(TI_UINT32 *)pParam);
        break;


	default:
		WLAN_OS_REPORT (("Invalid function type=%d\n\n", funcType));
        break;

	} /* switch (funcType) */

    return TI_OK;
} 
Beispiel #5
0
int apCmd_Execute(TI_HANDLE hApCmd, TConfigCommand *pCmdObj)
{
 TApCmd *pApCmd = hApCmd;
 TI_UINT32  uModuleNumber;
 TI_STATUS  tRes = TI_NOK;
 TApCmd_Type *pParamInfo;
 ti_private_cmd_t *pMyCmd = (ti_private_cmd_t *)pCmdObj->param3;
 TApAddKeyParams  tKeyParam;
 TTwdParamInfo    tTwdParam;
 TSecurityKeys    tTwdKey;
 TI_UINT32        uHlid;

 pParamInfo = (TApCmd_Type*)os_memoryAlloc(pApCmd->hOs,sizeof(TApCmd_Type));
 if(!pParamInfo)
 {
    return TI_NOK;
 }

 uModuleNumber = GET_AP_MODULE_NUMBER(pMyCmd->cmd);
   
 switch (uModuleNumber)
 {
 case AP_ROLEAP_PARAMS:
	 {
		ERoleApState eRoleApState;

        switch (pMyCmd->cmd)
        {
         case ROLE_AP_ADD_STATION_PARAM :             
             TRACE0(pApCmd->hReport,REPORT_SEVERITY_INFORMATION ,"\n apCmd_Execute:  ROLE_AP_ADD_STATION_PARAM \n");
             break;
		case ROLE_AP_CHANGE_STATION_PARAM: 
			 TRACE0(pApCmd->hReport,REPORT_SEVERITY_INFORMATION ,"\n apCmd_Execute:  ROLE_AP_CHANGE_STATION_PARAM \n");
             break;
		case ROLE_AP_GET_STATION_PARAM:               
			TRACE0(pApCmd->hReport,REPORT_SEVERITY_INFORMATION ,"\n apCmd_Execute:  ROLE_AP_GET_STATION_PARAM \n");
             break;
         case ROLE_AP_SET_TX_PARAM:                   
             TRACE0(pApCmd->hReport,REPORT_SEVERITY_INFORMATION ,"\n apCmd_Execute:  ROLE_AP_SET_TX_PARAM \n");
             break;
         case ROLE_AP_CHANGE_BSS_PARAM:             
             TRACE0(pApCmd->hReport,REPORT_SEVERITY_INFORMATION ,"\n apCmd_Execute:  ROLE_AP_CHANGE_BSS_PARAM \n");
             break;
         case ROLE_AP_SET_PORT_STATUS:                 
             TRACE0(pApCmd->hReport,REPORT_SEVERITY_INFORMATION ,"\n apCmd_Execute:  ROLE_AP_SET_PORT_STATUS \n");
             break;
         case ROLE_AP_SET_STA_SHORT_PREAMBLE:  
             TRACE0(pApCmd->hReport,REPORT_SEVERITY_INFORMATION ,"\n apCmd_Execute:  ROLE_AP_SET_STA_SHORT_PREAMBLE \n");
             break;
         case ROLE_AP_SET_STA_WME:
             TRACE0(pApCmd->hReport,REPORT_SEVERITY_INFORMATION ,"\n apCmd_Execute:  ROLE_AP_SET_STA_WME \n");
             break;
         case ROLE_AP_USE_CTS_PROT:                 
             TRACE0(pApCmd->hReport,REPORT_SEVERITY_INFORMATION ,"\n apCmd_Execute:  ROLE_AP_USE_CTS_PROT \n");
             break;
         case ROLE_AP_SET_INACTIVE_INT:                
             TRACE0(pApCmd->hReport,REPORT_SEVERITY_INFORMATION ,"\n apCmd_Execute:  ROLE_AP_SET_INACTIVE_INT \n");
             break;
         case ROLE_AP_USE_SHORT_SLOT_TIME:             
             TRACE0(pApCmd->hReport,REPORT_SEVERITY_INFORMATION ,"\n apCmd_Execute:  ROLE_AP_USE_SHORT_SLOT_TIME \n");
             break;
         case ROLE_AP_SET_PRIVACY:                     
             TRACE0(pApCmd->hReport,REPORT_SEVERITY_INFORMATION ,"\n apCmd_Execute:  ROLE_AP_SET_PRIVACY \n");
             break;
         case ROLE_AP_SET_AP_SHORT_PREAMBLE:          
             TRACE0(pApCmd->hReport,REPORT_SEVERITY_INFORMATION ,"\n apCmd_Execute:  ROLE_AP_SET_AP_SHORT_PREAMBLE \n");
             break;
         case ROLE_AP_SET_RATE:                       
             TRACE0(pApCmd->hReport,REPORT_SEVERITY_INFORMATION ,"\n apCmd_Execute:  ROLE_AP_SET_RATE \n");
             break;
         case ROLE_AP_REMOVE_STATION:                 
             TRACE0(pApCmd->hReport,REPORT_SEVERITY_INFORMATION ,"\n apCmd_Execute:  ROLE_AP_REMOVE_STATION \n");
             break;
         case ROLE_AP_REMOVE_ALL_STATION:              
             TRACE0(pApCmd->hReport,REPORT_SEVERITY_INFORMATION ,"\n apCmd_Execute:  ROLE_AP_REMOVE_ALL_STATION \n");
             break;
         case ROLE_AP_SET_DTIM_PERIOD:               
             TRACE0(pApCmd->hReport,REPORT_SEVERITY_INFORMATION ,"\n apCmd_Execute:  ROLE_AP_SET_DTIM_PERIOD \n");
             memcpy(&pParamInfo->GeneralParam,pMyCmd->in_buffer,pMyCmd->in_buffer_len);
             TRACE1(pApCmd->hReport,REPORT_SEVERITY_INFORMATION ,"\n ROLE_AP_SET_DTIM dtim %d\n", pParamInfo->GeneralParam.lValue);
             break;
         case ROLE_AP_SET_BEACON_INT:
             TRACE0(pApCmd->hReport,REPORT_SEVERITY_INFORMATION ,"\n apCmd_Execute:  ROLE_AP_SET_BEACON_INT \n");
             memcpy(&pParamInfo->GeneralParam,pMyCmd->in_buffer,pMyCmd->in_buffer_len);
             TRACE1(pApCmd->hReport,REPORT_SEVERITY_INFORMATION ,"\n ROLE_AP_SET_BEACON_INT %d\n", pParamInfo->GeneralParam.lValue);
             break;
         case ROLE_AP_SET_CHANNEL:
             TRACE0(pApCmd->hReport,REPORT_SEVERITY_INFORMATION ,"\n apCmd_Execute:  ROLE_AP_SET_CHANNEL \n");
             memcpy(&pParamInfo->ChannelParam,pMyCmd->in_buffer,pMyCmd->in_buffer_len);
             break;
         case ROLE_AP_ADD_BEACON_PARAM:
             TRACE0(pApCmd->hReport,REPORT_SEVERITY_INFORMATION ,"\n apCmd_Execute:  ROLE_AP_ADD_BEACON_PARAM \n");
             memcpy(&pParamInfo->BeaconParams,pMyCmd->in_buffer,pMyCmd->in_buffer_len);
             //report_PrintDump(pParamInfo->BeaconParams.cHead,pParamInfo->BeaconParams.iHeadLen);
             break;
         case ROLE_AP_COMMIT_CMD:                     
             TRACE0(pApCmd->hReport,REPORT_SEVERITY_INFORMATION ,"\n apCmd_Execute:  ROLE_AP_COMMIT_CMD \n");
             break;
         case ROLE_AP_SET_COUNTRY:                     
             TRACE0(pApCmd->hReport,REPORT_SEVERITY_INFORMATION ,"\n apCmd_Execute:  ROLE_AP_SET_COUNTRY \n");
             break;
         case ROLE_AP_SET_RTS:       
             TRACE0(pApCmd->hReport,REPORT_SEVERITY_INFORMATION ,"\n apCmd_Execute:  ROLE_AP_SET_RTS \n");
             break;
        case ROLE_AP_SET_SSID:
			 TRACE0(pApCmd->hReport,REPORT_SEVERITY_INFORMATION ,"\n apCmd_Execute:  ROLE_AP_SET_SSID \n");
             memcpy(&pParamInfo->SsidParam,pMyCmd->in_buffer,pMyCmd->in_buffer_len);
             TRACE1(pApCmd->hReport,REPORT_SEVERITY_INFORMATION ,"\n ROLE_AP_SET_SSID SSID %s\n", pParamInfo->SsidParam.cSsid);
            break;
        case ROLE_AP_SET_SSID_TYPE:
			TRACE0(pApCmd->hReport,REPORT_SEVERITY_INFORMATION ,"\n apCmd_Execute:  ROLE_AP_SET_SSID_TYPE \n");
            break;
		case ROLE_AP_GET_STA_INACTIVITY:
			TRACE5(pApCmd->hReport,REPORT_SEVERITY_INFORMATION ,"\n%s: ROLE_AP_GET_STA_INACTIVITY in_buf=%p in_len=%u out_buf=%p out_len=%u\n",
				    __FUNCTION__,pMyCmd->in_buffer, pMyCmd->in_buffer_len, pMyCmd->out_buffer, pMyCmd->out_buffer_len);
		   break;
		case ROLE_AP_DEAUTH_STATION:       
			TRACE0(pApCmd->hReport,REPORT_SEVERITY_INFORMATION ,"\n apCmd_Execute:  ROLE_AP_DEAUTH_STATION \n");
			break;

        case ROLE_AP_SET_BSS_BRIDGE:
			TRACE0(pApCmd->hReport,REPORT_SEVERITY_INFORMATION ,"\n apCmd_Execute:  ROLE_AP_SET_BSS_BRIDGE \n");
            break;

		case ROLE_AP_GET_HW:
			TRACE0(pApCmd->hReport,REPORT_SEVERITY_INFORMATION ,"\n apCmd_Execute:  ROLE_AP_GET_HW \n");
            break;

		case ROLE_AP_SET_PROBE_WPS_IE:
			TRACE0(pApCmd->hReport,REPORT_SEVERITY_INFORMATION ,"\n apCmd_Execute:  ROLE_AP_ENABLE \n");
            break;

		case ROLE_AP_STOP:
			TRACE0(pApCmd->hReport,REPORT_SEVERITY_INFORMATION ,"\n apCmd_Execute:  ROLE_AP_STOP \n");
            break;

        default:
			TRACE0(pApCmd->hReport,REPORT_SEVERITY_ERROR ,"\n apCmd_Execute:  COMMAND UNKNOWN \n");
            break;

        }

		roleAp_getApState(pApCmd->hRoleAp, &eRoleApState);

		/*If AP is stopped or in recovery now - discard the command */
		if (((eRoleApState == ROLEAP_STATE_STOPPED) || (eRoleApState == ROLEAP_STATE_RECOVERING)) && (pMyCmd->cmd != ROLE_AP_ENABLE))
		{ 
			TRACE1(pApCmd->hReport,REPORT_SEVERITY_WARNING ,"\n apCmd_Execute:  Command 0x%x from previous session - discaring! \n", pMyCmd->cmd);
            tRes = TI_OK;
			break;
		}

        if (pMyCmd->cmd & SET_BIT)
            tRes = RoleAp_setApCmd(pApCmd->hRoleAp,pMyCmd->cmd,pMyCmd->in_buffer);
        else
            tRes = RoleAp_getApCmd(pApCmd->hRoleAp,pMyCmd->cmd,pMyCmd->in_buffer,pMyCmd->out_buffer);

        break;
	 }
 case AP_TWD_PARAMS:

       switch (pMyCmd->cmd)
       {
       case TWD_ADD_KEY_PARAMS:

           memcpy(&tKeyParam,pMyCmd->in_buffer,pMyCmd->in_buffer_len);

           TRACE5(pApCmd->hReport,REPORT_SEVERITY_INFORMATION ,"\n %s: TWD_ADD_KEY_PARAMS, alg=%u ind=%u len=%u for STA "REPORT_MACSTR"\n",
				  __FUNCTION__,tKeyParam.cAlg, tKeyParam.cKeyIndex, tKeyParam.ckeyLen,REPORT_MAC2STR(tKeyParam.cMac));

		   /* Configure Security status in TWD */
		   switch (tKeyParam.cAlg)
		   {
		   case AP_WEP_CIPHER:
			   tTwdParam.content.rsnEncryptionStatus = TWD_CIPHER_WEP;
			   tTwdKey.keyType 	= KEY_WEP;
			   break;

		   case AP_TKIP_CIPHER:
			   tTwdParam.content.rsnEncryptionStatus = TWD_CIPHER_TKIP;
			   tTwdKey.keyType 	= KEY_TKIP;
			   break;

		   case AP_CCMP_CIPHER:
			   tTwdParam.content.rsnEncryptionStatus = TWD_CIPHER_AES_CCMP;
			   tTwdKey.keyType 	= KEY_AES;
			   break;

		   case AP_IGTK_CIPHER:
			   /* TODO */
		   default:
               TRACE2(pApCmd->hReport,REPORT_SEVERITY_ERROR ,"\n %s: Invalid alg=%u\n", __FUNCTION__, tKeyParam.cAlg);
			   return TI_NOK;
		   }

           if (tKeyParam.cAlg == AP_TKIP_CIPHER)
           {
               os_memoryCopy(pApCmd->hOs,(TI_UINT8*)(((TI_UINT8*)&tTwdKey.encKey)+24),(TI_UINT8*)(((TI_UINT8*)&tKeyParam.cKey)+16),8);
               os_memoryCopy(pApCmd->hOs,(TI_UINT8*)((TI_UINT8*)&tTwdKey.micTxKey),(TI_UINT8*)(((TI_UINT8*)&tKeyParam.cKey)+16),8);
               os_memoryCopy(pApCmd->hOs,(TI_UINT8*)((TI_UINT8*)&tTwdKey.micRxKey),(TI_UINT8*)(((TI_UINT8*)&tKeyParam.cKey)+24),8);
               os_memoryCopy(pApCmd->hOs,(TI_UINT8*)(((TI_UINT8*)&tTwdKey.encKey)+16),(TI_UINT8*)(((TI_UINT8*)&tKeyParam.cKey)+24),8);
               os_memoryCopy(pApCmd->hOs,&tTwdKey.encKey,&tKeyParam.cKey,16);
           }
           else
               os_memoryCopy(pApCmd->hOs, &tTwdKey.encKey, &tKeyParam.cKey, tKeyParam.ckeyLen);

           tTwdKey.keyIndex = tKeyParam.cKeyIndex;
           tTwdKey.encLen = tKeyParam.ckeyLen;
           
           if (MAC_NULL(tKeyParam.cMac))
           {
             /* broadcast key */
             os_memorySet( pApCmd->hOs, tTwdKey.macAddress, 0xFF, AP_MAC_ADDR );
             tTwdKey.hlid = 1;
             if (tTwdKey.keyType == KEY_WEP)
               tTwdKey.lidKeyType = WEP_DEFAULT_LID_TYPE;
             else
               tTwdKey.lidKeyType = BROADCAST_LID_TYPE;
           }
           else
           {
            /* unicast key */
             if (wlanLinks_FindLinkByMac(pApCmd->hWlanLinks, tKeyParam.cMac, &uHlid) != TI_OK)
             {
        		 TRACE1(pApCmd->hReport,REPORT_SEVERITY_ERROR ,"\n apCmd_Execute:  Can't find Hlid for STA "REPORT_MACSTR"\n",
						REPORT_MAC2STR(tKeyParam.cMac));
				 return TI_NOK;
             }

  			  TRACE2(pApCmd->hReport,REPORT_SEVERITY_INFORMATION ,"\n apCmd_Execute:  Hlid %d for STA "REPORT_MACSTR"\n",
					uHlid, REPORT_MAC2STR(tKeyParam.cMac));


              os_memoryCopy(pApCmd->hOs,&tTwdKey.macAddress,&tKeyParam.cMac,AP_MAC_ADDR);
              tTwdKey.hlid = uHlid;
              tTwdKey.lidKeyType = UNICAST_LID_TYPE;
           }
          
           RoleAp_setApCmd(pApCmd->hRoleAp,TWD_ADD_KEY_PARAMS,(void*)&tTwdKey);
           break;

       case TWD_DEL_KEY_PARAMS:
           
           memcpy(&tKeyParam,pMyCmd->in_buffer,pMyCmd->in_buffer_len);
           tTwdKey.keyIndex = tKeyParam.cKeyIndex;
           tTwdKey.encLen = tKeyParam.ckeyLen;
          
           TRACE0(pApCmd->hReport,REPORT_SEVERITY_INFORMATION ,"ApCmd Remove key : key type %d \n");

           if (tKeyParam.cMac == NULL)
           {
            /* broadcast key */
           os_memoryCopy(pApCmd->hOs,tTwdKey.macAddress,(unsigned short *)0xFFFFFFFF,AP_MAC_ADDR);
           tTwdKey.hlid = 1;
           tTwdKey.lidKeyType = WEP_DEFAULT_LID_TYPE;
           }
           else
           {
            /* unicast key */
             if (wlanLinks_FindLinkByMac(pApCmd->hWlanLinks, tKeyParam.cMac, &uHlid) != TI_OK)
             {
                TRACE1(pApCmd->hReport,REPORT_SEVERITY_ERROR ,"\n apCmd_Execute:  Can't find Hlid for STA "REPORT_MACSTR"\n",
						REPORT_MAC2STR(tKeyParam.cMac));
                return TI_NOK;
             }

              TRACE2(pApCmd->hReport,REPORT_SEVERITY_INFORMATION ,"\n apCmd_Execute:  Hlid %d for STA "REPORT_MACSTR"\n",
					uHlid, REPORT_MAC2STR(tKeyParam.cMac));

              os_memoryCopy(pApCmd->hOs,&tTwdKey.macAddress,&tKeyParam.cMac,AP_MAC_ADDR);
              tTwdKey.hlid = uHlid;
              tTwdKey.lidKeyType = UNICAST_LID_TYPE;
           }

           RoleAp_setApCmd(pApCmd->hRoleAp,TWD_DEL_KEY_PARAMS,(void*)&tTwdKey);

           break;

       case TWD_SET_DEFAULT_KEY_PARAMS:
            
            TRACE0(pApCmd->hReport,REPORT_SEVERITY_INFORMATION ,"apCmd_Execute :Set Default Key \n");
            RoleAp_setApCmd(pApCmd->hRoleAp,TWD_SET_DEFAULT_KEY_PARAMS,pMyCmd->in_buffer);
              
           break;

       }

       break;

   default:
       TRACE0(pApCmd->hReport,REPORT_SEVERITY_ERROR ,"\n *** In apCmd_Execute,  illegal module number\n");

 }

  
  if (tRes == COMMAND_PENDING)
  {
      pApCmd->pAsyncCmd = pCmdObj;
  }
  else
  {
      pApCmd->pAsyncCmd = NULL;
  }

  return tRes;
}
Beispiel #6
0
TI_STATUS TWD_Debug (TI_HANDLE hTWD, TI_UINT32 funcType, void *pParam)
{
    TTwd *pTWD 					= (TTwd *)hTWD;    
    TI_UINT32 GenericVal;
	TFwDebugParams* pMemDebug	= (TFwDebugParams*)pParam;

    static TI_UINT32 GenericAddr;

	/* check paramemters validity */
	if (pMemDebug == NULL)
	{	
		return TI_NOK;
	}

    switch (funcType)
    {
	case TWD_PRINT_SYS_INFO:
		break;

	case TWD_SET_GENERIC_ADDR:
		/* check paramemters validity */
		if (pParam == NULL)
		{	
			return TI_NOK;
		}
		GenericAddr = *(TI_UINT32 *)pParam;
        break;

	case TWD_READ_MEM:		

		/* check paramemters validity */
		if (pMemDebug == NULL)
		{
			return TI_NOK;
		}
  
		/* validate length */
		*(TI_UINT32*)&pMemDebug->length = 4;		

		/* If Address in valid Memory area and there is enough space for Length to R/W */
		if (TWD_isValidMemoryAddr(hTWD, pMemDebug) == TI_TRUE)
		{		

			/* Init buf before reading */
			os_memorySet(pTWD->hOs, (void*)pMemDebug->UBuf.buf8, 0, 4);
			if ( TWD_readMem (hTWD, pMemDebug, NULL, NULL) != TI_OK )
			{
				return TI_NOK;
			}
		}

		else if (TWD_isValidRegAddr(hTWD, pMemDebug) == TI_TRUE)
		{
			/* Init buf before reading */
			*(TI_UINT32*)&pMemDebug->UBuf.buf32 = 0;

			if ( TWD_readMem (hTWD, pMemDebug, NULL, NULL) != TI_OK )
			{
				return TI_NOK;
			}

		}

		/* address Not in valid Area */ 
		else
		{	
			return TI_NOK;
		}

		/* print read memory */
		{
		}

		break;

	case TWD_WRITE_MEM:		

		/* check paramemters validity */
		if (pMemDebug == NULL)
		{			
			return TI_NOK;
		}

		/* validate length */
		*(TI_UINT32*)&pMemDebug->length = 4;		

		/* If Address in valid Memory area and there is enough space for Length to R/W */
		if (TWD_isValidMemoryAddr(hTWD, pMemDebug) == TI_TRUE)
		{
			return ( TWD_writeMem (hTWD, pMemDebug, NULL, NULL) );
		}
		
		else if (TWD_isValidRegAddr(hTWD, pMemDebug) == TI_TRUE)
		{		
			return ( TWD_writeMem (hTWD, pMemDebug, NULL, NULL) );
		}
		/* address Not in valid Area */ 

		else
		{
			return TI_NOK;
		}

		break;

         /*  HAL Control functions */

	case TWD_PRINT_MBOX_QUEUE_INFO:
		cmdQueue_Print (pTWD->hCmdQueue);         
        break;
            
	case TWD_PRINT_MBOX_PRINT_CMD:
		/* check paramemters validity */
		if (pParam == NULL)
		{			
			return TI_NOK;
		}
		cmdQueue_PrintHistory (pTWD->hCmdQueue, *(int *)pParam);            
        break;

	case TWD_PRINT_EVENT_MBOX_INFO:
		eventMbox_Print (pTWD->hEventMbox);         
        break;
        
	case TWD_PRINT_EVENT_MBOX_MASK:
		/* check paramemters validity */
		if (pParam == NULL)
		{		
			return TI_NOK;
		}
		if ( eventMbox_MaskEvent (pTWD->hEventMbox, *(int *)pParam, NULL, NULL) == TI_NOK )
		{
			return(TI_NOK);
		}
        break;
        
	case TWD_PRINT_EVENT_MBOX_UNMASK:
		/* check paramemters validity */
		if (pParam == NULL)
		{
			return TI_NOK;
		}
		if ( eventMbox_UnMaskEvent (pTWD->hEventMbox, *(int *)pParam, NULL, NULL) == TI_NOK )
		{	
			return(TI_NOK);
		}
        break;

	case TWD_PRINT_ISTART:
		{
		}
        break;

	case TWD_PRINT_LIST_REGS_THROG_MBOX:
		{
			int i;
            TI_UINT32 RegAddr;
    
			RegAddr = *(TI_UINT32 *)pParam;
    
			for (i = 0; i < 8; i++, RegAddr += 16)
            {
				TWD_PrintMemRegs (hTWD, RegAddr +  0, 4, TNETW_MAC_REGISTERS);
                TWD_PrintMemRegs (hTWD, RegAddr +  4, 4, TNETW_MAC_REGISTERS);
				TWD_PrintMemRegs (hTWD, RegAddr +  8, 4, TNETW_MAC_REGISTERS);
				TWD_PrintMemRegs (hTWD, RegAddr + 12, 4, TNETW_MAC_REGISTERS);
			}
		}
        break;
    
	case TWD_PRINT_LIST_MEM_THROG_MBOX:
		/* check paramemters validity */
		if (pParam == NULL)
		{			
			return TI_NOK;
		}
		TWD_PrintMemRegs (hTWD, *(TI_UINT32*)pParam, 256, TNETW_INTERNAL_RAM);
        break;
                  
	case TWD_SET_MAC_CLOCK:
		/* check paramemters validity */
		if (pParam == NULL)
		{		
			return TI_NOK;
		}

		GenericVal = *(TI_UINT32*)pParam;
        TWD_CfgMacClock (hTWD, GenericVal);
        break;

#if defined(TNETW1150)
	case TWD_SET_ARM_CLOCK:
		/* check paramemters validity */
		if (pParam == NULL)
		{			
			return TI_NOK;
		}

		GenericVal = *(TI_UINT32*)pParam;
        TWD_ArmClockSet (hTWD, GenericVal);
        break;
#endif

	/*
    * Rx functions 
    */
#ifdef TI_DBG
    case TWD_PRINT_RX_INFO:
		rxXfer_PrintStats (pTWD->hRxXfer);  
        break;

	case TWD_CLEAR_RX_INFO:
		rxXfer_ClearStats (pTWD->hRxXfer);  
        break;

#endif /* TI_DBG */

	/*
    * Acx functions 
    */
    case TWD_PRINT_ACX_MAP:
		TWD_PrintMemoryMap (hTWD);           
        break;
            
	case TWD_PRINT_ACX_STAT:
		TWD_ItrStatistics (hTWD, (void*)TWD_StatisticsReadCB, hTWD, (void *)&pTWD->acxStatistic);          
        break;
            			
	/*
	* General functions 
    */
    case TWD_PRINT_HELP:

        break;
       
	case TWD_PRINT_FW_EVENT_INFO:
        fwEvent_PrintStat(pTWD->hFwEvent);
        break;
	case TWD_PRINT_TW_IF_INFO:
        twIf_PrintQueues(pTWD->hTwIf);
        break;
	case TWD_PRINT_MBOX_INFO:
        cmdMbox_PrintInfo(pTWD->hCmdMbox);
        break;

    /*
    * Recovery functions 
    */       
	case TWD_CHECK_HW:
		{
			int Stt;

            Stt = TWD_CmdHealthCheck (hTWD);
		}
        break;

	case TWD_MAILBOX_HISTORY_PRINT:
#ifdef TI_DBG
		/* check paramemters validity */
		if (pParam == NULL)
		{		
			return TI_NOK;
		}

        cmdQueue_PrintHistory (pTWD->hCmdQueue, *(int *)pParam);
#endif
        break;

	case TWD_FORCE_TEMPLATES_RATES:
		if (pParam == NULL)
		{
			return TI_NOK;
		}
		cmdBld_DbgForceTemplatesRates (pTWD->hCmdBld, *(TI_UINT32 *)pParam);
        break;


	default:
        break;

	} /* switch (funcType) */

    return TI_OK;
}