Lines Matching full:sw

813 static int __prestera_cmd_ret(struct prestera_switch *sw,  in __prestera_cmd_ret()  argument
819 struct prestera_device *dev = sw->dev; in __prestera_cmd_ret()
836 static int prestera_cmd_ret(struct prestera_switch *sw, in prestera_cmd_ret() argument
841 return __prestera_cmd_ret(sw, type, cmd, clen, ret, rlen, 0); in prestera_cmd_ret()
844 static int prestera_cmd_ret_wait(struct prestera_switch *sw, in prestera_cmd_ret_wait() argument
850 return __prestera_cmd_ret(sw, type, cmd, clen, ret, rlen, waitms); in prestera_cmd_ret_wait()
853 static int prestera_cmd(struct prestera_switch *sw, in prestera_cmd() argument
859 return prestera_cmd_ret(sw, type, cmd, clen, &resp.ret, sizeof(resp)); in prestera_cmd()
918 __find_event_handler(const struct prestera_switch *sw, in __find_event_handler() argument
923 list_for_each_entry_rcu(eh, &sw->event_handlers, list) { in __find_event_handler()
931 static int prestera_find_event_handler(const struct prestera_switch *sw, in prestera_find_event_handler() argument
939 tmp = __find_event_handler(sw, type); in prestera_find_event_handler()
951 struct prestera_switch *sw = dev->priv; in prestera_evt_recv() local
964 err = prestera_find_event_handler(sw, msg_type, &eh); in prestera_evt_recv()
974 eh.func(sw, &evt, eh.arg); in prestera_evt_recv()
981 struct prestera_switch *sw = dev->priv; in prestera_pkt_recv() local
988 err = prestera_find_event_handler(sw, PRESTERA_EVENT_TYPE_RXTX, &eh); in prestera_pkt_recv()
992 eh.func(sw, &ev, eh.arg); in prestera_pkt_recv()
1032 err = prestera_cmd_ret(port->sw, PRESTERA_CMD_TYPE_PORT_INFO_GET, in prestera_hw_port_info_get()
1044 int prestera_hw_switch_mac_set(struct prestera_switch *sw, const char *mac) in prestera_hw_switch_mac_set() argument
1052 return prestera_cmd(sw, PRESTERA_CMD_TYPE_SWITCH_ATTR_SET, in prestera_hw_switch_mac_set()
1056 int prestera_hw_switch_init(struct prestera_switch *sw) in prestera_hw_switch_init() argument
1062 INIT_LIST_HEAD(&sw->event_handlers); in prestera_hw_switch_init()
1066 err = prestera_cmd_ret_wait(sw, PRESTERA_CMD_TYPE_SWITCH_INIT, in prestera_hw_switch_init()
1073 sw->dev->recv_msg = prestera_evt_recv; in prestera_hw_switch_init()
1074 sw->dev->recv_pkt = prestera_pkt_recv; in prestera_hw_switch_init()
1075 sw->port_count = __le32_to_cpu(resp.port_count); in prestera_hw_switch_init()
1076 sw->mtu_min = PRESTERA_MIN_MTU; in prestera_hw_switch_init()
1077 sw->mtu_max = __le32_to_cpu(resp.mtu_max); in prestera_hw_switch_init()
1078 sw->id = resp.switch_id; in prestera_hw_switch_init()
1079 sw->lag_member_max = resp.lag_member_max; in prestera_hw_switch_init()
1080 sw->lag_max = resp.lag_max; in prestera_hw_switch_init()
1081 sw->size_tbl_router_nexthop = in prestera_hw_switch_init()
1087 void prestera_hw_switch_fini(struct prestera_switch *sw) in prestera_hw_switch_fini() argument
1089 WARN_ON(!list_empty(&sw->event_handlers)); in prestera_hw_switch_fini()
1092 int prestera_hw_switch_ageing_set(struct prestera_switch *sw, u32 ageing_ms) in prestera_hw_switch_ageing_set() argument
1101 return prestera_cmd(sw, PRESTERA_CMD_TYPE_SWITCH_ATTR_SET, in prestera_hw_switch_ageing_set()
1116 err = prestera_cmd_ret(port->sw, PRESTERA_CMD_TYPE_PORT_ATTR_GET, in prestera_hw_port_mac_mode_get()
1158 return prestera_cmd(port->sw, PRESTERA_CMD_TYPE_PORT_ATTR_SET, in prestera_hw_port_mac_mode_set()
1174 err = prestera_cmd_ret(port->sw, PRESTERA_CMD_TYPE_PORT_ATTR_GET, in prestera_hw_port_phy_mode_get()
1214 return prestera_cmd(port->sw, PRESTERA_CMD_TYPE_PORT_ATTR_SET, in prestera_hw_port_phy_mode_set()
1229 return prestera_cmd(port->sw, PRESTERA_CMD_TYPE_PORT_ATTR_SET, in prestera_hw_port_mtu_set()
1243 return prestera_cmd(port->sw, PRESTERA_CMD_TYPE_PORT_ATTR_SET, in prestera_hw_port_mac_set()
1259 return prestera_cmd(port->sw, PRESTERA_CMD_TYPE_PORT_ATTR_SET, in prestera_hw_port_accept_frm_type()
1274 err = prestera_cmd_ret(port->sw, PRESTERA_CMD_TYPE_PORT_ATTR_GET, in prestera_hw_port_cap_get()
1308 int prestera_hw_vtcam_create(struct prestera_switch *sw, in prestera_hw_vtcam_create() argument
1324 err = prestera_cmd_ret(sw, PRESTERA_CMD_TYPE_VTCAM_CREATE, in prestera_hw_vtcam_create()
1333 int prestera_hw_vtcam_destroy(struct prestera_switch *sw, u32 vtcam_id) in prestera_hw_vtcam_destroy() argument
1339 return prestera_cmd(sw, PRESTERA_CMD_TYPE_VTCAM_DESTROY, in prestera_hw_vtcam_destroy()
1371 int prestera_hw_vtcam_rule_add(struct prestera_switch *sw, in prestera_hw_vtcam_rule_add() argument
1404 err = prestera_cmd_ret(sw, PRESTERA_CMD_TYPE_VTCAM_RULE_ADD, in prestera_hw_vtcam_rule_add()
1415 int prestera_hw_vtcam_rule_del(struct prestera_switch *sw, in prestera_hw_vtcam_rule_del() argument
1423 return prestera_cmd(sw, PRESTERA_CMD_TYPE_VTCAM_RULE_DELETE, in prestera_hw_vtcam_rule_del()
1427 int prestera_hw_vtcam_iface_bind(struct prestera_switch *sw, in prestera_hw_vtcam_iface_bind() argument
1444 return prestera_cmd(sw, PRESTERA_CMD_TYPE_VTCAM_IFACE_BIND, in prestera_hw_vtcam_iface_bind()
1448 int prestera_hw_vtcam_iface_unbind(struct prestera_switch *sw, in prestera_hw_vtcam_iface_unbind() argument
1464 return prestera_cmd(sw, PRESTERA_CMD_TYPE_VTCAM_IFACE_UNBIND, in prestera_hw_vtcam_iface_unbind()
1477 err = prestera_cmd_ret(port->sw, PRESTERA_CMD_TYPE_SPAN_GET, in prestera_hw_span_get()
1502 return prestera_cmd(port->sw, cmd_type, &req.cmd, sizeof(req)); in prestera_hw_span_bind()
1519 return prestera_cmd(port->sw, cmd_type, &req.cmd, sizeof(req)); in prestera_hw_span_unbind()
1522 int prestera_hw_span_release(struct prestera_switch *sw, u8 span_id) in prestera_hw_span_release() argument
1528 return prestera_cmd(sw, PRESTERA_CMD_TYPE_SPAN_RELEASE, in prestera_hw_span_release()
1542 err = prestera_cmd_ret(port->sw, PRESTERA_CMD_TYPE_PORT_ATTR_GET, in prestera_hw_port_type_get()
1562 err = prestera_cmd_ret(port->sw, PRESTERA_CMD_TYPE_PORT_ATTR_GET, in prestera_hw_port_speed_get()
1581 return prestera_cmd(port->sw, PRESTERA_CMD_TYPE_PORT_ATTR_SET, in prestera_hw_port_autoneg_restart()
1597 err = prestera_cmd_ret(port->sw, PRESTERA_CMD_TYPE_PORT_ATTR_GET, in prestera_hw_port_stats_get()
1667 return prestera_cmd(port->sw, PRESTERA_CMD_TYPE_PORT_ATTR_SET, in prestera_hw_port_learning_set()
1685 return prestera_cmd(port->sw, PRESTERA_CMD_TYPE_PORT_ATTR_SET, in prestera_hw_port_uc_flood_set()
1703 return prestera_cmd(port->sw, PRESTERA_CMD_TYPE_PORT_ATTR_SET, in prestera_hw_port_mc_flood_set()
1719 return prestera_cmd(port->sw, PRESTERA_CMD_TYPE_PORT_ATTR_SET, in prestera_hw_port_br_locked_set()
1723 int prestera_hw_vlan_create(struct prestera_switch *sw, u16 vid) in prestera_hw_vlan_create() argument
1729 return prestera_cmd(sw, PRESTERA_CMD_TYPE_VLAN_CREATE, in prestera_hw_vlan_create()
1733 int prestera_hw_vlan_delete(struct prestera_switch *sw, u16 vid) in prestera_hw_vlan_delete() argument
1739 return prestera_cmd(sw, PRESTERA_CMD_TYPE_VLAN_DELETE, in prestera_hw_vlan_delete()
1754 return prestera_cmd(port->sw, PRESTERA_CMD_TYPE_VLAN_PORT_SET, in prestera_hw_vlan_port_set()
1766 return prestera_cmd(port->sw, PRESTERA_CMD_TYPE_VLAN_PVID_SET, in prestera_hw_vlan_port_vid_set()
1779 return prestera_cmd(port->sw, PRESTERA_CMD_TYPE_STP_PORT_SET, in prestera_hw_vlan_port_stp_set()
1797 return prestera_cmd(port->sw, PRESTERA_CMD_TYPE_FDB_ADD, in prestera_hw_fdb_add()
1814 return prestera_cmd(port->sw, PRESTERA_CMD_TYPE_FDB_DELETE, in prestera_hw_fdb_del()
1818 int prestera_hw_lag_fdb_add(struct prestera_switch *sw, u16 lag_id, in prestera_hw_lag_fdb_add() argument
1832 return prestera_cmd(sw, PRESTERA_CMD_TYPE_FDB_ADD, in prestera_hw_lag_fdb_add()
1836 int prestera_hw_lag_fdb_del(struct prestera_switch *sw, u16 lag_id, in prestera_hw_lag_fdb_del() argument
1849 return prestera_cmd(sw, PRESTERA_CMD_TYPE_FDB_DELETE, in prestera_hw_lag_fdb_del()
1863 return prestera_cmd(port->sw, PRESTERA_CMD_TYPE_FDB_FLUSH_PORT, in prestera_hw_fdb_flush_port()
1867 int prestera_hw_fdb_flush_vlan(struct prestera_switch *sw, u16 vid, u32 mode) in prestera_hw_fdb_flush_vlan() argument
1874 return prestera_cmd(sw, PRESTERA_CMD_TYPE_FDB_FLUSH_VLAN, in prestera_hw_fdb_flush_vlan()
1890 return prestera_cmd(port->sw, PRESTERA_CMD_TYPE_FDB_FLUSH_PORT_VLAN, in prestera_hw_fdb_flush_port_vlan()
1894 int prestera_hw_fdb_flush_lag(struct prestera_switch *sw, u16 lag_id, in prestera_hw_fdb_flush_lag() argument
1905 return prestera_cmd(sw, PRESTERA_CMD_TYPE_FDB_FLUSH_PORT, in prestera_hw_fdb_flush_lag()
1909 int prestera_hw_fdb_flush_lag_vlan(struct prestera_switch *sw, in prestera_hw_fdb_flush_lag_vlan() argument
1921 return prestera_cmd(sw, PRESTERA_CMD_TYPE_FDB_FLUSH_PORT_VLAN, in prestera_hw_fdb_flush_lag_vlan()
1925 int prestera_hw_bridge_create(struct prestera_switch *sw, u16 *bridge_id) in prestera_hw_bridge_create() argument
1931 err = prestera_cmd_ret(sw, PRESTERA_CMD_TYPE_BRIDGE_CREATE, in prestera_hw_bridge_create()
1942 int prestera_hw_bridge_delete(struct prestera_switch *sw, u16 bridge_id) in prestera_hw_bridge_delete() argument
1948 return prestera_cmd(sw, PRESTERA_CMD_TYPE_BRIDGE_DELETE, in prestera_hw_bridge_delete()
1960 return prestera_cmd(port->sw, PRESTERA_CMD_TYPE_BRIDGE_PORT_ADD, in prestera_hw_bridge_port_add()
1972 return prestera_cmd(port->sw, PRESTERA_CMD_TYPE_BRIDGE_PORT_DELETE, in prestera_hw_bridge_port_delete()
1998 int prestera_hw_rif_create(struct prestera_switch *sw, in prestera_hw_rif_create() argument
2011 err = prestera_cmd_ret(sw, PRESTERA_CMD_TYPE_ROUTER_RIF_CREATE, in prestera_hw_rif_create()
2020 int prestera_hw_rif_delete(struct prestera_switch *sw, u16 rif_id, in prestera_hw_rif_delete() argument
2032 return prestera_cmd(sw, PRESTERA_CMD_TYPE_ROUTER_RIF_DELETE, &req.cmd, in prestera_hw_rif_delete()
2036 int prestera_hw_vr_create(struct prestera_switch *sw, u16 *vr_id) in prestera_hw_vr_create() argument
2042 err = prestera_cmd_ret(sw, PRESTERA_CMD_TYPE_ROUTER_VR_CREATE, in prestera_hw_vr_create()
2051 int prestera_hw_vr_delete(struct prestera_switch *sw, u16 vr_id) in prestera_hw_vr_delete() argument
2057 return prestera_cmd(sw, PRESTERA_CMD_TYPE_ROUTER_VR_DELETE, &req.cmd, in prestera_hw_vr_delete()
2061 int prestera_hw_lpm_add(struct prestera_switch *sw, u16 vr_id, in prestera_hw_lpm_add() argument
2071 return prestera_cmd(sw, PRESTERA_CMD_TYPE_ROUTER_LPM_ADD, &req.cmd, in prestera_hw_lpm_add()
2075 int prestera_hw_lpm_del(struct prestera_switch *sw, u16 vr_id, in prestera_hw_lpm_del() argument
2084 return prestera_cmd(sw, PRESTERA_CMD_TYPE_ROUTER_LPM_DELETE, &req.cmd, in prestera_hw_lpm_del()
2088 int prestera_hw_nh_entries_set(struct prestera_switch *sw, int count, in prestera_hw_nh_entries_set() argument
2103 return prestera_cmd(sw, PRESTERA_CMD_TYPE_ROUTER_NH_GRP_SET, &req.cmd, in prestera_hw_nh_entries_set()
2107 int prestera_hw_nhgrp_blk_get(struct prestera_switch *sw, in prestera_hw_nhgrp_blk_get() argument
2123 err = prestera_cmd_ret(sw, in prestera_hw_nhgrp_blk_get()
2139 int prestera_hw_nh_group_create(struct prestera_switch *sw, u16 nh_count, in prestera_hw_nh_group_create() argument
2146 err = prestera_cmd_ret(sw, PRESTERA_CMD_TYPE_ROUTER_NH_GRP_ADD, in prestera_hw_nh_group_create()
2155 int prestera_hw_nh_group_delete(struct prestera_switch *sw, u16 nh_count, in prestera_hw_nh_group_delete() argument
2163 return prestera_cmd(sw, PRESTERA_CMD_TYPE_ROUTER_NH_GRP_DELETE, in prestera_hw_nh_group_delete()
2167 int prestera_hw_rxtx_init(struct prestera_switch *sw, in prestera_hw_rxtx_init() argument
2176 err = prestera_cmd_ret(sw, PRESTERA_CMD_TYPE_RXTX_INIT, in prestera_hw_rxtx_init()
2194 return prestera_cmd(port->sw, PRESTERA_CMD_TYPE_LAG_MEMBER_ADD, in prestera_hw_lag_member_add()
2206 return prestera_cmd(port->sw, PRESTERA_CMD_TYPE_LAG_MEMBER_DELETE, in prestera_hw_lag_member_del()
2223 return prestera_cmd(port->sw, cmd, &req.cmd, sizeof(req)); in prestera_hw_lag_member_enable()
2227 prestera_hw_cpu_code_counters_get(struct prestera_switch *sw, u8 code, in prestera_hw_cpu_code_counters_get() argument
2238 err = prestera_cmd_ret(sw, PRESTERA_CMD_TYPE_CPU_CODE_COUNTERS_GET, in prestera_hw_cpu_code_counters_get()
2248 int prestera_hw_event_handler_register(struct prestera_switch *sw, in prestera_hw_event_handler_register() argument
2255 eh = __find_event_handler(sw, type); in prestera_hw_event_handler_register()
2269 list_add_rcu(&eh->list, &sw->event_handlers); in prestera_hw_event_handler_register()
2274 void prestera_hw_event_handler_unregister(struct prestera_switch *sw, in prestera_hw_event_handler_unregister() argument
2280 eh = __find_event_handler(sw, type); in prestera_hw_event_handler_unregister()
2288 int prestera_hw_counter_trigger(struct prestera_switch *sw, u32 block_id) in prestera_hw_counter_trigger() argument
2294 return prestera_cmd(sw, PRESTERA_CMD_TYPE_COUNTER_TRIGGER, in prestera_hw_counter_trigger()
2298 int prestera_hw_counter_abort(struct prestera_switch *sw) in prestera_hw_counter_abort() argument
2302 return prestera_cmd(sw, PRESTERA_CMD_TYPE_COUNTER_ABORT, in prestera_hw_counter_abort()
2306 int prestera_hw_counters_get(struct prestera_switch *sw, u32 idx, in prestera_hw_counters_get() argument
2322 err = prestera_cmd_ret(sw, PRESTERA_CMD_TYPE_COUNTER_GET, in prestera_hw_counters_get()
2340 int prestera_hw_counter_block_get(struct prestera_switch *sw, in prestera_hw_counter_block_get() argument
2350 err = prestera_cmd_ret(sw, PRESTERA_CMD_TYPE_COUNTER_BLOCK_GET, in prestera_hw_counter_block_get()
2362 int prestera_hw_counter_block_release(struct prestera_switch *sw, in prestera_hw_counter_block_release() argument
2369 return prestera_cmd(sw, PRESTERA_CMD_TYPE_COUNTER_BLOCK_RELEASE, in prestera_hw_counter_block_release()
2373 int prestera_hw_counter_clear(struct prestera_switch *sw, u32 block_id, in prestera_hw_counter_clear() argument
2381 return prestera_cmd(sw, PRESTERA_CMD_TYPE_COUNTER_CLEAR, in prestera_hw_counter_clear()
2385 int prestera_hw_policer_create(struct prestera_switch *sw, u8 type, in prestera_hw_policer_create() argument
2394 err = prestera_cmd_ret(sw, PRESTERA_CMD_TYPE_POLICER_CREATE, in prestera_hw_policer_create()
2403 int prestera_hw_policer_release(struct prestera_switch *sw, in prestera_hw_policer_release() argument
2410 return prestera_cmd(sw, PRESTERA_CMD_TYPE_POLICER_RELEASE, in prestera_hw_policer_release()
2414 int prestera_hw_policer_sr_tcm_set(struct prestera_switch *sw, in prestera_hw_policer_sr_tcm_set() argument
2426 return prestera_cmd(sw, PRESTERA_CMD_TYPE_POLICER_SET, in prestera_hw_policer_sr_tcm_set()
2436 err = prestera_cmd_ret(domain->sw, in prestera_hw_flood_domain_create()
2453 return prestera_cmd(domain->sw, PRESTERA_CMD_TYPE_FLOOD_DOMAIN_DESTROY, in prestera_hw_flood_domain_destroy()
2461 struct prestera_switch *sw = domain->sw; in prestera_hw_flood_domain_ports_set() local
2487 if (prestera_lag_id(sw, flood_domain_port->dev, in prestera_hw_flood_domain_ports_set()
2509 err = prestera_cmd(sw, PRESTERA_CMD_TYPE_FLOOD_DOMAIN_PORTS_SET, in prestera_hw_flood_domain_ports_set()
2523 return prestera_cmd(domain->sw, in prestera_hw_flood_domain_ports_reset()
2537 return prestera_cmd(mdb->sw, PRESTERA_CMD_TYPE_MDB_CREATE, &req.cmd, in prestera_hw_mdb_create()
2550 return prestera_cmd(mdb->sw, PRESTERA_CMD_TYPE_MDB_DESTROY, &req.cmd, in prestera_hw_mdb_destroy()