static int testmod_init(void) { PSTRING src = NULL; RTMP_OS_FD srcf; RTMP_OS_FS_INFO osFSInfo; INT retval = NDIS_STATUS_FAILURE; PSTRING buffer; os_alloc_mem(NULL, (UCHAR **)&buffer, MAX_INI_BUFFER_SIZE); if(buffer == NULL) return NDIS_STATUS_FAILURE; memset(buffer, 0x00, MAX_INI_BUFFER_SIZE); src = STA_PROFILE_PATH; if (src && *src) { // it must call set_fs() before read, otherwise it get errCode=-14( address error) RtmpOSFSInfoChange(&osFSInfo, TRUE); srcf = RtmpOSFileOpen(src, O_RDONLY, 0); if (IS_FILE_OPEN_ERR(srcf)) { DBGPRINT(RT_DEBUG_ERROR, ("Open file \"%s\" failed!\n", src)); } else { retval =RtmpOSFileRead(srcf, buffer, MAX_INI_BUFFER_SIZE); if (retval > 0) { // RTMPSetProfileParameters(pAd, buffer); DBGPRINT(RT_DEBUG_ERROR, ("Read file \"%s\": buffer = %s !\n", src, buffer)); retval = NDIS_STATUS_SUCCESS; } else DBGPRINT(RT_DEBUG_ERROR, ("Read file \"%s\" failed(errCode=%d)!\n", src, retval)); retval = RtmpOSFileClose(srcf); if ( retval != 0) { retval = NDIS_STATUS_FAILURE; DBGPRINT(RT_DEBUG_ERROR, ("Close file \"%s\" failed(errCode=%d)!\n", src, retval)); } } RtmpOSFSInfoChange(&osFSInfo, FALSE); } os_free_mem(NULL, buffer); return (retval); }
static NDIS_STATUS rtmp_ee_flash_reset( IN RTMP_ADAPTER *pAd, IN PUCHAR start) { PUCHAR src; RTMP_OS_FS_INFO osFsInfo; RTMP_OS_FD srcf; INT retval; src = EEPROM_DEFAULT_FILE_PATH; RtmpOSFSInfoChange(&osFsInfo, TRUE); if (src && *src) { srcf = RtmpOSFileOpen(src, O_RDONLY, 0); if (IS_FILE_OPEN_ERR(srcf)) { DBGPRINT(RT_DEBUG_TRACE, ("--> Error opening file %s\n", src)); return NDIS_STATUS_FAILURE; } else { /* The object must have a read method*/ NdisZeroMemory(start, EEPROM_SIZE); retval = RtmpOSFileRead(srcf, start, EEPROM_SIZE); if (retval < 0) { DBGPRINT(RT_DEBUG_TRACE, ("--> Read %s error %d\n", src, -retval)); } else { DBGPRINT(RT_DEBUG_TRACE, ("--> rtmp_ee_flash_reset copy %s to eeprom buffer\n", src)); } retval = RtmpOSFileClose(srcf); if (retval) { DBGPRINT(RT_DEBUG_TRACE, ("--> Error %d closing %s\n", -retval, src)); } } } RtmpOSFSInfoChange(&osFsInfo, FALSE); return NDIS_STATUS_SUCCESS; }
NDIS_STATUS RTMPReadParametersHook( IN PRTMP_ADAPTER pAd) { PSTRING src = NULL; RTMP_OS_FD srcf; RTMP_OS_FS_INFO osFSInfo; INT retval = NDIS_STATUS_FAILURE; PSTRING buffer; #ifdef HOSTAPD_SUPPORT int i; #endif /*HOSTAPD_SUPPORT */ /* buffer = kmalloc(MAX_INI_BUFFER_SIZE, MEM_ALLOC_FLAG); */ os_alloc_mem(pAd, (UCHAR **)&buffer, MAX_INI_BUFFER_SIZE); if(buffer == NULL) return NDIS_STATUS_FAILURE; memset(buffer, 0x00, MAX_INI_BUFFER_SIZE); { #ifdef CONFIG_STA_SUPPORT IF_DEV_CONFIG_OPMODE_ON_STA(pAd) { src = STA_PROFILE_PATH; } #endif /* CONFIG_STA_SUPPORT */ #ifdef MULTIPLE_CARD_SUPPORT src = (PSTRING)pAd->MC_FileName; #endif /* MULTIPLE_CARD_SUPPORT */ } if (src && *src) { RtmpOSFSInfoChange(&osFSInfo, TRUE); srcf = RtmpOSFileOpen(src, O_RDONLY, 0); if (IS_FILE_OPEN_ERR(srcf)) { DBGPRINT(RT_DEBUG_ERROR, ("Open file \"%s\" failed!\n", src)); } else { retval =RtmpOSFileRead(srcf, buffer, MAX_INI_BUFFER_SIZE); if (retval > 0) { RTMPSetProfileParameters(pAd, buffer); retval = NDIS_STATUS_SUCCESS; } else DBGPRINT(RT_DEBUG_ERROR, ("Read file \"%s\" failed(errCode=%d)!\n", src, retval)); retval = RtmpOSFileClose(srcf); if ( retval != 0) { retval = NDIS_STATUS_FAILURE; DBGPRINT(RT_DEBUG_ERROR, ("Close file \"%s\" failed(errCode=%d)!\n", src, retval)); } } RtmpOSFSInfoChange(&osFSInfo, FALSE); } #ifdef HOSTAPD_SUPPORT for (i = 0; i < pAd->ApCfg.BssidNum; i++) { pAd->ApCfg.MBSSID[i].Hostapd=FALSE; DBGPRINT(RT_DEBUG_TRACE, ("Reset ra%d hostapd support=FLASE", i)); } #endif /*HOSTAPD_SUPPORT */ /* kfree(buffer); */ os_free_mem(NULL, buffer); return (retval); }
static void WriteConfToDatFile( IN PRTMP_ADAPTER pAd) { char *cfgData = 0; PSTRING fileName = NULL; RTMP_OS_FD file_r, file_w; RTMP_OS_FS_INFO osFSInfo; LONG rv, fileLen = 0; char *offset = 0; PSTRING pTempStr = 0; // INT tempStrLen = 0; DBGPRINT(RT_DEBUG_TRACE, ("-----> WriteConfToDatFile\n")); fileName = STA_PROFILE_PATH; RtmpOSFSInfoChange(&osFSInfo, TRUE); file_r = RtmpOSFileOpen(fileName, O_RDONLY, 0); if (IS_FILE_OPEN_ERR(file_r)) { DBGPRINT(RT_DEBUG_TRACE, ("-->1) %s: Error opening file %s\n", __FUNCTION__, fileName)); return; } else { char tempStr[64] = {0}; while((rv = RtmpOSFileRead(file_r, tempStr, 64)) > 0) { fileLen += rv; } os_alloc_mem(NULL, (UCHAR **)&cfgData, fileLen); if (cfgData == NULL) { RtmpOSFileClose(file_r); DBGPRINT(RT_DEBUG_TRACE, ("CfgData kmalloc fail. (fileLen = %ld)\n", fileLen)); goto out; } NdisZeroMemory(cfgData, fileLen); RtmpOSFileSeek(file_r, 0); rv = RtmpOSFileRead(file_r, (PSTRING)cfgData, fileLen); RtmpOSFileClose(file_r); if (rv != fileLen) { DBGPRINT(RT_DEBUG_TRACE, ("CfgData kmalloc fail, fileLen = %ld\n", fileLen)); goto ReadErr; } } file_w = RtmpOSFileOpen(fileName, O_WRONLY|O_TRUNC, 0); if (IS_FILE_OPEN_ERR(file_w)) { goto WriteFileOpenErr; } else { offset = (PCHAR) rtstrstr((PSTRING) cfgData, "Default\n"); offset += strlen("Default\n"); RtmpOSFileWrite(file_w, (PSTRING)cfgData, (int)(offset-cfgData)); os_alloc_mem(NULL, (UCHAR **)&pTempStr, 512); if (!pTempStr) { DBGPRINT(RT_DEBUG_TRACE, ("pTempStr kmalloc fail. (512)\n")); RtmpOSFileClose(file_w); goto WriteErr; } for (;;) { int i = 0; PSTRING ptr; NdisZeroMemory(pTempStr, 512); ptr = (PSTRING) offset; while(*ptr && *ptr != '\n') { pTempStr[i++] = *ptr++; } pTempStr[i] = 0x00; if ((size_t)(offset - cfgData) < fileLen) { offset += strlen(pTempStr) + 1; if (strncmp(pTempStr, "SSID=", strlen("SSID=")) == 0) { NdisZeroMemory(pTempStr, 512); NdisMoveMemory(pTempStr, "SSID=", strlen("SSID=")); NdisMoveMemory(pTempStr + 5, pAd->CommonCfg.Ssid, pAd->CommonCfg.SsidLen); } else if (strncmp(pTempStr, "AuthMode=", strlen("AuthMode=")) == 0) { NdisZeroMemory(pTempStr, 512); if (pAd->StaCfg.AuthMode == Ndis802_11AuthModeOpen) sprintf(pTempStr, "AuthMode=OPEN"); else if (pAd->StaCfg.AuthMode == Ndis802_11AuthModeShared) sprintf(pTempStr, "AuthMode=SHARED"); else if (pAd->StaCfg.AuthMode == Ndis802_11AuthModeAutoSwitch) sprintf(pTempStr, "AuthMode=WEPAUTO"); else if (pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPAPSK) sprintf(pTempStr, "AuthMode=WPAPSK"); else if (pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPA2PSK) sprintf(pTempStr, "AuthMode=WPA2PSK"); else if (pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPA) sprintf(pTempStr, "AuthMode=WPA"); else if (pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPA2) sprintf(pTempStr, "AuthMode=WPA2"); else if (pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPANone) sprintf(pTempStr, "AuthMode=WPANONE"); } else if (strncmp(pTempStr, "EncrypType=", strlen("EncrypType=")) == 0) { NdisZeroMemory(pTempStr, 512); if (pAd->StaCfg.WepStatus == Ndis802_11WEPDisabled) sprintf(pTempStr, "EncrypType=NONE"); else if (pAd->StaCfg.WepStatus == Ndis802_11WEPEnabled) sprintf(pTempStr, "EncrypType=WEP"); else if (pAd->StaCfg.WepStatus == Ndis802_11Encryption2Enabled) sprintf(pTempStr, "EncrypType=TKIP"); else if (pAd->StaCfg.WepStatus == Ndis802_11Encryption3Enabled) sprintf(pTempStr, "EncrypType=AES"); } RtmpOSFileWrite(file_w, pTempStr, strlen(pTempStr)); RtmpOSFileWrite(file_w, "\n", 1); } else { break; } } RtmpOSFileClose(file_w); } WriteErr: if (pTempStr) /* kfree(pTempStr); */ os_free_mem(NULL, pTempStr); ReadErr: WriteFileOpenErr: if (cfgData) /* kfree(cfgData); */ os_free_mem(NULL, cfgData); out: RtmpOSFSInfoChange(&osFSInfo, FALSE); DBGPRINT(RT_DEBUG_TRACE, ("<----- WriteConfToDatFile\n")); return; }
BOOLEAN WscWriteProfileToUfdFile( IN PRTMP_ADAPTER pAd, IN UCHAR ApIdx, IN PSTRING pUfdFileName) { PWSC_CTRL pWscControl = &pAd->ApCfg.MBSSID[ApIdx].WscControl; PWSC_CREDENTIAL pCredential = &pWscControl->WscProfile.Profile[0]; RTMP_OS_FS_INFO osFSInfo; RTMP_OS_FD file_w; PSTRING offset, pXmlTemplate = (PSTRING)XML_TEMPLATE; BOOLEAN bFound = FALSE, bRtn = TRUE; UCHAR Guid[UUID_LEN_HEX]; UCHAR Guid_Str[UUID_LEN_STR]; if (pUfdFileName == NULL) { DBGPRINT(RT_DEBUG_TRACE, ("--> %s: pUfdFileName is NULL\n", __FUNCTION__)); return FALSE; } RtmpOSFSInfoChange(&osFSInfo, TRUE); file_w = RtmpOSFileOpen(pUfdFileName, O_WRONLY|O_TRUNC|O_CREAT, 0); if (IS_FILE_OPEN_ERR(file_w)) { DBGPRINT(RT_DEBUG_TRACE, ("--> %s: Error opening file %s\n", __FUNCTION__, pUfdFileName)); return FALSE; } else { WscCreateProfileFromCfg(pAd, AP_MODE, pWscControl, &pWscControl->WscProfile); WscGenerateUUID(pAd, &Guid[0], &Guid_Str[0], ApIdx, TRUE); if ((offset = rtstrstr(pXmlTemplate, (PSTRING)XML_GUID_MARK)) != NULL) { RtmpOSFileWrite(file_w, (PSTRING)pXmlTemplate, (int)(offset - pXmlTemplate)); RtmpOSFileWrite(file_w, (PSTRING)&Guid_Str[0], (int)UUID_LEN_STR); pXmlTemplate = offset + strlen(XML_GUID_MARK); } if ((offset = rtstrstr(pXmlTemplate, (PSTRING)XML_AP_GUID_MARK)) != NULL) { RtmpOSFileWrite(file_w, (PSTRING)pXmlTemplate, (int)(offset - pXmlTemplate)); RtmpOSFileWrite(file_w, (PSTRING)&pWscControl->Wsc_Uuid_Str[0], (int)UUID_LEN_STR); pXmlTemplate = offset + strlen(XML_AP_GUID_MARK); } if ((offset = rtstrstr(pXmlTemplate, (PSTRING)XML_SSID_MARK)) != NULL) { RtmpOSFileWrite(file_w, (PSTRING)pXmlTemplate, (int)(offset - pXmlTemplate)); RtmpOSFileWrite(file_w, (PSTRING)&pCredential->SSID.Ssid[0], (int)pCredential->SSID.SsidLength); pXmlTemplate = offset + strlen(XML_SSID_MARK); } if ((offset = rtstrstr(pXmlTemplate, (PSTRING)XML_AUTH_MARK)) != NULL) { RtmpOSFileWrite(file_w, (PSTRING)pXmlTemplate, (int)(offset - pXmlTemplate)); for (PWSC_UFD_AUTH_TYPE = WSC_UFD_AUTH_TYPE; PWSC_UFD_AUTH_TYPE->auth_str; PWSC_UFD_AUTH_TYPE++) { if (PWSC_UFD_AUTH_TYPE->auth_type == pCredential->AuthType) { RtmpOSFileWrite(file_w, (PSTRING)PWSC_UFD_AUTH_TYPE->auth_str, (int)strlen(PWSC_UFD_AUTH_TYPE->auth_str)); bFound = TRUE; break; } } pXmlTemplate = offset + strlen(XML_AUTH_MARK); if (bFound == FALSE) { DBGPRINT(RT_DEBUG_TRACE, ("--> %s: Unknow Auth Type(=%x)\n", __FUNCTION__, pCredential->AuthType)); bRtn = FALSE; goto out; } } if ((offset = rtstrstr(pXmlTemplate, (PSTRING)XML_ENCR_MARK)) != NULL) { bFound = FALSE; RtmpOSFileWrite(file_w, (PSTRING)pXmlTemplate, (int)(offset - pXmlTemplate)); for (PWSC_UFD_ENCR_TYPE = WSC_UFD_ENCR_TYPE; PWSC_UFD_ENCR_TYPE->encr_str; PWSC_UFD_ENCR_TYPE++) { if (PWSC_UFD_ENCR_TYPE->encr_type == pCredential->EncrType) { RtmpOSFileWrite(file_w, (PSTRING)PWSC_UFD_ENCR_TYPE->encr_str, (int)strlen(PWSC_UFD_ENCR_TYPE->encr_str)); bFound = TRUE; } } pXmlTemplate = offset + strlen(XML_ENCR_MARK); if (bFound == FALSE) { DBGPRINT(RT_DEBUG_TRACE, ("--> %s: Unknow Encr Type(=%x)\n", __FUNCTION__, pCredential->EncrType)); bRtn = FALSE; goto out; } } if ((offset = rtstrstr(pXmlTemplate, (PSTRING)XML_KEY_MARK)) != NULL) { if (pCredential->EncrType != WSC_ENCRTYPE_NONE) { RtmpOSFileWrite(file_w, (PSTRING)pXmlTemplate, (int)(offset - pXmlTemplate)); RtmpOSFileWrite(file_w, (PSTRING)pCredential->Key, (int)pCredential->KeyLength); pXmlTemplate = offset + strlen(XML_KEY_MARK); } else { RtmpOSFileWrite(file_w, (PSTRING)XML_ENCR_END, (int)strlen(XML_ENCR_END)); RtmpOSFileWrite(file_w, (PSTRING)"\n", (int)1); pXmlTemplate = offset + strlen(XML_KEY_MARK) + strlen(XML_KEY_END) + 1; /* 1: '\n' */ } } RtmpOSFileWrite(file_w, (PSTRING)pXmlTemplate, (int)strlen(pXmlTemplate)); } out: RtmpOSFileClose(file_w); RtmpOSFSInfoChange(&osFSInfo, FALSE); return bRtn; }
BOOLEAN WscReadProfileFromUfdFile( IN PRTMP_ADAPTER pAd, IN UCHAR ApIdx, IN PSTRING pUfdFileName) { PWSC_CREDENTIAL pCredential = &pAd->ApCfg.MBSSID[ApIdx].WscControl.WscProfile.Profile[0]; RTMP_OS_FS_INFO osFSInfo; RTMP_OS_FD file_r; ssize_t rv, fileLen = 0; PSTRING pXmlData = NULL; if (pUfdFileName == NULL) { DBGPRINT(RT_DEBUG_TRACE, ("--> %s: pUfdFileName is NULL\n", __FUNCTION__)); return FALSE; } RtmpOSFSInfoChange(&osFSInfo, TRUE); file_r = RtmpOSFileOpen(pUfdFileName, O_RDONLY, 0); if (IS_FILE_OPEN_ERR(file_r)) { DBGPRINT(RT_DEBUG_TRACE, ("--> %s: Error opening file %s\n", __FUNCTION__, pUfdFileName)); return FALSE; } else { char tempStr[64] = {0}; while((rv = RtmpOSFileRead(file_r, tempStr, 64)) > 0) { fileLen += rv; } os_alloc_mem(pAd, (UCHAR **)&pXmlData, fileLen+1); if (pXmlData == NULL) { RtmpOSFileClose(file_r); RtmpOSFSInfoChange(&osFSInfo, FALSE); DBGPRINT(RT_DEBUG_TRACE, ("pXmlData kmalloc fail. (fileLen = %d)\n", fileLen)); return FALSE; } RTMPZeroMemory(pXmlData, fileLen+1); RtmpOSFileSeek(file_r, 0); rv = RtmpOSFileRead(file_r, (PSTRING)pXmlData, fileLen); RtmpOSFileClose(file_r); if (rv != fileLen) { DBGPRINT(RT_DEBUG_TRACE, ("pXmlData kmalloc fail, fileLen = %d\n", fileLen)); RtmpOSFSInfoChange(&osFSInfo, FALSE); goto ReadErr; } } RtmpOSFSInfoChange(&osFSInfo, FALSE); DBGPRINT(RT_DEBUG_TRACE, ("WscReadProfileFromUfdFile\n")); if (WscPassXmlDeclare(&pXmlData)) { if (WscGetXmlSSID(pXmlData, &pCredential->SSID)) { DBGPRINT(RT_DEBUG_TRACE, ("SSID = %s(%d)\n", pCredential->SSID.Ssid, pCredential->SSID.SsidLength)); } else return FALSE; if (WscGetXmlAuth(pXmlData, &pCredential->AuthType)) { DBGPRINT(RT_DEBUG_TRACE, ("Credential.AuthType = 0x%04x\n", pCredential->AuthType)); } else return FALSE; if (WscGetXmlEncr(pXmlData, &pCredential->EncrType)) { DBGPRINT(RT_DEBUG_TRACE, ("Credential.EncrType = 0x%04x\n", pCredential->EncrType)); } else return FALSE; pCredential->KeyLength = 0; RTMPZeroMemory(pCredential->Key, 64); if (WscGetXmlKey(pXmlData, pCredential->Key, &pCredential->KeyLength)) { DBGPRINT(RT_DEBUG_TRACE, ("Credential.Key = %s (%d)\n", pCredential->Key, pCredential->KeyLength)); } else return FALSE; /* If we cannot find keyIndex in .wfc file, use default value 1. */ if (WscGetXmlKeyIndex(pXmlData, &pCredential->KeyIndex)) { DBGPRINT(RT_DEBUG_TRACE, ("pCredential->KeyIndex = %d\n", pCredential->KeyIndex)); } DBGPRINT(RT_DEBUG_TRACE, ("WscReadProfileFromUfdFile OK\n")); WscWriteConfToPortCfg(pAd, &pAd->ApCfg.MBSSID[ApIdx].WscControl, &pAd->ApCfg.MBSSID[ApIdx].WscControl.WscProfile.Profile[0], TRUE); pAd->WriteWscCfgToDatFile = ApIdx; RtmpOsTaskWakeUp(&(pAd->wscTask)); if (pXmlData) os_free_mem(NULL, pXmlData); return TRUE; } ReadErr: if (pXmlData) os_free_mem(NULL, pXmlData); return FALSE; }
NDIS_STATUS RTMPReadParametersHook( PRTMP_ADAPTER pAd) { char * src = NULL; RTMP_OS_FD srcf; RTMP_OS_FS_INFO osFSInfo; int retval = NDIS_STATUS_FAILURE; char * buffer; #ifdef HOSTAPD_SUPPORT int i; #endif /*HOSTAPD_SUPPORT */ /* buffer = kmalloc(MAX_INI_BUFFER_SIZE, MEM_ALLOC_FLAG); */ os_alloc_mem(pAd, (unsigned char **)&buffer, MAX_INI_BUFFER_SIZE); if(buffer == NULL) return NDIS_STATUS_FAILURE; memset(buffer, 0x00, MAX_INI_BUFFER_SIZE); { #ifdef CONFIG_STA_SUPPORT IF_DEV_CONFIG_OPMODE_ON_STA(pAd) { src = STA_PROFILE_PATH; } #endif /* CONFIG_STA_SUPPORT */ #ifdef MULTIPLE_CARD_SUPPORT src = (char *)pAd->MC_FileName; #endif /* MULTIPLE_CARD_SUPPORT */ } // Regardless of what we find in the DAT file, set defaults here. // Now the DAT file is only used to force settings to certain values. // Initialize with defaults first RTMPSetDefaultProfileParameters(pAd); retval = NDIS_STATUS_SUCCESS; if (src && *src) { RtmpOSFSInfoChange(&osFSInfo, TRUE); srcf = RtmpOSFileOpen(src, O_RDONLY, 0); if (IS_FILE_OPEN_ERR(srcf)) { DBGPRINT(RT_DEBUG_ERROR, ("Open file \"%s\" failed (configuration file not absolutely necessary)\n", src)); } else { retval =RtmpOSFileRead(srcf, buffer, MAX_INI_BUFFER_SIZE); if (retval > 0) { RTMPSetProfileParameters(pAd, buffer); retval = NDIS_STATUS_SUCCESS; } else DBGPRINT(RT_DEBUG_ERROR, ("Read file \"%s\" failed(errCode=%d)!\n", src, retval)); retval = RtmpOSFileClose(srcf); if ( retval != 0) { retval = NDIS_STATUS_FAILURE; DBGPRINT(RT_DEBUG_ERROR, ("Close file \"%s\" failed(errCode=%d)!\n", src, retval)); } } RtmpOSFSInfoChange(&osFSInfo, FALSE); } #ifdef HOSTAPD_SUPPORT for (i = 0; i < pAd->ApCfg.BssidNum; i++) { pAd->ApCfg.MBSSID[i].Hostapd=FALSE; DBGPRINT(RT_DEBUG_TRACE, ("Reset ra%d hostapd support=FLASE", i)); } #endif /*HOSTAPD_SUPPORT */ #ifdef SINGLE_SKU_V2 RTMPSetSingleSKUParameters(pAd); #endif /* SINGLE_SKU_V2 */ /* kfree(buffer); */ os_free_mem(NULL, buffer); return (retval); }
NDIS_STATUS RTMPReadParametersHook( IN PRTMP_ADAPTER pAd) { PSTRING src = NULL; RTMP_OS_FD srcf; RTMP_OS_FS_INFO osFSInfo; INT retval = NDIS_STATUS_FAILURE; PSTRING buffer; #ifdef HOSTAPD_SUPPORT int i; #endif /*HOSTAPD_SUPPORT */ /* buffer = kmalloc(MAX_INI_BUFFER_SIZE, MEM_ALLOC_FLAG); */ { #ifdef CONFIG_AP_SUPPORT IF_DEV_CONFIG_OPMODE_ON_AP(pAd) { src = AP_PROFILE_PATH; } #endif /* CONFIG_AP_SUPPORT */ #ifdef MULTIPLE_CARD_SUPPORT if (pAd->MC_RowID == 0) src = PROFILE_PATH_1; else src = PROFILE_PATH_2; #endif /* MULTIPLE_CARD_SUPPORT */ } if (src && *src) { RtmpOSFSInfoChange(&osFSInfo, TRUE); srcf = RtmpOSFileOpen(src, O_RDONLY, 0); if (IS_FILE_OPEN_ERR(srcf)) { DBGPRINT(RT_DEBUG_ERROR, ("Open file \"%s\" failed!\n", src)); } else { #if LINUX_VERSION_CODE >= KERNEL_VERSION(3,19,0) ULONG fsize = (ULONG)file_inode(srcf)->i_size; #else ULONG fsize = (ULONG)srcf->f_dentry->d_inode->i_size; #endif /* buffer = kmalloc(MAX_INI_BUFFER_SIZE, MEM_ALLOC_FLAG); */ os_alloc_mem(pAd, (UCHAR **)&buffer, fsize+1); if (buffer == NULL) { if ((retval = RtmpOSFileClose(srcf)) != 0) DBGPRINT(RT_DEBUG_ERROR, ("Close file \"%s\" failed(errCode=%d)!\n", src, retval)); RtmpOSFSInfoChange(&osFSInfo, FALSE); return NDIS_STATUS_FAILURE; } memset(buffer, 0x00, fsize+1); retval =RtmpOSFileRead(srcf, buffer, fsize); if (retval > 0) { RTMPSetProfileParameters(pAd, buffer); retval = NDIS_STATUS_SUCCESS; } else DBGPRINT(RT_DEBUG_ERROR, ("Read file \"%s\" failed(errCode=%d)!\n", src, retval)); retval = RtmpOSFileClose(srcf); if ( retval != 0) { retval = NDIS_STATUS_FAILURE; DBGPRINT(RT_DEBUG_ERROR, ("Close file \"%s\" failed(errCode=%d)!\n", src, retval)); } /* kfree(buffer); */ os_free_mem(NULL, buffer); } RtmpOSFSInfoChange(&osFSInfo, FALSE); } #ifdef HOSTAPD_SUPPORT for (i = 0; i < pAd->ApCfg.BssidNum; i++) { pAd->ApCfg.MBSSID[i].Hostapd=FALSE; DBGPRINT(RT_DEBUG_TRACE, ("Reset ra%d hostapd support=FLASE", i)); } #endif /*HOSTAPD_SUPPORT */ return (retval); }