Lines Matching refs:dest

198 esw_setup_mtu_dest(struct mlx5_flow_destination *dest,  in esw_setup_mtu_dest()  argument
202 dest[i].type = MLX5_FLOW_DESTINATION_TYPE_RANGE; in esw_setup_mtu_dest()
203 dest[i].range.field = MLX5_FLOW_DEST_RANGE_FIELD_PKT_LEN; in esw_setup_mtu_dest()
204 dest[i].range.min = 0; in esw_setup_mtu_dest()
205 dest[i].range.max = meter->params.mtu; in esw_setup_mtu_dest()
206 dest[i].range.hit_ft = mlx5e_post_meter_get_mtu_true_ft(meter->post_meter); in esw_setup_mtu_dest()
207 dest[i].range.miss_ft = mlx5e_post_meter_get_mtu_false_ft(meter->post_meter); in esw_setup_mtu_dest()
213 esw_setup_sampler_dest(struct mlx5_flow_destination *dest, in esw_setup_sampler_dest() argument
219 dest[i].type = MLX5_FLOW_DESTINATION_TYPE_FLOW_SAMPLER; in esw_setup_sampler_dest()
220 dest[i].sampler_id = sampler_id; in esw_setup_sampler_dest()
226 esw_setup_ft_dest(struct mlx5_flow_destination *dest, in esw_setup_ft_dest() argument
233 dest[i].type = MLX5_FLOW_DESTINATION_TYPE_FLOW_TABLE; in esw_setup_ft_dest()
234 dest[i].ft = attr->dest_ft; in esw_setup_ft_dest()
242 esw_setup_accept_dest(struct mlx5_flow_destination *dest, struct mlx5_flow_act *flow_act, in esw_setup_accept_dest() argument
247 dest[i].type = MLX5_FLOW_DESTINATION_TYPE_FLOW_TABLE; in esw_setup_accept_dest()
248 dest[i].ft = mlx5_chains_get_tc_end_ft(chains); in esw_setup_accept_dest()
252 esw_setup_slow_path_dest(struct mlx5_flow_destination *dest, struct mlx5_flow_act *flow_act, in esw_setup_slow_path_dest() argument
257 dest[i].type = MLX5_FLOW_DESTINATION_TYPE_FLOW_TABLE; in esw_setup_slow_path_dest()
258 dest[i].ft = mlx5_eswitch_get_slow_fdb(esw); in esw_setup_slow_path_dest()
262 esw_setup_chain_dest(struct mlx5_flow_destination *dest, in esw_setup_chain_dest() argument
275 dest[i].type = MLX5_FLOW_DESTINATION_TYPE_FLOW_TABLE; in esw_setup_chain_dest()
276 dest[i].ft = ft; in esw_setup_chain_dest()
307 esw_setup_chain_src_port_rewrite(struct mlx5_flow_destination *dest, in esw_setup_chain_src_port_rewrite() argument
326 err = esw_setup_chain_dest(dest, flow_act, chains, attr->dest_chain, 1, 0, *i); in esw_setup_chain_src_port_rewrite()
373 esw_setup_indir_table(struct mlx5_flow_destination *dest, in esw_setup_indir_table() argument
387 dest[*i].type = MLX5_FLOW_DESTINATION_TYPE_FLOW_TABLE; in esw_setup_indir_table()
389 dest[*i].ft = mlx5_esw_indir_table_get(esw, attr, in esw_setup_indir_table()
391 if (IS_ERR(dest[*i].ft)) { in esw_setup_indir_table()
392 err = PTR_ERR(dest[*i].ft); in esw_setup_indir_table()
466 esw_setup_dest_fwd_vport(struct mlx5_flow_destination *dest, struct mlx5_flow_act *flow_act, in esw_setup_dest_fwd_vport() argument
470 dest[dest_idx].type = MLX5_FLOW_DESTINATION_TYPE_VPORT; in esw_setup_dest_fwd_vport()
471 dest[dest_idx].vport.num = esw_attr->dests[attr_idx].vport; in esw_setup_dest_fwd_vport()
473 dest[dest_idx].vport.vhca_id = in esw_setup_dest_fwd_vport()
475 dest[dest_idx].vport.flags |= MLX5_FLOW_DEST_VPORT_VHCA_ID; in esw_setup_dest_fwd_vport()
476 if (dest[dest_idx].vport.num == MLX5_VPORT_UPLINK && in esw_setup_dest_fwd_vport()
478 dest[dest_idx].type = MLX5_FLOW_DESTINATION_TYPE_UPLINK; in esw_setup_dest_fwd_vport()
485 dest[dest_idx].vport.flags |= MLX5_FLOW_DEST_VPORT_REFORMAT_ID; in esw_setup_dest_fwd_vport()
486 dest[dest_idx].vport.pkt_reformat = esw_attr->dests[attr_idx].pkt_reformat; in esw_setup_dest_fwd_vport()
491 esw_setup_dest_fwd_ipsec(struct mlx5_flow_destination *dest, struct mlx5_flow_act *flow_act, in esw_setup_dest_fwd_ipsec() argument
495 dest[dest_idx].ft = esw->offloads.ft_ipsec_tx_pol; in esw_setup_dest_fwd_ipsec()
496 dest[dest_idx].type = MLX5_FLOW_DESTINATION_TYPE_FLOW_TABLE; in esw_setup_dest_fwd_ipsec()
505 esw_setup_vport_dest(struct mlx5_flow_destination *dest, struct mlx5_flow_act *flow_act, in esw_setup_vport_dest() argument
510 esw_setup_dest_fwd_ipsec(dest, flow_act, esw, esw_attr, in esw_setup_vport_dest()
513 esw_setup_dest_fwd_vport(dest, flow_act, esw, esw_attr, in esw_setup_vport_dest()
518 esw_setup_vport_dests(struct mlx5_flow_destination *dest, struct mlx5_flow_act *flow_act, in esw_setup_vport_dests() argument
525 esw_setup_vport_dest(dest, flow_act, esw, esw_attr, j, i, true); in esw_setup_vport_dests()
565 esw_setup_dests(struct mlx5_flow_destination *dest, in esw_setup_dests() argument
581 esw_setup_slow_path_dest(dest, flow_act, esw, *i); in esw_setup_dests()
587 esw_setup_sampler_dest(dest, flow_act, attr->sample_attr.sampler_id, *i); in esw_setup_dests()
590 esw_setup_accept_dest(dest, flow_act, chains, *i); in esw_setup_dests()
593 err = esw_setup_mtu_dest(dest, &attr->meter_attr, *i); in esw_setup_dests()
596 err = esw_setup_indir_table(dest, flow_act, esw, attr, i); in esw_setup_dests()
598 err = esw_setup_chain_src_port_rewrite(dest, flow_act, esw, chains, attr, i); in esw_setup_dests()
600 *i = esw_setup_vport_dests(dest, flow_act, esw, esw_attr, *i); in esw_setup_dests()
603 err = esw_setup_ft_dest(dest, flow_act, esw, attr, *i); in esw_setup_dests()
606 err = esw_setup_chain_dest(dest, flow_act, chains, attr->dest_chain, in esw_setup_dests()
659 struct mlx5_flow_destination *dest; in mlx5_eswitch_add_offloaded_rule() local
673 dest = kcalloc(MLX5_MAX_FLOW_FWD_VPORTS + 1, sizeof(*dest), GFP_KERNEL); in mlx5_eswitch_add_offloaded_rule()
674 if (!dest) in mlx5_eswitch_add_offloaded_rule()
695 err = esw_setup_dests(dest, &flow_act, esw, attr, spec, &i); in mlx5_eswitch_add_offloaded_rule()
703 esw_dests_to_int_external(dest, i)) { in mlx5_eswitch_add_offloaded_rule()
715 dest[i].type = MLX5_FLOW_DESTINATION_TYPE_COUNTER; in mlx5_eswitch_add_offloaded_rule()
716 dest[i].counter_id = mlx5_fc_id(attr->counter); in mlx5_eswitch_add_offloaded_rule()
757 kfree(dest); in mlx5_eswitch_add_offloaded_rule()
758 dest = NULL; in mlx5_eswitch_add_offloaded_rule()
763 &flow_act, dest, i); in mlx5_eswitch_add_offloaded_rule()
765 rule = mlx5_add_flow_rules(fdb, spec, &flow_act, dest, i); in mlx5_eswitch_add_offloaded_rule()
771 kfree(dest); in mlx5_eswitch_add_offloaded_rule()
782 kfree(dest); in mlx5_eswitch_add_offloaded_rule()
795 struct mlx5_flow_destination *dest; in mlx5_eswitch_add_fwd_rule() local
801 dest = kcalloc(MLX5_MAX_FLOW_FWD_VPORTS + 1, sizeof(*dest), GFP_KERNEL); in mlx5_eswitch_add_fwd_rule()
802 if (!dest) in mlx5_eswitch_add_fwd_rule()
829 esw_setup_vport_dest(dest, &flow_act, esw, esw_attr, i, i, false); in mlx5_eswitch_add_fwd_rule()
836 dest[i].type = MLX5_FLOW_DESTINATION_TYPE_FLOW_TABLE; in mlx5_eswitch_add_fwd_rule()
837 dest[i].ft = fwd_fdb; in mlx5_eswitch_add_fwd_rule()
848 rule = mlx5_add_flow_rules(fast_fdb, spec, &flow_act, dest, i); in mlx5_eswitch_add_fwd_rule()
857 kfree(dest); in mlx5_eswitch_add_fwd_rule()
864 kfree(dest); in mlx5_eswitch_add_fwd_rule()
934 struct mlx5_flow_destination dest = {}; in mlx5_eswitch_add_send_to_vport_rule() local
985 dest.type = MLX5_FLOW_DESTINATION_TYPE_VPORT; in mlx5_eswitch_add_send_to_vport_rule()
986 dest.vport.num = rep->vport; in mlx5_eswitch_add_send_to_vport_rule()
987 dest.vport.vhca_id = MLX5_CAP_GEN(rep->esw->dev, vhca_id); in mlx5_eswitch_add_send_to_vport_rule()
988 dest.vport.flags |= MLX5_FLOW_DEST_VPORT_VHCA_ID; in mlx5_eswitch_add_send_to_vport_rule()
993 dest.ft = on_esw->offloads.ft_ipsec_tx_pol; in mlx5_eswitch_add_send_to_vport_rule()
995 dest.type = MLX5_FLOW_DESTINATION_TYPE_FLOW_TABLE; in mlx5_eswitch_add_send_to_vport_rule()
997 dest.type = MLX5_FLOW_DESTINATION_TYPE_VPORT; in mlx5_eswitch_add_send_to_vport_rule()
998 dest.vport.num = rep->vport; in mlx5_eswitch_add_send_to_vport_rule()
999 dest.vport.vhca_id = MLX5_CAP_GEN(rep->esw->dev, vhca_id); in mlx5_eswitch_add_send_to_vport_rule()
1000 dest.vport.flags |= MLX5_FLOW_DEST_VPORT_VHCA_ID; in mlx5_eswitch_add_send_to_vport_rule()
1008 spec, &flow_act, &dest, 1); in mlx5_eswitch_add_send_to_vport_rule()
1032 struct mlx5_flow_destination dest = {}; in mlx5_eswitch_add_send_to_vport_meta_rule() local
1049 dest.type = MLX5_FLOW_DESTINATION_TYPE_VPORT; in mlx5_eswitch_add_send_to_vport_meta_rule()
1054 dest.vport.num = vport_num; in mlx5_eswitch_add_send_to_vport_meta_rule()
1057 spec, &flow_act, &dest, 1); in mlx5_eswitch_add_send_to_vport_meta_rule()
1120 struct mlx5_flow_destination *dest) in peer_miss_rules_setup() argument
1147 dest->type = MLX5_FLOW_DESTINATION_TYPE_VPORT; in peer_miss_rules_setup()
1148 dest->vport.num = peer_dev->priv.eswitch->manager_vport; in peer_miss_rules_setup()
1149 dest->vport.vhca_id = MLX5_CAP_GEN(peer_dev, vhca_id); in peer_miss_rules_setup()
1150 dest->vport.flags |= MLX5_FLOW_DEST_VPORT_VHCA_ID; in peer_miss_rules_setup()
1176 struct mlx5_flow_destination dest = {}; in esw_add_fdb_peer_miss_rules() local
1195 peer_miss_rules_setup(esw, peer_dev, spec, &dest); in esw_add_fdb_peer_miss_rules()
1213 spec, &flow_act, &dest, 1); in esw_add_fdb_peer_miss_rules()
1225 spec, &flow_act, &dest, 1); in esw_add_fdb_peer_miss_rules()
1239 spec, &flow_act, &dest, 1); in esw_add_fdb_peer_miss_rules()
1254 spec, &flow_act, &dest, 1); in esw_add_fdb_peer_miss_rules()
1347 struct mlx5_flow_destination dest = {}; in esw_add_fdb_miss_rule() local
1369 dest.type = MLX5_FLOW_DESTINATION_TYPE_VPORT; in esw_add_fdb_miss_rule()
1370 dest.vport.num = esw->manager_vport; in esw_add_fdb_miss_rule()
1374 spec, &flow_act, &dest, 1); in esw_add_fdb_miss_rule()
1389 spec, &flow_act, &dest, 1); in esw_add_fdb_miss_rule()
1411 struct mlx5_flow_destination dest; in esw_add_restore_rule() local
1437 dest.type = MLX5_FLOW_DESTINATION_TYPE_FLOW_TABLE; in esw_add_restore_rule()
1438 dest.ft = esw->offloads.ft_offloads; in esw_add_restore_rule()
1440 flow_rule = mlx5_add_flow_rules(ft, spec, &flow_act, &dest, 1); in esw_add_restore_rule()
2130 struct mlx5_flow_destination *dest) in mlx5_eswitch_create_vport_rx_rule() argument
2146 &flow_act, dest, 1); in mlx5_eswitch_create_vport_rx_rule()
2670 struct mlx5_flow_destination dest = {}; in __esw_set_master_egress_rule() local
2692 dest.type = MLX5_FLOW_DESTINATION_TYPE_VPORT; in __esw_set_master_egress_rule()
2693 dest.vport.num = slave->priv.eswitch->manager_vport; in __esw_set_master_egress_rule()
2694 dest.vport.vhca_id = MLX5_CAP_GEN(slave, vhca_id); in __esw_set_master_egress_rule()
2695 dest.vport.flags |= MLX5_FLOW_DEST_VPORT_VHCA_ID; in __esw_set_master_egress_rule()
2698 &dest, 1); in __esw_set_master_egress_rule()