Lines Matching refs:offloads

57 	xa_for_each(&((esw)->offloads.vport_reps), i, rep)
81 return xa_load(&esw->offloads.vport_reps, vport_num);
436 if (esw->offloads.ft_ipsec_tx_pol &&
453 if (!esw->offloads.ft_ipsec_tx_pol)
498 dest[dest_idx].ft = esw->offloads.ft_ipsec_tx_pol;
772 atomic64_inc(&esw->offloads.num_flows);
858 atomic64_inc(&esw->offloads.num_flows);
893 atomic64_dec(&esw->offloads.num_flows);
995 on_esw == from_esw && on_esw->offloads.ft_ipsec_tx_pol) {
996 dest.ft = on_esw->offloads.ft_ipsec_tx_pol;
1256 flow = mlx5_add_flow_rules(esw->fdb_table.offloads.slow_fdb,
1273 esw->fdb_table.offloads.peer_miss_rules[pfindex] = flows;
1315 flows = esw->fdb_table.offloads.peer_miss_rules[peer_index];
1344 esw->fdb_table.offloads.peer_miss_rules[peer_index] = NULL;
1384 esw->fdb_table.offloads.miss_rule_uni = flow_rule;
1396 mlx5_del_flow_rules(esw->fdb_table.offloads.miss_rule_uni);
1400 esw->fdb_table.offloads.miss_rule_multi = flow_rule;
1411 struct mlx5_flow_table *ft = esw->offloads.ft_offloads_restore;
1435 flow_act.modify_hdr = esw->offloads.restore_copy_hdr_id;
1441 dest.ft = esw->offloads.ft_offloads;
1533 esw->offloads.encap != DEVLINK_ESWITCH_ENCAP_MODE_NONE) {
1551 if (esw->offloads.encap != DEVLINK_ESWITCH_ENCAP_MODE_NONE)
1568 attr.mapping = esw->offloads.reg_c0_obj_pool;
1578 esw->fdb_table.offloads.esw_chains_priv = chains;
1612 esw->fdb_table.offloads.esw_chains_priv = NULL;
1677 esw->fdb_table.offloads.send_to_vport_grp = g;
1722 esw->fdb_table.offloads.send_to_vport_meta_grp = g;
1772 esw->fdb_table.offloads.peer_miss_grp = g;
1810 esw->fdb_table.offloads.miss_grp = g;
1819 mlx5_destroy_flow_group(esw->fdb_table.offloads.miss_grp);
1834 esw_debug(esw->dev, "Create offloads FDB Tables\n");
1846 esw->fdb_table.offloads.ns = root_ns;
1871 if (esw->offloads.encap != DEVLINK_ESWITCH_ENCAP_MODE_NONE)
1885 esw->fdb_table.offloads.slow_fdb = fdb;
1894 esw->fdb_table.offloads.tc_miss_table = mlx5_create_flow_table(root_ns, &ft_attr);
1895 if (IS_ERR(esw->fdb_table.offloads.tc_miss_table)) {
1896 err = PTR_ERR(esw->fdb_table.offloads.tc_miss_table);
1901 err = esw_chains_create(esw, esw->fdb_table.offloads.tc_miss_table);
1928 mlx5_destroy_flow_group(esw->fdb_table.offloads.peer_miss_grp);
1930 if (esw->fdb_table.offloads.send_to_vport_meta_grp)
1931 mlx5_destroy_flow_group(esw->fdb_table.offloads.send_to_vport_meta_grp);
1933 mlx5_destroy_flow_group(esw->fdb_table.offloads.send_to_vport_grp);
1937 mlx5_destroy_flow_table(esw->fdb_table.offloads.tc_miss_table);
1953 esw_debug(esw->dev, "Destroy offloads FDB Tables\n");
1954 mlx5_del_flow_rules(esw->fdb_table.offloads.miss_rule_multi);
1955 mlx5_del_flow_rules(esw->fdb_table.offloads.miss_rule_uni);
1956 mlx5_destroy_flow_group(esw->fdb_table.offloads.send_to_vport_grp);
1957 if (esw->fdb_table.offloads.send_to_vport_meta_grp)
1958 mlx5_destroy_flow_group(esw->fdb_table.offloads.send_to_vport_meta_grp);
1960 mlx5_destroy_flow_group(esw->fdb_table.offloads.peer_miss_grp);
1961 mlx5_destroy_flow_group(esw->fdb_table.offloads.miss_grp);
1965 mlx5_destroy_flow_table(esw->fdb_table.offloads.tc_miss_table);
1968 mlx5_flow_namespace_set_mode(esw->fdb_table.offloads.ns,
1994 esw_warn(esw->dev, "Failed to get offloads flow namespace\n");
2005 esw_warn(esw->dev, "Failed to create offloads table, err %d\n", err);
2009 esw->offloads.ft_offloads = ft_offloads;
2015 struct mlx5_esw_offload *offloads = &esw->offloads;
2017 mlx5_destroy_flow_table(offloads->ft_offloads);
2038 g = mlx5_create_flow_group(esw->offloads.ft_offloads, flow_group_in);
2046 esw->offloads.vport_rx_group = g;
2054 mlx5_destroy_flow_group(esw->offloads.vport_rx_group);
2083 g = mlx5_create_flow_group(esw->offloads.ft_offloads, flow_group_in);
2091 esw->offloads.vport_rx_drop_group = g;
2099 if (esw->offloads.vport_rx_drop_group)
2100 mlx5_destroy_flow_group(esw->offloads.vport_rx_drop_group);
2148 flow_rule = mlx5_add_flow_rules(esw->offloads.ft_offloads, spec,
2151 esw_warn(esw->dev, "fs offloads: Failed to add vport rx rule err %ld\n", PTR_ERR(flow_rule));
2166 flow_rule = mlx5_add_flow_rules(esw->offloads.ft_offloads, NULL,
2170 "fs offloads: Failed to add vport rx drop rule err %ld\n",
2175 esw->offloads.vport_rx_drop_rule = flow_rule;
2182 if (esw->offloads.vport_rx_drop_rule)
2183 mlx5_del_flow_rules(esw->offloads.vport_rx_drop_rule);
2226 struct mlx5_esw_offload *offloads = &esw->offloads;
2231 mlx5_modify_header_dealloc(esw->dev, offloads->restore_copy_hdr_id);
2232 mlx5_destroy_flow_group(offloads->restore_group);
2233 mlx5_destroy_flow_table(offloads->ft_offloads_restore);
2255 esw_warn(esw->dev, "Failed to get offloads flow namespace\n");
2309 esw->offloads.ft_offloads_restore = ft;
2310 esw->offloads.restore_group = g;
2311 esw->offloads.restore_copy_hdr_id = mod_hdr;
2336 "Failed setting eswitch to offloads");
2341 if (esw->offloads.inline_mode == MLX5_INLINE_MODE_NONE) {
2343 &esw->offloads.inline_mode)) {
2344 esw->offloads.inline_mode = MLX5_INLINE_MODE_L2;
2367 err = xa_insert(&esw->offloads.vport_reps, rep->vport, rep, GFP_KERNEL);
2381 xa_erase(&esw->offloads.vport_reps, rep->vport);
2392 xa_destroy(&esw->offloads.vport_reps);
2401 xa_init(&esw->offloads.vport_reps);
2513 return esw->offloads.rep_ops[rep_type]->load(esw->dev, rep);
2523 esw->offloads.rep_ops[rep_type]->unload(rep);
2706 err = xa_insert(&vport->egress.offloads.bounce_rules,
2767 vport->egress.offloads.bounce_grp = g;
2769 xa_init_flags(&vport->egress.offloads.bounce_rules, XA_FLAGS_ALLOC);
2784 if (!xa_empty(&vport->egress.offloads.bounce_rules))
2786 mlx5_destroy_flow_group(vport->egress.offloads.bounce_grp);
2787 vport->egress.offloads.bounce_grp = NULL;
2818 if (xa_load(&vport->egress.offloads.bounce_rules, slave_index))
2842 if (xa_empty(&vport->egress.offloads.bounce_rules)) {
2844 xa_destroy(&vport->egress.offloads.bounce_rules);
2891 ops = esw->offloads.rep_ops[rep_type];
2924 ops = esw->offloads.rep_ops[rep_type];
3047 mlx5_core_err(esw->dev, "esw offloads devcom event failure, event %u err %d",
3057 INIT_LIST_HEAD(&esw->offloads.peer_flows[i]);
3058 mutex_init(&esw->offloads.peer_mutex);
3143 id = ida_alloc_range(&esw->offloads.vport_metadata_ida,
3157 ida_free(&esw->offloads.vport_metadata_ida, metadata & vport_bit_mask);
3321 memset(&esw->fdb_table.offloads, 0, sizeof(struct offloads_fdb));
3322 mutex_init(&esw->fdb_table.offloads.vports.lock);
3323 hash_init(esw->fdb_table.offloads.vports.table);
3331 esw->fdb_table.offloads.indir = indir;
3376 mlx5_esw_indir_table_destroy(esw->fdb_table.offloads.indir);
3378 mutex_destroy(&esw->fdb_table.offloads.vports.lock);
3391 mlx5_esw_indir_table_destroy(esw->fdb_table.offloads.indir);
3392 mutex_destroy(&esw->fdb_table.offloads.vports.lock);
3481 esw->offloads.host_number = MLX5_GET(query_esw_functions_out, query_host_out,
3497 return (controller == esw->offloads.host_number + 1);
3508 mutex_init(&esw->offloads.termtbl_mutex);
3534 esw->offloads.reg_c0_obj_pool = reg_c0_obj_pool;
3570 mutex_destroy(&esw->offloads.termtbl_mutex);
3600 mapping_destroy(esw->offloads.reg_c0_obj_pool);
3603 mutex_destroy(&esw->offloads.termtbl_mutex);
3695 esw->offloads.num_block_mode++;
3708 esw->offloads.num_block_mode--;
3744 if (esw->offloads.num_block_mode) {
3828 esw->offloads.inline_mode);
3836 esw->offloads.inline_mode);
3871 if (atomic64_read(&esw->offloads.num_flows) > 0) {
3887 esw->offloads.inline_mode = mlx5_mode;
3907 return esw_inline_mode_to_devlink(esw->offloads.inline_mode, mode);
3919 esw->offloads.encap != DEVLINK_ESWITCH_ENCAP_MODE_NONE) {
3924 esw->offloads.num_block_encap++;
3937 esw->offloads.num_block_encap--;
3968 esw->offloads.encap = encap;
3972 if (esw->offloads.encap == encap)
3975 if (atomic64_read(&esw->offloads.num_flows) > 0) {
3982 if (esw->offloads.num_block_encap) {
3994 esw->offloads.encap = encap;
4001 esw->offloads.encap = !encap;
4022 *encap = esw->offloads.encap;
4049 esw->offloads.rep_ops[rep_type] = ops;
4090 esw->offloads.rep_ops[rep_type]->get_proto_dev)
4091 return esw->offloads.rep_ops[rep_type]->get_proto_dev(rep);
4175 old_entry = xa_store(&esw->offloads.vhca_map, vhca_id, vhca_map_entry, GFP_KERNEL);
4194 vhca_map_entry = xa_erase(&esw->offloads.vhca_map, vhca_id);
4200 u16 *res = xa_load(&esw->offloads.vhca_map, vhca_id);