Skip to content

Commit 69ea058

Browse files
committed
Merge mlx5-next into rdma for-next
From git://git.kernel.org/pub/scm/linux/kernel/git/mellanox/linux Required for dependencies in the next patches. Resolved the conflicts: - esw_destroy_offloads_acl_tables() use the newer mlx5_esw_for_all_vports() version - esw_offloads_steering_init() drop the cap test - esw_offloads_init() drop the extra function arguments * branch 'mlx5-next': (39 commits) net/mlx5: Expose device definitions for object events net/mlx5: Report EQE data upon CQ completion net/mlx5: Report a CQ error event only when a handler was set net/mlx5: mlx5_core_create_cq() enhancements net/mlx5: Expose the API to register for ANY event net/mlx5: Use event mask based on device capabilities net/mlx5: Fix mlx5_core_destroy_cq() error flow net/mlx5: E-Switch, Handle UC address change in switchdev mode net/mlx5: E-Switch, Consider host PF for inline mode and vlan pop net/mlx5: E-Switch, Use iterator for vlan and min-inline setups net/mlx5: E-Switch, Reg/unreg function changed event at correct stage net/mlx5: E-Switch, Consolidate eswitch function number of VFs net/mlx5: E-Switch, Refactor eswitch SR-IOV interface net/mlx5: Handle host PF vport mac/guid for ECPF net/mlx5: E-Switch, Use correct flags when configuring vlan net/mlx5: Reduce dependency on enabled_vfs counter and num_vfs net/mlx5: Don't handle VF func change if host PF is disabled net/mlx5: Limit scope of mlx5_get_next_phys_dev() to PCI PF devices net/mlx5: Move pci status reg access mutex to mlx5_pci_init net/mlx5: Rename mlx5_pci_dev_type to mlx5_coredev_type ... Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
2 parents 2f40cf3 + e4075c4 commit 69ea058

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+1214
-536
lines changed

drivers/infiniband/hw/mlx5/cq.c

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
#include "mlx5_ib.h"
3838
#include "srq.h"
3939

40-
static void mlx5_ib_cq_comp(struct mlx5_core_cq *cq)
40+
static void mlx5_ib_cq_comp(struct mlx5_core_cq *cq, struct mlx5_eqe *eqe)
4141
{
4242
struct ib_cq *ibcq = &to_mibcq(cq)->ibcq;
4343

@@ -522,9 +522,9 @@ static int mlx5_poll_one(struct mlx5_ib_cq *cq,
522522
case MLX5_CQE_SIG_ERR:
523523
sig_err_cqe = (struct mlx5_sig_err_cqe *)cqe64;
524524

525-
read_lock(&dev->mdev->priv.mkey_table.lock);
526-
mmkey = __mlx5_mr_lookup(dev->mdev,
527-
mlx5_base_mkey(be32_to_cpu(sig_err_cqe->mkey)));
525+
xa_lock(&dev->mdev->priv.mkey_table);
526+
mmkey = xa_load(&dev->mdev->priv.mkey_table,
527+
mlx5_base_mkey(be32_to_cpu(sig_err_cqe->mkey)));
528528
mr = to_mibmr(mmkey);
529529
get_sig_err_item(sig_err_cqe, &mr->sig->err_item);
530530
mr->sig->sig_err_exists = true;
@@ -537,7 +537,7 @@ static int mlx5_poll_one(struct mlx5_ib_cq *cq,
537537
mr->sig->err_item.expected,
538538
mr->sig->err_item.actual);
539539

540-
read_unlock(&dev->mdev->priv.mkey_table.lock);
540+
xa_unlock(&dev->mdev->priv.mkey_table);
541541
goto repoll;
542542
}
543543

@@ -892,6 +892,7 @@ int mlx5_ib_create_cq(struct ib_cq *ibcq, const struct ib_cq_init_attr *attr,
892892
int vector = attr->comp_vector;
893893
struct mlx5_ib_dev *dev = to_mdev(ibdev);
894894
struct mlx5_ib_cq *cq = to_mcq(ibcq);
895+
u32 out[MLX5_ST_SZ_DW(create_cq_out)];
895896
int uninitialized_var(index);
896897
int uninitialized_var(inlen);
897898
u32 *cqb = NULL;
@@ -954,7 +955,7 @@ int mlx5_ib_create_cq(struct ib_cq *ibcq, const struct ib_cq_init_attr *attr,
954955
if (cq->create_flags & IB_UVERBS_CQ_FLAGS_IGNORE_OVERRUN)
955956
MLX5_SET(cqc, cqc, oi, 1);
956957

957-
err = mlx5_core_create_cq(dev->mdev, &cq->mcq, cqb, inlen);
958+
err = mlx5_core_create_cq(dev->mdev, &cq->mcq, cqb, inlen, out, sizeof(out));
958959
if (err)
959960
goto err_cqb;
960961

drivers/infiniband/hw/mlx5/devx.c

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1043,13 +1043,10 @@ static int devx_handle_mkey_indirect(struct devx_obj *obj,
10431043
struct mlx5_ib_dev *dev,
10441044
void *in, void *out)
10451045
{
1046-
struct mlx5_mkey_table *table = &dev->mdev->priv.mkey_table;
10471046
struct mlx5_ib_devx_mr *devx_mr = &obj->devx_mr;
1048-
unsigned long flags;
10491047
struct mlx5_core_mkey *mkey;
10501048
void *mkc;
10511049
u8 key;
1052-
int err;
10531050

10541051
mkey = &devx_mr->mmkey;
10551052
mkc = MLX5_ADDR_OF(create_mkey_in, in, memory_key_mkey_entry);
@@ -1062,11 +1059,8 @@ static int devx_handle_mkey_indirect(struct devx_obj *obj,
10621059
mkey->pd = MLX5_GET(mkc, mkc, pd);
10631060
devx_mr->ndescs = MLX5_GET(mkc, mkc, translations_octword_size);
10641061

1065-
write_lock_irqsave(&table->lock, flags);
1066-
err = radix_tree_insert(&table->tree, mlx5_base_mkey(mkey->key),
1067-
mkey);
1068-
write_unlock_irqrestore(&table->lock, flags);
1069-
return err;
1062+
return xa_err(xa_store(&dev->mdev->priv.mkey_table,
1063+
mlx5_base_mkey(mkey->key), mkey, GFP_KERNEL));
10701064
}
10711065

10721066
static int devx_handle_mkey_create(struct mlx5_ib_dev *dev,
@@ -1117,12 +1111,8 @@ static void devx_free_indirect_mkey(struct rcu_head *rcu)
11171111
*/
11181112
static void devx_cleanup_mkey(struct devx_obj *obj)
11191113
{
1120-
struct mlx5_mkey_table *table = &obj->mdev->priv.mkey_table;
1121-
unsigned long flags;
1122-
1123-
write_lock_irqsave(&table->lock, flags);
1124-
radix_tree_delete(&table->tree, mlx5_base_mkey(obj->devx_mr.mmkey.key));
1125-
write_unlock_irqrestore(&table->lock, flags);
1114+
xa_erase(&obj->mdev->priv.mkey_table,
1115+
mlx5_base_mkey(obj->devx_mr.mmkey.key));
11261116
}
11271117

11281118
static int devx_obj_cleanup(struct ib_uobject *uobject,

drivers/infiniband/hw/mlx5/flow.c

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -65,11 +65,12 @@ static const struct uverbs_attr_spec mlx5_ib_flow_type[] = {
6565
static int UVERBS_HANDLER(MLX5_IB_METHOD_CREATE_FLOW)(
6666
struct uverbs_attr_bundle *attrs)
6767
{
68-
struct mlx5_flow_act flow_act = {.flow_tag = MLX5_FS_DEFAULT_FLOW_TAG};
68+
struct mlx5_flow_context flow_context = {.flow_tag = MLX5_FS_DEFAULT_FLOW_TAG};
6969
struct mlx5_ib_flow_handler *flow_handler;
7070
struct mlx5_ib_flow_matcher *fs_matcher;
7171
struct ib_uobject **arr_flow_actions;
7272
struct ib_uflow_resources *uflow_res;
73+
struct mlx5_flow_act flow_act = {};
7374
void *devx_obj;
7475
int dest_id, dest_type;
7576
void *cmd_in;
@@ -172,17 +173,19 @@ static int UVERBS_HANDLER(MLX5_IB_METHOD_CREATE_FLOW)(
172173
arr_flow_actions[i]->object);
173174
}
174175

175-
ret = uverbs_copy_from(&flow_act.flow_tag, attrs,
176+
ret = uverbs_copy_from(&flow_context.flow_tag, attrs,
176177
MLX5_IB_ATTR_CREATE_FLOW_TAG);
177178
if (!ret) {
178-
if (flow_act.flow_tag >= BIT(24)) {
179+
if (flow_context.flow_tag >= BIT(24)) {
179180
ret = -EINVAL;
180181
goto err_out;
181182
}
182-
flow_act.flags |= FLOW_ACT_HAS_TAG;
183+
flow_context.flags |= FLOW_CONTEXT_HAS_TAG;
183184
}
184185

185-
flow_handler = mlx5_ib_raw_fs_rule_add(dev, fs_matcher, &flow_act,
186+
flow_handler = mlx5_ib_raw_fs_rule_add(dev, fs_matcher,
187+
&flow_context,
188+
&flow_act,
186189
counter_id,
187190
cmd_in, inlen,
188191
dest_id, dest_type);

drivers/infiniband/hw/mlx5/ib_rep.c

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,10 @@ mlx5_ib_set_vport_rep(struct mlx5_core_dev *dev, struct mlx5_eswitch_rep *rep)
1414
int vport_index;
1515

1616
ibdev = mlx5_ib_get_uplink_ibdev(dev->priv.eswitch);
17-
vport_index = ibdev->free_port++;
17+
vport_index = rep->vport_index;
1818

1919
ibdev->port[vport_index].rep = rep;
20+
rep->rep_data[REP_IB].priv = ibdev;
2021
write_lock(&ibdev->port[vport_index].roce.netdev_lock);
2122
ibdev->port[vport_index].roce.netdev =
2223
mlx5_ib_get_rep_netdev(dev->priv.eswitch, rep->vport);
@@ -50,7 +51,7 @@ mlx5_ib_vport_rep_load(struct mlx5_core_dev *dev, struct mlx5_eswitch_rep *rep)
5051
}
5152

5253
ibdev->is_rep = true;
53-
vport_index = ibdev->free_port++;
54+
vport_index = rep->vport_index;
5455
ibdev->port[vport_index].rep = rep;
5556
ibdev->port[vport_index].roce.netdev =
5657
mlx5_ib_get_rep_netdev(dev->priv.eswitch, rep->vport);
@@ -68,15 +69,18 @@ mlx5_ib_vport_rep_load(struct mlx5_core_dev *dev, struct mlx5_eswitch_rep *rep)
6869
static void
6970
mlx5_ib_vport_rep_unload(struct mlx5_eswitch_rep *rep)
7071
{
71-
struct mlx5_ib_dev *dev;
72-
73-
if (!rep->rep_data[REP_IB].priv ||
74-
rep->vport != MLX5_VPORT_UPLINK)
75-
return;
72+
struct mlx5_ib_dev *dev = mlx5_ib_rep_to_dev(rep);
73+
struct mlx5_ib_port *port;
7674

77-
dev = mlx5_ib_rep_to_dev(rep);
78-
__mlx5_ib_remove(dev, dev->profile, MLX5_IB_STAGE_MAX);
75+
port = &dev->port[rep->vport_index];
76+
write_lock(&port->roce.netdev_lock);
77+
port->roce.netdev = NULL;
78+
write_unlock(&port->roce.netdev_lock);
7979
rep->rep_data[REP_IB].priv = NULL;
80+
port->rep = NULL;
81+
82+
if (rep->vport == MLX5_VPORT_UPLINK)
83+
__mlx5_ib_remove(dev, dev->profile, MLX5_IB_STAGE_MAX);
8084
}
8185

8286
static void *mlx5_ib_vport_get_proto_dev(struct mlx5_eswitch_rep *rep)

drivers/infiniband/hw/mlx5/ib_rep.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ struct net_device *mlx5_ib_get_rep_netdev(struct mlx5_eswitch *esw,
2828
#else /* CONFIG_MLX5_ESWITCH */
2929
static inline u8 mlx5_ib_eswitch_mode(struct mlx5_eswitch *esw)
3030
{
31-
return SRIOV_NONE;
31+
return MLX5_ESWITCH_NONE;
3232
}
3333

3434
static inline

drivers/infiniband/hw/mlx5/main.c

Lines changed: 57 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -2669,11 +2669,15 @@ int parse_flow_flow_action(struct mlx5_ib_flow_action *maction,
26692669
}
26702670
}
26712671

2672-
static int parse_flow_attr(struct mlx5_core_dev *mdev, u32 *match_c,
2673-
u32 *match_v, const union ib_flow_spec *ib_spec,
2672+
static int parse_flow_attr(struct mlx5_core_dev *mdev,
2673+
struct mlx5_flow_spec *spec,
2674+
const union ib_flow_spec *ib_spec,
26742675
const struct ib_flow_attr *flow_attr,
26752676
struct mlx5_flow_act *action, u32 prev_type)
26762677
{
2678+
struct mlx5_flow_context *flow_context = &spec->flow_context;
2679+
u32 *match_c = spec->match_criteria;
2680+
u32 *match_v = spec->match_value;
26772681
void *misc_params_c = MLX5_ADDR_OF(fte_match_param, match_c,
26782682
misc_parameters);
26792683
void *misc_params_v = MLX5_ADDR_OF(fte_match_param, match_v,
@@ -2992,8 +2996,8 @@ static int parse_flow_attr(struct mlx5_core_dev *mdev, u32 *match_c,
29922996
if (ib_spec->flow_tag.tag_id >= BIT(24))
29932997
return -EINVAL;
29942998

2995-
action->flow_tag = ib_spec->flow_tag.tag_id;
2996-
action->flags |= FLOW_ACT_HAS_TAG;
2999+
flow_context->flow_tag = ib_spec->flow_tag.tag_id;
3000+
flow_context->flags |= FLOW_CONTEXT_HAS_TAG;
29973001
break;
29983002
case IB_FLOW_SPEC_ACTION_DROP:
29993003
if (FIELDS_NOT_SUPPORTED(ib_spec->drop,
@@ -3087,7 +3091,8 @@ is_valid_esp_aes_gcm(struct mlx5_core_dev *mdev,
30873091
return VALID_SPEC_NA;
30883092

30893093
return is_crypto && is_ipsec &&
3090-
(!egress || (!is_drop && !(flow_act->flags & FLOW_ACT_HAS_TAG))) ?
3094+
(!egress || (!is_drop &&
3095+
!(spec->flow_context.flags & FLOW_CONTEXT_HAS_TAG))) ?
30913096
VALID_SPEC_VALID : VALID_SPEC_INVALID;
30923097
}
30933098

@@ -3470,6 +3475,37 @@ static int flow_counters_set_data(struct ib_counters *ibcounters,
34703475
return ret;
34713476
}
34723477

3478+
static void mlx5_ib_set_rule_source_port(struct mlx5_ib_dev *dev,
3479+
struct mlx5_flow_spec *spec,
3480+
struct mlx5_eswitch_rep *rep)
3481+
{
3482+
struct mlx5_eswitch *esw = dev->mdev->priv.eswitch;
3483+
void *misc;
3484+
3485+
if (mlx5_eswitch_vport_match_metadata_enabled(esw)) {
3486+
misc = MLX5_ADDR_OF(fte_match_param, spec->match_value,
3487+
misc_parameters_2);
3488+
3489+
MLX5_SET(fte_match_set_misc2, misc, metadata_reg_c_0,
3490+
mlx5_eswitch_get_vport_metadata_for_match(esw,
3491+
rep->vport));
3492+
misc = MLX5_ADDR_OF(fte_match_param, spec->match_criteria,
3493+
misc_parameters_2);
3494+
3495+
MLX5_SET_TO_ONES(fte_match_set_misc2, misc, metadata_reg_c_0);
3496+
} else {
3497+
misc = MLX5_ADDR_OF(fte_match_param, spec->match_value,
3498+
misc_parameters);
3499+
3500+
MLX5_SET(fte_match_set_misc, misc, source_port, rep->vport);
3501+
3502+
misc = MLX5_ADDR_OF(fte_match_param, spec->match_criteria,
3503+
misc_parameters);
3504+
3505+
MLX5_SET_TO_ONES(fte_match_set_misc, misc, source_port);
3506+
}
3507+
}
3508+
34733509
static struct mlx5_ib_flow_handler *_create_flow_rule(struct mlx5_ib_dev *dev,
34743510
struct mlx5_ib_flow_prio *ft_prio,
34753511
const struct ib_flow_attr *flow_attr,
@@ -3479,7 +3515,7 @@ static struct mlx5_ib_flow_handler *_create_flow_rule(struct mlx5_ib_dev *dev,
34793515
{
34803516
struct mlx5_flow_table *ft = ft_prio->flow_table;
34813517
struct mlx5_ib_flow_handler *handler;
3482-
struct mlx5_flow_act flow_act = {.flow_tag = MLX5_FS_DEFAULT_FLOW_TAG};
3518+
struct mlx5_flow_act flow_act = {};
34833519
struct mlx5_flow_spec *spec;
34843520
struct mlx5_flow_destination dest_arr[2] = {};
34853521
struct mlx5_flow_destination *rule_dst = dest_arr;
@@ -3510,8 +3546,7 @@ static struct mlx5_ib_flow_handler *_create_flow_rule(struct mlx5_ib_dev *dev,
35103546
}
35113547

35123548
for (spec_index = 0; spec_index < flow_attr->num_of_specs; spec_index++) {
3513-
err = parse_flow_attr(dev->mdev, spec->match_criteria,
3514-
spec->match_value,
3549+
err = parse_flow_attr(dev->mdev, spec,
35153550
ib_flow, flow_attr, &flow_act,
35163551
prev_type);
35173552
if (err < 0)
@@ -3525,19 +3560,15 @@ static struct mlx5_ib_flow_handler *_create_flow_rule(struct mlx5_ib_dev *dev,
35253560
set_underlay_qp(dev, spec, underlay_qpn);
35263561

35273562
if (dev->is_rep) {
3528-
void *misc;
3563+
struct mlx5_eswitch_rep *rep;
35293564

3530-
if (!dev->port[flow_attr->port - 1].rep) {
3565+
rep = dev->port[flow_attr->port - 1].rep;
3566+
if (!rep) {
35313567
err = -EINVAL;
35323568
goto free;
35333569
}
3534-
misc = MLX5_ADDR_OF(fte_match_param, spec->match_value,
3535-
misc_parameters);
3536-
MLX5_SET(fte_match_set_misc, misc, source_port,
3537-
dev->port[flow_attr->port - 1].rep->vport);
3538-
misc = MLX5_ADDR_OF(fte_match_param, spec->match_criteria,
3539-
misc_parameters);
3540-
MLX5_SET_TO_ONES(fte_match_set_misc, misc, source_port);
3570+
3571+
mlx5_ib_set_rule_source_port(dev, spec, rep);
35413572
}
35423573

35433574
spec->match_criteria_enable = get_match_criteria_enable(spec->match_criteria);
@@ -3578,11 +3609,11 @@ static struct mlx5_ib_flow_handler *_create_flow_rule(struct mlx5_ib_dev *dev,
35783609
MLX5_FLOW_CONTEXT_ACTION_FWD_NEXT_PRIO;
35793610
}
35803611

3581-
if ((flow_act.flags & FLOW_ACT_HAS_TAG) &&
3612+
if ((spec->flow_context.flags & FLOW_CONTEXT_HAS_TAG) &&
35823613
(flow_attr->type == IB_FLOW_ATTR_ALL_DEFAULT ||
35833614
flow_attr->type == IB_FLOW_ATTR_MC_DEFAULT)) {
35843615
mlx5_ib_warn(dev, "Flow tag %u and attribute type %x isn't allowed in leftovers\n",
3585-
flow_act.flow_tag, flow_attr->type);
3616+
spec->flow_context.flow_tag, flow_attr->type);
35863617
err = -EINVAL;
35873618
goto free;
35883619
}
@@ -3962,6 +3993,7 @@ _create_raw_flow_rule(struct mlx5_ib_dev *dev,
39623993
struct mlx5_ib_flow_prio *ft_prio,
39633994
struct mlx5_flow_destination *dst,
39643995
struct mlx5_ib_flow_matcher *fs_matcher,
3996+
struct mlx5_flow_context *flow_context,
39653997
struct mlx5_flow_act *flow_act,
39663998
void *cmd_in, int inlen,
39673999
int dst_num)
@@ -3984,6 +4016,7 @@ _create_raw_flow_rule(struct mlx5_ib_dev *dev,
39844016
memcpy(spec->match_criteria, fs_matcher->matcher_mask.match_params,
39854017
fs_matcher->mask_len);
39864018
spec->match_criteria_enable = fs_matcher->match_criteria_enable;
4019+
spec->flow_context = *flow_context;
39874020

39884021
handler->rule = mlx5_add_flow_rules(ft, spec,
39894022
flow_act, dst, dst_num);
@@ -4048,6 +4081,7 @@ static bool raw_fs_is_multicast(struct mlx5_ib_flow_matcher *fs_matcher,
40484081
struct mlx5_ib_flow_handler *
40494082
mlx5_ib_raw_fs_rule_add(struct mlx5_ib_dev *dev,
40504083
struct mlx5_ib_flow_matcher *fs_matcher,
4084+
struct mlx5_flow_context *flow_context,
40514085
struct mlx5_flow_act *flow_act,
40524086
u32 counter_id,
40534087
void *cmd_in, int inlen, int dest_id,
@@ -4100,7 +4134,8 @@ mlx5_ib_raw_fs_rule_add(struct mlx5_ib_dev *dev,
41004134
dst_num++;
41014135
}
41024136

4103-
handler = _create_raw_flow_rule(dev, ft_prio, dst, fs_matcher, flow_act,
4137+
handler = _create_raw_flow_rule(dev, ft_prio, dst, fs_matcher,
4138+
flow_context, flow_act,
41044139
cmd_in, inlen, dst_num);
41054140

41064141
if (IS_ERR(handler)) {
@@ -4472,7 +4507,7 @@ static void mlx5_ib_handle_internal_error(struct mlx5_ib_dev *ibdev)
44724507
* lock/unlock above locks Now need to arm all involved CQs.
44734508
*/
44744509
list_for_each_entry(mcq, &cq_armed_list, reset_notify) {
4475-
mcq->comp(mcq);
4510+
mcq->comp(mcq, NULL);
44764511
}
44774512
spin_unlock_irqrestore(&ibdev->reset_flow_resource_lock, flags);
44784513
}
@@ -6802,7 +6837,7 @@ static void *mlx5_ib_add(struct mlx5_core_dev *mdev)
68026837
printk_once(KERN_INFO "%s", mlx5_version);
68036838

68046839
if (MLX5_ESWITCH_MANAGER(mdev) &&
6805-
mlx5_ib_eswitch_mode(mdev->priv.eswitch) == SRIOV_OFFLOADS) {
6840+
mlx5_ib_eswitch_mode(mdev->priv.eswitch) == MLX5_ESWITCH_OFFLOADS) {
68066841
if (!mlx5_core_mp_enabled(mdev))
68076842
mlx5_ib_register_vport_reps(mdev);
68086843
return mdev;

drivers/infiniband/hw/mlx5/mlx5_ib.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -985,7 +985,6 @@ struct mlx5_ib_dev {
985985
u16 devx_whitelist_uid;
986986
struct mlx5_srq_table srq_table;
987987
struct mlx5_async_ctx async_ctx;
988-
int free_port;
989988
};
990989

991990
static inline struct mlx5_ib_cq *to_mibcq(struct mlx5_core_cq *mcq)
@@ -1330,6 +1329,7 @@ extern const struct uapi_definition mlx5_ib_devx_defs[];
13301329
extern const struct uapi_definition mlx5_ib_flow_defs[];
13311330
struct mlx5_ib_flow_handler *mlx5_ib_raw_fs_rule_add(
13321331
struct mlx5_ib_dev *dev, struct mlx5_ib_flow_matcher *fs_matcher,
1332+
struct mlx5_flow_context *flow_context,
13331333
struct mlx5_flow_act *flow_act, u32 counter_id,
13341334
void *cmd_in, int inlen, int dest_id, int dest_type);
13351335
bool mlx5_ib_devx_is_flow_dest(void *obj, int *dest_id, int *dest_type);

0 commit comments

Comments
 (0)