Exemplo n.º 1
0
oal_int32  hi1102_host_main_init(oal_void)
{
    //oal_uint32 ul_return = OAL_FAIL;
    oal_int32  l_return = OAL_FAIL;

#ifdef _PRE_WLAN_FEATURE_OFFLOAD_FLOWCTL
    hcc_flowctl_get_device_mode_register(hmac_flowctl_check_device_is_sta_mode);
    hcc_flowctl_operate_subq_register(hmac_vap_net_start_subqueue, hmac_vap_net_stop_subqueue);
#else
    hcc_tx_flow_ctrl_cb_register(hmac_vap_net_stopall, hmac_vap_net_startall);
#endif

    l_return = host_module_init();
    if (OAL_SUCC != l_return)
    {
        OAL_IO_PRINT("Hi1102_host_main_init: host_module_init return error code: %d", l_return);
        return l_return;
    }

#ifdef _PRE_WLAN_FEATURE_ARP_OFFLOAD
    wal_hipriv_register_inetaddr_notifier();
    wal_hipriv_register_inet6addr_notifier();
#endif

    /*启动完成后,输出打印*/
    OAL_IO_PRINT("Hi1102_host_main_init:: Hi1102_host_main_init finish!\n");

    return OAL_SUCC;

}
Exemplo n.º 2
0
OAL_STATIC oal_uint32 device_test_create_cfg_vap(oal_void)
{
    oal_uint32          ul_return;
    frw_event_mem_stru *pst_event_mem;
    frw_event_stru     *pst_event;

    pst_event_mem = FRW_EVENT_ALLOC(0);
    if (OAL_UNLIKELY(OAL_PTR_NULL == pst_event_mem))
    {
        OAL_IO_PRINT("device_test_create_cfg_vap: hmac_init_event_process FRW_EVENT_ALLOC result = OAL_PTR_NULL.\n");
        return OAL_FAIL;
    }

    ul_return = dmac_init_event_process(pst_event_mem);
    if (OAL_SUCC != ul_return)
    {
        OAL_IO_PRINT("device_test_create_cfg_vap: dmac_init_event_process result = fale.\n");
        FRW_EVENT_FREE(pst_event_mem);
        return OAL_FAIL;
    }

    pst_event = (frw_event_stru *)pst_event_mem->puc_data;
    pst_event->st_event_hdr.uc_device_id = 0;

    ul_return = dmac_cfg_vap_init_event(pst_event_mem);
    if (OAL_SUCC != ul_return)
    {
        FRW_EVENT_FREE(pst_event_mem);
        return ul_return;
    }

	FRW_EVENT_FREE(pst_event_mem);

    return OAL_SUCC;
}
Exemplo n.º 3
0
oal_int32 hi1151_main_init(oal_void)
{
    oal_int32  l_return   = OAL_FAIL;
    oal_uint16  us_bitmap  = 0;

    l_return = platform_module_init();
    if (OAL_SUCC != l_return)
    {
        OAL_IO_PRINT("Hi1151_main_init: platform_module_init return error code: %d/r/n", l_return);
        return l_return;
    }

    l_return = device_module_init();
    if (OAL_SUCC != l_return)
    {
        OAL_IO_PRINT("Hi1151_main_init: device_module_init return error code: %d/r/n", l_return);
        us_bitmap = BIT0 | BIT1 | BIT2 | BIT3;
        builder_module_exit(us_bitmap);
        return l_return;
    }

    l_return = host_module_init();
    if (OAL_SUCC != l_return)
    {
        OAL_IO_PRINT("Hi1151_main_init: host_module_init return error code: %d/r/n", l_return);
        us_bitmap = BIT0 | BIT1 | BIT2 | BIT3 | BIT4 | BIT5 | BIT6;
        builder_module_exit(us_bitmap);
        return l_return;
    }
    /*启动完成后,输出打印*/
    OAL_IO_PRINT("Hi1151_main_init:: Hi1151_main_init finish!/r/n");

    return OAL_SUCC;
}
Exemplo n.º 4
0
oal_uint32 oam_upload_device_log_to_sdt(oal_uint8 *pc_string, oal_uint16 len)
{
    oal_netbuf_stru        *pst_skb;
    oal_uint32              ul_ret      = OAL_SUCC;

    if (OAL_PTR_NULL == pc_string)
    {
        OAL_IO_PRINT("oam_upload_log_to_sdt::pc_string is null!\n");
        return OAL_ERR_CODE_PTR_NULL;
    }

    pst_skb = oam_alloc_data2sdt(len);
    if (OAL_PTR_NULL == pst_skb)
    {
        OAL_IO_PRINT("alloc netbuf stru failed!\n");
        return OAL_ERR_CODE_PTR_NULL;
    }

    /* COPY打印的内容 */
    oal_memcopy(oal_netbuf_data(pst_skb), pc_string, len);

    /* 下发至sdt接收队列,若队列满则串口输出 */
    ul_ret = oam_report_data2sdt(pst_skb, OAM_DATA_TYPE_DEVICE_LOG, OAM_PRIMID_TYPE_OUTPUT_CONTENT);

    return ul_ret;
}
Exemplo n.º 5
0
oal_int32  plat_sysfs_init(oal_void)
{
    oal_int32 ret = 0;
    oal_uint32 ul_rslt;
    oal_kobject*     pst_root_boot_object = NULL;

    /*110X 驱动build in,内存池初始化上移到内核完成,保证大片内存申请成功*/
    ul_rslt = oal_mem_init_pool();
    if (ul_rslt != OAL_SUCC)
    {
        OAL_IO_PRINT("oal_main_init: oal_mem_init_pool return error code: %d", ul_rslt);
        OAL_BUG_ON(1);
        return -OAL_EFAIL;
    }

    OAL_IO_PRINT("mem pool init succ\n");

    pst_root_boot_object = oal_get_sysfs_root_boot_object();
    if(NULL == pst_root_boot_object)
    {
        OAL_IO_PRINT("[E]get root boot sysfs object failed!\n");
        return -OAL_EBUSY;
    }

    ret = sysfs_create_group(pst_root_boot_object,&plat_init_attribute_group);
    if (ret)
    {
        OAL_IO_PRINT("sysfs create plat boot group fail.ret=%d\n",ret);
        ret = -OAL_ENOMEM;
        return ret;
    }

    return ret;
}
Exemplo n.º 6
0
/*built-in*/
OAL_STATIC ssize_t  wifi_sysfs_set_init(struct device *dev, struct device_attribute *attr, const char *buf, size_t count)
{
    char            mode[128] = {0};
    OAL_BUG_ON(NULL == dev);
    OAL_BUG_ON(NULL == attr);
    OAL_BUG_ON(NULL == buf);

    if ((sscanf(buf, "%20s", mode) != 1))
    {
        OAL_IO_PRINT("set value one param!\n");
        return -OAL_EINVAL;
    }

    if(sysfs_streq("init", mode))
    {
        /*init*/
        if(0 == g_wifi_init_flag)
        {
            g_wifi_init_ret = hi1102_host_main_init();
            g_wifi_init_flag = 1;
        }
        else
        {
            OAL_IO_PRINT("double init!\n");
        }
    }
    else
    {
        OAL_IO_PRINT("invalid input:%s\n",mode);
    }

    return count;
}
Exemplo n.º 7
0
oal_void device_main_init(oal_void)
{
    /* init */
    extern volatile oal_uint32     g_ulGpioIntCount;

    oal_int32 l_return = OAL_FAIL;
    l_return = hi1102_device_main_init();
    if (OAL_SUCC != l_return)
    {
        OAL_IO_PRINT("device_main_function: Hi1102_device_main_init return error code: %d", l_return);
        /* 初始化失败不退出主程序,等待重启 */
        for (;;)
        ;
    }
    OAL_IO_PRINT("device_main_function: hi1102_device_main_init succ!!\r\n");
#if 1
#if (SUB_SYSTEM == SUB_SYS_WIFI)
    PM_WLAN_IsrRegister();
    PM_WLAN_FuncRegister(device_psm_main_function,dmac_psm_check_hw_txq_state,dmac_psm_check_txrx_state,dmac_psm_clean_state,dmac_psm_save_start_dma,dmac_psm_save_ps_state,
                          dmac_psm_recover_no_powerdown, dmac_psm_recover_start_dma,dmac_psm_recover_powerdown,
                          dmac_psm_cbb_stopwork, dmac_psm_rf_awake, dmac_psm_rf_sleep,
                          dmac_psm_sync_tsf_to_sta,dmac_psm_sync_tsf_to_ap,dmac_psm_is_fake_queues_empty);
#endif
#endif
    g_ulGpioIntCount = 0;
}
Exemplo n.º 8
0
oal_int32  hi1102_device_main_init(oal_void)
{
    oal_int32  l_return  = OAL_FAIL;
    oal_uint16  us_bitmap;
    //frw_event_mem_stru *pst_event_mem;

    //WLAN_EDA_TRACE_TAG(0x4100UL);
    l_return = platform_module_init();
    if (OAL_SUCC != l_return)
    {
        OAL_IO_PRINT("host_bottom_main_init: platform_module_init return error code: %d\r\n", l_return);
        return l_return;
    }

    //WLAN_EDA_TRACE_TAG(0x4200UL);
    l_return = device_module_init();
    if (OAL_SUCC != l_return)
    {
        OAL_IO_PRINT("host_bottom_main_init: device_module_init return error code: %d\r\n", l_return);
        us_bitmap = BIT0 | BIT1 | BIT2 | BIT3;
        builder_module_exit(us_bitmap);
        return l_return;
    }
#if 0
	/* 1102 需要在device初始化成功后同步速率级 */
	pst_event_mem = FRW_EVENT_ALLOC(0);
	if (OAL_UNLIKELY(OAL_PTR_NULL == pst_event_mem))
	{
		OAL_IO_PRINT("hi1102_device_main_init: dmac_init_event_process FRW_EVENT_ALLOC result = OAL_PTR_NULL.\n");
		return OAL_FAIL;
	}

	l_return = dmac_init_event_process(pst_event_mem);
	if (OAL_SUCC != l_return)
	{
		OAL_IO_PRINT("hi1102_device_main_init: dmac_init_event_process result = fale.\n");
		FRW_EVENT_FREE(pst_event_mem);
		return OAL_FAIL;
	}

	FRW_EVENT_FREE(pst_event_mem);
#endif
    #if (!defined(HI1102_EDA))
    /*device_ready:调用HCC接口通知Hmac,Dmac已经完成初始化 TBD*/
    //hcc_send_msg2host(D2H_MSG_WLAN_READY);
    SDIO_SendMsgSync(D2H_MSG_WLAN_READY);
    #endif
    /*启动完成后,输出打印*/
    OAL_IO_PRINT("Hi1102_device_main_init:: Hi1102_device_main_init finish!\r\n");

    return OAL_SUCC;

}
Exemplo n.º 9
0
/*****************************************************************************
 函 数 名  : sdt_drv_netlink_recv
 功能描述  : 从SDT APP侧接收到数据
 输入参数  : 无
 输出参数  : 无
 返 回 值  :
 调用函数  :
 被调函数  :

 修改历史      :
  1.日    期   : 2014年1月28日
    作    者   : z00237171
    修改内容   : 新生成函数

*****************************************************************************/
oal_void  sdt_drv_netlink_recv(oal_netbuf_stru  *pst_netbuf)
{
    oal_netbuf_stru                *pst_net_buf = OAL_PTR_NULL;
    oal_nlmsghdr_stru              *pst_nlhdr = OAL_PTR_NULL;
    sdt_drv_netlink_msg_hdr_stru    st_msg_hdr;
    oal_int32                       l_len;

    if (OAL_PTR_NULL == pst_netbuf)
    {
        OAL_IO_PRINT("sdt_drv_netlink_recv::pst_netbuf is null!\n");
        return;
    }

    OAL_MEMZERO(g_st_sdt_drv_mng_entry.puc_data, DATA_BUF_LEN);

    pst_net_buf = oal_netbuf_get(pst_netbuf);
    if (OAL_NETBUF_LEN(pst_net_buf) >= OAL_NLMSG_SPACE(0))
    {
        pst_nlhdr = oal_nlmsg_hdr((OAL_CONST oal_netbuf_stru *)pst_net_buf);
        l_len   = (oal_int32)OAL_NLMSG_PAYLOAD(pst_nlhdr, 0);

        if(l_len <= DATA_BUF_LEN)
        {
            oal_memcopy((oal_void *)g_st_sdt_drv_mng_entry.puc_data,
                        (const oal_void *)OAL_NLMSG_DATA(pst_nlhdr),
                        (oal_uint32)l_len);
        }
        else
        {
            /*overflow*/
            OAL_IO_PRINT("[ERROR]invaild netlink buff len:%u,max len:%u\n",(oal_uint32)l_len,DATA_BUF_LEN);
            oal_mem_sdt_netbuf_free(pst_net_buf, OAL_TRUE);
            return;
        }

        oal_memcopy((oal_void *)&st_msg_hdr,
                    (const oal_void *)g_st_sdt_drv_mng_entry.puc_data,
                    (oal_uint32)OAL_SIZEOF(st_msg_hdr));

        if (NETLINK_MSG_HELLO == st_msg_hdr.ul_cmd)
        {
            g_st_sdt_drv_mng_entry.ul_usepid = pst_nlhdr->nlmsg_pid;   /*pid of sending process */
            OAL_IO_PRINT("%s pid is-->%d \n", OAL_FUNC_NAME, g_st_sdt_drv_mng_entry.ul_usepid);
        }
        else
        {
            sdt_drv_send_data_to_wifi(&g_st_sdt_drv_mng_entry.puc_data[OAL_SIZEOF(st_msg_hdr)], l_len - (oal_int32)OAL_SIZEOF(st_msg_hdr));
        }
    }

	oal_mem_sdt_netbuf_free(pst_net_buf, OAL_TRUE);
    //oal_netbuf_free(pst_net_buf);
}
Exemplo n.º 10
0
oal_int32  host_module_init(oal_void)
{
    oal_int32  l_return = OAL_FAIL;
    oal_uint16 us_bitmap = 0;

#ifdef _PRE_PLAT_FEATURE_CUSTOMIZE
    hwifi_config_init(CUS_TAG_DTS);
    hwifi_config_host_global_dts_param();
    hwifi_config_init(CUS_TAG_NV);
#endif /* #ifdef _PRE_PLAT_FEATURE_CUSTOMIZE */

    l_return = hmac_main_init();
    if (OAL_SUCC != l_return)
    {
        OAL_IO_PRINT("host_module_init: hmac_main_init return error code: %d", l_return);
        return l_return;
    }
#if 0
#if ((_PRE_OS_VERSION_WIN32 == _PRE_OS_VERSION)&&(_PRE_PRODUCT_ID_HI1102_HOST ==_PRE_PRODUCT_ID))
    /* ut工程打桩用:从device获取板级信息 */
    l_return = (oal_int32) host_test_get_chip_msg();
    if (OAL_SUCC != l_return)
    {
        us_bitmap = BIT7;
        builder_module_exit(us_bitmap);
        return l_return;
    }
#endif
#endif
    l_return = wal_main_init();
    if (OAL_SUCC != l_return)
    {
        OAL_IO_PRINT("host_module_init: wal_main_init return error code: %d", l_return);
        us_bitmap = BIT7;
        builder_module_exit(us_bitmap);
        return l_return;
    }


#if (_PRE_MULTI_CORE_MODE_OFFLOAD_DMAC == _PRE_MULTI_CORE_MODE)&&(_PRE_OS_VERSION_LINUX == _PRE_OS_VERSION)
    g_uc_custom_cali_done = OAL_FALSE;

    wlan_pm_open();
#endif
    //mdelay(7);
    //wlan_pm_close();

    /*启动完成后,输出打印*/
    OAL_IO_PRINT("host_module_init:: host_main_init finish!");

    return OAL_SUCC;
}
Exemplo n.º 11
0
OAL_STATIC oal_int32  device_module_init(oal_void)
{
    oal_int32  l_return  = OAL_FAIL;
    oal_uint16 us_bitmap = 0;

    //WLAN_EDA_TRACE_TAG(0x4210UL);
    l_return = hal_main_init();
    if (OAL_SUCC != l_return)
    {
        OAL_IO_PRINT("device_module_init: hal_main_init return error code: %d", l_return);
        return l_return;
    }

    //WLAN_EDA_TRACE_TAG(0x4220UL);
    l_return = dmac_main_init();
    if (OAL_SUCC != l_return)
    {
        OAL_IO_PRINT("device_module_init: dmac_main_init return error code: %d", l_return);
        us_bitmap = BIT4;
        builder_module_exit(us_bitmap);
        return l_return;
    }
#if (!defined(HI1102_EDA))
#if defined(_PRE_WLAN_ALG_ENABLE) || defined(_PRE_WLAN_CHIP_TEST_ALG)
    l_return = alg_main_init();
    if (OAL_SUCC != l_return)
    {
        OAL_IO_PRINT("device_module_init: alg_main_init return error code : %d", l_return);
        us_bitmap = BIT4 | BIT5;
        builder_module_exit(us_bitmap);
        return l_return;
    }
#endif
#endif

#if 0
#if (((_PRE_OS_VERSION_WIN32_RAW == _PRE_OS_VERSION)&&(_PRE_PRODUCT_ID_HI1102_DEV ==_PRE_PRODUCT_ID)) || (defined(HI1102_EDA)))
    /* ut工程打桩用:从host下发创建cfg_vap命令 */
    l_return = (oal_int32) device_test_create_cfg_vap();
    if (OAL_SUCC != l_return)
    {
        return l_return;
    }
#endif
#endif
    //WLAN_EDA_TRACE_TAG(0x4240UL);
    /*启动完成后,输出打印*/
    OAL_IO_PRINT("device_module_init:: device_module_init finish!\r\n");

    return OAL_SUCC;
}
Exemplo n.º 12
0
oal_int32 platform_module_init(oal_void)
{
    oal_int32  l_return   = OAL_FAIL;
    oal_uint16  us_bitmap  = 0;

    //WLAN_EDA_TRACE_TAG(0x4110UL);
    l_return = oal_main_init();
    if (OAL_SUCC != l_return)
    {
        OAL_IO_PRINT("platform_module_init: oal_main_init return error code: %d\r\n", l_return);
        return l_return;
    }
#if (!defined(HI1102_EDA))
    l_return = oam_main_init();
    if (OAL_SUCC != l_return)
    {
        OAL_IO_PRINT("platform_module_init: oam_main_init return error code: %d\r\n", l_return);
        us_bitmap = BIT0;
        builder_module_exit(us_bitmap);
        return l_return;
    }

#if (_PRE_OS_VERSION_LINUX == _PRE_OS_VERSION)
    #if (_PRE_PRODUCT_ID == _PRE_PRODUCT_ID_HI1151)
    /* 02目前不需要SDT初始化 TBD */
        l_return = sdt_drv_main_init();
        if (OAL_SUCC != l_return)
        {
            OAL_IO_PRINT("platform_module_init: sdt_drv_main_init return error code: %d\r\n", l_return);
            us_bitmap = BIT0|BIT1;
            builder_module_exit(us_bitmap);
            return l_return;
        }
    #endif
#endif
#endif
    //WLAN_EDA_TRACE_TAG(0x4120UL);
    l_return = frw_main_init();
    if (OAL_SUCC != l_return)
    {
        OAL_IO_PRINT("platform_module_init: frw_main_init return error code: %d\r\n", l_return);
        us_bitmap = BIT0 | BIT1 | BIT2;
        builder_module_exit(us_bitmap);
        return l_return;
    }

    /*启动完成后,输出打印*/
    OAL_IO_PRINT("platform_module_init:: platform_main_init finish!\r\n");

    return OAL_SUCC;
}
Exemplo n.º 13
0
/*****************************************************************************
 函 数 名  : oam_kernel_netlink_create
 功能描述  : 内核netlink创建函数
 输入参数  : 无
 输出参数  : 无
 返 回 值  : 成功: OAL_SUCC
             失败: 其它错误码
 调用函数  :
 被调函数  :

 修改历史      :
  1.日    期   : 2013年10月15日
    作    者   : mayuan
    修改内容   : 新生成函数

*****************************************************************************/
oal_uint32  oam_netlink_kernel_create(oal_void)
{
    g_st_netlink.pst_nlsk = oal_netlink_kernel_create(&OAL_INIT_NET, OAM_NETLINK_ID, 0, oam_netlink_kernel_recv, OAL_PTR_NULL, OAL_THIS_MODULE);
    if (OAL_PTR_NULL == g_st_netlink.pst_nlsk)
    {
        OAL_IO_PRINT("oam_netlink_kernel_create, can not create netlink.");

        return OAL_ERR_CODE_PTR_NULL;
    }

    OAL_IO_PRINT("netlink create succ.");

    return OAL_SUCC;
}
Exemplo n.º 14
0
/*****************************************************************************
 函 数 名  : sdt_drv_check_isdevlog
 功能描述  : 检测上报日志是否为device log
 输入参数  : oal_net
 输出参数  : 无
 返 回 值  : int32
 调用函数  :
 被调函数  :

 修改历史      :
  1.日    期   : 2014年12月26日
    作    者   : jwx222439
    修改内容   : 新生成函数

*****************************************************************************/
OAL_STATIC OAL_INLINE oal_int32 sdt_drv_check_isdevlog(oal_netbuf_stru *pst_netbuf)
{
    oal_uint8               *puc_pkt_tail;
    sdt_drv_pkt_hdr_stru    *pst_pkt_hdr;
    pst_pkt_hdr = (sdt_drv_pkt_hdr_stru *)oal_netbuf_data(pst_netbuf);
    puc_pkt_tail = (oal_uint8 *)pst_pkt_hdr + OAL_NETBUF_LEN(pst_netbuf);
    OAL_IO_PRINT("devlog {%s}\n", oal_netbuf_data(pst_netbuf));
    if (SDT_DRV_PKT_END_FLG == *puc_pkt_tail
        || SDT_DRV_PKT_START_FLG == pst_pkt_hdr->uc_data_start_flg)
    {
        OAL_IO_PRINT("check out is device log\n");
        return OAL_SUCC;
    }

    return -OAL_EFAIL;
}
Exemplo n.º 15
0
/*****************************************************************************
 函 数 名  : oam_upload_log_to_sdt
 功能描述  : 打印信息到PC侧可维可测工具平台中
 输入参数  : pc_string : 需要打印到可维可测工具平台中的字符串,以\0结束。
 输出参数  : 无
 返 回 值  : OAL_SUCC或其他错误码。
 调用函数  :
 被调函数  :

 修改历史      :
  1.日    期   : 2012年10月15日
    作    者   : c59720
    修改内容   : 新生成函数

*****************************************************************************/
oal_uint32 oam_upload_log_to_sdt(oal_int8 *pc_string)
{
    oal_netbuf_stru        *pst_skb;
    oal_uint32              ul_ret      = OAL_SUCC;

    if (OAL_UNLIKELY(OAL_PTR_NULL == g_st_oam_sdt_func_hook.p_sdt_report_data_func))
    {
        return OAL_ERR_CODE_PTR_NULL;
    }

    if (OAL_PTR_NULL == pc_string)
    {
        OAL_IO_PRINT("oam_upload_log_to_sdt::pc_string is null!\n");
        return OAL_ERR_CODE_PTR_NULL;
    }

    pst_skb = oam_alloc_data2sdt(OAL_SIZEOF(oam_log_info_stru));
    if (OAL_PTR_NULL == pst_skb)
    {
        return OAL_ERR_CODE_PTR_NULL;
    }

    /* COPY打印的内容 */
    oal_memcopy(oal_netbuf_data(pst_skb), pc_string, OAL_SIZEOF(oam_log_info_stru));

    /* 下发至sdt接收队列,若队列满则串口输出 */
    ul_ret = oam_report_data2sdt(pst_skb, OAM_DATA_TYPE_LOG, OAM_PRIMID_TYPE_OUTPUT_CONTENT);

    return ul_ret;
}
Exemplo n.º 16
0
/*****************************************************************************
 函 数 名  : oam_dump_buff_by_hex
 功能描述  : buff按十六进格式固定长度打印输出,每输出l_num个换行
 输入参数  : oal_uint8 *puc_buff
             oal_int32 l_len
             oal_int32 l_num
 输出参数  : 无
 返 回 值  : oal_void
 调用函数  :
 被调函数  :

 修改历史      :
  1.日    期   : 2014年3月10日,星期一
    作    者   : y00201072
    修改内容   : 新生成函数

*****************************************************************************/
oal_void  oam_dump_buff_by_hex(oal_uint8 *puc_buff, oal_int32 l_len, oal_int32 l_num)
{
    oal_int32       l_loop;

    for (l_loop = 0; l_loop < l_len; l_loop++)
    {
        OAL_IO_PRINT("%02x ", puc_buff[l_loop]);

        if (0 == (l_loop + 1) % l_num)
        {
            OAL_IO_PRINT("\n");
        }
    }

    OAL_IO_PRINT("\n");
}
Exemplo n.º 17
0
/*****************************************************************************
 函 数 名  : oam_netlink_ops_unregister
 功能描述  : OAM模块向其它模块提供的卸载netlink消息处理函数(接收方向)
 输入参数  : en_type: 模块类型
 输出参数  : 无
 返 回 值  : 无
 调用函数  :
 被调函数  :

 修改历史      :
  1.日    期   : 2013年10月22日
    作    者   : mayuan
    修改内容   : 新生成函数

*****************************************************************************/
oal_void  oam_netlink_ops_unregister(oam_nl_cmd_enum_uint8 en_type)
{
    switch (en_type)
    {
        case OAM_NL_CMD_SDT:
            g_st_netlink_ops.p_oam_sdt_func = OAL_PTR_NULL;
            break;

        case OAM_NL_CMD_HUT:
            g_st_netlink_ops.p_oam_hut_func = OAL_PTR_NULL;
            break;

        case OAM_NL_CMD_ALG:
            g_st_netlink_ops.p_oam_alg_func = OAL_PTR_NULL;
            break;

        case OAM_NL_CMD_DAQ:
            g_st_netlink_ops.p_oam_daq_func = OAL_PTR_NULL;
            break;

        case OAM_NL_CMD_REG:
            g_st_netlink_ops.p_oam_reg_func = OAL_PTR_NULL;
            break;

        case OAM_NL_CMD_ACS:
            g_st_netlink_ops.p_oam_acs_func = OAL_PTR_NULL;
            break;

        default:
            OAL_IO_PRINT("oam_netlink_ops_unregister::err type = %d.", en_type);
            break;
    }
}
Exemplo n.º 18
0
/*****************************************************************************
 函 数 名  : oam_stats_report_irq_info_to_sdt
 功能描述  : 中断统计信息上报SDT
 输入参数  : 无
 输出参数  : 无
 返 回 值  :
 调用函数  :
 被调函数  :

 修改历史      :
  1.日    期   : 2014年2月21日
    作    者   : z00237171
    修改内容   : 新生成函数

*****************************************************************************/
oal_void  oam_stats_report_irq_info_to_sdt(
                                    oal_uint8 *puc_irq_info_addr,
                                    oal_uint16  us_irq_info_len)
{
    oal_uint32           ul_tick;
    oal_uint16           us_skb_len;        /* skb总长度 */
    oal_netbuf_stru     *pst_netbuf;
    oam_ota_stru        *pst_ota_data;


    if (OAL_UNLIKELY(OAL_PTR_NULL == g_st_oam_sdt_func_hook.p_sdt_report_data_func))
    {
        return ;
    }

    if (OAL_PTR_NULL == puc_irq_info_addr)
    {
        OAL_IO_PRINT("oam_stats_report_irq_info_to_sdt::puc_irq_info_addr is null!\n");
        return;
    }

    /* 为上报描述符申请空间,头部预留8字节,尾部预留1字节,给sdt_drv用 */
    us_skb_len = us_irq_info_len + OAL_SIZEOF(oam_ota_hdr_stru);
    if (us_skb_len > WLAN_SDT_NETBUF_MAX_PAYLOAD)
    {
        us_skb_len = WLAN_SDT_NETBUF_MAX_PAYLOAD;
        us_irq_info_len = WLAN_SDT_NETBUF_MAX_PAYLOAD - OAL_SIZEOF(oam_ota_hdr_stru);
    }

    pst_netbuf = oam_alloc_data2sdt(us_skb_len);
    if (OAL_PTR_NULL == pst_netbuf)
    {
        return;
    }

    pst_ota_data = (oam_ota_stru *)oal_netbuf_data(pst_netbuf);

    /* 获取系统TICK值 */
    ul_tick = (oal_uint32)OAL_TIME_GET_STAMP_MS();

    /* 填写ota消息头结构体 */
    pst_ota_data->st_ota_hdr.ul_tick     = ul_tick;
    pst_ota_data->st_ota_hdr.en_ota_type = OAM_OTA_TYPE_IRQ;
    pst_ota_data->st_ota_hdr.uc_frame_hdr_len = 0;
    pst_ota_data->st_ota_hdr.us_ota_data_len = us_irq_info_len;
#if (_PRE_PRODUCT_ID == _PRE_PRODUCT_ID_HI1102_HOST)
    pst_ota_data->st_ota_hdr.auc_resv[0]    = 2;
#else
    pst_ota_data->st_ota_hdr.auc_resv[0]    = 3;
#endif

    /* 复制数据,填写ota数据 */
    oal_memcopy((oal_void *)pst_ota_data->auc_ota_data,
                (const oal_void *)puc_irq_info_addr,
                (oal_uint32)us_irq_info_len);

    /* 下发至sdt接收队列,若队列满则串口输出 */
    oam_report_data2sdt(pst_netbuf, OAM_DATA_TYPE_OTA, OAM_PRIMID_TYPE_OUTPUT_CONTENT);
}
Exemplo n.º 19
0
/*****************************************************************************
 函 数 名  : oam_netlink_kernel_destroy
 功能描述  :
 输入参数  : 无
 输出参数  : 无
 返 回 值  :
 调用函数  :
 被调函数  :

 修改历史      :
  1.日    期   : 2013年11月8日
    作    者   : mayuan
    修改内容   : 新生成函数

*****************************************************************************/
oal_void  oam_netlink_kernel_release(oal_void)
{
    oal_netlink_kernel_release(g_st_netlink.pst_nlsk);

    g_st_netlink.ul_pid = 0;

    OAL_IO_PRINT("netlink release succ.");
}
Exemplo n.º 20
0
/*****************************************************************************
 函 数 名  : frw_set_thread_property
 功能描述  : 设置线程参数函数
 输入参数  : p: 当前线程; policy: 调度策略; param:
 输出参数  : 无
 返 回 值  :
 调用函数  :
 被调函数  :

 修改历史      :
  1.日    期   : 2015年4月9日
    作    者   : lingxuemeng 00324381
    修改内容   : 新生成函数

*****************************************************************************/
OAL_STATIC void frw_set_thread_property(oal_task_stru *p, int policy, struct sched_param *param, long nice)
{
    OAL_BUG_ON(!p);
    OAL_BUG_ON(!param);

    if(oal_sched_setscheduler(p, policy, param))
    {
        OAL_IO_PRINT("[Error]set scheduler failed! %d\n", policy);
    }

    if(policy != SCHED_FIFO && policy != SCHED_RR)
    {
        OAL_IO_PRINT("set thread scheduler nice %ld\n", nice);
        oal_set_user_nice(p, nice);
    }

}
Exemplo n.º 21
0
/*****************************************************************************
 函 数 名  : oal_bus_get_dev_instance
 功能描述  : 获取bus dev
 输入参数  : uc_chip_id     : CHIP ID
             uc_device_id   : DEVICE ID
 输出参数  : 无
 返 回 值  : 错误码
 调用函数  :
 被调函数  :

 修改历史      :
  1.日    期   : 2013年4月8日
    作    者   : chenyan
    修改内容   : 新生成函数

*****************************************************************************/
OAL_STATIC oal_bus_dev_stru * oal_bus_get_dev_instance(oal_uint8 uc_chip_id, oal_uint8 uc_device_id)
{
    oal_bus_chip_stru          *pst_bus_chip;

    if(uc_chip_id >= WLAN_CHIP_MAX_NUM_PER_BOARD)
    {
        OAL_IO_PRINT("oal_bus_register_irq: uc_chip_id = %d\n", uc_chip_id);
        return OAL_PTR_NULL;
    }

    pst_bus_chip = &g_st_bus_chip[uc_chip_id];

    if(uc_device_id >= pst_bus_chip->uc_device_num)
    {
        OAL_IO_PRINT("oal_bus_register_irq: uc_device_id = %d\n", uc_device_id);
        return OAL_PTR_NULL;
    }

    return &pst_bus_chip->st_bus_dev[uc_device_id];
}
Exemplo n.º 22
0
/*****************************************************************************
 函 数 名  : oam_print_to_console
 功能描述  : 打印信息到标准输出窗口中
 输入参数  : pc_string : 需要打印到标准输出窗口中的字符串,以\0结束。
 输出参数  : 无
 返 回 值  : OAL_SUCC或其他错误码。
 调用函数  :
 被调函数  :

 修改历史      :
  1.日    期   : 2012年10月15日
    作    者   : c59720
    修改内容   : 新生成函数

*****************************************************************************/
oal_uint32 oam_print_to_console(oal_int8 *pc_string)
{
    if (OAL_UNLIKELY(OAL_PTR_NULL == pc_string))
    {
        return OAL_ERR_CODE_PTR_NULL;
    }

    OAL_IO_PRINT("%s\r\n", pc_string);

    return OAL_SUCC;
}
Exemplo n.º 23
0
/*****************************************************************************
 函 数 名  : oal_bus_get_instance
 功能描述  : 获取总线设备接口
 输入参数  : oal_bus_dev_stru **ppst_bus_dev, oal_uint8 uc_index
 输出参数  : ppst_bus_dev: 总线设备
 返 回 值  :
 调用函数  :
 被调函数  :

 修改历史      :
  1.日    期   : 2013年2月28日
    作    者   : zhangheng
    修改内容   : 新生成函数

*****************************************************************************/
oal_void  oal_bus_get_chip_instance(oal_bus_chip_stru **ppst_bus_chip, oal_uint8 uc_index)
{
    if(uc_index < WLAN_CHIP_MAX_NUM_PER_BOARD)
    {
        *ppst_bus_chip = &g_st_bus_chip[uc_index];
    }
    else
    {
        *ppst_bus_chip = OAL_PTR_NULL;
        OAL_IO_PRINT("oal_bus_get_chip_instance: uc_index = %d\n", uc_index);
    }
}
Exemplo n.º 24
0
oal_int32  wifi_sysfs_init(oal_void)
{
    oal_int32 ret = 0;
    oal_kobject*     pst_root_boot_object = NULL;
    pst_root_boot_object = oal_get_sysfs_root_boot_object();
    if(NULL == pst_root_boot_object)
    {
        OAL_IO_PRINT("[E]get root boot sysfs object failed!\n");
        return -OAL_EBUSY;
    }

    ret = sysfs_create_group(pst_root_boot_object,&wifi_init_attribute_group);
    if (ret)
    {
        OAL_IO_PRINT("sysfs create plat boot group fail.ret=%d\n",ret);
        ret = -OAL_ENOMEM;
        return ret;
    }

    return ret;
}
Exemplo n.º 25
0
STATIC ssize_t store_wifi_pmdbg(struct device *dev, struct kobj_attribute *attr, const char *buf, size_t count)
{
    struct wlan_pm_s *pst_wlan_pm = wlan_pm_get_drv();
    int input = 0;

    if (NULL == buf)
    {
        PS_PRINT_ERR("buf is NULL\n");
        return -FAILURE;
    }

    input = oal_atoi(buf);

    if (NULL == pst_wlan_pm)
    {
        OAL_IO_PRINT("pm_data is NULL!\n");
        return -FAILURE;
    }

    switch(input)
    {
       case 1:
        wlan_pm_dump_host_info();
       break;
       case 2:
        wlan_pm_dump_device_info();
       break;
#ifdef PLATFORM_DEBUG_ENABLE
       case 3:
        wlan_pm_open();
       break;
       case 4:
        wlan_pm_close();
       break;
       case 5:
        wlan_pm_enable();
       break;
       case 6:
        wlan_pm_disable();
       break;
#endif
       case 7:
       frw_timer_sys_start();
       break;
       case 8:
       frw_timer_sys_stop();
       break;
       default:
       break;
    }

    return count;
}
Exemplo n.º 26
0
/*****************************************************************************
 函 数 名  : sdt_drv_netlink_create
 功能描述  : 创建netlink
 输入参数  : 无
 输出参数  : 无
 返 回 值  :
 调用函数  :
 被调函数  :

 修改历史      :
  1.日    期   : 2014年1月28日
    作    者   : z00237171
    修改内容   : 新生成函数

*****************************************************************************/
oal_int32  sdt_drv_netlink_create(oal_void)
{
    g_st_sdt_drv_mng_entry.pst_nlsk = oal_netlink_kernel_create(&OAL_INIT_NET, NETLINK_TEST,
                                                          0, sdt_drv_netlink_recv,
                                                          OAL_PTR_NULL, OAL_THIS_MODULE);
    if (OAL_PTR_NULL == g_st_sdt_drv_mng_entry.pst_nlsk)
    {
        OAL_IO_PRINT("sdt_drv_netlink_create return fail!\n");
        return -OAL_EFAIL;
    }

    return OAL_SUCC;
}
Exemplo n.º 27
0
/*****************************************************************************
 函 数 名  : oam_netlink_ops_register
 功能描述  : WAL模块向其它模块提供的注册netlink消息处理函数(接收方向)
 输入参数  : 无
 输出参数  : 无
 返 回 值  :
 调用函数  :
 被调函数  :

 修改历史      :
  1.日    期   : 2013年10月17日
    作    者   : mayuan
    修改内容   : 新生成函数

*****************************************************************************/
oal_void  oam_netlink_ops_register(oam_nl_cmd_enum_uint8 en_type, oal_uint32 (*p_func)(oal_uint8 *puc_data, oal_uint32 ul_len))
{
    if (OAL_UNLIKELY(OAL_PTR_NULL == p_func))
    {
        OAL_IO_PRINT("oam_netlink_ops_register, p_func is null ptr.");
        return;
    }

    switch (en_type)
    {
        case OAM_NL_CMD_SDT:
            g_st_netlink_ops.p_oam_sdt_func = p_func;
            break;

        case OAM_NL_CMD_HUT:
            g_st_netlink_ops.p_oam_hut_func = p_func;
            break;

        case OAM_NL_CMD_ALG:
            g_st_netlink_ops.p_oam_alg_func = p_func;
            break;

        case OAM_NL_CMD_DAQ:
            g_st_netlink_ops.p_oam_daq_func = p_func;
            break;

        case OAM_NL_CMD_REG:
            g_st_netlink_ops.p_oam_reg_func = p_func;
            break;

        case OAM_NL_CMD_ACS:
            g_st_netlink_ops.p_oam_acs_func = p_func;
            break;

        default:
            OAL_IO_PRINT("oam_netlink_ops_register, err type = %d.", en_type);
            break;
    }
}
Exemplo n.º 28
0
/*****************************************************************************
 函 数 名  : oal_bus_inc_chip_num
 功能描述  : 获取硬件总线接口个数
 输入参数  : 无
 输出参数  : 无
 返 回 值  : chip 个数
 调用函数  :
 被调函数  :

 修改历史      :
  1.日    期   : 2012年10月31日
    作    者   : t00231215
    修改内容   : 新生成函数

*****************************************************************************/
oal_uint32  oal_bus_inc_chip_num(oal_void)
{
    if(g_uc_bus_chip_num < WLAN_CHIP_MAX_NUM_PER_BOARD)
    {
        g_uc_bus_chip_num++;
    }
    else
    {
        OAL_IO_PRINT("oal_bus_inc_chip_num FAIL: g_uc_bus_chip_num = %d\n", g_uc_bus_chip_num);
        return OAL_FAIL;
    }

    /* WINDOWS下UT代码 */
#if (_PRE_OS_VERSION_WIN32 == _PRE_OS_VERSION) && (_PRE_TEST_MODE == _PRE_TEST_MODE_UT)
    g_st_bus_chip[0].uc_device_num = g_uc_bus_chip_num;
#endif

    return OAL_SUCC;
}
Exemplo n.º 29
0
/*****************************************************************************
 函 数 名  : oam_cfg_get_item_by_id
 功能描述  : 提供给其他模块获取配置项值的接口
 输入参数  : en_cfg_type:其它模块传入的配置项类型
 输出参数  :
 返 回 值  : 配置项的值或者错误码
 调用函数  :
 被调函数  :

 修改历史      :
  1.日    期   : 2014年4月10日
    作    者   : z00237171
    修改内容   : 新生成函数

*****************************************************************************/
oal_int32  oam_cfg_get_item_by_id(oam_cfg_type_enum_uint16  en_cfg_type)
{
    oal_uint32      ul_loop;

    for (ul_loop = 0; ul_loop < OAM_CFG_TYPE_BUTT; ul_loop++)
    {
        if (en_cfg_type == g_ast_cfg_data[ul_loop].en_cfg_type)
        {
            break;
        }
    }

    if (OAM_CFG_TYPE_BUTT == ul_loop)
    {
        OAL_IO_PRINT("oam_cfg_get_item_by_id::get cfg item failed!\n");
        return -OAL_FAIL;
    }

    return g_ast_cfg_data[ul_loop].l_val;
}
Exemplo n.º 30
0
/*****************************************************************************
 函 数 名  : sdt_drv_main_init
 功能描述  : sdt_drv初始化函数
 输入参数  : 无
 输出参数  : 无
 返 回 值  : 成功或者失败原因
 调用函数  :
 被调函数  :

 修改历史      :
  1.日    期   : 2014年1月23日
    作    者   : z00237171
    修改内容   : 新生成函数

*****************************************************************************/
oal_int32  sdt_drv_main_init(oal_void)
{
    oal_int32   l_nl_return_val;

    OAL_MEMZERO((void *)&g_st_sdt_drv_mng_entry, OAL_SIZEOF(g_st_sdt_drv_mng_entry));

    g_st_sdt_drv_mng_entry.puc_data = oal_memalloc(DATA_BUF_LEN);
    if (OAL_PTR_NULL == g_st_sdt_drv_mng_entry.puc_data)
    {
        OAL_IO_PRINT("alloc g_st_sdt_drv_mng_entry.puc_data fail!\n");
        return -OAL_EFAIL;
    }

    OAL_MEMZERO(g_st_sdt_drv_mng_entry.puc_data, DATA_BUF_LEN);

    l_nl_return_val = sdt_drv_netlink_create();
    if (0 > l_nl_return_val)
    {
        OAL_IO_PRINT("sdt_drv_main_init::create netlink returns fail! l_nl_return_val--> \
                      %d\n", l_nl_return_val);
        return -l_nl_return_val;
    }