S32 CuCommon_GetTxStatistics(THandle hCuCommon, TIWLN_TX_STATISTICS* pTxCounters, U32 doReset)
{
    CuCommon_t* pCuCommon = (CuCommon_t*)hCuCommon; 
    S32 res;

    res = IPC_STA_Private_Send(pCuCommon->hIpcSta, TIWLN_802_11_TX_STATISTICS, pTxCounters, sizeof(TIWLN_TX_STATISTICS),
                                                pTxCounters, sizeof(TIWLN_TX_STATISTICS));

    if(res == EOALERR_IPC_STA_ERROR_SENDING_WEXT)
        return ECUERR_CU_COMMON_ERROR;

    if(doReset)
    {
        res = IPC_STA_Private_Send(pCuCommon->hIpcSta, TX_CTRL_RESET_COUNTERS_PARAM, NULL, 0, 
                                                NULL, 0);
        if(res == EOALERR_IPC_STA_ERROR_SENDING_WEXT)
            return ECUERR_CU_COMMON_ERROR;
    }

    return OK;      
}
S32 CuCommon_SetBuffer(THandle hCuCommon, U32 PrivateIoctlId, PVOID pBuffer, U32 len)
{
    CuCommon_t* pCuCommon = (CuCommon_t*)hCuCommon; 
    S32 res;

    res = IPC_STA_Private_Send(pCuCommon->hIpcSta, PrivateIoctlId, pBuffer, len, 
                                                NULL, 0);

    if(res == EOALERR_IPC_STA_ERROR_SENDING_WEXT)
        return ECUERR_CU_COMMON_ERROR;

    return OK;      
}
S32 CuCommon_Get_BssidList_Size(THandle hCuCommon, PU32 pSizeOfBssiList)
{
    CuCommon_t* pCuCommon = (CuCommon_t*)hCuCommon; 
    S32 res;

    res = IPC_STA_Private_Send(pCuCommon->hIpcSta, SCAN_CNCN_BSSID_LIST_SIZE_PARAM, NULL, 0, 
                                                pSizeOfBssiList, sizeof(U32));

    if(res == EOALERR_IPC_STA_ERROR_SENDING_WEXT)
        return ECUERR_CU_COMMON_ERROR;

    return OK;      
}
S32 CuCommon_GetU8(THandle hCuCommon, U32 PrivateIoctlId, PU8 pData)
{
    CuCommon_t* pCuCommon = (CuCommon_t*)hCuCommon;
    S32 res;

    res = IPC_STA_Private_Send(pCuCommon->hIpcSta, PrivateIoctlId, NULL, 0, 
                                                pData, sizeof(U8));

    if(res == EOALERR_IPC_STA_ERROR_SENDING_WEXT)
        return ECUERR_CU_COMMON_ERROR;

    return OK;  
}
S32 CuCommon_GetTxRxLinkStatistics(THandle hCuCommon, TLinkDataCounters *pLinkCounters)
{
    CuCommon_t* pCuCommon = (CuCommon_t*)hCuCommon; 
    S32 res;

    res = IPC_STA_Private_Send(pCuCommon->hIpcSta, ROLE_AP_GET_LINK_COUNTERS,
							   pLinkCounters, sizeof(TLinkDataCounters)*WLANLINKS_MAX_LINKS,
							   pLinkCounters, sizeof(TLinkDataCounters)*WLANLINKS_MAX_LINKS);

    if(res == EOALERR_IPC_STA_ERROR_SENDING_WEXT)
        return ECUERR_CU_COMMON_ERROR;
    
    return OK;      
}
S32 CuCommon_GetSnr(THandle hCuCommon, PU32 pdSnr, PU32 pbSnr)
{
    CuCommon_t* pCuCommon = (CuCommon_t*)hCuCommon; 
    S32 res;
    TCuCommon_RoamingStatisticsTable buffer;
        
    res = IPC_STA_Private_Send(pCuCommon->hIpcSta, TWD_SNR_RATIO_PARAM, NULL, 0, 
                                                &buffer, sizeof(TCuCommon_RoamingStatisticsTable));
    if(res == EOALERR_IPC_STA_ERROR_SENDING_WEXT)
        return ECUERR_CU_COMMON_ERROR;

	*pdSnr = (U32)buffer.snr;
	*pbSnr = (U32)buffer.snrBeacon;

    return OK;
}
S32 CuCommon_GetRssi(THandle hCuCommon, PS8 pdRssi, PS8 pbRssi)
{
    CuCommon_t* pCuCommon = (CuCommon_t*)hCuCommon; 
    S32 res;    
    TCuCommon_RoamingStatisticsTable buffer;
    
    res = IPC_STA_Private_Send(pCuCommon->hIpcSta, TIWLN_802_11_RSSI, NULL, 0, 
                                                &buffer, sizeof(TCuCommon_RoamingStatisticsTable));
    if(res == EOALERR_IPC_STA_ERROR_SENDING_WEXT)
        return ECUERR_CU_COMMON_ERROR;

    *pdRssi = (S8)buffer.rssi;
	*pbRssi = (S8)buffer.rssiBeacon;

    return OK;
}
S32 CuCommon_GetPowerConsumptionStat(THandle hCuCommon, ACXPowerConsumptionTimeStat_t *pPowerstat)
{
    CuCommon_t* pCuCommon = (CuCommon_t*)hCuCommon;
    ACXPowerConsumptionTimeStat_t tStatistics;
    S32 res;

    
    res = IPC_STA_Private_Send(pCuCommon->hIpcSta, TIWLN_GET_POWER_CONSUMPTION_STATISTICS, NULL, 0,
                                                &tStatistics, sizeof(ACXPowerConsumptionTimeStat_t));

    if(res == EOALERR_IPC_STA_ERROR_SENDING_WEXT)
        return ECUERR_CU_COMMON_ERROR;

    os_memcpy(pPowerstat, &tStatistics, sizeof(ACXPowerConsumptionTimeStat_t));

    return OK;  
}
S32 CuCommon_GetRxDataFiltersStatistics(THandle hCuCommon, PU32 pUnmatchedPacketsCount, PU32 pMatchedPacketsCount)
{
    CuCommon_t* pCuCommon = (CuCommon_t*)hCuCommon;
    S32 res;
    TCuCommon_RxDataFilteringStatistics buffer;
    
    res = IPC_STA_Private_Send(pCuCommon->hIpcSta, TIWLN_GET_RX_DATA_FILTERS_STATISTICS, NULL, 0,
                                                &buffer, sizeof(TCuCommon_RxDataFilteringStatistics));

    if(res == EOALERR_IPC_STA_ERROR_SENDING_WEXT)
        return ECUERR_CU_COMMON_ERROR;

    *pUnmatchedPacketsCount = buffer.unmatchedPacketsCount;
    os_memcpy(pMatchedPacketsCount, &buffer.matchedPacketsCount, MAX_DATA_FILTERS*sizeof(U32));

    return OK;  
}
Exemplo n.º 10
0
S32 CuCommon_SetDfsChannels(THandle hCuCommon, U16 MinDfsChannel, U16 MaxDfsChannel)
{
    CuCommon_t* pCuCommon = (CuCommon_t*)hCuCommon;
    S32 res;
    DFS_ChannelRange_t DFS_ChannelRange;

    DFS_ChannelRange.maxDFS_channelNum = MaxDfsChannel;
    DFS_ChannelRange.minDFS_channelNum = MinDfsChannel;
    
    res = IPC_STA_Private_Send(pCuCommon->hIpcSta, TIWLN_REG_DOMAIN_SET_DFS_RANGE, &DFS_ChannelRange, sizeof(DFS_ChannelRange_t),
                                                NULL, 0);

    if(res == EOALERR_IPC_STA_ERROR_SENDING_WEXT)
        return ECUERR_CU_COMMON_ERROR;

    return OK;  
}
Exemplo n.º 11
0
S32 CuCommon_RemoveKey(THandle hCuCommon, U32 KeyIndex)
{
    CuCommon_t* pCuCommon = (CuCommon_t*)hCuCommon;
    S32 res;
    OS_802_11_KEY  key;

    os_memset(&key, 0, sizeof(OS_802_11_KEY));
    key.KeyIndex = KeyIndex;
    
    res = IPC_STA_Private_Send(pCuCommon->hIpcSta, RSN_REMOVE_KEY_PARAM, &key, sizeof(OS_802_11_KEY), 
                                                NULL, 0);

    if(res == EOALERR_IPC_STA_ERROR_SENDING_WEXT)
        return ECUERR_CU_COMMON_ERROR;

    return OK;  
}
Exemplo n.º 12
0
S32 CuCommon_PrintDriverDebug(THandle hCuCommon, PVOID pParams, U32 param_size)
{
    CuCommon_t* pCuCommon = (CuCommon_t*)hCuCommon;
    S32 res;

	if ( pParams == NULL )
	{
		return ECUERR_CU_COMMON_ERROR;
	}

    res = IPC_STA_Private_Send(pCuCommon->hIpcSta, TIWLN_DISPLAY_STATS, pParams, param_size,
							   NULL, 0);

    if(res == EOALERR_IPC_STA_ERROR_SENDING_WEXT)
        return ECUERR_CU_COMMON_ERROR;

    return OK;  
}
Exemplo n.º 13
0
S32 CuCommon_Radio_Test(THandle hCuCommon,TTestCmd* data)
{
    CuCommon_t* pCuCommon = (CuCommon_t*)hCuCommon;
    S32 res;

	res = IPC_STA_Private_Send(pCuCommon->hIpcSta, 
							   TWD_RADIO_TEST_PARAM, 
							   (PVOID)data, 
							   sizeof(TTestCmd),
							   (PVOID)data, 
							   sizeof(TTestCmd));

    if(res == EOALERR_IPC_STA_ERROR_SENDING_WEXT)
	{
		os_error_printf(CU_MSG_INFO2, (PS8)"In CuCommon_Radio_Test: IPC_STA_Private_Send failed\n");            
		return ECUERR_CU_COMMON_ERROR;
	}

    return OK;  
}
Exemplo n.º 14
0
S32 CuCommon_PrintDriverDebugBuffer(THandle hCuCommon, U32 func_id, U32 opt_param)
{
    CuCommon_t* pCuCommon = (CuCommon_t*)hCuCommon;
    S32 res, len;
    U8 buf[260];  /* no more then 256 + func id */

    if (opt_param == 0)
        return ECUERR_CU_ERROR;

    len = os_strlen((PS8)opt_param);
    *(PU32)buf = func_id;
    os_memcpy((PS8)buf + sizeof(U32),(PS8)opt_param, len);
        
    res = IPC_STA_Private_Send(pCuCommon->hIpcSta, TIWLN_DISPLAY_STATS, buf, len + sizeof(U32),
                                                NULL, 0);

    if(res == EOALERR_IPC_STA_ERROR_SENDING_WEXT)
        return ECUERR_CU_COMMON_ERROR;

    return OK;  
}
Exemplo n.º 15
0
S32 CuCommon_AddKey(THandle hCuCommon, OS_802_11_WEP* pKey)
{
    CuCommon_t* pCuCommon = (CuCommon_t*)hCuCommon;
    S32 res;    
    OS_802_11_KEY  key;

    os_memset(&key, 0, sizeof(OS_802_11_KEY));

    key.Length = pKey->Length;
    key.KeyIndex = (pKey->KeyIndex & 0x80000000) | (pKey->KeyIndex & 0x3FFFFFFF);
    key.KeyLength = pKey->KeyLength;
    os_memcpy(key.KeyMaterial, pKey->KeyMaterial, pKey->KeyLength);

    res = IPC_STA_Private_Send(pCuCommon->hIpcSta, RSN_ADD_KEY_PARAM, &key, sizeof(OS_802_11_KEY), 
                                                NULL, 0);

    if(res == EOALERR_IPC_STA_ERROR_SENDING_WEXT)
        return ECUERR_CU_COMMON_ERROR;

    return OK;  
}
Exemplo n.º 16
0
/*  Return '0' if success */
S32 init_driver( PS8 adapter_name, PS8 eeprom_file_name,
                 PS8 init_file_name, PS8 firmware_file_name )
{
    PVOID f1 = NULL, f2 = NULL, f3 = NULL;
    S32 eeprom_image_length = 0;
    S32 init_file_length = 0;
    S32 firmware_image_length = 0;
    U32 req_size = 0;
    TLoaderFilesData *init_info = NULL;
    S32 rc = -1;
    THandle hIpcSta;

    if( !adapter_name || !*adapter_name )
        return rc;

    os_error_printf(CU_MSG_INFO1, (PS8)"+---------------------------+\n");
    os_error_printf(CU_MSG_INFO1, (PS8)"| wlan_loader: initializing |\n");
    os_error_printf(CU_MSG_INFO1, (PS8)"+---------------------------+\n");

    hIpcSta = IpcSta_Create(adapter_name);
    if (hIpcSta == NULL)
    {
	os_error_printf (CU_MSG_ERROR, (PS8)"wlan_loader: cant allocate IpcSta context\n", eeprom_file_name);
	goto init_driver_end;
    }

    /* Send init request to the driver */
    if ( (NULL != eeprom_file_name) &&
         (f1 = os_fopen (eeprom_file_name, OS_FOPEN_READ)) != NULL)
    {
        eeprom_image_length = os_getFileSize(f1);
        if (-1 == eeprom_image_length)
        {
            os_error_printf(CU_MSG_ERROR, (PS8)"Cannot get eeprom image file length <%s>\n", eeprom_file_name);
            goto init_driver_end;
        }
    }

    if ( (NULL != firmware_file_name) &&
         (f2 = os_fopen (firmware_file_name, OS_FOPEN_READ)) != NULL)
    {
        firmware_image_length = os_getFileSize(f2);
        if (-1 == firmware_image_length)
        {
            os_error_printf(CU_MSG_ERROR, (PS8)"Cannot get firmware image file length <%s>\n", firmware_file_name);
            goto init_driver_end;
        }
    }

    if ( (NULL != init_file_name) &&
         (f3 = os_fopen (init_file_name, OS_FOPEN_READ)) != NULL)
    {
        init_file_length = os_getFileSize(f3);
        if (-1 == init_file_length)
        {
            os_error_printf(CU_MSG_ERROR, (PS8)"Cannot get init file length <%s>\n", init_file_name);
            goto init_driver_end;
        }
    }

    /* Now when we can calculate the request length. allocate it and read the files */
    req_size = sizeof(TLoaderFilesData) + eeprom_image_length + (init_file_length+1) + firmware_image_length;
    init_info = (TLoaderFilesData *)os_MemoryAlloc(req_size);
    if (!init_info)
    {
        os_error_printf(CU_MSG_ERROR, (PS8)"No memory to allocate init request (%d bytes)\n", req_size);
        goto init_driver_end;
    }
    init_info->uNvsFileLength = eeprom_image_length;
    init_info->uFwFileLength  = firmware_image_length;
    init_info->uIniFileLength = init_file_length;

    if (!f1 || (eeprom_image_length &&
        os_fread(&init_info->data[0], 1, eeprom_image_length, f1)<eeprom_image_length))
    {
    } else
        os_error_printf(CU_MSG_INFO1, (PS8)"****  nvs file found %s **** \n", eeprom_file_name);

    if (!f2 || (firmware_image_length &&
        os_fread(&init_info->data[eeprom_image_length], 1, firmware_image_length, f2)<firmware_image_length))
    {
        os_error_printf(CU_MSG_ERROR, (PS8)"Error reading firmware image %s - Aborting...\n", firmware_file_name);
        goto init_driver_end;
    }

    if (!f3 || (init_file_length &&
        os_fread(&init_info->data[eeprom_image_length+firmware_image_length], 1, init_file_length, f3)<init_file_length))
    {
        os_error_printf(CU_MSG_ERROR, (PS8)"Warning: Error in reading init_file %s - Using defaults\n", init_file_name);
    }

    /* Load driver defaults */
    if(EOALERR_IPC_STA_ERROR_SENDING_WEXT == IPC_STA_Private_Send(hIpcSta, DRIVER_INIT_PARAM, init_info, req_size, NULL, 0))
    {
        os_error_printf(CU_MSG_ERROR, (PS8)"Wlan_loader: Error sending init command (DRIVER_INIT_PARAM) to driver\n");
        goto init_driver_end;
    }

    /* No Error Found */
    rc = 0;

init_driver_end:
    if (f1)
        os_fclose(f1);
    if (f2)
        os_fclose(f2);
    if (f3)
        os_fclose(f3);
    if (init_info)
        os_MemoryFree(init_info);
    if (hIpcSta)
        IpcSta_Destroy(hIpcSta);

    return rc;
}