/Linux-v5.15/drivers/net/ethernet/mellanox/mlx5/core/ |
D | eswitch.c | 91 mlx5_eswitch_get_vport(struct mlx5_eswitch *esw, u16 vport_num) in mlx5_eswitch_get_vport() argument 95 if (!esw || !MLX5_CAP_GEN(esw->dev, vport_group_manager)) in mlx5_eswitch_get_vport() 98 vport = xa_load(&esw->vports, vport_num); in mlx5_eswitch_get_vport() 100 esw_debug(esw->dev, "vport out of range: num(0x%x)\n", vport_num); in mlx5_eswitch_get_vport() 183 __esw_fdb_set_vport_rule(struct mlx5_eswitch *esw, u16 vport, bool rx_rule, in __esw_fdb_set_vport_rule() argument 226 esw_debug(esw->dev, in __esw_fdb_set_vport_rule() 232 mlx5_add_flow_rules(esw->fdb_table.legacy.fdb, spec, in __esw_fdb_set_vport_rule() 235 esw_warn(esw->dev, in __esw_fdb_set_vport_rule() 246 esw_fdb_set_vport_rule(struct mlx5_eswitch *esw, u8 mac[ETH_ALEN], u16 vport) in esw_fdb_set_vport_rule() argument 251 return __esw_fdb_set_vport_rule(esw, vport, false, mac_c, mac); in esw_fdb_set_vport_rule() [all …]
|
D | eswitch_offloads.c | 53 #define mlx5_esw_for_each_rep(esw, i, rep) \ argument 54 xa_for_each(&((esw)->offloads.vport_reps), i, rep) 56 #define mlx5_esw_for_each_sf_rep(esw, i, rep) \ argument 57 xa_for_each_marked(&((esw)->offloads.vport_reps), i, rep, MLX5_ESW_VPT_SF) 59 #define mlx5_esw_for_each_vf_rep(esw, index, rep) \ argument 60 mlx5_esw_for_each_entry_marked(&((esw)->offloads.vport_reps), index, \ 61 rep, (esw)->esw_funcs.num_vfs, MLX5_ESW_VPT_VF) 78 static struct mlx5_eswitch_rep *mlx5_eswitch_get_rep(struct mlx5_eswitch *esw, in mlx5_eswitch_get_rep() argument 81 return xa_load(&esw->offloads.vport_reps, vport_num); in mlx5_eswitch_get_rep() 85 mlx5_eswitch_set_rule_flow_source(struct mlx5_eswitch *esw, in mlx5_eswitch_set_rule_flow_source() argument [all …]
|
D | eswitch.h | 82 #define esw_chains(esw) \ argument 83 ((esw)->fdb_table.offloads.esw_chains_priv) 268 struct mlx5_eswitch *esw; member 327 void esw_offloads_disable(struct mlx5_eswitch *esw); 328 int esw_offloads_enable(struct mlx5_eswitch *esw); 329 void esw_offloads_cleanup_reps(struct mlx5_eswitch *esw); 330 int esw_offloads_init_reps(struct mlx5_eswitch *esw); 332 bool mlx5_esw_vport_match_metadata_supported(const struct mlx5_eswitch *esw); 333 int mlx5_esw_offloads_vport_metadata_set(struct mlx5_eswitch *esw, bool enable); 334 u32 mlx5_esw_match_metadata_alloc(struct mlx5_eswitch *esw); [all …]
|
D | eswitch_offloads_termtbl.c | 110 mlx5_eswitch_termtbl_get_create(struct mlx5_eswitch *esw, in mlx5_eswitch_termtbl_get_create() argument 120 mutex_lock(&esw->offloads.termtbl_mutex); in mlx5_eswitch_termtbl_get_create() 122 hash_for_each_possible(esw->offloads.termtbl_tbl, tt, in mlx5_eswitch_termtbl_get_create() 145 err = mlx5_eswitch_termtbl_create(esw->dev, tt, flow_act); in mlx5_eswitch_termtbl_get_create() 149 hash_add(esw->offloads.termtbl_tbl, &tt->termtbl_hlist, hash_key); in mlx5_eswitch_termtbl_get_create() 152 mutex_unlock(&esw->offloads.termtbl_mutex); in mlx5_eswitch_termtbl_get_create() 156 mutex_unlock(&esw->offloads.termtbl_mutex); in mlx5_eswitch_termtbl_get_create() 161 mlx5_eswitch_termtbl_put(struct mlx5_eswitch *esw, in mlx5_eswitch_termtbl_put() argument 164 mutex_lock(&esw->offloads.termtbl_mutex); in mlx5_eswitch_termtbl_put() 167 mutex_unlock(&esw->offloads.termtbl_mutex); in mlx5_eswitch_termtbl_put() [all …]
|
/Linux-v5.15/drivers/net/ethernet/mellanox/mlx5/core/esw/ |
D | legacy.c | 21 static int esw_create_legacy_vepa_table(struct mlx5_eswitch *esw) in esw_create_legacy_vepa_table() argument 24 struct mlx5_core_dev *dev = esw->dev; in esw_create_legacy_vepa_table() 45 esw->fdb_table.legacy.vepa_fdb = fdb; in esw_create_legacy_vepa_table() 50 static void esw_destroy_legacy_fdb_table(struct mlx5_eswitch *esw) in esw_destroy_legacy_fdb_table() argument 52 esw_debug(esw->dev, "Destroy FDB Table\n"); in esw_destroy_legacy_fdb_table() 53 if (!esw->fdb_table.legacy.fdb) in esw_destroy_legacy_fdb_table() 56 if (esw->fdb_table.legacy.promisc_grp) in esw_destroy_legacy_fdb_table() 57 mlx5_destroy_flow_group(esw->fdb_table.legacy.promisc_grp); in esw_destroy_legacy_fdb_table() 58 if (esw->fdb_table.legacy.allmulti_grp) in esw_destroy_legacy_fdb_table() 59 mlx5_destroy_flow_group(esw->fdb_table.legacy.allmulti_grp); in esw_destroy_legacy_fdb_table() [all …]
|
D | qos.c | 46 static int esw_qos_group_config(struct mlx5_eswitch *esw, struct mlx5_esw_rate_group *group, in esw_qos_group_config() argument 50 struct mlx5_core_dev *dev = esw->dev; in esw_qos_group_config() 54 esw->qos.root_tsar_ix, group->tsar_ix, in esw_qos_group_config() 64 static int esw_qos_vport_config(struct mlx5_eswitch *esw, in esw_qos_vport_config() argument 71 struct mlx5_core_dev *dev = esw->dev; in esw_qos_vport_config() 79 parent_tsar_ix = group ? group->tsar_ix : esw->qos.root_tsar_ix; in esw_qos_vport_config() 89 esw_warn(esw->dev, in esw_qos_vport_config() 101 static u32 esw_qos_calculate_min_rate_divider(struct mlx5_eswitch *esw, in esw_qos_calculate_min_rate_divider() argument 105 u32 fw_max_bw_share = MLX5_CAP_QOS(esw->dev, max_tsar_bw_share); in esw_qos_calculate_min_rate_divider() 113 list_for_each_entry(group, &esw->qos.groups, list) { in esw_qos_calculate_min_rate_divider() [all …]
|
D | vporttbl.c | 25 esw_vport_tbl_create(struct mlx5_eswitch *esw, struct mlx5_flow_namespace *ns, in esw_vport_tbl_create() argument 34 ft_attr.autogroup.max_num_groups = esw->params.large_group_num; in esw_vport_tbl_create() 40 esw_warn(esw->dev, "Failed to create per vport FDB Table err %ld\n", in esw_vport_tbl_create() 47 static u32 flow_attr_to_vport_key(struct mlx5_eswitch *esw, in flow_attr_to_vport_key() argument 54 key->vhca_id = MLX5_CAP_GEN(esw->dev, vhca_id); in flow_attr_to_vport_key() 61 esw_vport_tbl_lookup(struct mlx5_eswitch *esw, struct mlx5_vport_key *skey, u32 key) in esw_vport_tbl_lookup() argument 65 hash_for_each_possible(esw->fdb_table.offloads.vports.table, e, hlist, key) in esw_vport_tbl_lookup() 73 mlx5_esw_vporttbl_get(struct mlx5_eswitch *esw, struct mlx5_vport_tbl_attr *attr) in mlx5_esw_vporttbl_get() argument 75 struct mlx5_core_dev *dev = esw->dev; in mlx5_esw_vporttbl_get() 82 mutex_lock(&esw->fdb_table.offloads.vports.lock); in mlx5_esw_vporttbl_get() [all …]
|
D | devlink_port.c | 17 static bool mlx5_esw_devlink_port_supported(struct mlx5_eswitch *esw, u16 vport_num) in mlx5_esw_devlink_port_supported() argument 20 (mlx5_core_is_ecpf(esw->dev) && vport_num == MLX5_VPORT_PF) || in mlx5_esw_devlink_port_supported() 21 mlx5_eswitch_is_vf_vport(esw, vport_num); in mlx5_esw_devlink_port_supported() 24 static struct devlink_port *mlx5_esw_dl_port_alloc(struct mlx5_eswitch *esw, u16 vport_num) in mlx5_esw_dl_port_alloc() argument 26 struct mlx5_core_dev *dev = esw->dev; in mlx5_esw_dl_port_alloc() 54 } else if (mlx5_eswitch_is_vf_vport(esw, vport_num)) { in mlx5_esw_dl_port_alloc() 68 int mlx5_esw_offloads_devlink_port_register(struct mlx5_eswitch *esw, u16 vport_num) in mlx5_esw_offloads_devlink_port_register() argument 70 struct mlx5_core_dev *dev = esw->dev; in mlx5_esw_offloads_devlink_port_register() 77 if (!mlx5_esw_devlink_port_supported(esw, vport_num)) in mlx5_esw_offloads_devlink_port_register() 80 vport = mlx5_eswitch_get_vport(esw, vport_num); in mlx5_esw_offloads_devlink_port_register() [all …]
|
D | indir_table.c | 74 mlx5_esw_indir_table_needed(struct mlx5_eswitch *esw, in mlx5_esw_indir_table_needed() argument 85 mlx5_eswitch_is_vf_vport(esw, vport_num) && in mlx5_esw_indir_table_needed() 86 esw->dev == dest_mdev && in mlx5_esw_indir_table_needed() 117 static int mlx5_esw_indir_table_rule_get(struct mlx5_eswitch *esw, in mlx5_esw_indir_table_rule_get() argument 123 struct mlx5_fs_chains *chains = esw_chains(esw); in mlx5_esw_indir_table_rule_get() 153 if (MLX5_CAP_FLOWTABLE_NIC_RX(esw->dev, ft_field_support.outer_ip_version)) { in mlx5_esw_indir_table_rule_get() 197 data = mlx5_eswitch_get_vport_metadata_for_set(esw, esw_attr->rx_tun_attr->decap_vport); in mlx5_esw_indir_table_rule_get() 198 err = mlx5e_tc_match_to_reg_set(esw->dev, &mod_acts, MLX5_FLOW_NAMESPACE_FDB, in mlx5_esw_indir_table_rule_get() 203 err = mlx5e_tc_match_to_reg_set(esw->dev, &mod_acts, MLX5_FLOW_NAMESPACE_FDB, in mlx5_esw_indir_table_rule_get() 208 flow_act.modify_hdr = mlx5_modify_header_alloc(esw->dev, MLX5_FLOW_NAMESPACE_FDB, in mlx5_esw_indir_table_rule_get() [all …]
|
D | bridge.c | 90 mlx5_esw_bridge_table_create(int max_fte, u32 level, struct mlx5_eswitch *esw) in mlx5_esw_bridge_table_create() argument 93 struct mlx5_core_dev *dev = esw->dev; in mlx5_esw_bridge_table_create() 115 mlx5_esw_bridge_ingress_vlan_fg_create(struct mlx5_eswitch *esw, struct mlx5_flow_table *ingress_ft) in mlx5_esw_bridge_ingress_vlan_fg_create() argument 145 esw_warn(esw->dev, in mlx5_esw_bridge_ingress_vlan_fg_create() 153 mlx5_esw_bridge_ingress_filter_fg_create(struct mlx5_eswitch *esw, in mlx5_esw_bridge_ingress_filter_fg_create() argument 182 esw_warn(esw->dev, in mlx5_esw_bridge_ingress_filter_fg_create() 191 mlx5_esw_bridge_ingress_mac_fg_create(struct mlx5_eswitch *esw, struct mlx5_flow_table *ingress_ft) in mlx5_esw_bridge_ingress_mac_fg_create() argument 218 esw_warn(esw->dev, in mlx5_esw_bridge_ingress_mac_fg_create() 227 mlx5_esw_bridge_egress_vlan_fg_create(struct mlx5_eswitch *esw, struct mlx5_flow_table *egress_ft) in mlx5_esw_bridge_egress_vlan_fg_create() argument 252 esw_warn(esw->dev, in mlx5_esw_bridge_egress_vlan_fg_create() [all …]
|
D | indir_table.h | 14 struct mlx5_flow_table *mlx5_esw_indir_table_get(struct mlx5_eswitch *esw, 18 void mlx5_esw_indir_table_put(struct mlx5_eswitch *esw, 23 mlx5_esw_indir_table_needed(struct mlx5_eswitch *esw, 45 mlx5_esw_indir_table_get(struct mlx5_eswitch *esw, in mlx5_esw_indir_table_get() argument 54 mlx5_esw_indir_table_put(struct mlx5_eswitch *esw, in mlx5_esw_indir_table_put() argument 61 mlx5_esw_indir_table_needed(struct mlx5_eswitch *esw, in mlx5_esw_indir_table_needed() argument
|
D | qos.h | 9 int mlx5_esw_qos_set_vport_min_rate(struct mlx5_eswitch *esw, 13 int mlx5_esw_qos_set_vport_max_rate(struct mlx5_eswitch *esw, 17 void mlx5_esw_qos_create(struct mlx5_eswitch *esw); 18 void mlx5_esw_qos_destroy(struct mlx5_eswitch *esw); 19 int mlx5_esw_qos_vport_enable(struct mlx5_eswitch *esw, struct mlx5_vport *vport, 21 void mlx5_esw_qos_vport_disable(struct mlx5_eswitch *esw, struct mlx5_vport *vport);
|
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-v5.15/drivers/net/ethernet/mellanox/mlx5/core/esw/acl/ |
D | ingress_ofld.c | 10 esw_acl_ingress_prio_tag_enabled(struct mlx5_eswitch *esw, in esw_acl_ingress_prio_tag_enabled() argument 13 return (MLX5_CAP_GEN(esw->dev, prio_tag_required) && in esw_acl_ingress_prio_tag_enabled() 14 mlx5_eswitch_is_vf_vport(esw, vport->vport)); in esw_acl_ingress_prio_tag_enabled() 17 static int esw_acl_ingress_prio_tag_create(struct mlx5_eswitch *esw, in esw_acl_ingress_prio_tag_create() argument 52 esw_warn(esw->dev, in esw_acl_ingress_prio_tag_create() 62 static int esw_acl_ingress_mod_metadata_create(struct mlx5_eswitch *esw, in esw_acl_ingress_mod_metadata_create() argument 70 key = mlx5_eswitch_get_vport_metadata_for_match(esw, vport->vport); in esw_acl_ingress_mod_metadata_create() 83 mlx5_modify_header_alloc(esw->dev, MLX5_FLOW_NAMESPACE_ESW_INGRESS, in esw_acl_ingress_mod_metadata_create() 87 esw_warn(esw->dev, in esw_acl_ingress_mod_metadata_create() 100 esw_warn(esw->dev, in esw_acl_ingress_mod_metadata_create() [all …]
|
D | egress_ofld.c | 27 static int esw_acl_egress_ofld_fwd2vport_create(struct mlx5_eswitch *esw, in esw_acl_egress_ofld_fwd2vport_create() argument 34 esw_debug(esw->dev, "vport(%d) configure egress acl rule fwd2vport(%d)\n", in esw_acl_egress_ofld_fwd2vport_create() 47 esw_warn(esw->dev, in esw_acl_egress_ofld_fwd2vport_create() 56 static int esw_acl_egress_ofld_rules_create(struct mlx5_eswitch *esw, in esw_acl_egress_ofld_rules_create() argument 63 if (MLX5_CAP_GEN(esw->dev, prio_tag_required)) { in esw_acl_egress_ofld_rules_create() 68 esw_debug(esw->dev, in esw_acl_egress_ofld_rules_create() 76 err = esw_egress_acl_vlan_create(esw, vport, fwd_dest, 0, action); in esw_acl_egress_ofld_rules_create() 82 err = esw_acl_egress_ofld_fwd2vport_create(esw, vport, fwd_dest); in esw_acl_egress_ofld_rules_create() 102 static int esw_acl_egress_ofld_groups_create(struct mlx5_eswitch *esw, in esw_acl_egress_ofld_groups_create() argument 111 if (MLX5_CAP_GEN(esw->dev, prio_tag_required)) { in esw_acl_egress_ofld_groups_create() [all …]
|
D | ofld.h | 10 int esw_acl_egress_ofld_setup(struct mlx5_eswitch *esw, struct mlx5_vport *vport); 12 int mlx5_esw_acl_egress_vport_bond(struct mlx5_eswitch *esw, u16 active_vport_num, 14 int mlx5_esw_acl_egress_vport_unbond(struct mlx5_eswitch *esw, u16 vport_num); 16 static inline bool mlx5_esw_acl_egress_fwd2vport_supported(struct mlx5_eswitch *esw) in mlx5_esw_acl_egress_fwd2vport_supported() argument 18 return esw && esw->mode == MLX5_ESWITCH_OFFLOADS && in mlx5_esw_acl_egress_fwd2vport_supported() 19 mlx5_eswitch_vport_match_metadata_enabled(esw) && in mlx5_esw_acl_egress_fwd2vport_supported() 20 MLX5_CAP_ESW_FLOWTABLE(esw->dev, egress_acl_forward_to_vport); in mlx5_esw_acl_egress_fwd2vport_supported() 24 int esw_acl_ingress_ofld_setup(struct mlx5_eswitch *esw, struct mlx5_vport *vport); 25 void esw_acl_ingress_ofld_cleanup(struct mlx5_eswitch *esw, struct mlx5_vport *vport); 26 int mlx5_esw_acl_ingress_vport_bond_update(struct mlx5_eswitch *esw, u16 vport_num,
|
D | egress_lgcy.c | 18 static int esw_acl_egress_lgcy_groups_create(struct mlx5_eswitch *esw, in esw_acl_egress_lgcy_groups_create() argument 22 struct mlx5_core_dev *dev = esw->dev; in esw_acl_egress_lgcy_groups_create() 27 err = esw_acl_egress_vlan_grp_create(esw, vport); in esw_acl_egress_lgcy_groups_create() 67 int esw_acl_egress_lgcy_setup(struct mlx5_eswitch *esw, in esw_acl_egress_lgcy_setup() argument 84 } else if (MLX5_CAP_ESW_EGRESS_ACL(esw->dev, flow_counter)) { in esw_acl_egress_lgcy_setup() 85 drop_counter = mlx5_fc_create(esw->dev, false); in esw_acl_egress_lgcy_setup() 87 esw_warn(esw->dev, in esw_acl_egress_lgcy_setup() 98 esw_acl_egress_lgcy_cleanup(esw, vport); in esw_acl_egress_lgcy_setup() 103 vport->egress.acl = esw_acl_table_create(esw, vport, in esw_acl_egress_lgcy_setup() 112 err = esw_acl_egress_lgcy_groups_create(esw, vport); in esw_acl_egress_lgcy_setup() [all …]
|
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 165 } else if (MLX5_CAP_ESW_INGRESS_ACL(esw->dev, flow_counter)) { in esw_acl_ingress_lgcy_setup() 166 counter = mlx5_fc_create(esw->dev, false); in esw_acl_ingress_lgcy_setup() 168 esw_warn(esw->dev, in esw_acl_ingress_lgcy_setup() 177 esw_acl_ingress_lgcy_cleanup(esw, vport); in esw_acl_ingress_lgcy_setup() 182 vport->ingress.acl = esw_acl_table_create(esw, vport, in esw_acl_ingress_lgcy_setup() 191 err = esw_acl_ingress_lgcy_groups_create(esw, vport); in esw_acl_ingress_lgcy_setup() 196 esw_debug(esw->dev, in esw_acl_ingress_lgcy_setup() [all …]
|
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-v5.15/include/linux/mlx5/ |
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, 66 void mlx5_eswitch_unregister_vport_reps(struct mlx5_eswitch *esw, u8 rep_type); 67 void *mlx5_eswitch_get_proto_dev(struct mlx5_eswitch *esw, 70 struct mlx5_eswitch_rep *mlx5_eswitch_vport_rep(struct mlx5_eswitch *esw, 72 void *mlx5_eswitch_uplink_get_proto_dev(struct mlx5_eswitch *esw, u8 rep_type); 82 bool mlx5_eswitch_reg_c1_loopback_enabled(const struct mlx5_eswitch *esw); 83 bool mlx5_eswitch_vport_match_metadata_enabled(const struct mlx5_eswitch *esw); 105 u32 mlx5_eswitch_get_vport_metadata_for_match(struct mlx5_eswitch *esw, [all …]
|
/Linux-v5.15/drivers/s390/cio/ |
D | device_status.c | 124 cdev_irb->esw.esw1.lpum = irb->esw.esw1.lpum; in ccw_device_accumulate_esw() 128 cdev_sublog = &cdev_irb->esw.esw0.sublog; in ccw_device_accumulate_esw() 129 sublog = &irb->esw.esw0.sublog; in ccw_device_accumulate_esw() 158 cdev_irb->esw.esw0.erw.cpt = irb->esw.esw0.erw.cpt; in ccw_device_accumulate_esw() 160 cdev_irb->esw.esw0.erw.fsavf = irb->esw.esw0.erw.fsavf; in ccw_device_accumulate_esw() 161 if (cdev_irb->esw.esw0.erw.fsavf) { in ccw_device_accumulate_esw() 163 memcpy(cdev_irb->esw.esw0.faddr, irb->esw.esw0.faddr, in ccw_device_accumulate_esw() 164 sizeof (irb->esw.esw0.faddr)); in ccw_device_accumulate_esw() 166 cdev_irb->esw.esw0.erw.fsaf = irb->esw.esw0.erw.fsaf; in ccw_device_accumulate_esw() 169 cdev_irb->esw.esw0.erw.scavf = irb->esw.esw0.erw.scavf; in ccw_device_accumulate_esw() [all …]
|
/Linux-v5.15/drivers/infiniband/hw/mlx5/ |
D | ib_rep.c | 25 mlx5_ib_get_rep_netdev(rep->esw, rep->vport); in mlx5_ib_set_vport_rep() 109 struct mlx5_core_dev *mdev = mlx5_eswitch_get_core_dev(rep->esw); in mlx5_ib_vport_rep_unload() 139 struct mlx5_eswitch *esw; in mlx5_ib_vport_rep_unload() local 143 esw = peer_mdev->priv.eswitch; in mlx5_ib_vport_rep_unload() 144 mlx5_eswitch_unregister_vport_reps(esw, REP_IB); in mlx5_ib_vport_rep_unload() 159 struct mlx5_eswitch *esw; in mlx5_ib_register_peer_vport_reps() local 164 esw = peer_mdev->priv.eswitch; in mlx5_ib_register_peer_vport_reps() 165 mlx5_eswitch_register_vport_reps(esw, &rep_ops, REP_IB); in mlx5_ib_register_peer_vport_reps() 168 struct net_device *mlx5_ib_get_rep_netdev(struct mlx5_eswitch *esw, in mlx5_ib_get_rep_netdev() argument 171 return mlx5_eswitch_get_proto_dev(esw, vport_num, REP_ETH); in mlx5_ib_get_rep_netdev() [all …]
|
/Linux-v5.15/drivers/net/ethernet/mellanox/mlx5/core/en/rep/ |
D | bridge.c | 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 36 esw_mdev = esw->dev; in mlx5_esw_bridge_dev_same_hw() 45 mlx5_esw_bridge_lag_rep_get(struct net_device *dev, struct mlx5_eswitch *esw) in mlx5_esw_bridge_lag_rep_get() argument 59 if (mlx5_lag_is_shared_fdb(mdev) && mlx5_esw_bridge_dev_same_esw(lower, esw)) in mlx5_esw_bridge_lag_rep_get() 67 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 74 dev = mlx5_esw_bridge_lag_rep_get(dev, esw); in mlx5_esw_bridge_rep_vport_num_vhca_id_get() 76 if (!dev || !mlx5e_eswitch_rep(dev) || !mlx5_esw_bridge_dev_same_hw(dev, esw)) in mlx5_esw_bridge_rep_vport_num_vhca_id_get() 87 mlx5_esw_bridge_lower_rep_vport_num_vhca_id_get(struct net_device *dev, struct mlx5_eswitch *esw, in mlx5_esw_bridge_lower_rep_vport_num_vhca_id_get() argument [all …]
|
/Linux-v5.15/drivers/net/ethernet/mellanox/mlx5/core/en/tc/ |
D | sample.c | 22 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() 195 err = sampler_obj_create(tc_psample->esw->dev, sampler); in sampler_get() 219 sampler_obj_destroy(tc_psample->esw->dev, sampler->sampler_id); in sampler_put() 285 struct mlx5_eswitch *esw = tc_psample->esw; in sample_restore_get() local 286 struct mlx5_core_dev *mdev = esw->dev; in sample_restore_get() 313 restore->rule = esw_add_restore_rule(esw, obj_id); in sample_restore_get() 344 mlx5_modify_header_dealloc(tc_psample->esw->dev, restore->modify_hdr); in sample_restore_put() [all …]
|
/Linux-v5.15/drivers/net/ethernet/mellanox/mlx5/core/en/ |
D | tc_tun_encap.c | 122 struct mlx5_eswitch *esw = priv->mdev->priv.eswitch; in mlx5e_tc_encap_flows_add() local 163 rule = mlx5e_tc_offload_fdb_rules(esw, flow, spec, attr); in mlx5e_tc_encap_flows_add() 171 mlx5e_tc_unoffload_from_slow_path(esw, flow); in mlx5e_tc_encap_flows_add() 182 struct mlx5_eswitch *esw = priv->mdev->priv.eswitch; in mlx5e_tc_encap_flows_del() local 198 rule = mlx5e_tc_offload_to_slow_path(esw, flow, spec); in mlx5e_tc_encap_flows_del() 209 mlx5e_tc_unoffload_fdb_rules(esw, flow, attr); in mlx5e_tc_encap_flows_del() 356 struct mlx5_eswitch *esw; in mlx5e_tc_update_neigh_used_value() local 359 esw = priv->mdev->priv.eswitch; in mlx5e_tc_update_neigh_used_value() 360 mutex_lock(&esw->offloads.encap_tbl_lock); in mlx5e_tc_update_neigh_used_value() 377 mutex_unlock(&esw->offloads.encap_tbl_lock); in mlx5e_tc_update_neigh_used_value() [all …]
|