int32 hwifi_get_mac_addr(uint8 *puc_buf) { struct hisi_nve_info_user st_info; int32 l_ret = -1; int32 l_sum = 0; if (NULL == puc_buf) { OAM_ERROR_LOG0(0, OAM_SF_ANY, "hisi_customize_wifi::buf is NULL!"); return INI_FAILED; } oal_memset(puc_buf, 0, MAC_LEN); oal_memset(&st_info, 0, sizeof(st_info)); st_info.nv_number = NV_WLAN_NUM; //nve item strncpy(st_info.nv_name, "MACWLAN", sizeof("MACWLAN")); st_info.valid_size = NV_WLAN_VALID_SIZE; st_info.nv_operation = NV_READ; if (0 != g_auc_wifimac[0] || 0 != g_auc_wifimac[1] || 0 != g_auc_wifimac[2] || 0 != g_auc_wifimac[3] || 0 != g_auc_wifimac[4] || 0 != g_auc_wifimac[5]) { memcpy(puc_buf, g_auc_wifimac, MAC_LEN); return INI_SUCC; } l_ret = hisi_nve_direct_access(&st_info); if (!l_ret) { l_sum = char2byte(st_info.nv_data, puc_buf); if (0 != l_sum) { INI_WARNING("hisi_customize_wifi get MAC from NV: mac="MACFMT"\n", MAC2STR(puc_buf)); oal_memcopy(g_auc_wifimac, puc_buf, MAC_LEN); }else{ random_ether_addr(puc_buf); puc_buf[1] = 0x11; puc_buf[2] = 0x02; } }else{ random_ether_addr(puc_buf); puc_buf[1] = 0x11; puc_buf[2] = 0x02; } return INI_SUCC; }
OAL_STATIC int32 hwifi_config_init_nvram(void) { int32 l_ret = INI_FAILED; int32 l_cfg_id; int32 aul_nvram_params[NVRAM_PARAMS_INDEX_BUTT]={0}; oal_memset(g_auc_nv_params, 0x00, sizeof(g_auc_nv_params)); l_ret = get_cust_conf_string(CUST_MODU_NVRAM, OAL_PTR_NULL, g_auc_nv_params, sizeof(g_auc_nv_params)); /* nv读取失败或者返回的参数值为零,尝试读取ini */ if(INI_FAILED == l_ret || !g_auc_nv_params[0]) { OAM_WARNING_LOG3(0, OAM_SF_ANY, "hwifi_config_init_nvram read nvram failed[ret:%d] or wrong values[first eight values:0x%x %x], read dts instead!", l_ret, *((oal_uint32*)g_auc_nv_params),*((oal_uint32*)(g_auc_nv_params+4))); /* 先尝试从ini文件中读取,读不到的话再从dts中读取 */ for (l_cfg_id = NVRAM_PARAMS_INDEX_0; l_cfg_id < NVRAM_PARAMS_INDEX_BUTT; l_cfg_id++) { l_ret = get_cust_conf_int32(INI_MODU_WIFI, g_ast_nvram_config_ini[l_cfg_id].name, &aul_nvram_params[l_cfg_id]); if(INI_FAILED == l_ret) { OAM_ERROR_LOG1(0, OAM_SF_ANY, "hwifi_config_init_nvram read %d from ini failed!", l_cfg_id); break; } } if (NVRAM_PARAMS_INDEX_BUTT == l_cfg_id) { OAM_INFO_LOG0(0, OAM_SF_ANY, "hwifi_config_init_nvram read from ini success!"); oal_memcopy(g_auc_nv_params, aul_nvram_params, sizeof(g_auc_nv_params)); return INI_SUCC; } l_ret = get_cust_conf_string(CUST_MODU_DTS, NVRAM_PARAMS_ARRAY, g_auc_nv_params, sizeof(g_auc_nv_params)); if(INI_FAILED == l_ret) { OAM_WARNING_LOG0(0, OAM_SF_ANY, "hwifi_config_init_nvram read dts failed!"); /* 读取dts也失败时将数组置零,防止下发至device */ oal_memset(g_auc_nv_params, 0x00, sizeof(g_auc_nv_params)); return INI_FAILED; } } return INI_SUCC; }
int32 hwifi_fetch_ori_caldata(uint8* auc_caldata, int32 l_nvm_len) { int32 l_ret = INI_FAILED; int32 l_cfg_id; int32 aul_nvram_params[NVRAM_PARAMS_INDEX_BUTT]={0}; if (l_nvm_len != HISI_CUST_NVRAM_LEN) { OAM_ERROR_LOG2(0, OAM_SF_ANY, "hwifi_fetch_ori_caldata atcmd[nv_len:%d] and plat_ini[nv_len:%d] model have different nvm lenth!!", l_nvm_len, HISI_CUST_NVRAM_LEN); return INI_FAILED; } oal_memset(auc_caldata, 0x00, HISI_CUST_NVRAM_LEN); for (l_cfg_id = NVRAM_PARAMS_INDEX_0; l_cfg_id < NVRAM_PARAMS_INDEX_BUTT; l_cfg_id++) { l_ret = get_cust_conf_int32(INI_MODU_WIFI, g_ast_nvram_config_ini[l_cfg_id].name, &aul_nvram_params[l_cfg_id]); if(INI_FAILED == l_ret) { OAM_ERROR_LOG1(0, OAM_SF_ANY, "hwifi_fetch_ori_caldata read ori caldata %d from ini failed!", l_cfg_id); break; } } if (NVRAM_PARAMS_INDEX_BUTT == l_cfg_id) { OAM_INFO_LOG0(0, OAM_SF_ANY, "hwifi_fetch_ori_caldata read ori caldata from ini success!"); oal_memcopy(auc_caldata, aul_nvram_params, HISI_CUST_NVRAM_LEN); return INI_SUCC; } l_ret = get_cust_conf_string(CUST_MODU_DTS, NVRAM_PARAMS_ARRAY, auc_caldata, HISI_CUST_NVRAM_LEN); if(INI_FAILED == l_ret) { OAM_ERROR_LOG0(0, OAM_SF_ANY, "hwifi_fetch_ori_caldata read ori caldata from dts failed!"); return INI_FAILED; } return INI_SUCC; }
/***************************************************************************** 函 数 名 : oam_print_to_sdt 功能描述 : 打印信息到PC侧可维可测工具平台中 输入参数 : pc_string : 需要打印到可维可测工具平台中的字符串,以\0结束。 输出参数 : 无 返 回 值 : OAL_SUCC或其他错误码。 调用函数 : 被调函数 : 修改历史 : 1.日 期 : 2012年10月15日 作 者 : c59720 修改内容 : 新生成函数 *****************************************************************************/ oal_uint32 oam_print_to_sdt(oal_int8 *pc_string) { oal_netbuf_stru *pst_skb; oal_uint32 ul_ret = OAL_SUCC; oal_uint16 us_strlen; if (OAL_UNLIKELY(OAL_PTR_NULL == pc_string)) { return OAL_ERR_CODE_PTR_NULL; } if (OAL_UNLIKELY(OAL_PTR_NULL == g_st_oam_sdt_func_hook.p_sdt_report_data_func)) { return OAL_ERR_CODE_PTR_NULL; } /* 上报sdt字符串以'0'结束 */ us_strlen = (oal_uint16)OAL_STRLEN(pc_string); us_strlen = (us_strlen > OAM_REPORT_MAX_STRING_LEN) ? OAM_REPORT_MAX_STRING_LEN : us_strlen; pst_skb = oam_alloc_data2sdt(us_strlen); if (OAL_PTR_NULL == pst_skb) { return OAL_ERR_CODE_PTR_NULL; } /* COPY打印的内容 */ oal_memset(oal_netbuf_data(pst_skb), 0, us_strlen); oal_memcopy(oal_netbuf_data(pst_skb), pc_string, (oal_uint32)us_strlen); /* 下发至sdt接收队列,若队列满则串口输出 */ ul_ret = oam_report_data2sdt(pst_skb, OAM_DATA_TYPE_STRING, OAM_PRIMID_TYPE_OUTPUT_CONTENT); return ul_ret; }
/***************************************************************************** 函 数 名 : dmac_mac_error_cnt_clr 功能描述 : mac错误计数器全部清0 输入参数 : 无 输出参数 : 无 返 回 值 : 调用函数 : 被调函数 : 修改历史 : 1.日 期 : 2014年6月4日 作 者 : g00260350 修改内容 : 新生成函数 *****************************************************************************/ oal_void dmac_mac_error_cnt_clr(mac_device_stru *pst_mac_device) { oal_memset(pst_mac_device->aul_mac_err_cnt, 0, sizeof(pst_mac_device->aul_mac_err_cnt)); }