| /linux/drivers/net/ethernet/mellanox/mlx5/core/ |
| H A D | eswitch.c | 40 #include "esw/acl/lgcy.h" 41 #include "esw/legacy.h" 42 #include "esw/qos.h" 107 mlx5_eswitch_get_vport(struct mlx5_eswitch *esw, u16 vport_num) in mlx5_eswitch_get_vport() argument 111 if (!esw) in mlx5_eswitch_get_vport() 114 vport = xa_load(&esw->vports, vport_num); in mlx5_eswitch_get_vport() 116 esw_debug(esw->dev, "vport out of range: num(0x%x)\n", vport_num); in mlx5_eswitch_get_vport() 207 __esw_fdb_set_vport_rule(struct mlx5_eswitch *esw, u16 vport, bool rx_rule, in __esw_fdb_set_vport_rule() argument 250 esw_debug(esw->dev, in __esw_fdb_set_vport_rule() 256 mlx5_add_flow_rules(esw in __esw_fdb_set_vport_rule() 270 esw_fdb_set_vport_rule(struct mlx5_eswitch * esw,u8 mac[ETH_ALEN],u16 vport) esw_fdb_set_vport_rule() argument 279 esw_fdb_set_vport_allmulti_rule(struct mlx5_eswitch * esw,u16 vport) esw_fdb_set_vport_allmulti_rule() argument 292 esw_fdb_set_vport_promisc_rule(struct mlx5_eswitch * esw,u16 vport) esw_fdb_set_vport_promisc_rule() argument 306 esw_add_uc_addr(struct mlx5_eswitch * esw,struct vport_addr * vaddr) esw_add_uc_addr() argument 339 esw_del_uc_addr(struct mlx5_eswitch * esw,struct vport_addr * vaddr) esw_del_uc_addr() argument 366 update_allmulti_vports(struct mlx5_eswitch * esw,struct vport_addr * vaddr,struct esw_mc_addr * esw_mc) update_allmulti_vports() argument 415 esw_add_mc_addr(struct mlx5_eswitch * esw,struct vport_addr * vaddr) esw_add_mc_addr() argument 455 esw_del_mc_addr(struct mlx5_eswitch * esw,struct vport_addr * vaddr) esw_del_mc_addr() argument 498 esw_apply_vport_addr_list(struct mlx5_eswitch * esw,struct mlx5_vport * vport,int list_type) esw_apply_vport_addr_list() argument 532 esw_update_vport_addr_list(struct mlx5_eswitch * esw,struct mlx5_vport * vport,int list_type) esw_update_vport_addr_list() argument 619 esw_update_vport_mc_promisc(struct mlx5_eswitch * esw,struct mlx5_vport * vport) esw_update_vport_mc_promisc() argument 654 esw_apply_vport_rx_mode(struct mlx5_eswitch * esw,struct mlx5_vport * vport,bool promisc,bool mc_promisc) esw_apply_vport_rx_mode() argument 697 esw_update_vport_rx_mode(struct mlx5_eswitch * esw,struct mlx5_vport * vport) esw_update_vport_rx_mode() argument 728 struct mlx5_eswitch *esw = dev->priv.eswitch; esw_vport_change_handle_locked() local 765 struct mlx5_eswitch *esw = vport->dev->priv.eswitch; esw_vport_change_handler() local 784 esw_vport_setup_acl(struct mlx5_eswitch * esw,struct mlx5_vport * vport) esw_vport_setup_acl() argument 793 esw_vport_cleanup_acl(struct mlx5_eswitch * esw,struct mlx5_vport * vport) esw_vport_cleanup_acl() argument 802 mlx5_esw_vport_caps_get(struct mlx5_eswitch * esw,struct mlx5_vport * vport) mlx5_esw_vport_caps_get() argument 843 mlx5_esw_vport_vhca_id(struct mlx5_eswitch * esw,u16 vportn,u16 * vhca_id) mlx5_esw_vport_vhca_id() argument 855 esw_vport_setup(struct mlx5_eswitch * esw,struct mlx5_vport * vport) esw_vport_setup() argument 897 esw_vport_cleanup(struct mlx5_eswitch * esw,struct mlx5_vport * vport) esw_vport_cleanup() argument 911 mlx5_esw_vport_set_max_tx_speed(struct mlx5_eswitch * esw,struct mlx5_vport * vport) mlx5_esw_vport_set_max_tx_speed() argument 929 mlx5_esw_vport_enable(struct mlx5_eswitch * esw,struct mlx5_vport * vport,enum mlx5_eswitch_vport_event enabled_events) mlx5_esw_vport_enable() argument 982 mlx5_esw_vport_disable(struct mlx5_eswitch * esw,struct mlx5_vport * vport) mlx5_esw_vport_disable() argument 1024 struct mlx5_eswitch *esw = mlx5_nb_cof(nb, struct mlx5_eswitch, nb); eswitch_vport_event() local 1066 mlx5_esw_host_functions_enabled_query(struct mlx5_eswitch * esw) mlx5_esw_host_functions_enabled_query() argument 1085 mlx5_eswitch_event_handler_register(struct mlx5_eswitch * esw) mlx5_eswitch_event_handler_register() argument 1094 mlx5_eswitch_event_handler_unregister(struct mlx5_eswitch * esw) mlx5_eswitch_event_handler_unregister() argument 1103 mlx5_eswitch_clear_vf_vports_info(struct mlx5_eswitch * esw) mlx5_eswitch_clear_vf_vports_info() argument 1115 mlx5_eswitch_clear_ec_vf_vports_info(struct mlx5_eswitch * esw) mlx5_eswitch_clear_ec_vf_vports_info() argument 1127 mlx5_eswitch_load_vport(struct mlx5_eswitch * esw,struct mlx5_vport * vport,enum mlx5_eswitch_vport_event enabled_events) mlx5_eswitch_load_vport() argument 1147 mlx5_eswitch_unload_vport(struct mlx5_eswitch * esw,struct mlx5_vport * vport) mlx5_eswitch_unload_vport() argument 1153 mlx5_eswitch_load_pf_vf_vport(struct mlx5_eswitch * esw,u16 vport_num,enum mlx5_eswitch_vport_event enabled_events) mlx5_eswitch_load_pf_vf_vport() argument 1177 mlx5_eswitch_unload_pf_vf_vport(struct mlx5_eswitch * esw,u16 vport_num) mlx5_eswitch_unload_pf_vf_vport() argument 1189 mlx5_eswitch_load_sf_vport(struct mlx5_eswitch * esw,u16 vport_num,enum mlx5_eswitch_vport_event enabled_events,struct mlx5_devlink_port * dl_port,u32 controller,u32 sfnum) mlx5_eswitch_load_sf_vport() argument 1215 mlx5_eswitch_unload_sf_vport(struct mlx5_eswitch * esw,u16 vport_num) mlx5_eswitch_unload_sf_vport() argument 1227 mlx5_eswitch_unload_vf_vports(struct mlx5_eswitch * esw,u16 num_vfs) mlx5_eswitch_unload_vf_vports() argument 1240 mlx5_eswitch_unload_ec_vf_vports(struct mlx5_eswitch * esw,u16 num_ec_vfs) mlx5_eswitch_unload_ec_vf_vports() argument 1253 mlx5_eswitch_unload_adj_vf_vports(struct mlx5_eswitch * esw) mlx5_eswitch_unload_adj_vf_vports() argument 1266 mlx5_eswitch_load_adj_vf_vports(struct mlx5_eswitch * esw,enum mlx5_eswitch_vport_event enabled_events) mlx5_eswitch_load_adj_vf_vports() argument 1289 mlx5_eswitch_load_vf_vports(struct mlx5_eswitch * esw,u16 num_vfs,enum mlx5_eswitch_vport_event enabled_events) mlx5_eswitch_load_vf_vports() argument 1309 mlx5_eswitch_load_ec_vf_vports(struct mlx5_eswitch * esw,u16 num_ec_vfs,enum mlx5_eswitch_vport_event enabled_events) mlx5_eswitch_load_ec_vf_vports() argument 1331 struct mlx5_eswitch *esw = dev->priv.eswitch; mlx5_esw_host_pf_enable_hca() local 1357 struct mlx5_eswitch *esw = dev->priv.eswitch; mlx5_esw_host_pf_disable_hca() local 1381 mlx5_eswitch_enable_pf_vf_vports(struct mlx5_eswitch * esw,enum mlx5_eswitch_vport_event enabled_events) mlx5_eswitch_enable_pf_vf_vports() argument 1454 mlx5_eswitch_disable_pf_vf_vports(struct mlx5_eswitch * esw) mlx5_eswitch_disable_pf_vf_vports() argument 1477 mlx5_eswitch_get_devlink_param(struct mlx5_eswitch * esw) mlx5_eswitch_get_devlink_param() argument 1497 mlx5_eswitch_update_num_of_vfs(struct mlx5_eswitch * esw,int num_vfs) mlx5_eswitch_update_num_of_vfs() argument 1521 mlx5_esw_mode_change_notify(struct mlx5_eswitch * esw,u16 mode) mlx5_esw_mode_change_notify() argument 1590 mlx5_esw_acls_ns_init(struct mlx5_eswitch * esw) mlx5_esw_acls_ns_init() argument 1622 mlx5_esw_acls_ns_cleanup(struct mlx5_eswitch * esw) mlx5_esw_acls_ns_cleanup() argument 1649 mlx5_eswitch_enable_locked(struct mlx5_eswitch * esw,int num_vfs) mlx5_eswitch_enable_locked() argument 1710 mlx5_eswitch_enable(struct mlx5_eswitch * esw,int num_vfs) mlx5_eswitch_enable() argument 1754 mlx5_eswitch_disable_sriov(struct mlx5_eswitch * esw,bool clear_vf) mlx5_eswitch_disable_sriov() argument 1798 mlx5_eswitch_disable_locked(struct mlx5_eswitch * esw) mlx5_eswitch_disable_locked() argument 1827 mlx5_eswitch_disable(struct mlx5_eswitch * esw) mlx5_eswitch_disable() argument 1882 mlx5_esw_vport_alloc(struct mlx5_eswitch * esw,int index,u16 vport_num) mlx5_esw_vport_alloc() argument 1909 mlx5_esw_vport_free(struct mlx5_eswitch * esw,struct mlx5_vport * vport) mlx5_esw_vport_free() argument 1916 mlx5_esw_vports_cleanup(struct mlx5_eswitch * esw) mlx5_esw_vports_cleanup() argument 1926 mlx5_esw_vports_init(struct mlx5_eswitch * esw) mlx5_esw_vports_init() argument 2041 struct mlx5_eswitch *esw; mlx5_eswitch_init() local 2126 mlx5_eswitch_cleanup(struct mlx5_eswitch * esw) mlx5_eswitch_cleanup() argument 2154 mlx5_esw_set_vport_mac_locked(struct mlx5_eswitch * esw,struct mlx5_vport * evport,const u8 * mac) mlx5_esw_set_vport_mac_locked() argument 2192 mlx5_eswitch_set_vport_mac(struct mlx5_eswitch * esw,u16 vport,const u8 * mac) mlx5_eswitch_set_vport_mac() argument 2207 mlx5_esw_check_port_type(struct mlx5_eswitch * esw,u16 vport_num,xa_mark_t mark) mlx5_esw_check_port_type() argument 2212 mlx5_eswitch_is_vf_vport(struct mlx5_eswitch * esw,u16 vport_num) mlx5_eswitch_is_vf_vport() argument 2217 mlx5_eswitch_is_pf_vf_vport(struct mlx5_eswitch * esw,u16 vport_num) mlx5_eswitch_is_pf_vf_vport() argument 2223 mlx5_esw_is_sf_vport(struct mlx5_eswitch * esw,u16 vport_num) mlx5_esw_is_sf_vport() argument 2228 mlx5_eswitch_set_vport_state(struct mlx5_eswitch * esw,u16 vport,int link_state) mlx5_eswitch_set_vport_state() argument 2266 mlx5_eswitch_get_vport_config(struct mlx5_eswitch * esw,u16 vport,struct ifla_vf_info * ivi) mlx5_eswitch_get_vport_config() argument 2298 __mlx5_eswitch_set_vport_vlan(struct mlx5_eswitch * esw,u16 vport,u16 vlan,u8 qos,u8 set_flags) __mlx5_eswitch_set_vport_vlan() argument 2328 mlx5_eswitch_get_vport_stats(struct mlx5_eswitch * esw,u16 vport_num,struct ifla_vf_stats * vf_stats) mlx5_eswitch_get_vport_stats() argument 2408 struct mlx5_eswitch *esw = dev->priv.eswitch; mlx5_eswitch_mode() local 2417 struct mlx5_eswitch *esw; mlx5_eswitch_get_encap_mode() local 2454 struct mlx5_eswitch *esw = mdev->priv.eswitch; mlx5_esw_hold() local 2477 struct mlx5_eswitch *esw = mdev->priv.eswitch; mlx5_esw_release() local 2489 struct mlx5_eswitch *esw = mdev->priv.eswitch; mlx5_esw_get() local 2501 struct mlx5_eswitch *esw = mdev->priv.eswitch; mlx5_esw_put() local 2518 mlx5_esw_try_lock(struct mlx5_eswitch * esw) mlx5_esw_try_lock() argument 2532 mlx5_esw_lock(struct mlx5_eswitch * esw) mlx5_esw_lock() argument 2548 mlx5_esw_unlock(struct mlx5_eswitch * esw) mlx5_esw_unlock() argument 2562 struct mlx5_eswitch *esw; mlx5_eswitch_get_total_vports() local 2575 mlx5_eswitch_get_core_dev(struct mlx5_eswitch * esw) mlx5_eswitch_get_core_dev() argument 2583 struct mlx5_eswitch *esw = dev->priv.eswitch; mlx5_eswitch_block_ipsec() local 2601 struct mlx5_eswitch *esw = dev->priv.eswitch; mlx5_eswitch_unblock_ipsec() local [all...] |
| H A D | eswitch_offloads.c | 42 #include "esw/indir_table.h" 43 #include "esw/acl/ofld.h" 79 static struct mlx5_eswitch_rep *mlx5_eswitch_get_rep(struct mlx5_eswitch *esw, in mlx5_eswitch_get_rep() 82 return xa_load(&esw->offloads.vport_reps, vport_num); 86 mlx5_eswitch_set_rule_flow_source(struct mlx5_eswitch *esw, in mlx5_eswitch_set_rule_flow_source() 90 if (!MLX5_CAP_ESW_FLOWTABLE(esw->dev, flow_source) || !attr || !attr->in_rep) in mlx5_eswitch_set_rule_flow_source() 108 mlx5_eswitch_clear_rule_source_port(struct mlx5_eswitch *esw, struct mlx5_flow_spec *spec) in mlx5_eswitch_clear_rule_source_port() 110 if (mlx5_eswitch_vport_match_metadata_enabled(esw)) { in mlx5_eswitch_clear_rule_source_port() 125 mlx5_eswitch_set_rule_source_port(struct mlx5_eswitch *esw, in mlx5_eswitch_set_rule_source_port() 139 if (mlx5_eswitch_vport_match_metadata_enabled(esw)) { in mlx5_eswitch_set_rule_source_port() 77 mlx5_eswitch_get_rep(struct mlx5_eswitch * esw,u16 vport_num) mlx5_eswitch_get_rep() argument 84 mlx5_eswitch_set_rule_flow_source(struct mlx5_eswitch * esw,struct mlx5_flow_spec * spec,struct mlx5_esw_flow_attr * attr) mlx5_eswitch_set_rule_flow_source() argument 106 mlx5_eswitch_clear_rule_source_port(struct mlx5_eswitch * esw,struct mlx5_flow_spec * spec) mlx5_eswitch_clear_rule_source_port() argument 123 mlx5_eswitch_set_rule_source_port(struct mlx5_eswitch * esw,struct mlx5_flow_spec * spec,struct mlx5_flow_attr * attr,struct mlx5_eswitch * src_esw,u16 vport) mlx5_eswitch_set_rule_source_port() argument 176 esw_setup_decap_indir(struct mlx5_eswitch * esw,struct mlx5_flow_attr * attr) esw_setup_decap_indir() argument 190 esw_cleanup_decap_indir(struct mlx5_eswitch * esw,struct mlx5_flow_attr * attr) esw_cleanup_decap_indir() argument 230 esw_setup_ft_dest(struct mlx5_flow_destination * dest,struct mlx5_flow_act * flow_act,struct mlx5_eswitch * esw,struct mlx5_flow_attr * attr,int i) esw_setup_ft_dest() argument 255 esw_setup_slow_path_dest(struct mlx5_flow_destination * dest,struct mlx5_flow_act * flow_act,struct mlx5_eswitch * esw,int i) esw_setup_slow_path_dest() argument 282 esw_put_dest_tables_loop(struct mlx5_eswitch * esw,struct mlx5_flow_attr * attr,int from,int to) esw_put_dest_tables_loop() argument 298 esw_is_chain_src_port_rewrite(struct mlx5_eswitch * esw,struct mlx5_esw_flow_attr * esw_attr) esw_is_chain_src_port_rewrite() argument 311 esw_setup_chain_src_port_rewrite(struct mlx5_flow_destination * dest,struct mlx5_flow_act * flow_act,struct mlx5_eswitch * esw,struct mlx5_fs_chains * chains,struct mlx5_flow_attr * attr,int * i) esw_setup_chain_src_port_rewrite() argument 341 esw_cleanup_chain_src_port_rewrite(struct mlx5_eswitch * esw,struct mlx5_flow_attr * attr) esw_cleanup_chain_src_port_rewrite() argument 350 esw_is_indir_table(struct mlx5_eswitch * esw,struct mlx5_flow_attr * attr) esw_is_indir_table() argument 377 esw_setup_indir_table(struct mlx5_flow_destination * dest,struct mlx5_flow_act * flow_act,struct mlx5_eswitch * esw,struct mlx5_flow_attr * attr,int * i) esw_setup_indir_table() argument 412 esw_cleanup_indir_table(struct mlx5_eswitch * esw,struct mlx5_flow_attr * attr) esw_cleanup_indir_table() argument 431 esw_setup_uplink_fwd_ipsec_needed(struct mlx5_eswitch * esw,struct mlx5_esw_flow_attr * esw_attr,int attr_idx) esw_setup_uplink_fwd_ipsec_needed() argument 447 esw_flow_dests_fwd_ipsec_check(struct mlx5_eswitch * esw,struct mlx5_esw_flow_attr * esw_attr) esw_flow_dests_fwd_ipsec_check() argument 469 esw_setup_dest_fwd_vport(struct mlx5_flow_destination * dest,struct mlx5_flow_act * flow_act,struct mlx5_eswitch * esw,struct mlx5_esw_flow_attr * esw_attr,int attr_idx,int dest_idx,bool pkt_reformat) esw_setup_dest_fwd_vport() argument 494 esw_setup_dest_fwd_ipsec(struct mlx5_flow_destination * dest,struct mlx5_flow_act * flow_act,struct mlx5_eswitch * esw,struct mlx5_esw_flow_attr * esw_attr,int attr_idx,int dest_idx,bool pkt_reformat) esw_setup_dest_fwd_ipsec() argument 508 esw_setup_vport_dest(struct mlx5_flow_destination * dest,struct mlx5_flow_act * flow_act,struct mlx5_eswitch * esw,struct mlx5_esw_flow_attr * esw_attr,int attr_idx,int dest_idx,bool pkt_reformat) esw_setup_vport_dest() argument 521 esw_setup_vport_dests(struct mlx5_flow_destination * dest,struct mlx5_flow_act * flow_act,struct mlx5_eswitch * esw,struct mlx5_esw_flow_attr * esw_attr,int i) esw_setup_vport_dests() argument 532 esw_src_port_rewrite_supported(struct mlx5_eswitch * esw) esw_src_port_rewrite_supported() argument 569 esw_setup_dests(struct mlx5_flow_destination * dest,struct mlx5_flow_act * flow_act,struct mlx5_eswitch * esw,struct mlx5_flow_attr * attr,struct mlx5_flow_spec * spec,int * i) esw_setup_dests() argument 626 esw_cleanup_dests(struct mlx5_eswitch * esw,struct mlx5_flow_attr * attr) esw_cleanup_dests() argument 660 mlx5_eswitch_add_offloaded_rule(struct mlx5_eswitch * esw,struct mlx5_flow_spec * spec,struct mlx5_flow_attr * attr) mlx5_eswitch_add_offloaded_rule() argument 797 mlx5_eswitch_add_fwd_rule(struct mlx5_eswitch * esw,struct mlx5_flow_spec * spec,struct mlx5_flow_attr * attr) mlx5_eswitch_add_fwd_rule() argument 879 __mlx5_eswitch_del_rule(struct mlx5_eswitch * esw,struct mlx5_flow_handle * rule,struct mlx5_flow_attr * attr,bool fwd_rule) __mlx5_eswitch_del_rule() argument 922 mlx5_eswitch_del_offloaded_rule(struct mlx5_eswitch * esw,struct mlx5_flow_handle * rule,struct mlx5_flow_attr * attr) mlx5_eswitch_del_offloaded_rule() argument 930 mlx5_eswitch_del_fwd_rule(struct mlx5_eswitch * esw,struct mlx5_flow_handle * rule,struct mlx5_flow_attr * attr) mlx5_eswitch_del_fwd_rule() argument 1040 mlx5_eswitch_add_send_to_vport_meta_rule(struct mlx5_eswitch * esw,u16 vport_num) mlx5_eswitch_add_send_to_vport_meta_rule() argument 1076 mlx5_eswitch_reg_c1_loopback_supported(struct mlx5_eswitch * esw) mlx5_eswitch_reg_c1_loopback_supported() argument 1082 esw_set_passing_vport_metadata(struct mlx5_eswitch * esw,bool enable) esw_set_passing_vport_metadata() argument 1127 peer_miss_rules_setup(struct mlx5_eswitch * esw,struct mlx5_core_dev * peer_dev,struct mlx5_flow_spec * spec,struct mlx5_flow_destination * dest) peer_miss_rules_setup() argument 1163 esw_set_peer_miss_rule_source_port(struct mlx5_eswitch * esw,struct mlx5_eswitch * peer_esw,struct mlx5_flow_spec * spec,u16 vport) esw_set_peer_miss_rule_source_port() argument 1183 esw_add_fdb_peer_miss_rules(struct mlx5_eswitch * esw,struct mlx5_core_dev * peer_dev) esw_add_fdb_peer_miss_rules() argument 1314 esw_del_fdb_peer_miss_rules(struct mlx5_eswitch * esw,struct mlx5_core_dev * peer_dev) esw_del_fdb_peer_miss_rules() argument 1352 esw_add_fdb_miss_rule(struct mlx5_eswitch * esw) esw_add_fdb_miss_rule() argument 1413 esw_add_restore_rule(struct mlx5_eswitch * esw,u32 tag) esw_add_restore_rule() argument 1460 mlx5_esw_lag_demux_fg_create(struct mlx5_eswitch * esw,struct mlx5_flow_table * ft) mlx5_esw_lag_demux_fg_create() argument 1499 mlx5_esw_lag_demux_rule_create(struct mlx5_eswitch * esw,u16 vport_num,struct mlx5_flow_table * lag_ft) mlx5_esw_lag_demux_rule_create() argument 1540 mlx5_esw_set_flow_group_source_port(struct mlx5_eswitch * esw,u32 * flow_group_in,int match_params) mlx5_esw_set_flow_group_source_port() argument 1567 esw_vport_tbl_put(struct mlx5_eswitch * esw) esw_vport_tbl_put() argument 1582 esw_vport_tbl_get(struct mlx5_eswitch * esw) esw_vport_tbl_get() argument 1605 fdb_modify_header_fwd_to_table_supported(esw) global() argument 1607 esw_init_chains_offload_flags(struct mlx5_eswitch * esw,u32 * flags) esw_init_chains_offload_flags() argument 1638 esw_chains_create(struct mlx5_eswitch * esw,struct mlx5_flow_table * miss_fdb) esw_chains_create() argument 1701 esw_chains_destroy(struct mlx5_eswitch * esw,struct mlx5_fs_chains * chains) esw_chains_destroy() argument 1713 esw_chains_create(struct mlx5_eswitch * esw,struct mlx5_flow_table * miss_fdb) esw_chains_create() argument 1717 esw_chains_destroy(struct mlx5_eswitch * esw,struct mlx5_fs_chains * chains) esw_chains_destroy() argument 1723 esw_create_send_to_vport_group(struct mlx5_eswitch * esw,struct mlx5_flow_table * fdb,u32 * flow_group_in,int * ix) esw_create_send_to_vport_group() argument 1767 esw_create_meta_send_to_vport_group(struct mlx5_eswitch * esw,struct mlx5_flow_table * fdb,u32 * flow_group_in,int * ix) esw_create_meta_send_to_vport_group() argument 1814 esw_create_peer_esw_miss_group(struct mlx5_eswitch * esw,struct mlx5_flow_table * fdb,u32 * flow_group_in,int * ix) esw_create_peer_esw_miss_group() argument 1862 esw_create_miss_group(struct mlx5_eswitch * esw,struct mlx5_flow_table * fdb,u32 * flow_group_in,int * ix) esw_create_miss_group() argument 1907 esw_create_offloads_fdb_tables(struct mlx5_eswitch * esw) esw_create_offloads_fdb_tables() argument 2031 esw_destroy_offloads_fdb_tables(struct mlx5_eswitch * esw) esw_destroy_offloads_fdb_tables() argument 2055 esw_get_nr_ft_offloads_steering_src_ports(struct mlx5_eswitch * esw) esw_get_nr_ft_offloads_steering_src_ports() argument 2066 esw_create_offloads_table(struct mlx5_eswitch * esw) esw_create_offloads_table() argument 2095 esw_destroy_offloads_table(struct mlx5_eswitch * esw) esw_destroy_offloads_table() argument 2102 esw_create_vport_rx_group(struct mlx5_eswitch * esw) esw_create_vport_rx_group() argument 2135 esw_destroy_vport_rx_group(struct mlx5_eswitch * esw) esw_destroy_vport_rx_group() argument 2140 esw_create_vport_rx_drop_rule_index(struct mlx5_eswitch * esw) esw_create_vport_rx_drop_rule_index() argument 2149 esw_create_vport_rx_drop_group(struct mlx5_eswitch * esw) esw_create_vport_rx_drop_group() argument 2181 esw_destroy_vport_rx_drop_group(struct mlx5_eswitch * esw) esw_destroy_vport_rx_drop_group() argument 2188 mlx5_esw_set_spec_source_port(struct mlx5_eswitch * esw,u16 vport,struct mlx5_flow_spec * spec) mlx5_esw_set_spec_source_port() argument 2216 mlx5_eswitch_create_vport_rx_rule(struct mlx5_eswitch * esw,u16 vport,struct mlx5_flow_destination * dest) mlx5_eswitch_create_vport_rx_rule() argument 2246 esw_create_vport_rx_drop_rule(struct mlx5_eswitch * esw) esw_create_vport_rx_drop_rule() argument 2266 esw_destroy_vport_rx_drop_rule(struct mlx5_eswitch * esw) esw_destroy_vport_rx_drop_rule() argument 2272 mlx5_eswitch_inline_mode_get(struct mlx5_eswitch * esw,u8 * mode) mlx5_eswitch_inline_mode_get() argument 2310 esw_destroy_restore_table(struct mlx5_eswitch * esw) esw_destroy_restore_table() argument 2322 esw_create_restore_table(struct mlx5_eswitch * esw) esw_create_restore_table() argument 2413 esw_mode_change(struct mlx5_eswitch * esw,u16 mode) esw_mode_change() argument 2432 mlx5_esw_fdb_drop_destroy(struct mlx5_eswitch * esw) mlx5_esw_fdb_drop_destroy() argument 2447 mlx5_esw_fdb_drop_create(struct mlx5_eswitch * esw) mlx5_esw_fdb_drop_create() argument 2516 mlx5_esw_fdb_active(struct mlx5_eswitch * esw) mlx5_esw_fdb_active() argument 2536 mlx5_esw_fdb_inactive(struct mlx5_eswitch * esw) mlx5_esw_fdb_inactive() argument 2557 esw_offloads_start(struct mlx5_eswitch * esw,struct netlink_ext_ack * extack) esw_offloads_start() argument 2581 mlx5_esw_offloads_rep_remove(struct mlx5_eswitch * esw,const struct mlx5_vport * vport) mlx5_esw_offloads_rep_remove() argument 2593 mlx5_esw_offloads_rep_add(struct mlx5_eswitch * esw,const struct mlx5_vport * vport) mlx5_esw_offloads_rep_add() argument 2630 mlx5_esw_offloads_rep_cleanup(struct mlx5_eswitch * esw,struct mlx5_eswitch_rep * rep) mlx5_esw_offloads_rep_cleanup() argument 2637 esw_offloads_cleanup_reps(struct mlx5_eswitch * esw) esw_offloads_cleanup_reps() argument 2647 esw_offloads_init_reps(struct mlx5_eswitch * esw) esw_offloads_init_reps() argument 2672 struct mlx5_eswitch *esw = dev->priv.eswitch; esw_port_metadata_set() local 2728 esw_offloads_init(struct mlx5_eswitch * esw) esw_offloads_init() argument 2753 esw_offloads_cleanup(struct mlx5_eswitch * esw) esw_offloads_cleanup() argument 2761 __esw_offloads_load_rep(struct mlx5_eswitch * esw,struct mlx5_eswitch_rep * rep,u8 rep_type) __esw_offloads_load_rep() argument 2771 __esw_offloads_unload_rep(struct mlx5_eswitch * esw,struct mlx5_eswitch_rep * rep,u8 rep_type) __esw_offloads_unload_rep() argument 2782 __unload_reps_all_vport(struct mlx5_eswitch * esw,u8 rep_type) __unload_reps_all_vport() argument 2791 mlx5_esw_offloads_rep_load(struct mlx5_eswitch * esw,u16 vport_num) mlx5_esw_offloads_rep_load() argument 2813 mlx5_esw_offloads_rep_unload(struct mlx5_eswitch * esw,u16 vport_num) mlx5_esw_offloads_rep_unload() argument 2823 mlx5_esw_offloads_init_pf_vf_rep(struct mlx5_eswitch * esw,struct mlx5_vport * vport) mlx5_esw_offloads_init_pf_vf_rep() argument 2831 mlx5_esw_offloads_cleanup_pf_vf_rep(struct mlx5_eswitch * esw,struct mlx5_vport * vport) mlx5_esw_offloads_cleanup_pf_vf_rep() argument 2839 mlx5_esw_offloads_init_sf_rep(struct mlx5_eswitch * esw,struct mlx5_vport * vport,struct mlx5_devlink_port * dl_port,u32 controller,u32 sfnum) mlx5_esw_offloads_init_sf_rep() argument 2846 mlx5_esw_offloads_cleanup_sf_rep(struct mlx5_eswitch * esw,struct mlx5_vport * vport) mlx5_esw_offloads_cleanup_sf_rep() argument 2851 mlx5_esw_offloads_load_rep(struct mlx5_eswitch * esw,struct mlx5_vport * vport) mlx5_esw_offloads_load_rep() argument 2872 mlx5_esw_offloads_unload_rep(struct mlx5_eswitch * esw,struct mlx5_vport * vport) mlx5_esw_offloads_unload_rep() argument 2972 esw_master_egress_create_resources(struct mlx5_eswitch * esw,struct mlx5_flow_namespace * egress_ns,struct mlx5_vport * vport,size_t count) esw_master_egress_create_resources() argument 3051 struct mlx5_eswitch *esw = master->priv.eswitch; esw_set_master_egress_rule() local 3136 mlx5_esw_offloads_rep_event_unpair(struct mlx5_eswitch * esw,struct mlx5_eswitch * peer_esw) mlx5_esw_offloads_rep_event_unpair() argument 3155 mlx5_esw_offloads_unpair(struct mlx5_eswitch * esw,struct mlx5_eswitch * peer_esw) mlx5_esw_offloads_unpair() argument 3165 mlx5_esw_offloads_pair(struct mlx5_eswitch * esw,struct mlx5_eswitch * peer_esw) mlx5_esw_offloads_pair() argument 3197 mlx5_esw_offloads_set_ns_peer(struct mlx5_eswitch * esw,struct mlx5_eswitch * peer_esw,bool pair) mlx5_esw_offloads_set_ns_peer() argument 3232 struct mlx5_eswitch *esw = my_data; mlx5_esw_offloads_devcom_event() local 3308 mlx5_esw_offloads_devcom_init(struct mlx5_eswitch * esw,const struct mlx5_devcom_match_attr * attr) mlx5_esw_offloads_devcom_init() argument 3341 mlx5_esw_offloads_devcom_cleanup(struct mlx5_eswitch * esw) mlx5_esw_offloads_devcom_cleanup() argument 3357 mlx5_esw_offloads_devcom_is_ready(struct mlx5_eswitch * esw) mlx5_esw_offloads_devcom_is_ready() argument 3362 mlx5_esw_vport_match_metadata_supported(const struct mlx5_eswitch * esw) mlx5_esw_vport_match_metadata_supported() argument 3382 mlx5_esw_match_metadata_reserved(struct mlx5_eswitch * esw) mlx5_esw_match_metadata_reserved() argument 3387 mlx5_esw_match_metadata_alloc(struct mlx5_eswitch * esw) mlx5_esw_match_metadata_alloc() argument 3411 mlx5_esw_match_metadata_free(struct mlx5_eswitch * esw,u32 metadata) mlx5_esw_match_metadata_free() argument 3419 esw_offloads_vport_metadata_setup(struct mlx5_eswitch * esw,struct mlx5_vport * vport) esw_offloads_vport_metadata_setup() argument 3431 esw_offloads_vport_metadata_cleanup(struct mlx5_eswitch * esw,struct mlx5_vport * vport) esw_offloads_vport_metadata_cleanup() argument 3444 esw_offloads_metadata_uninit(struct mlx5_eswitch * esw) esw_offloads_metadata_uninit() argument 3456 esw_offloads_metadata_init(struct mlx5_eswitch * esw) esw_offloads_metadata_init() argument 3479 esw_vport_create_offloads_acl_tables(struct mlx5_eswitch * esw,struct mlx5_vport * vport) esw_vport_create_offloads_acl_tables() argument 3500 esw_vport_destroy_offloads_acl_tables(struct mlx5_eswitch * esw,struct mlx5_vport * vport) esw_vport_destroy_offloads_acl_tables() argument 3507 esw_create_offloads_acl_tables(struct mlx5_eswitch * esw) esw_create_offloads_acl_tables() argument 3537 esw_destroy_offloads_acl_tables(struct mlx5_eswitch * esw) esw_destroy_offloads_acl_tables() argument 3550 mlx5_eswitch_reload_ib_reps(struct mlx5_eswitch * esw) mlx5_eswitch_reload_ib_reps() argument 3575 esw_offloads_steering_init(struct mlx5_eswitch * esw) esw_offloads_steering_init() argument 3641 esw_offloads_steering_cleanup(struct mlx5_eswitch * esw) esw_offloads_steering_cleanup() argument 3659 esw_vfs_changed_event_handler(struct mlx5_eswitch * esw,int work_gen,const u32 * out) esw_vfs_changed_event_handler() argument 3702 struct mlx5_eswitch *esw; esw_functions_changed_event_handler() local 3722 struct mlx5_eswitch *esw; mlx5_esw_funcs_changed_handler() local 3740 mlx5_esw_host_number_init(struct mlx5_eswitch * esw) mlx5_esw_host_number_init() argument 3758 mlx5_esw_offloads_controller_valid(const struct mlx5_eswitch * esw,u32 controller) mlx5_esw_offloads_controller_valid() argument 3771 esw_offloads_enable(struct mlx5_eswitch * esw) esw_offloads_enable() argument 3860 esw_offloads_stop(struct mlx5_eswitch * esw,struct netlink_ext_ack * extack) esw_offloads_stop() argument 3880 esw_offloads_disable(struct mlx5_eswitch * esw) esw_offloads_disable() argument 3913 esw_mode_to_devlink(struct mlx5_eswitch * esw,u16 * mode) esw_mode_to_devlink() argument 3978 struct mlx5_eswitch *esw = dev->priv.eswitch; mlx5_eswitch_block_mode() local 3996 struct mlx5_eswitch *esw = dev->priv.eswitch; mlx5_eswitch_unblock_mode() local 4030 mlx5_devlink_switchdev_active_mode_change(struct mlx5_eswitch * esw,u16 devlink_mode) mlx5_devlink_switchdev_active_mode_change() argument 4098 struct mlx5_eswitch *esw; mlx5_devlink_eswitch_mode_set() local 4188 struct mlx5_eswitch *esw; mlx5_devlink_eswitch_mode_get() local 4197 mlx5_esw_vports_inline_set(struct mlx5_eswitch * esw,u8 mlx5_mode,struct netlink_ext_ack * extack) mlx5_esw_vports_inline_set() argument 4251 struct mlx5_eswitch *esw; mlx5_devlink_eswitch_inline_mode_set() local 4307 struct mlx5_eswitch *esw; mlx5_devlink_eswitch_inline_mode_get() local 4318 struct mlx5_eswitch *esw = dev->priv.eswitch; mlx5_eswitch_block_encap() local 4339 struct mlx5_eswitch *esw = dev->priv.eswitch; mlx5_eswitch_unblock_encap() local 4354 struct mlx5_eswitch *esw; mlx5_devlink_eswitch_encap_mode_set() local 4424 struct mlx5_eswitch *esw; mlx5_devlink_eswitch_encap_mode_get() local 4435 mlx5_eswitch_vport_has_rep(const struct mlx5_eswitch * esw,u16 vport_num) mlx5_eswitch_vport_has_rep() argument 4450 mlx5_eswitch_register_vport_reps(struct mlx5_eswitch * esw,const struct mlx5_eswitch_rep_ops * ops,u8 rep_type) mlx5_eswitch_register_vport_reps() argument 4469 mlx5_eswitch_unregister_vport_reps(struct mlx5_eswitch * esw,u8 rep_type) mlx5_eswitch_unregister_vport_reps() argument 4482 mlx5_eswitch_get_uplink_priv(struct mlx5_eswitch * esw,u8 rep_type) mlx5_eswitch_get_uplink_priv() argument 4490 mlx5_eswitch_get_proto_dev(struct mlx5_eswitch * esw,u16 vport,u8 rep_type) mlx5_eswitch_get_proto_dev() argument 4505 mlx5_eswitch_uplink_get_proto_dev(struct mlx5_eswitch * esw,u8 rep_type) mlx5_eswitch_uplink_get_proto_dev() argument 4511 mlx5_eswitch_vport_rep(struct mlx5_eswitch * esw,u16 vport) mlx5_eswitch_vport_rep() argument 4518 mlx5_eswitch_reg_c1_loopback_enabled(const struct mlx5_eswitch * esw) mlx5_eswitch_reg_c1_loopback_enabled() argument 4524 mlx5_eswitch_vport_match_metadata_enabled(const struct mlx5_eswitch * esw) mlx5_eswitch_vport_match_metadata_enabled() argument 4530 mlx5_eswitch_get_vport_metadata_for_match(struct mlx5_eswitch * esw,u16 vport_num) mlx5_eswitch_get_vport_metadata_for_match() argument 4542 mlx5_esw_vport_vhca_id_map(struct mlx5_eswitch * esw,struct mlx5_vport * vport) mlx5_esw_vport_vhca_id_map() argument 4573 mlx5_esw_vport_vhca_id_unmap(struct mlx5_eswitch * esw,struct mlx5_vport * vport) mlx5_esw_vport_vhca_id_unmap() argument 4582 mlx5_eswitch_vhca_id_to_vport(struct mlx5_eswitch * esw,u16 vhca_id,u16 * vport_num) mlx5_eswitch_vhca_id_to_vport() argument 4593 mlx5_eswitch_get_vport_metadata_for_set(struct mlx5_eswitch * esw,u16 vport_num) mlx5_eswitch_get_vport_metadata_for_set() argument 4609 struct mlx5_eswitch *esw = mlx5_devlink_eswitch_nocheck_get(port->devlink); mlx5_devlink_port_fn_hw_addr_get() local 4626 struct mlx5_eswitch *esw = mlx5_devlink_eswitch_nocheck_get(port->devlink); mlx5_devlink_port_fn_hw_addr_set() local 4635 struct mlx5_eswitch *esw = mlx5_devlink_eswitch_nocheck_get(port->devlink); mlx5_devlink_port_fn_migratable_get() local 4657 struct mlx5_eswitch *esw = mlx5_devlink_eswitch_nocheck_get(port->devlink); mlx5_devlink_port_fn_migratable_set() local 4716 struct mlx5_eswitch *esw = mlx5_devlink_eswitch_nocheck_get(port->devlink); mlx5_devlink_port_fn_roce_get() local 4733 struct mlx5_eswitch *esw = mlx5_devlink_eswitch_nocheck_get(port->devlink); mlx5_devlink_port_fn_roce_set() local 4841 mlx5_eswitch_restore_ipsec_rule(struct mlx5_eswitch * esw,struct mlx5_flow_handle * rule,struct mlx5_esw_flow_attr * esw_attr,int attr_idx) mlx5_eswitch_restore_ipsec_rule() argument 4860 struct mlx5_eswitch *esw; mlx5_devlink_port_fn_ipsec_crypto_get() local 4890 struct mlx5_eswitch *esw; mlx5_devlink_port_fn_ipsec_crypto_set() local 4943 struct mlx5_eswitch *esw; mlx5_devlink_port_fn_ipsec_packet_get() local 4974 struct mlx5_eswitch *esw; mlx5_devlink_port_fn_ipsec_packet_set() local 5032 struct mlx5_eswitch *esw; mlx5_devlink_port_fn_max_io_eqs_get() local 5082 struct mlx5_eswitch *esw; mlx5_devlink_port_fn_max_io_eqs_set() local [all...] |
| H A D | eswitch.h | 96 #define esw_chains(esw) \ 97 ((esw)->fdb_table.offloads.esw_chains_priv) 348 struct mlx5_eswitch *esw; 350 void (*func)(struct mlx5_eswitch *esw); 441 void esw_offloads_disable(struct mlx5_eswitch *esw); 442 int esw_offloads_enable(struct mlx5_eswitch *esw); 443 int mlx5_esw_offloads_init_deferred_metadata(struct mlx5_eswitch *esw); 444 void esw_offloads_cleanup(struct mlx5_eswitch *esw); 445 int esw_offloads_init(struct mlx5_eswitch *esw); 448 mlx5_eswitch_add_send_to_vport_meta_rule(struct mlx5_eswitch *esw, u1 86 esw_chains(esw) global() argument 338 struct mlx5_eswitch *esw; global() member 625 esw_vst_mode_is_steering(struct mlx5_eswitch * esw) esw_vst_mode_is_steering() argument 667 mlx5_esw_allowed(const struct mlx5_eswitch * esw) mlx5_esw_allowed() argument 673 mlx5_esw_is_manager_vport(const struct mlx5_eswitch * esw,u16 vport_num) mlx5_esw_is_manager_vport() argument 678 mlx5_esw_is_owner(struct mlx5_eswitch * esw,u16 vport_num,u16 esw_owner_vhca_id) mlx5_esw_is_owner() argument 709 mlx5_esw_is_fdb_created(struct mlx5_eswitch * esw) mlx5_esw_is_fdb_created() argument 731 mlx5_esw_for_each_vport(esw,index,vport) global() argument 738 mlx5_esw_for_each_vport_marked(esw,index,vport,last,filter) global() argument 741 mlx5_esw_for_each_vf_vport(esw,index,vport,last) global() argument 744 mlx5_esw_for_each_host_func_vport(esw,index,vport,last) global() argument 752 mlx5_esw_for_each_ec_vf_vport(esw,index,vport,last) global() argument 760 mlx5_esw_for_each_rep(esw,i,rep) global() argument 908 mlx5_eswitch_num_vfs(struct mlx5_eswitch * esw) mlx5_eswitch_num_vfs() argument 916 mlx5_eswitch_get_npeers(struct mlx5_eswitch * esw) mlx5_eswitch_get_npeers() argument 924 mlx5_eswitch_get_slow_fdb(struct mlx5_eswitch * esw) mlx5_eswitch_get_slow_fdb() argument 955 mlx5_eswitch_cleanup(struct mlx5_eswitch * esw) mlx5_eswitch_cleanup() argument 956 mlx5_eswitch_enable(struct mlx5_eswitch * esw,int num_vfs) mlx5_eswitch_enable() argument 957 mlx5_eswitch_disable_sriov(struct mlx5_eswitch * esw,bool clear_vf) mlx5_eswitch_disable_sriov() argument 958 mlx5_eswitch_disable(struct mlx5_eswitch * esw) mlx5_eswitch_disable() argument 960 mlx5_esw_offloads_devcom_init(struct mlx5_eswitch * esw,const struct mlx5_devcom_match_attr * attr) mlx5_esw_offloads_devcom_init() argument 962 mlx5_esw_offloads_devcom_cleanup(struct mlx5_eswitch * esw) mlx5_esw_offloads_devcom_cleanup() argument 963 mlx5_esw_offloads_devcom_is_ready(struct mlx5_eswitch * esw) mlx5_esw_offloads_devcom_is_ready() argument 966 mlx5_eswitch_set_vport_state(struct mlx5_eswitch * esw,u16 vport,int link_state) mlx5_eswitch_set_vport_state() argument 973 esw_add_restore_rule(struct mlx5_eswitch * esw,u32 tag) esw_add_restore_rule() argument 996 mlx5_eswitch_get_npeers(struct mlx5_eswitch * esw) mlx5_eswitch_get_npeers() argument 999 mlx5_eswitch_reload_ib_reps(struct mlx5_eswitch * esw) mlx5_eswitch_reload_ib_reps() argument 1030 mlx5_esw_vport_vhca_id(struct mlx5_eswitch * esw,u16 vportn,u16 * vhca_id) mlx5_esw_vport_vhca_id() argument 1038 mlx5_esw_lag_demux_rule_create(struct mlx5_eswitch * esw,u16 vport_num,struct mlx5_flow_table * lag_ft) mlx5_esw_lag_demux_rule_create() argument [all...] |
| H A D | eswitch_offloads_termtbl.c | 112 mlx5_eswitch_termtbl_get_create(struct mlx5_eswitch *esw, in mlx5_eswitch_termtbl_get_create() argument 122 mutex_lock(&esw->offloads.termtbl_mutex); in mlx5_eswitch_termtbl_get_create() 124 hash_for_each_possible(esw->offloads.termtbl_tbl, tt, in mlx5_eswitch_termtbl_get_create() 147 err = mlx5_eswitch_termtbl_create(esw->dev, tt, flow_act); in mlx5_eswitch_termtbl_get_create() 151 hash_add(esw->offloads.termtbl_tbl, &tt->termtbl_hlist, hash_key); in mlx5_eswitch_termtbl_get_create() 154 mutex_unlock(&esw->offloads.termtbl_mutex); in mlx5_eswitch_termtbl_get_create() 158 mutex_unlock(&esw->offloads.termtbl_mutex); in mlx5_eswitch_termtbl_get_create() 163 mlx5_eswitch_termtbl_put(struct mlx5_eswitch *esw, in mlx5_eswitch_termtbl_put() argument 166 mutex_lock(&esw->offloads.termtbl_mutex); in mlx5_eswitch_termtbl_put() 169 mutex_unlock(&esw->offloads.termtbl_mutex); in mlx5_eswitch_termtbl_put() [all …]
|
| /linux/drivers/net/ethernet/mellanox/mlx5/core/esw/ |
| H A D | legacy.c | 9 #include "esw/acl/lgcy.h" 10 #include "esw/legacy.h" 15 #include "esw/qos.h" 22 static int esw_create_legacy_vepa_table(struct mlx5_eswitch *esw) in esw_create_legacy_vepa_table() argument 25 struct mlx5_core_dev *dev = esw->dev; in esw_create_legacy_vepa_table() 46 esw->fdb_table.legacy.vepa_fdb = fdb; in esw_create_legacy_vepa_table() 51 static void esw_destroy_legacy_fdb_table(struct mlx5_eswitch *esw) in esw_destroy_legacy_fdb_table() argument 53 esw_debug(esw->dev, "Destroy FDB Table\n"); in esw_destroy_legacy_fdb_table() 54 if (!esw->fdb_table.legacy.fdb) in esw_destroy_legacy_fdb_table() 57 if (esw->fdb_table.legacy.promisc_grp) in esw_destroy_legacy_fdb_table() [all …]
|
| H A D | qos.c | 6 #include "esw/qos.h" 22 static void esw_qos_lock(struct mlx5_eswitch *esw) in esw_qos_lock() argument 24 mutex_lock(&esw->qos.domain->lock); in esw_qos_lock() 27 static void esw_qos_unlock(struct mlx5_eswitch *esw) in esw_qos_unlock() argument 29 mutex_unlock(&esw->qos.domain->lock); in esw_qos_unlock() 32 static void esw_assert_qos_lock_held(struct mlx5_eswitch *esw) in esw_assert_qos_lock_held() argument 34 lockdep_assert_held(&esw->qos.domain->lock); in esw_assert_qos_lock_held() 51 static int esw_qos_domain_init(struct mlx5_eswitch *esw) in esw_qos_domain_init() argument 53 esw->qos.domain = esw_qos_domain_alloc(); in esw_qos_domain_init() 55 return esw->qos.domain ? 0 : -ENOMEM; in esw_qos_domain_init() [all …]
|
| H A D | vporttbl.c | 25 esw_vport_tbl_init(struct mlx5_eswitch *esw, struct esw_vport_tbl_namespace *ns) in esw_vport_tbl_init() argument 27 if (esw->offloads.encap != DEVLINK_ESWITCH_ENCAP_MODE_NONE) in esw_vport_tbl_init() 33 esw_vport_tbl_create(struct mlx5_eswitch *esw, struct mlx5_flow_namespace *ns, in esw_vport_tbl_create() argument 42 ft_attr.autogroup.max_num_groups = esw->params.large_group_num; in esw_vport_tbl_create() 48 esw_warn(esw->dev, "Failed to create per vport FDB Table err %pe\n", in esw_vport_tbl_create() 55 static u32 flow_attr_to_vport_key(struct mlx5_eswitch *esw, in flow_attr_to_vport_key() argument 62 key->vhca_id = MLX5_CAP_GEN(esw->dev, vhca_id); in flow_attr_to_vport_key() 69 esw_vport_tbl_lookup(struct mlx5_eswitch *esw, struct mlx5_vport_key *skey, u32 key) in esw_vport_tbl_lookup() argument 73 hash_for_each_possible(esw->fdb_table.offloads.vports.table, e, hlist, key) in esw_vport_tbl_lookup() 81 mlx5_esw_vporttbl_get(struct mlx5_eswitch *esw, struct mlx5_vport_tbl_attr *attr) in mlx5_esw_vporttbl_get() argument [all …]
|
| H A D | bridge.c | 44 static bool mlx5_esw_bridge_pkt_reformat_vlan_pop_supported(struct mlx5_eswitch *esw) in mlx5_esw_bridge_pkt_reformat_vlan_pop_supported() argument 46 return BIT(MLX5_CAP_ESW_FLOWTABLE_FDB(esw->dev, reformat_remove)) && in mlx5_esw_bridge_pkt_reformat_vlan_pop_supported() 47 MLX5_CAP_GEN_2(esw->dev, max_reformat_remove_size) >= sizeof(struct vlan_hdr) && in mlx5_esw_bridge_pkt_reformat_vlan_pop_supported() 48 MLX5_CAP_GEN_2(esw->dev, max_reformat_remove_offset) >= in mlx5_esw_bridge_pkt_reformat_vlan_pop_supported() 53 mlx5_esw_bridge_pkt_reformat_vlan_pop_create(struct mlx5_eswitch *esw) in mlx5_esw_bridge_pkt_reformat_vlan_pop_create() argument 61 return mlx5_packet_reformat_alloc(esw->dev, &reformat_params, MLX5_FLOW_NAMESPACE_FDB); in mlx5_esw_bridge_pkt_reformat_vlan_pop_create() 65 mlx5_esw_bridge_table_create(int max_fte, u32 level, struct mlx5_eswitch *esw) in mlx5_esw_bridge_table_create() argument 68 struct mlx5_core_dev *dev = esw->dev; in mlx5_esw_bridge_table_create() 92 struct mlx5_eswitch *esw, in mlx5_esw_bridge_ingress_vlan_proto_fg_create() argument 124 esw_warn(esw->dev, in mlx5_esw_bridge_ingress_vlan_proto_fg_create() [all …]
|
| H A D | indir_table.c | 15 #include "esw/indir_table.h" 67 mlx5_esw_indir_table_needed(struct mlx5_eswitch *esw, in mlx5_esw_indir_table_needed() argument 75 vf_sf_vport = mlx5_eswitch_is_vf_vport(esw, vport_num) || in mlx5_esw_indir_table_needed() 76 mlx5_esw_is_sf_vport(esw, vport_num); in mlx5_esw_indir_table_needed() 83 esw->dev == dest_mdev && in mlx5_esw_indir_table_needed() 95 static int mlx5_esw_indir_table_rule_get(struct mlx5_eswitch *esw, in mlx5_esw_indir_table_rule_get() argument 100 struct mlx5_fs_chains *chains = esw_chains(esw); in mlx5_esw_indir_table_rule_get() 119 data = mlx5_eswitch_get_vport_metadata_for_set(esw, esw_attr->rx_tun_attr->decap_vport); in mlx5_esw_indir_table_rule_get() 120 err = mlx5e_tc_match_to_reg_set(esw->dev, &mod_acts, MLX5_FLOW_NAMESPACE_FDB, in mlx5_esw_indir_table_rule_get() 125 err = mlx5e_tc_match_to_reg_set(esw->dev, &mod_acts, MLX5_FLOW_NAMESPACE_FDB, in mlx5_esw_indir_table_rule_get() [all …]
|
| H A D | bridge_mcast.c | 200 …esw_warn(bridge->br_offloads->esw->dev, "MDB attach entry is already attached to port (MAC=%pM,vid… in mlx5_esw_bridge_port_mdb_attach() 208 …esw_warn(bridge->br_offloads->esw->dev, "MDB attach failed to init entry (MAC=%pM,vid=%u,vport=%u,… in mlx5_esw_bridge_port_mdb_attach() 218 esw_warn(bridge->br_offloads->esw->dev, in mlx5_esw_bridge_port_mdb_attach() 229 …esw_warn(bridge->br_offloads->esw->dev, "MDB attach failed to offload (MAC=%pM,vid=%u,vport=%u,err… in mlx5_esw_bridge_port_mdb_attach() 253 …esw_warn(bridge->br_offloads->esw->dev, "MDB detach failed to offload (MAC=%pM,vid=%u,vport=%u)\n", in mlx5_esw_bridge_port_mdb_entry_detach() 265 esw_debug(bridge->br_offloads->esw->dev, in mlx5_esw_bridge_port_mdb_detach() 272 esw_debug(bridge->br_offloads->esw->dev, in mlx5_esw_bridge_port_mdb_detach() 313 struct mlx5_eswitch *esw = bridge->br_offloads->esw; in mlx5_esw_bridge_port_mcast_fts_init() local 318 esw); in mlx5_esw_bridge_port_mcast_fts_init() 334 mlx5_esw_bridge_mcast_filter_fg_create(struct mlx5_eswitch *esw, in mlx5_esw_bridge_mcast_filter_fg_create() argument [all …]
|
| H A D | indir_table.h | 14 struct mlx5_flow_table *mlx5_esw_indir_table_get(struct mlx5_eswitch *esw, 17 void mlx5_esw_indir_table_put(struct mlx5_eswitch *esw, 21 mlx5_esw_indir_table_needed(struct mlx5_eswitch *esw, 43 mlx5_esw_indir_table_get(struct mlx5_eswitch *esw, in mlx5_esw_indir_table_get() argument 51 mlx5_esw_indir_table_put(struct mlx5_eswitch *esw, in mlx5_esw_indir_table_put() argument 57 mlx5_esw_indir_table_needed(struct mlx5_eswitch *esw, in mlx5_esw_indir_table_needed() argument
|
| H A D | legacy.h | 13 int esw_legacy_enable(struct mlx5_eswitch *esw); 14 void esw_legacy_disable(struct mlx5_eswitch *esw); 16 int esw_legacy_vport_acl_setup(struct mlx5_eswitch *esw, struct mlx5_vport *vport); 17 void esw_legacy_vport_acl_cleanup(struct mlx5_eswitch *esw, struct mlx5_vport *vport);
|
| /linux/drivers/net/ethernet/mellanox/mlx5/core/esw/acl/ |
| H A D | ingress_ofld.c | 10 acl_ingress_ofld_setup(struct mlx5_eswitch *esw, struct mlx5_vport *vport); 13 esw_acl_ingress_prio_tag_enabled(struct mlx5_eswitch *esw, in esw_acl_ingress_prio_tag_enabled() argument 16 return (MLX5_CAP_GEN(esw->dev, prio_tag_required) && in esw_acl_ingress_prio_tag_enabled() 17 mlx5_eswitch_is_vf_vport(esw, vport->vport)); in esw_acl_ingress_prio_tag_enabled() 20 static int esw_acl_ingress_prio_tag_create(struct mlx5_eswitch *esw, in esw_acl_ingress_prio_tag_create() argument 55 esw_warn(esw->dev, in esw_acl_ingress_prio_tag_create() 65 static int esw_acl_ingress_mod_metadata_create(struct mlx5_eswitch *esw, in esw_acl_ingress_mod_metadata_create() argument 73 key = mlx5_eswitch_get_vport_metadata_for_match(esw, vport->vport); in esw_acl_ingress_mod_metadata_create() 86 mlx5_modify_header_alloc(esw->dev, MLX5_FLOW_NAMESPACE_ESW_INGRESS, in esw_acl_ingress_mod_metadata_create() 90 esw_warn(esw->dev, in esw_acl_ingress_mod_metadata_create() [all …]
|
| H A D | egress_ofld.c | 41 static int esw_acl_egress_ofld_fwd2vport_create(struct mlx5_eswitch *esw, in esw_acl_egress_ofld_fwd2vport_create() argument 48 esw_debug(esw->dev, "vport(%d) configure egress acl rule fwd2vport(%d)\n", in esw_acl_egress_ofld_fwd2vport_create() 61 esw_warn(esw->dev, in esw_acl_egress_ofld_fwd2vport_create() 70 static int esw_acl_egress_ofld_rules_create(struct mlx5_eswitch *esw, in esw_acl_egress_ofld_rules_create() argument 77 if (MLX5_CAP_GEN(esw->dev, prio_tag_required)) { in esw_acl_egress_ofld_rules_create() 82 esw_debug(esw->dev, in esw_acl_egress_ofld_rules_create() 90 err = esw_egress_acl_vlan_create(esw, vport, fwd_dest, 0, action); in esw_acl_egress_ofld_rules_create() 96 err = esw_acl_egress_ofld_fwd2vport_create(esw, vport, fwd_dest); in esw_acl_egress_ofld_rules_create() 116 static int esw_acl_egress_ofld_groups_create(struct mlx5_eswitch *esw, in esw_acl_egress_ofld_groups_create() argument 125 if (MLX5_CAP_GEN(esw->dev, prio_tag_required)) { in esw_acl_egress_ofld_groups_create() [all …]
|
| H A D | ofld.h | 11 int esw_acl_egress_ofld_setup(struct mlx5_eswitch *esw, struct mlx5_vport *vport); 14 int mlx5_esw_acl_egress_vport_bond(struct mlx5_eswitch *esw, u16 active_vport_num, 16 int mlx5_esw_acl_egress_vport_unbond(struct mlx5_eswitch *esw, u16 vport_num); 18 static inline bool mlx5_esw_acl_egress_fwd2vport_supported(struct mlx5_eswitch *esw) in mlx5_esw_acl_egress_fwd2vport_supported() argument 20 return esw && esw->mode == MLX5_ESWITCH_OFFLOADS && in mlx5_esw_acl_egress_fwd2vport_supported() 21 mlx5_eswitch_vport_match_metadata_enabled(esw) && in mlx5_esw_acl_egress_fwd2vport_supported() 22 MLX5_CAP_ESW_FLOWTABLE(esw->dev, egress_acl_forward_to_vport); in mlx5_esw_acl_egress_fwd2vport_supported() 26 int esw_acl_ingress_ofld_setup(struct mlx5_eswitch *esw, struct mlx5_vport *vport); 27 void esw_acl_ingress_ofld_cleanup(struct mlx5_eswitch *esw, struct mlx5_vport *vport); 28 int mlx5_esw_acl_ingress_vport_metadata_update(struct mlx5_eswitch *esw, u16 vport_num, [all …]
|
| H A D | ingress_lgcy.c | 18 static int esw_acl_ingress_lgcy_groups_create(struct mlx5_eswitch *esw, in esw_acl_ingress_lgcy_groups_create() argument 22 struct mlx5_core_dev *dev = esw->dev; in esw_acl_ingress_lgcy_groups_create() 139 int esw_acl_ingress_lgcy_setup(struct mlx5_eswitch *esw, in esw_acl_ingress_lgcy_setup() argument 142 bool vst_mode_steering = esw_vst_mode_is_steering(esw); in esw_acl_ingress_lgcy_setup() 168 } else if (MLX5_CAP_ESW_INGRESS_ACL(esw->dev, flow_counter)) { in esw_acl_ingress_lgcy_setup() 169 counter = mlx5_fc_create(esw->dev, false); in esw_acl_ingress_lgcy_setup() 171 esw_warn(esw->dev, in esw_acl_ingress_lgcy_setup() 180 esw_acl_ingress_lgcy_cleanup(esw, vport); in esw_acl_ingress_lgcy_setup() 185 vport->ingress.acl = esw_acl_table_create(esw, vport, in esw_acl_ingress_lgcy_setup() 194 err = esw_acl_ingress_lgcy_groups_create(esw, vport); in esw_acl_ingress_lgcy_setup() [all …]
|
| H A D | helper.c | 9 esw_acl_table_create(struct mlx5_eswitch *esw, struct mlx5_vport *vport, int ns, int size) in esw_acl_table_create() argument 12 struct mlx5_core_dev *dev = esw->dev; in esw_acl_table_create() 38 if (vport_num || mlx5_core_is_ecpf(esw->dev)) in esw_acl_table_create() 49 int esw_egress_acl_vlan_create(struct mlx5_eswitch *esw, in esw_egress_acl_vlan_create() argument 77 esw_warn(esw->dev, in esw_egress_acl_vlan_create() 95 int esw_acl_egress_vlan_grp_create(struct mlx5_eswitch *esw, struct mlx5_vport *vport) in esw_acl_egress_vlan_grp_create() argument 119 esw_warn(esw->dev, in esw_acl_egress_vlan_grp_create()
|
| H A D | lgcy.h | 10 int esw_acl_egress_lgcy_setup(struct mlx5_eswitch *esw, struct mlx5_vport *vport); 11 void esw_acl_egress_lgcy_cleanup(struct mlx5_eswitch *esw, struct mlx5_vport *vport); 14 int esw_acl_ingress_lgcy_setup(struct mlx5_eswitch *esw, struct mlx5_vport *vport); 15 void esw_acl_ingress_lgcy_cleanup(struct mlx5_eswitch *esw, struct mlx5_vport *vport);
|
| /linux/drivers/net/ethernet/mellanox/mlx5/core/en/rep/ |
| H A D | bridge.c | 9 #include "esw/bridge.h" 22 static bool mlx5_esw_bridge_dev_same_esw(struct net_device *dev, struct mlx5_eswitch *esw) in mlx5_esw_bridge_dev_same_esw() argument 26 return esw == priv->mdev->priv.eswitch; in mlx5_esw_bridge_dev_same_esw() 29 static bool mlx5_esw_bridge_dev_same_hw(struct net_device *dev, struct mlx5_eswitch *esw) in mlx5_esw_bridge_dev_same_hw() argument 35 esw_mdev = esw->dev; in mlx5_esw_bridge_dev_same_hw() 41 mlx5_esw_bridge_lag_rep_get(struct net_device *dev, struct mlx5_eswitch *esw) in mlx5_esw_bridge_lag_rep_get() argument 50 if (mlx5_esw_bridge_dev_same_esw(lower, esw)) in mlx5_esw_bridge_lag_rep_get() 58 mlx5_esw_bridge_rep_vport_num_vhca_id_get(struct net_device *dev, struct mlx5_eswitch *esw, in mlx5_esw_bridge_rep_vport_num_vhca_id_get() argument 65 dev = mlx5_esw_bridge_lag_rep_get(dev, esw); in mlx5_esw_bridge_rep_vport_num_vhca_id_get() 67 if (!dev || !mlx5e_eswitch_rep(dev) || !mlx5_esw_bridge_dev_same_hw(dev, esw)) in mlx5_esw_bridge_rep_vport_num_vhca_id_get() [all …]
|
| H A D | tc.c | 95 struct mlx5_eswitch *esw = priv->mdev->priv.eswitch; in mlx5e_rep_update_flows() local 101 mutex_lock(&esw->offloads.encap_tbl_lock); in mlx5e_rep_update_flows() 127 mutex_unlock(&esw->offloads.encap_tbl_lock); in mlx5e_rep_update_flows() 205 struct mlx5_eswitch *esw; in mlx5e_rep_setup_ft_cb() local 212 esw = priv->mdev->priv.eswitch; in mlx5e_rep_setup_ft_cb() 218 if (!mlx5_chains_prios_supported(esw_chains(esw))) in mlx5e_rep_setup_ft_cb() 225 * it to range [1, mlx5_esw_chains_get_prio_range(esw)] in mlx5e_rep_setup_ft_cb() 230 if (tmp.common.prio >= mlx5_chains_get_prio_range(esw_chains(esw))) in mlx5e_rep_setup_ft_cb() 235 tmp.common.chain_index = mlx5_chains_get_nf_ft_chain(esw_chains(esw)); in mlx5e_rep_setup_ft_cb() 387 struct mlx5_eswitch *esw; in mlx5e_rep_indr_setup_ft_cb() local [all …]
|
| H A D | bond.c | 10 #include "esw/acl/ofld.h" 26 struct mlx5_eswitch *esw; member 74 mlx5_esw_match_metadata_free(mdata->esw, mdata->metadata_reg_c_0); in mlx5e_rep_bond_metadata_release() 80 int mlx5e_rep_bond_enslave(struct mlx5_eswitch *esw, struct net_device *netdev, in mlx5e_rep_bond_enslave() argument 91 rpriv = mlx5_eswitch_get_uplink_priv(esw, REP_ETH); in mlx5e_rep_bond_enslave() 100 mdata->esw = esw; in mlx5e_rep_bond_enslave() 102 mdata->metadata_reg_c_0 = mlx5_esw_match_metadata_alloc(esw); in mlx5e_rep_bond_enslave() 123 err = mlx5_esw_acl_ingress_vport_metadata_update(esw, rpriv->rep->vport, in mlx5e_rep_bond_enslave() 144 void mlx5e_rep_bond_unslave(struct mlx5_eswitch *esw, in mlx5e_rep_bond_unslave() argument 155 rpriv = mlx5_eswitch_get_uplink_priv(esw, REP_ETH); in mlx5e_rep_bond_unslave() [all …]
|
| /linux/include/linux/mlx5/ |
| H A D | eswitch.h | 42 int (*event)(struct mlx5_eswitch *esw, 60 struct mlx5_eswitch *esw; member 63 void mlx5_eswitch_register_vport_reps(struct mlx5_eswitch *esw, 67 mlx5_eswitch_register_vport_reps_nested(struct mlx5_eswitch *esw, 70 void mlx5_eswitch_unregister_vport_reps(struct mlx5_eswitch *esw, u8 rep_type); 71 void mlx5_eswitch_unregister_vport_reps_nested(struct mlx5_eswitch *esw, 73 void *mlx5_eswitch_get_proto_dev(struct mlx5_eswitch *esw, 76 struct mlx5_eswitch_rep *mlx5_eswitch_vport_rep(struct mlx5_eswitch *esw, 78 void *mlx5_eswitch_uplink_get_proto_dev(struct mlx5_eswitch *esw, u8 rep_type); 88 bool mlx5_eswitch_reg_c1_loopback_enabled(const struct mlx5_eswitch *esw); 171 mlx5_eswitch_reg_c1_loopback_enabled(const struct mlx5_eswitch * esw) mlx5_eswitch_reg_c1_loopback_enabled() argument 177 mlx5_eswitch_vport_match_metadata_enabled(const struct mlx5_eswitch * esw) mlx5_eswitch_vport_match_metadata_enabled() argument 183 mlx5_eswitch_get_vport_metadata_for_match(struct mlx5_eswitch * esw,u16 vport_num) mlx5_eswitch_get_vport_metadata_for_match() argument 199 mlx5_eswitch_get_core_dev(struct mlx5_eswitch * esw) mlx5_eswitch_get_core_dev() argument [all...] |
| /linux/drivers/net/ethernet/mellanox/mlx5/core/en/tc/ |
| H A D | sample.c | 24 struct mlx5_eswitch *esw; member 63 struct mlx5_eswitch *esw = tc_psample->esw; in sampler_termtbl_create() local 66 struct mlx5_core_dev *dev = esw->dev; in sampler_termtbl_create() 95 dest.vport.num = esw->manager_vport; in sampler_termtbl_create() 196 err = sampler_obj_create(tc_psample->esw->dev, sampler); in sampler_get() 220 sampler_obj_destroy(tc_psample->esw->dev, sampler->sampler_id); in sampler_put() 265 struct mlx5_eswitch *esw = tc_psample->esw; in sample_restore_get() local 266 struct mlx5_core_dev *mdev = esw->dev; in sample_restore_get() 290 restore->rule = esw_add_restore_rule(esw, obj_id); in sample_restore_get() 321 mlx5_modify_header_dealloc(tc_psample->esw->dev, restore->modify_hdr); in sample_restore_put() [all …]
|
| H A D | int_port.c | 31 bool mlx5e_tc_int_port_supported(const struct mlx5_eswitch *esw) in mlx5e_tc_int_port_supported() argument 33 return mlx5_eswitch_vport_match_metadata_enabled(esw) && in mlx5e_tc_int_port_supported() 34 MLX5_CAP_GEN(esw->dev, reg_c_preserve); in mlx5e_tc_int_port_supported() 61 mlx5e_int_port_create_rx_rule(struct mlx5_eswitch *esw, in mlx5e_int_port_create_rx_rule() argument 93 flow_rule = mlx5_add_flow_rules(esw->offloads.ft_offloads, spec, in mlx5e_int_port_create_rx_rule() 96 mlx5_core_warn(esw->dev, "ft offloads: Failed to add internal vport rx rule err %pe\n", in mlx5e_int_port_create_rx_rule() 154 struct mlx5_eswitch *esw = priv->dev->priv.eswitch; in mlx5e_int_port_add() local 176 …mlx5_core_warn(esw->dev, "Cannot add a new internal port, metadata allocation failed for ifindex %… in mlx5e_int_port_add() 182 ctx = esw->offloads.reg_c0_obj_pool; in mlx5e_int_port_add() 195 uplink_rpriv = mlx5_eswitch_get_uplink_priv(esw, REP_ETH); in mlx5e_int_port_add() [all …]
|
| /linux/drivers/net/ethernet/mellanox/mlx5/core/lag/ |
| H A D | mpesw.c | 8 #include "esw/acl/ofld.h" 14 struct mlx5_eswitch *esw; in mlx5_mpesw_metadata_cleanup() local 20 esw = dev->priv.eswitch; in mlx5_mpesw_metadata_cleanup() 24 mlx5_esw_acl_ingress_vport_metadata_update(esw, MLX5_VPORT_UPLINK, 0); in mlx5_mpesw_metadata_cleanup() 27 mlx5_esw_match_metadata_free(esw, pf_metadata); in mlx5_mpesw_metadata_cleanup() 35 struct mlx5_eswitch *esw; in mlx5_mpesw_metadata_set() local 41 esw = dev->priv.eswitch; in mlx5_mpesw_metadata_set() 42 pf_metadata = mlx5_esw_match_metadata_alloc(esw); in mlx5_mpesw_metadata_set() 49 err = mlx5_esw_acl_ingress_vport_metadata_update(esw, MLX5_VPORT_UPLINK, in mlx5_mpesw_metadata_set()
|