sw_error_t garuda_portvlan_init(a_uint32_t dev_id) { HSL_DEV_ID_CHECK(dev_id); #ifndef HSL_STANDALONG hsl_api_t *p_api; SW_RTN_ON_NULL (p_api = hsl_api_ptr_get(dev_id)); p_api->port_1qmode_get = garuda_port_1qmode_get; p_api->port_1qmode_set = garuda_port_1qmode_set; p_api->port_egvlanmode_get = garuda_port_egvlanmode_get; p_api->port_egvlanmode_set = garuda_port_egvlanmode_set; p_api->portvlan_member_add = garuda_portvlan_member_add; p_api->portvlan_member_del = garuda_portvlan_member_del; p_api->portvlan_member_update = garuda_portvlan_member_update; p_api->portvlan_member_get = garuda_portvlan_member_get; p_api->port_default_vid_set = garuda_port_default_vid_set; p_api->port_default_vid_get = garuda_port_default_vid_get; p_api->port_force_default_vid_set = garuda_port_force_default_vid_set; p_api->port_force_default_vid_get = garuda_port_force_default_vid_get; p_api->port_force_portvlan_set = garuda_port_force_portvlan_set; p_api->port_force_portvlan_get = garuda_port_force_portvlan_get; p_api->port_nestvlan_set = garuda_port_nestvlan_set; p_api->port_nestvlan_get = garuda_port_nestvlan_get; p_api->nestvlan_tpid_set = garuda_nestvlan_tpid_set; p_api->nestvlan_tpid_get = garuda_nestvlan_tpid_get; #endif return SW_OK; }
static sw_error_t _garuda_port_1qmode_get(a_uint32_t dev_id, fal_port_t port_id, fal_pt_1qmode_t * pport_1qmode) { sw_error_t rv; a_uint32_t regval = 0; fal_pt_1qmode_t retval[4] = { FAL_1Q_DISABLE, FAL_1Q_FALLBACK, FAL_1Q_CHECK, FAL_1Q_SECURE }; HSL_DEV_ID_CHECK(dev_id); if (A_FALSE == hsl_port_prop_check(dev_id, port_id, HSL_PP_INCL_CPU)) { return SW_BAD_PARAM; } SW_RTN_ON_NULL(pport_1qmode); HSL_REG_FIELD_GET(rv, dev_id, PORT_BASE_VLAN, port_id, DOT1Q_MODE, (a_uint8_t *) (®val), sizeof (a_uint32_t)); SW_RTN_ON_ERROR(rv); *pport_1qmode = retval[regval & 0x3]; return SW_OK; }
static sw_error_t _horus_port_cdt(a_uint32_t dev_id, fal_port_t port_id, a_uint32_t mdi_pair, fal_cable_status_t *cable_status, a_uint32_t *cable_len) { sw_error_t rv; a_uint32_t phy_id = 0; hsl_phy_ops_t *phy_drv; HSL_DEV_ID_CHECK(dev_id); if (A_TRUE != hsl_port_prop_check(dev_id, port_id, HSL_PP_PHY)) { return SW_BAD_PARAM; } SW_RTN_ON_NULL (phy_drv = hsl_phy_api_ops_get (dev_id)); if (NULL == phy_drv->phy_cdt) return SW_NOT_SUPPORTED; rv = hsl_port_prop_get_phyid(dev_id, port_id, &phy_id); SW_RTN_ON_ERROR(rv); rv = phy_drv->phy_cdt(dev_id, phy_id, mdi_pair, cable_status, cable_len); return rv; }
sw_error_t hsl_dev_cleanup(void) { sw_error_t rv = SW_OK; a_uint32_t dev_id; for (dev_id = 0; dev_id < SW_MAX_NR_DEV; dev_id++) { if (dev_ssdk_cfg[dev_id]) { hsl_api_t *p_api; SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id)); if (p_api->dev_clean) { rv = p_api->dev_clean(dev_id); SW_RTN_ON_ERROR(rv); } aos_mem_free(dev_ssdk_cfg[dev_id]); dev_ssdk_cfg[dev_id] = NULL; } } #ifdef UK_IF SW_RTN_ON_ERROR(sw_uk_cleanup()); #endif return SW_OK; }
static sw_error_t _garuda_port_egvlanmode_get(a_uint32_t dev_id, fal_port_t port_id, fal_pt_1q_egmode_t * pport_egvlanmode) { sw_error_t rv; a_uint32_t regval = 0; fal_pt_1q_egmode_t retval[3] = { FAL_EG_UNMODIFIED, FAL_EG_UNTAGGED, FAL_EG_TAGGED }; HSL_DEV_ID_CHECK(dev_id); if (A_FALSE == hsl_port_prop_check(dev_id, port_id, HSL_PP_INCL_CPU)) { return SW_BAD_PARAM; } SW_RTN_ON_NULL(pport_egvlanmode); HSL_REG_FIELD_GET(rv, dev_id, PORT_CTL, port_id, EG_VLAN_MODE, (a_uint8_t *) (®val), sizeof (a_uint32_t)); SW_RTN_ON_ERROR(rv); *pport_egvlanmode = retval[regval & 0x3]; return SW_OK; }
static sw_error_t _horus_port_autoneg_adv_get(a_uint32_t dev_id, fal_port_t port_id, a_uint32_t * autoadv) { sw_error_t rv; a_uint32_t phy_id; hsl_phy_ops_t *phy_drv; HSL_DEV_ID_CHECK(dev_id); if (A_TRUE != hsl_port_prop_check(dev_id, port_id, HSL_PP_PHY)) { return SW_BAD_PARAM; } SW_RTN_ON_NULL (phy_drv = hsl_phy_api_ops_get (dev_id)); if (NULL == phy_drv->phy_autoneg_adv_get) return SW_NOT_SUPPORTED; rv = hsl_port_prop_get_phyid(dev_id, port_id, &phy_id); SW_RTN_ON_ERROR(rv); *autoadv = 0; rv = phy_drv->phy_autoneg_adv_get(dev_id, phy_id, autoadv); SW_RTN_ON_ERROR(rv); return SW_OK; }
static sw_error_t _horus_port_hibernate_get(a_uint32_t dev_id, fal_port_t port_id, a_bool_t *enable) { sw_error_t rv; a_uint32_t phy_id = 0; hsl_phy_ops_t *phy_drv; HSL_DEV_ID_CHECK(dev_id); if (A_TRUE != hsl_port_prop_check(dev_id, port_id, HSL_PP_PHY)) { return SW_BAD_PARAM; } SW_RTN_ON_NULL (phy_drv = hsl_phy_api_ops_get (dev_id)); if (NULL == phy_drv->phy_hibernation_get) return SW_NOT_SUPPORTED; rv = hsl_port_prop_get_phyid(dev_id, port_id, &phy_id); SW_RTN_ON_ERROR(rv); rv = phy_drv->phy_hibernation_get(dev_id, phy_id, enable); return rv; }
static sw_error_t _horus_port_speed_set(a_uint32_t dev_id, fal_port_t port_id, fal_port_speed_t speed) { sw_error_t rv; a_uint32_t phy_id = 0; hsl_phy_ops_t *phy_drv; HSL_DEV_ID_CHECK(dev_id); if (A_TRUE != hsl_port_prop_check(dev_id, port_id, HSL_PP_PHY)) { return SW_BAD_PARAM; } SW_RTN_ON_NULL (phy_drv = hsl_phy_api_ops_get (dev_id)); if (NULL == phy_drv->phy_speed_set) return SW_NOT_SUPPORTED; rv = hsl_port_prop_get_phyid(dev_id, port_id, &phy_id); SW_RTN_ON_ERROR(rv); if (FAL_SPEED_100 < speed) { return SW_BAD_PARAM; } rv = phy_drv->phy_speed_set(dev_id, phy_id, speed); return rv; }
static sw_error_t _athena_port_duplex_set(a_uint32_t dev_id, fal_port_t port_id, fal_port_duplex_t duplex) { sw_error_t rv; a_uint32_t phy_id = 0; a_uint32_t reg_save = 0; a_uint32_t reg_val = 0; hsl_phy_ops_t *phy_drv; HSL_DEV_ID_CHECK(dev_id); if (A_TRUE != hsl_port_prop_check(dev_id, port_id, HSL_PP_PHY)) { return SW_BAD_PARAM; } SW_RTN_ON_NULL (phy_drv = hsl_phy_api_ops_get (dev_id)); if (NULL == phy_drv->phy_duplex_set) return SW_NOT_SUPPORTED; if (FAL_DUPLEX_BUTT <= duplex) { return SW_BAD_PARAM; } rv = hsl_port_prop_get_phyid(dev_id, port_id, &phy_id); SW_RTN_ON_ERROR(rv); //save reg value HSL_REG_ENTRY_GET(rv, dev_id, PORT_STATUS, port_id, (a_uint8_t *) (®_val), sizeof (a_uint32_t)); reg_save = reg_val; SW_SET_REG_BY_FIELD(PORT_STATUS, LINK_EN, 0, reg_val); SW_SET_REG_BY_FIELD(PORT_STATUS, RXMAC_EN, 0, reg_val); SW_SET_REG_BY_FIELD(PORT_STATUS, TXMAC_EN, 0, reg_val); //set mac be config by sw and turn off RX TX MAC_EN HSL_REG_ENTRY_SET(rv, dev_id, PORT_STATUS, port_id, (a_uint8_t *) (®_val), sizeof (a_uint32_t)); rv = phy_drv->phy_duplex_set(dev_id, phy_id, duplex); //retore reg value HSL_REG_ENTRY_SET(rv, dev_id, PORT_STATUS, port_id, (a_uint8_t *) (®_save), sizeof (a_uint32_t)); return rv; }
static sw_error_t _fal_igmp_mld_rp_set(a_uint32_t dev_id, fal_pbmp_t pts) { sw_error_t rv; hsl_api_t *p_api; SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id)); if (NULL == p_api->igmp_rp_set) return SW_NOT_SUPPORTED; rv = p_api->igmp_rp_set(dev_id, pts); return rv; }
static sw_error_t _fal_ip_wcmp_hash_mode_get(a_uint32_t dev_id, a_uint32_t * hash_mode) { sw_error_t rv; hsl_api_t *p_api; SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id)); if (NULL == p_api->ip_wcmp_hash_mode_get) return SW_NOT_SUPPORTED; rv = p_api->ip_wcmp_hash_mode_get(dev_id, hash_mode); return rv; }
static sw_error_t _fal_ip_age_time_set(a_uint32_t dev_id, a_uint32_t * time) { sw_error_t rv; hsl_api_t *p_api; SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id)); if (NULL == p_api->ip_age_time_set) return SW_NOT_SUPPORTED; rv = p_api->ip_age_time_set(dev_id, time); return rv; }
static sw_error_t _fal_ip_intf_entry_add(a_uint32_t dev_id, fal_intf_mac_entry_t * entry) { sw_error_t rv; hsl_api_t *p_api; SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id)); if (NULL == p_api->ip_intf_entry_add) return SW_NOT_SUPPORTED; rv = p_api->ip_intf_entry_add(dev_id, entry); return rv; }
sw_error_t fal_acl_rule_dump(a_uint32_t dev_id) { sw_error_t rv; hsl_api_t *p_api; SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id)); if (NULL == p_api->acl_rule_dump) return SW_NOT_SUPPORTED; rv = p_api->acl_rule_dump(dev_id); return rv; }
static sw_error_t _fal_port_qinq_role_get(a_uint32_t dev_id, fal_port_t port_id, fal_qinq_port_role_t * role) { sw_error_t rv; hsl_api_t *p_api; SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id)); if (NULL == p_api->port_qinq_role_get) return SW_NOT_SUPPORTED; rv = p_api->port_qinq_role_get(dev_id, port_id, role); return rv; }
static sw_error_t _fal_port_igmp_mld_join_set(a_uint32_t dev_id, fal_port_t port_id, a_bool_t enable) { sw_error_t rv; hsl_api_t *p_api; SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id)); if (NULL == p_api->port_igmp_join_set) return SW_NOT_SUPPORTED; rv = p_api->port_igmp_join_set(dev_id, port_id, enable); return rv; }
static sw_error_t _fal_igmp_sg_entry_query(a_uint32_t dev_id, fal_igmp_sg_info_t * info) { sw_error_t rv; hsl_api_t *p_api; SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id)); if (NULL == p_api->igmp_sg_entry_query) return SW_NOT_SUPPORTED; rv = p_api->igmp_sg_entry_query(dev_id, info); return rv; }
static sw_error_t _fal_eg_trans_filter_bypass_en_get(a_uint32_t dev_id, a_uint32_t* enable) { sw_error_t rv; hsl_api_t *p_api; SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id)); if (NULL == p_api->eg_trans_filter_bypass_en_set) return SW_NOT_SUPPORTED; rv = p_api->eg_trans_filter_bypass_en_get(dev_id, enable); return rv; }
static sw_error_t _fal_netisolate_set(a_uint32_t dev_id, a_uint32_t enable) { sw_error_t rv; hsl_api_t *p_api; SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id)); if (NULL == p_api->netisolate_set) return SW_NOT_SUPPORTED; rv = p_api->netisolate_set(dev_id, enable); return rv; }
static sw_error_t _fal_igmp_mld_entry_queue_get(a_uint32_t dev_id, a_bool_t * enable, a_uint32_t * queue) { sw_error_t rv; hsl_api_t *p_api; SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id)); if (NULL == p_api->igmp_entry_queue_get) return SW_NOT_SUPPORTED; rv = p_api->igmp_entry_queue_get(dev_id, enable, queue); return rv; }
static sw_error_t _fal_igmp_sg_entry_show(a_uint32_t dev_id) { sw_error_t rv; hsl_api_t *p_api; SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id)); if (NULL == p_api->igmp_sg_entry_show) return SW_NOT_SUPPORTED; rv = p_api->igmp_sg_entry_show(dev_id); return rv; }
static sw_error_t _fal_port_vlan_trans_get(a_uint32_t dev_id, fal_port_t port_id, fal_vlan_trans_entry_t *entry) { sw_error_t rv; hsl_api_t *p_api; SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id)); if (NULL == p_api->port_vlan_trans_get) return SW_NOT_SUPPORTED; rv = p_api->port_vlan_trans_get(dev_id, port_id, entry); return rv; }
static sw_error_t _fal_igmp_mld_cmd_get(a_uint32_t dev_id, fal_fwd_cmd_t * cmd) { sw_error_t rv; hsl_api_t *p_api; SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id)); if (NULL == p_api->igmp_mld_cmd_get) return SW_NOT_SUPPORTED; rv = p_api->igmp_mld_cmd_get(dev_id, cmd); return rv; }
static sw_error_t _fal_cosmap_dscp_to_dp_get(a_uint32_t dev_id, a_uint32_t dscp, a_uint32_t * dp) { sw_error_t rv; hsl_api_t *p_api; SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id)); if (NULL == p_api->cosmap_dscp_to_dp_get) return SW_NOT_SUPPORTED; rv = p_api->cosmap_dscp_to_dp_get(dev_id, dscp, dp); return rv; }
static sw_error_t _fal_sec_norm_item_get(a_uint32_t dev_id, fal_norm_item_t item, void *value) { sw_error_t rv; hsl_api_t *p_api; SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id)); if (NULL == p_api->sec_norm_item_get) return SW_NOT_SUPPORTED; rv = p_api->sec_norm_item_get(dev_id, item, value); return rv; }
static sw_error_t _fal_cosmap_up_to_pri_set(a_uint32_t dev_id, a_uint32_t up, a_uint32_t pri) { sw_error_t rv; hsl_api_t *p_api; SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id)); if (NULL == p_api->cosmap_up_to_pri_set) return SW_NOT_SUPPORTED; rv = p_api->cosmap_up_to_pri_set(dev_id, up, pri); return rv; }
static sw_error_t _fal_acl_status_get(a_uint32_t dev_id, a_bool_t * enable) { sw_error_t rv; hsl_api_t *p_api; SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id)); if (NULL == p_api->acl_status_get) return SW_NOT_SUPPORTED; rv = p_api->acl_status_get(dev_id, enable); return rv; }
static sw_error_t _fal_ip_pt_arp_learn_set(a_uint32_t dev_id, fal_port_t port_id, a_uint32_t flags) { sw_error_t rv; hsl_api_t *p_api; SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id)); if (NULL == p_api->ip_pt_arp_learn_set) return SW_NOT_SUPPORTED; rv = p_api->ip_pt_arp_learn_set(dev_id, port_id, flags); return rv; }
static sw_error_t _fal_acl_list_destroy(a_uint32_t dev_id, a_uint32_t list_id) { sw_error_t rv; hsl_api_t *p_api; SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id)); if (NULL == p_api->acl_list_destroy) return SW_NOT_SUPPORTED; rv = p_api->acl_list_destroy(dev_id, list_id); return rv; }
static sw_error_t _fal_ip_arp_learn_get(a_uint32_t dev_id, fal_arp_learn_mode_t * mode) { sw_error_t rv; hsl_api_t *p_api; SW_RTN_ON_NULL(p_api = hsl_api_ptr_get(dev_id)); if (NULL == p_api->ip_arp_learn_get) return SW_NOT_SUPPORTED; rv = p_api->ip_arp_learn_get(dev_id, mode); return rv; }