blob: c0924d8850aeba68770db244847e2d2ca366b48f [file] [log] [blame]
/*
* Copyright (c) 2016-2020, The Linux Foundation. All rights reserved.
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
* above copyright notice and this permission notice appear in all copies.
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
* OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#include "adpt.h"
#include "ssdk_init.h"
#if defined(HPPE)
#include "adpt_hppe.h"
#endif
#if defined(IN_SFP)
#include "adpt_sfp.h"
#endif
#if defined(MP)
#include "adpt_mp.h"
#endif
#include "hsl_phy.h"
adpt_api_t *g_adpt_api[SW_MAX_NR_DEV] = {NULL};
adpt_chip_ver_t g_chip_ver[SW_MAX_NR_DEV] = {{0}};
adpt_api_t *adpt_api_ptr_get(a_uint32_t dev_id)
{
if (dev_id >= SW_MAX_NR_DEV)
return NULL;
return g_adpt_api[dev_id];
}
#if defined (SCOMPHY)
a_uint32_t adapt_scomphy_revision_get(a_uint32_t dev_id)
{
return g_chip_ver[dev_id].chip_revision;
}
#endif
#if defined(HPPE)
a_uint32_t adpt_hppe_chip_revision_get(a_uint32_t dev_id)
{
return g_chip_ver[dev_id].chip_revision;
}
static sw_error_t adpt_hppe_module_func_register(a_uint32_t dev_id, a_uint32_t module)
{
sw_error_t rv= SW_OK;
switch (module)
{
case FAL_MODULE_ACL:
#if defined(IN_ACL)
rv = adpt_hppe_acl_init(dev_id);
#endif
break;
case FAL_MODULE_VSI:
#if defined(IN_VSI)
rv = adpt_hppe_vsi_init(dev_id);
#endif
break;
case FAL_MODULE_IP:
#if defined(IN_IP)
rv = adpt_hppe_ip_init(dev_id);
#endif
break;
case FAL_MODULE_FLOW:
#if defined(IN_FLOW)
rv = adpt_hppe_flow_init(dev_id);
#endif
break;
case FAL_MODULE_QM:
#if defined(IN_QM)
rv = adpt_hppe_qm_init(dev_id);
#endif
break;
case FAL_MODULE_QOS:
#if defined(IN_QOS)
rv = adpt_hppe_qos_init(dev_id);
#endif
break;
case FAL_MODULE_BM:
#if defined(IN_BM)
rv = adpt_hppe_bm_init(dev_id);
#endif
break;
case FAL_MODULE_SERVCODE:
#if defined(IN_SERVCODE)
rv = adpt_hppe_servcode_init( dev_id);
#endif
break;
case FAL_MODULE_RSS_HASH:
#if defined(IN_RSS_HASH)
rv = adpt_hppe_rss_hash_init( dev_id);
#endif
break;
case FAL_MODULE_PPPOE:
#if defined(IN_PPPOE)
rv = adpt_hppe_pppoe_init(dev_id);
#endif
break;
case FAL_MODULE_PORTCTRL:
#if defined(IN_PORTCONTROL)
rv = adpt_hppe_port_ctrl_init(dev_id);
#endif
break;
case FAL_MODULE_SHAPER:
#if defined(IN_SHAPER)
rv = adpt_hppe_shaper_init( dev_id);
#endif
break;
case FAL_MODULE_MIB:
#if defined(IN_MIB)
rv = adpt_hppe_mib_init(dev_id);
#endif
break;
case FAL_MODULE_MIRROR:
#if defined(IN_MIRROR)
rv = adpt_hppe_mirror_init( dev_id);
#endif
break;
case FAL_MODULE_FDB:
#if defined(IN_FDB)
rv = adpt_hppe_fdb_init(dev_id);
#endif
break;
case FAL_MODULE_STP:
#if defined(IN_STP)
rv = adpt_hppe_stp_init(dev_id);
#endif
break;
case FAL_MODULE_TRUNK:
#if defined(IN_TRUNK)
rv = adpt_hppe_trunk_init( dev_id);
#endif
break;
case FAL_MODULE_PORTVLAN:
#if defined(IN_PORTVLAN)
rv = adpt_hppe_portvlan_init(dev_id);
#endif
break;
case FAL_MODULE_CTRLPKT:
#if defined(IN_CTRLPKT)
rv = adpt_hppe_ctrlpkt_init( dev_id);
#endif
break;
case FAL_MODULE_SEC:
#if defined(IN_SEC)
rv = adpt_hppe_sec_init(dev_id);
#endif
break;
case FAL_MODULE_POLICER:
#if defined(IN_POLICER)
rv = adpt_hppe_policer_init(dev_id);
#endif
break;
case FAL_MODULE_MISC:
#if defined(IN_MISC)
rv = adpt_hppe_misc_init(dev_id);
#endif
break;
case FAL_MODULE_PTP:
#if defined(IN_PTP)
rv = adpt_hppe_ptp_init(dev_id);
#endif
break;
case FAL_MODULE_SFP:
#if defined(IN_SFP)
rv = adpt_sfp_init(dev_id);
#endif
break;
default:
break;
}
return rv;
}
#endif
sw_error_t adpt_module_func_ctrl_set(a_uint32_t dev_id,
a_uint32_t module, fal_func_ctrl_t *func_ctrl)
{
sw_error_t rv= SW_OK;
adpt_api_t *p_adpt_api = NULL;
p_adpt_api = adpt_api_ptr_get(dev_id);
if(p_adpt_api == NULL)
return SW_FAIL;
if(module == FAL_MODULE_ACL){
p_adpt_api->adpt_acl_func_bitmap = func_ctrl->bitmap[0];
} else if (module == FAL_MODULE_VSI) {
p_adpt_api->adpt_vsi_func_bitmap = func_ctrl->bitmap[0];
}else if (module == FAL_MODULE_IP) {
p_adpt_api->adpt_ip_func_bitmap[0] = func_ctrl->bitmap[0];
p_adpt_api->adpt_ip_func_bitmap[1] = func_ctrl->bitmap[1];
} else if (module == FAL_MODULE_FLOW) {
p_adpt_api->adpt_flow_func_bitmap = func_ctrl->bitmap[0];
} else if (module == FAL_MODULE_QM) {
p_adpt_api->adpt_qm_func_bitmap[0] = func_ctrl->bitmap[0];
p_adpt_api->adpt_qm_func_bitmap[1] = func_ctrl->bitmap[1];
} else if (module == FAL_MODULE_QOS) {
p_adpt_api->adpt_qos_func_bitmap = func_ctrl->bitmap[0];
} else if (module == FAL_MODULE_BM) {
p_adpt_api->adpt_bm_func_bitmap = func_ctrl->bitmap[0];
} else if (module == FAL_MODULE_SERVCODE) {
p_adpt_api->adpt_servcode_func_bitmap = func_ctrl->bitmap[0];
} else if (module == FAL_MODULE_RSS_HASH) {
p_adpt_api->adpt_rss_hash_func_bitmap = func_ctrl->bitmap[0];
} else if (module == FAL_MODULE_PPPOE) {
p_adpt_api->adpt_pppoe_func_bitmap = func_ctrl->bitmap[0];
} else if (module == FAL_MODULE_PORTCTRL) {
p_adpt_api->adpt_port_ctrl_func_bitmap[0] = func_ctrl->bitmap[0];
p_adpt_api->adpt_port_ctrl_func_bitmap[1] = func_ctrl->bitmap[1];
p_adpt_api->adpt_port_ctrl_func_bitmap[2] = func_ctrl->bitmap[2];
} else if (module == FAL_MODULE_SHAPER) {
p_adpt_api->adpt_shaper_func_bitmap = func_ctrl->bitmap[0];
} else if(module == FAL_MODULE_MIB){
p_adpt_api->adpt_mib_func_bitmap = func_ctrl->bitmap[0];
} else if(module == FAL_MODULE_MIRROR){
p_adpt_api->adpt_mirror_func_bitmap = func_ctrl->bitmap[0];
} else if(module == FAL_MODULE_FDB){
p_adpt_api->adpt_fdb_func_bitmap[0] = func_ctrl->bitmap[0];
p_adpt_api->adpt_fdb_func_bitmap[1] = func_ctrl->bitmap[1];
} else if(module == FAL_MODULE_STP){
p_adpt_api->adpt_stp_func_bitmap = func_ctrl->bitmap[0];
} else if(module == FAL_MODULE_TRUNK){
p_adpt_api->adpt_trunk_func_bitmap = func_ctrl->bitmap[0];
} else if(module == FAL_MODULE_PORTVLAN){
p_adpt_api->adpt_portvlan_func_bitmap[0] = func_ctrl->bitmap[0];
p_adpt_api->adpt_portvlan_func_bitmap[1] = func_ctrl->bitmap[1];
} else if(module == FAL_MODULE_CTRLPKT){
p_adpt_api->adpt_ctrlpkt_func_bitmap = func_ctrl->bitmap[0];
} else if(module == FAL_MODULE_SEC){
p_adpt_api->adpt_sec_func_bitmap = func_ctrl->bitmap[0];
} else if(module == FAL_MODULE_POLICER){
p_adpt_api->adpt_policer_func_bitmap = func_ctrl->bitmap[0];
}
switch (g_chip_ver[dev_id].chip_type)
{
#if defined(HPPE)
case CHIP_HPPE:
rv = adpt_hppe_module_func_register(dev_id, module);
break;
#endif
default:
break;
}
return rv;
}
sw_error_t adpt_module_func_ctrl_get(a_uint32_t dev_id,
a_uint32_t module, fal_func_ctrl_t *func_ctrl)
{
adpt_api_t *p_adpt_api = NULL;
p_adpt_api = adpt_api_ptr_get(dev_id);
if(p_adpt_api == NULL)
return SW_FAIL;
if(module == FAL_MODULE_ACL){
func_ctrl->bitmap[0] = p_adpt_api->adpt_acl_func_bitmap;
} else if (module == FAL_MODULE_VSI) {
func_ctrl->bitmap[0] = p_adpt_api->adpt_vsi_func_bitmap;
} else if (module == FAL_MODULE_IP) {
func_ctrl->bitmap[0] = p_adpt_api->adpt_ip_func_bitmap[0];
func_ctrl->bitmap[1] = p_adpt_api->adpt_ip_func_bitmap[1];
} else if (module == FAL_MODULE_FLOW) {
func_ctrl->bitmap[0] = p_adpt_api->adpt_flow_func_bitmap;
} else if (module == FAL_MODULE_QM) {
func_ctrl->bitmap[0] = p_adpt_api->adpt_qm_func_bitmap[0];
func_ctrl->bitmap[1] = p_adpt_api->adpt_qm_func_bitmap[1];
} else if (module == FAL_MODULE_QOS) {
func_ctrl->bitmap[0] = p_adpt_api->adpt_qos_func_bitmap;
} else if (module == FAL_MODULE_BM) {
func_ctrl->bitmap[0] = p_adpt_api->adpt_bm_func_bitmap;
} else if (module == FAL_MODULE_SERVCODE) {
func_ctrl->bitmap[0] = p_adpt_api->adpt_servcode_func_bitmap;
} else if (module == FAL_MODULE_RSS_HASH) {
func_ctrl->bitmap[0] = p_adpt_api->adpt_rss_hash_func_bitmap;
} else if (module == FAL_MODULE_PPPOE) {
func_ctrl->bitmap[0] = p_adpt_api->adpt_pppoe_func_bitmap;
} else if (module == FAL_MODULE_PORTCTRL) {
func_ctrl->bitmap[0] = p_adpt_api->adpt_port_ctrl_func_bitmap[0];
func_ctrl->bitmap[1] = p_adpt_api->adpt_port_ctrl_func_bitmap[1];
func_ctrl->bitmap[2] = p_adpt_api->adpt_port_ctrl_func_bitmap[2];
} else if (module == FAL_MODULE_SHAPER) {
func_ctrl->bitmap[0] = p_adpt_api->adpt_shaper_func_bitmap;
} else if(module == FAL_MODULE_MIB) {
func_ctrl->bitmap[0] = p_adpt_api->adpt_mib_func_bitmap;
} else if(module == FAL_MODULE_MIRROR) {
func_ctrl->bitmap[0] = p_adpt_api->adpt_mirror_func_bitmap;
} else if(module == FAL_MODULE_FDB) {
func_ctrl->bitmap[0] = p_adpt_api->adpt_fdb_func_bitmap[0];
func_ctrl->bitmap[1] = p_adpt_api->adpt_fdb_func_bitmap[1];
} else if(module == FAL_MODULE_STP) {
func_ctrl->bitmap[0] = p_adpt_api->adpt_stp_func_bitmap;
} else if(module == FAL_MODULE_TRUNK) {
func_ctrl->bitmap[0] = p_adpt_api->adpt_trunk_func_bitmap;
} else if(module == FAL_MODULE_PORTVLAN) {
func_ctrl->bitmap[0] = p_adpt_api->adpt_portvlan_func_bitmap[0];
func_ctrl->bitmap[1] = p_adpt_api->adpt_portvlan_func_bitmap[1];
} else if(module == FAL_MODULE_CTRLPKT) {
func_ctrl->bitmap[0] = p_adpt_api->adpt_ctrlpkt_func_bitmap;
} else if(module == FAL_MODULE_SEC) {
func_ctrl->bitmap[0] = p_adpt_api->adpt_sec_func_bitmap;
} else if(module == FAL_MODULE_POLICER) {
func_ctrl->bitmap[0] = p_adpt_api->adpt_policer_func_bitmap;
}
return SW_OK;
}
sw_error_t adpt_init(a_uint32_t dev_id, ssdk_init_cfg *cfg)
{
sw_error_t rv= SW_OK;
switch (cfg->chip_type)
{
#if defined(HPPE)
case CHIP_HPPE:
g_adpt_api[dev_id] = aos_mem_alloc(sizeof(adpt_api_t));
if(g_adpt_api[dev_id] == NULL)
{
printk("%s, %d:malloc fail for adpt api\n", __FUNCTION__, __LINE__);
return SW_FAIL;
}
aos_mem_zero(g_adpt_api[dev_id], sizeof(adpt_api_t));
g_chip_ver[dev_id].chip_type = cfg->chip_type;
g_chip_ver[dev_id].chip_revision = cfg->chip_revision;
g_adpt_api[dev_id]->adpt_mirror_func_bitmap = 0xffffffff;
rv = adpt_hppe_module_func_register(dev_id, FAL_MODULE_MIRROR);
SW_RTN_ON_ERROR(rv);
g_adpt_api[dev_id]->adpt_fdb_func_bitmap[0] = 0xffffffff;
g_adpt_api[dev_id]->adpt_fdb_func_bitmap[1] = 0xffffffff;
rv = adpt_hppe_module_func_register(dev_id, FAL_MODULE_FDB);
SW_RTN_ON_ERROR(rv);
g_adpt_api[dev_id]->adpt_stp_func_bitmap = 0xffffffff;
rv = adpt_hppe_module_func_register(dev_id, FAL_MODULE_STP);
SW_RTN_ON_ERROR(rv);
g_adpt_api[dev_id]->adpt_trunk_func_bitmap = 0xffffffff;
rv = adpt_hppe_module_func_register(dev_id, FAL_MODULE_TRUNK);
SW_RTN_ON_ERROR(rv);
g_adpt_api[dev_id]->adpt_portvlan_func_bitmap[0] = 0xffffffff;
g_adpt_api[dev_id]->adpt_portvlan_func_bitmap[1] = 0xffffffff;
rv = adpt_hppe_module_func_register(dev_id, FAL_MODULE_PORTVLAN);
SW_RTN_ON_ERROR(rv);
g_adpt_api[dev_id]->adpt_ctrlpkt_func_bitmap = 0xffffffff;
rv = adpt_hppe_module_func_register(dev_id, FAL_MODULE_CTRLPKT);
SW_RTN_ON_ERROR(rv);
g_adpt_api[dev_id]->adpt_sec_func_bitmap = 0xffffffff;
rv = adpt_hppe_module_func_register(dev_id, FAL_MODULE_SEC);
SW_RTN_ON_ERROR(rv);
g_adpt_api[dev_id]->adpt_acl_func_bitmap = 0xffffffff;
rv = adpt_hppe_module_func_register(dev_id, FAL_MODULE_ACL);
SW_RTN_ON_ERROR(rv);
g_adpt_api[dev_id]->adpt_vsi_func_bitmap = 0xffffffff;
rv = adpt_hppe_module_func_register(dev_id, FAL_MODULE_VSI);
SW_RTN_ON_ERROR(rv);
g_adpt_api[dev_id]->adpt_ip_func_bitmap[0] = 0xffffffff;
g_adpt_api[dev_id]->adpt_ip_func_bitmap[1] = 0xffffffff;
rv = adpt_hppe_module_func_register(dev_id, FAL_MODULE_IP);
SW_RTN_ON_ERROR(rv);
g_adpt_api[dev_id]->adpt_flow_func_bitmap = 0xffffffff;
rv = adpt_hppe_module_func_register(dev_id, FAL_MODULE_FLOW);
SW_RTN_ON_ERROR(rv);
g_adpt_api[dev_id]->adpt_qm_func_bitmap[0] = 0xffffffff;
g_adpt_api[dev_id]->adpt_qm_func_bitmap[1] = 0xffffffff;
rv = adpt_hppe_module_func_register(dev_id, FAL_MODULE_QM);
SW_RTN_ON_ERROR(rv);
g_adpt_api[dev_id]->adpt_qos_func_bitmap = 0xffffffff;
rv = adpt_hppe_module_func_register(dev_id, FAL_MODULE_QOS);
SW_RTN_ON_ERROR(rv);
g_adpt_api[dev_id]->adpt_bm_func_bitmap = 0xffffffff;
rv = adpt_hppe_module_func_register(dev_id, FAL_MODULE_BM);
SW_RTN_ON_ERROR(rv);
g_adpt_api[dev_id]->adpt_servcode_func_bitmap = 0xffffffff;
rv = adpt_hppe_module_func_register(dev_id, FAL_MODULE_SERVCODE);
SW_RTN_ON_ERROR(rv);
g_adpt_api[dev_id]->adpt_rss_hash_func_bitmap = 0xffffffff;
rv = adpt_hppe_module_func_register(dev_id, FAL_MODULE_RSS_HASH);
SW_RTN_ON_ERROR(rv);
g_adpt_api[dev_id]->adpt_pppoe_func_bitmap = 0xffffffff;
rv = adpt_hppe_module_func_register(dev_id, FAL_MODULE_PPPOE);
SW_RTN_ON_ERROR(rv);
g_adpt_api[dev_id]->adpt_port_ctrl_func_bitmap[0] = 0xffffffff;
g_adpt_api[dev_id]->adpt_port_ctrl_func_bitmap[1] = 0xffffffff;
g_adpt_api[dev_id]->adpt_port_ctrl_func_bitmap[2] = 0xffffffff;
rv = adpt_hppe_module_func_register(dev_id, FAL_MODULE_PORTCTRL);
SW_RTN_ON_ERROR(rv);
g_adpt_api[dev_id]->adpt_shaper_func_bitmap = 0xffffffff;
rv = adpt_hppe_module_func_register(dev_id, FAL_MODULE_SHAPER);
SW_RTN_ON_ERROR(rv);
g_adpt_api[dev_id]->adpt_mib_func_bitmap = 0xffffffff;
rv = adpt_hppe_module_func_register(dev_id, FAL_MODULE_MIB);
SW_RTN_ON_ERROR(rv);
g_adpt_api[dev_id]->adpt_policer_func_bitmap = 0xffffffff;
rv = adpt_hppe_module_func_register(dev_id, FAL_MODULE_POLICER);
SW_RTN_ON_ERROR(rv);
rv = adpt_hppe_module_func_register(dev_id, FAL_MODULE_MISC);
SW_RTN_ON_ERROR(rv);
rv = adpt_hppe_module_func_register(dev_id, FAL_MODULE_PTP);
SW_RTN_ON_ERROR(rv);
rv = adpt_hppe_module_func_register(dev_id, FAL_MODULE_SFP);
SW_RTN_ON_ERROR(rv);
/* uniphy */
rv = adpt_hppe_uniphy_init(dev_id);
SW_RTN_ON_ERROR(rv);
break;
#endif
#if defined (SCOMPHY)
case CHIP_SCOMPHY:
g_chip_ver[dev_id].chip_type = cfg->chip_type;
g_chip_ver[dev_id].chip_revision = cfg->phy_id;
#if defined (MP)
if(cfg->phy_id == MP_GEPHY)
{
g_adpt_api[dev_id] = aos_mem_alloc(sizeof(adpt_api_t));
if(g_adpt_api[dev_id] == NULL)
{
SSDK_ERROR("malloc fail for adpt api\n");
return SW_FAIL;
}
aos_mem_zero(g_adpt_api[dev_id], sizeof(adpt_api_t));
rv = adpt_mp_intr_init(dev_id);
SW_RTN_ON_ERROR(rv);
#if defined (IN_MIB)
rv = adpt_mp_mib_init(dev_id);
SW_RTN_ON_ERROR(rv);
#endif
#if defined (IN_PORTCONTROL)
rv = adpt_mp_portctrl_init(dev_id);
SW_RTN_ON_ERROR(rv);
#endif
#if defined (IN_UNIPHY)
rv = adpt_mp_uniphy_init(dev_id);
SW_RTN_ON_ERROR(rv);
#endif
#if defined (IN_LED)
rv = adpt_mp_led_init(dev_id);
SW_RTN_ON_ERROR(rv);
#endif
}
#endif
break;
#endif
default:
break;
}
return rv;
}
sw_error_t adpt_module_func_init(a_uint32_t dev_id, ssdk_init_cfg *cfg)
{
sw_error_t rv= SW_OK;
switch (cfg->chip_type)
{
#if defined(HPPE)
case CHIP_HPPE:
g_adpt_api[dev_id]->adpt_mirror_func_bitmap = 0;
#if defined(IN_MIRROR)
adpt_hppe_mirror_func_bitmap_init(dev_id);
rv = adpt_hppe_module_func_register(dev_id, FAL_MODULE_MIRROR);
SW_RTN_ON_ERROR(rv);
#endif
g_adpt_api[dev_id]->adpt_fdb_func_bitmap[0] = 0;
g_adpt_api[dev_id]->adpt_fdb_func_bitmap[1] = 0;
#if defined(IN_FDB)
adpt_hppe_fdb_func_bitmap_init(dev_id);
rv = adpt_hppe_module_func_register(dev_id, FAL_MODULE_FDB);
SW_RTN_ON_ERROR(rv);
#endif
g_adpt_api[dev_id]->adpt_stp_func_bitmap = 0;
#if defined(IN_STP)
adpt_hppe_stp_func_bitmap_init(dev_id);
rv = adpt_hppe_module_func_register(dev_id, FAL_MODULE_STP);
SW_RTN_ON_ERROR(rv);
#endif
g_adpt_api[dev_id]->adpt_trunk_func_bitmap = 0;
#if defined(IN_TRUNK)
adpt_hppe_trunk_func_bitmap_init(dev_id);
rv = adpt_hppe_module_func_register(dev_id, FAL_MODULE_TRUNK);
SW_RTN_ON_ERROR(rv);
#endif
g_adpt_api[dev_id]->adpt_portvlan_func_bitmap[0] = 0;
g_adpt_api[dev_id]->adpt_portvlan_func_bitmap[1] = 0;
#if defined(IN_PORTVLAN)
adpt_hppe_portvlan_func_bitmap_init(dev_id);
rv = adpt_hppe_module_func_register(dev_id, FAL_MODULE_PORTVLAN);
SW_RTN_ON_ERROR(rv);
#endif
g_adpt_api[dev_id]->adpt_ctrlpkt_func_bitmap = 0;
#if defined(IN_CTRLPKT)
adpt_hppe_ctrlpkt_func_bitmap_init(dev_id);
rv = adpt_hppe_module_func_register(dev_id, FAL_MODULE_CTRLPKT);
SW_RTN_ON_ERROR(rv);
#endif
g_adpt_api[dev_id]->adpt_sec_func_bitmap = 0;
#if defined(IN_SEC)
adpt_hppe_sec_func_bitmap_init(dev_id);
rv = adpt_hppe_module_func_register(dev_id, FAL_MODULE_SEC);
SW_RTN_ON_ERROR(rv);
#endif
g_adpt_api[dev_id]->adpt_acl_func_bitmap = 0;
#if defined(IN_ACL)
adpt_hppe_acl_func_bitmap_init(dev_id);
rv = adpt_hppe_module_func_register(dev_id, FAL_MODULE_ACL);
SW_RTN_ON_ERROR(rv);
#endif
g_adpt_api[dev_id]->adpt_vsi_func_bitmap = 0;
#if defined(IN_VSI)
adpt_hppe_vsi_func_bitmap_init(dev_id);
rv = adpt_hppe_module_func_register(dev_id, FAL_MODULE_VSI);
SW_RTN_ON_ERROR(rv);
#endif
g_adpt_api[dev_id]->adpt_ip_func_bitmap[0] = 0;
g_adpt_api[dev_id]->adpt_ip_func_bitmap[1] = 0;
#if defined(IN_IP)
adpt_hppe_ip_func_bitmap_init(dev_id);
rv = adpt_hppe_module_func_register(dev_id, FAL_MODULE_IP);
SW_RTN_ON_ERROR(rv);
#endif
g_adpt_api[dev_id]->adpt_flow_func_bitmap = 0;
#if defined(IN_FLOW)
adpt_hppe_flow_func_bitmap_init(dev_id);
rv = adpt_hppe_module_func_register(dev_id, FAL_MODULE_FLOW);
SW_RTN_ON_ERROR(rv);
#endif
g_adpt_api[dev_id]->adpt_qm_func_bitmap[0] = 0;
g_adpt_api[dev_id]->adpt_qm_func_bitmap[1] = 0;
#if defined(IN_QM)
adpt_hppe_qm_func_bitmap_init(dev_id);
rv = adpt_hppe_module_func_register(dev_id, FAL_MODULE_QM);
SW_RTN_ON_ERROR(rv);
#endif
g_adpt_api[dev_id]->adpt_qos_func_bitmap = 0;
#if defined(IN_QOS)
adpt_hppe_qos_func_bitmap_init(dev_id);
rv = adpt_hppe_module_func_register(dev_id, FAL_MODULE_QOS);
SW_RTN_ON_ERROR(rv);
#endif
g_adpt_api[dev_id]->adpt_bm_func_bitmap = 0;
#if defined(IN_BM)
adpt_hppe_bm_func_bitmap_init(dev_id);
rv = adpt_hppe_module_func_register(dev_id, FAL_MODULE_BM);
SW_RTN_ON_ERROR(rv);
#endif
g_adpt_api[dev_id]->adpt_servcode_func_bitmap = 0;
#if defined(IN_SERVCODE)
adpt_hppe_servcode_func_bitmap_init(dev_id);
rv = adpt_hppe_module_func_register(dev_id, FAL_MODULE_SERVCODE);
SW_RTN_ON_ERROR(rv);
#endif
g_adpt_api[dev_id]->adpt_rss_hash_func_bitmap = 0;
#if defined(IN_RSS_HASH)
adpt_hppe_rss_hash_func_bitmap_init(dev_id);
rv = adpt_hppe_module_func_register(dev_id, FAL_MODULE_RSS_HASH);
SW_RTN_ON_ERROR(rv);
#endif
g_adpt_api[dev_id]->adpt_pppoe_func_bitmap = 0;
#if defined(IN_PPPOE)
adpt_hppe_pppoe_func_bitmap_init(dev_id);
rv = adpt_hppe_module_func_register(dev_id, FAL_MODULE_PPPOE);
SW_RTN_ON_ERROR(rv);
#endif
g_adpt_api[dev_id]->adpt_port_ctrl_func_bitmap[0] = 0;
g_adpt_api[dev_id]->adpt_port_ctrl_func_bitmap[1] = 0;
g_adpt_api[dev_id]->adpt_port_ctrl_func_bitmap[2] = 0;
#if defined(IN_PORTCONTROL)
adpt_hppe_port_ctrl_func_bitmap_init(dev_id);
rv = adpt_hppe_module_func_register(dev_id, FAL_MODULE_PORTCTRL);
SW_RTN_ON_ERROR(rv);
#endif
g_adpt_api[dev_id]->adpt_shaper_func_bitmap = 0;
#if defined(IN_SHAPER)
adpt_hppe_shaper_func_bitmap_init(dev_id);
rv = adpt_hppe_module_func_register(dev_id, FAL_MODULE_SHAPER);
SW_RTN_ON_ERROR(rv);
#endif
g_adpt_api[dev_id]->adpt_mib_func_bitmap = 0;
#if defined(IN_MIB)
adpt_hppe_mib_func_bitmap_init(dev_id);
rv = adpt_hppe_module_func_register(dev_id, FAL_MODULE_MIB);
SW_RTN_ON_ERROR(rv);
#endif
g_adpt_api[dev_id]->adpt_policer_func_bitmap = 0;
#if defined(IN_POLICER)
adpt_hppe_policer_func_bitmap_init(dev_id);
rv = adpt_hppe_module_func_register(dev_id, FAL_MODULE_POLICER);
SW_RTN_ON_ERROR(rv);
#endif
break;
#endif
default:
break;
}
return rv;
}