Cleanups to flow creation paths
Subsystems (3)
cover Cleanups to flow creation paths
From: Leon Romanovsky <[email protected]>
Very straightforward cleanup.
Thanks
Leon Romanovsky (3):
RDMA/mlx5: Simplify multiple else-if cases with switch keyword RDMA/mlx5: Replace open-coded offsetofend() macro
RDMA: Remove constant domain argument from flow creation call
drivers/infiniband/core/uverbs_cmd.c | 4 +- drivers/infiniband/hw/mlx4/main.c | 31 ++---- drivers/infiniband/hw/mlx5/ah.c | 4 +- drivers/infiniband/hw/mlx5/fs.c | 145 +++++++++++++++------------ drivers/infiniband/hw/mlx5/mr.c | 4 +- drivers/infiniband/hw/mlx5/qp.c | 20 ++-- include/rdma/ib_verbs.h | 13 +-- 7 files changed, 108 insertions(+), 113 deletions(-)
--
2.26.2
PATCH 1/3 RDMA/mlx5: Simplify multiple else-if cases with switch keyword
From: Leon Romanovsky <[email protected]>
Improve readability of fs.c by converting multiple else-if constructions to be implemented with switch keyword.
--- drivers/infiniband/hw/mlx5/fs.c | 124 +++++++++++++++++++------------- 1 file changed, 75 insertions(+), 49 deletions(-)
drivers/infiniband/hw/mlx5/fs.c +75 -49
@@ -767,6 +767,7 @@ static struct mlx5_ib_flow_prio *get_flow_table(struct mlx5_ib_dev *dev, {bool dont_trap = flow_attr->flags &IB_FLOW_ATTR_FLAGS_DONT_TRAP ;struct mlx5_flow_namespace *ns =NULL ; +enum mlx5_flow_namespace_type fn_type;struct mlx5_ib_flow_prio *prio;struct mlx5_flow_table *ft;int max_table_size;
@@ -780,11 +781,9 @@ static struct mlx5_ib_flow_prio *get_flow_table(struct mlx5_ib_dev *dev, log_max_ft_size)); esw_encap =mlx5_eswitch_get_encap_mode (dev->mdev) !=DEVLINK_ESWITCH_ENCAP_MODE_NONE ; -if (flow_attr->type ==IB_FLOW_ATTR_NORMAL ) { -enum mlx5_flow_namespace_type fn_type; - -if (flow_is_multicast_only (flow_attr) && - !dont_trap) +switch (flow_attr->type) { +case IB_FLOW_ATTR_NORMAL : +if (flow_is_multicast_only (flow_attr) && !dont_trap) priority =MLX5_IB_FLOW_MCAST_PRIO ;else priority = ib_prio_to_core_prio(flow_attr->priority,
@@ -797,12 +796,11 @@ static struct mlx5_ib_flow_prio *get_flow_table(struct mlx5_ib_dev *dev, flags |=MLX5_FLOW_TABLE_TUNNEL_EN_DECAP ;if (!dev->is_rep && !esw_encap &&MLX5_CAP_FLOWTABLE_NIC_RX (dev->mdev, - reformat_l3_tunnel_to_l2)) + reformat_l3_tunnel_to_l2)) flags |=MLX5_FLOW_TABLE_TUNNEL_EN_REFORMAT ; }else { - max_table_size = -BIT (MLX5_CAP_FLOWTABLE_NIC_TX (dev->mdev, - log_max_ft_size)); + max_table_size =BIT (MLX5_CAP_FLOWTABLE_NIC_TX ( + dev->mdev, log_max_ft_size)); fn_type =MLX5_FLOW_NAMESPACE_EGRESS ; prio = &dev->flow_db->egress_prios[priority]; if (!dev->is_rep && !esw_encap &&
@@ -812,27 +810,31 @@ static struct mlx5_ib_flow_prio *get_flow_table(struct mlx5_ib_dev *dev, ns =mlx5_get_flow_namespace (dev->mdev, fn_type); num_entries =MLX5_FS_MAX_ENTRIES ; num_groups =MLX5_FS_MAX_TYPES ; - }else if (flow_attr->type ==IB_FLOW_ATTR_ALL_DEFAULT || - flow_attr->type ==IB_FLOW_ATTR_MC_DEFAULT ) { +break ; +case IB_FLOW_ATTR_ALL_DEFAULT : +case IB_FLOW_ATTR_MC_DEFAULT : ns =mlx5_get_flow_namespace (dev->mdev,MLX5_FLOW_NAMESPACE_LEFTOVERS ); -build_leftovers_ft_param (&priority, - &num_entries, - &num_groups); +build_leftovers_ft_param (&priority, &num_entries, &num_groups); prio = &dev->flow_db->prios[MLX5_IB_FLOW_LEFTOVERS_PRIO ]; - }else if (flow_attr->type ==IB_FLOW_ATTR_SNIFFER ) { +break ; +case IB_FLOW_ATTR_SNIFFER :if (!MLX5_CAP_FLOWTABLE (dev->mdev, allow_sniffer_and_nic_rx_shared_tir))return ERR_PTR (-EOPNOTSUPP ); - ns =mlx5_get_flow_namespace (dev->mdev, ft_type ==MLX5_IB_FT_RX ? -MLX5_FLOW_NAMESPACE_SNIFFER_RX : -MLX5_FLOW_NAMESPACE_SNIFFER_TX ); + ns =mlx5_get_flow_namespace ( + dev->mdev, ft_type ==MLX5_IB_FT_RX ? +MLX5_FLOW_NAMESPACE_SNIFFER_RX : +MLX5_FLOW_NAMESPACE_SNIFFER_TX ); prio = &dev->flow_db->sniffer[ft_type]; priority =0 ; num_entries =1 ; num_groups =1 ; +break ; +default : +break ; }if (!ns)
@@ -1246,19 +1248,22 @@ static struct ib_flow *mlx5_ib_create_flow(struct ib_qp *qp, dst->tir_num = mqp->raw_packet_qp.rq.tirn; } -if (flow_attr->type ==IB_FLOW_ATTR_NORMAL ) { +switch (flow_attr->type) { +case IB_FLOW_ATTR_NORMAL : underlay_qpn = (mqp->flags &IB_QP_CREATE_SOURCE_QPN ) ? mqp->underlay_qpn :0 ; handler =_create_flow_rule (dev, ft_prio, flow_attr, dst, underlay_qpn, ucmd); - }else if (flow_attr->type ==IB_FLOW_ATTR_ALL_DEFAULT || - flow_attr->type ==IB_FLOW_ATTR_MC_DEFAULT ) { - handler =create_leftovers_rule (dev, ft_prio, flow_attr, - dst); - }else if (flow_attr->type ==IB_FLOW_ATTR_SNIFFER ) { +break ; +case IB_FLOW_ATTR_ALL_DEFAULT : +case IB_FLOW_ATTR_MC_DEFAULT : + handler =create_leftovers_rule (dev, ft_prio, flow_attr, dst); +break ; +case IB_FLOW_ATTR_SNIFFER : handler =create_sniffer_rule (dev, ft_prio, ft_prio_tx, dst); - }else { +break ; +default : err = -EINVAL ; goto destroy_ft; }
@@ -1306,39 +1311,47 @@ _get_flow_table(struct mlx5_ib_dev *dev, esw_encap =mlx5_eswitch_get_encap_mode (dev->mdev) !=DEVLINK_ESWITCH_ENCAP_MODE_NONE ; -if (fs_matcher->ns_type ==MLX5_FLOW_NAMESPACE_BYPASS ) { - max_table_size =BIT (MLX5_CAP_FLOWTABLE_NIC_RX (dev->mdev, - log_max_ft_size)); +switch (fs_matcher->ns_type) { +case MLX5_FLOW_NAMESPACE_BYPASS : + max_table_size =BIT ( +MLX5_CAP_FLOWTABLE_NIC_RX (dev->mdev, log_max_ft_size));if (MLX5_CAP_FLOWTABLE_NIC_RX (dev->mdev, decap) && !esw_encap) flags |=MLX5_FLOW_TABLE_TUNNEL_EN_DECAP ;if (MLX5_CAP_FLOWTABLE_NIC_RX (dev->mdev, reformat_l3_tunnel_to_l2) && !esw_encap) flags |=MLX5_FLOW_TABLE_TUNNEL_EN_REFORMAT ; - }else if (fs_matcher->ns_type ==MLX5_FLOW_NAMESPACE_EGRESS ) { +break ; +case MLX5_FLOW_NAMESPACE_EGRESS : max_table_size =BIT (MLX5_CAP_FLOWTABLE_NIC_TX (dev->mdev, log_max_ft_size)); -if (MLX5_CAP_FLOWTABLE_NIC_TX (dev->mdev, reformat) && !esw_encap) +if (MLX5_CAP_FLOWTABLE_NIC_TX (dev->mdev, reformat) && + !esw_encap) flags |=MLX5_FLOW_TABLE_TUNNEL_EN_REFORMAT ; - }else if (fs_matcher->ns_type ==MLX5_FLOW_NAMESPACE_FDB ) { +break ; +case MLX5_FLOW_NAMESPACE_FDB : max_table_size =BIT (MLX5_CAP_ESW_FLOWTABLE_FDB (dev->mdev, log_max_ft_size));if (MLX5_CAP_ESW_FLOWTABLE_FDB (dev->mdev, decap) && esw_encap) flags |=MLX5_FLOW_TABLE_TUNNEL_EN_DECAP ; -if (MLX5_CAP_ESW_FLOWTABLE_FDB (dev->mdev, reformat_l3_tunnel_to_l2) && +if (MLX5_CAP_ESW_FLOWTABLE_FDB (dev->mdev, + reformat_l3_tunnel_to_l2) && esw_encap) flags |=MLX5_FLOW_TABLE_TUNNEL_EN_REFORMAT ; priority =FDB_BYPASS_PATH ; - }else if (fs_matcher->ns_type ==MLX5_FLOW_NAMESPACE_RDMA_RX ) { - max_table_size = -BIT (MLX5_CAP_FLOWTABLE_RDMA_RX (dev->mdev, - log_max_ft_size)); +break ; +case MLX5_FLOW_NAMESPACE_RDMA_RX : + max_table_size =BIT ( +MLX5_CAP_FLOWTABLE_RDMA_RX (dev->mdev, log_max_ft_size)); priority = fs_matcher->priority; - }else if (fs_matcher->ns_type ==MLX5_FLOW_NAMESPACE_RDMA_TX ) { - max_table_size = -BIT (MLX5_CAP_FLOWTABLE_RDMA_TX (dev->mdev, - log_max_ft_size)); +break ; +case MLX5_FLOW_NAMESPACE_RDMA_TX : + max_table_size =BIT ( +MLX5_CAP_FLOWTABLE_RDMA_TX (dev->mdev, log_max_ft_size)); priority = fs_matcher->priority; +break ; +default : +break ; } max_table_size =min_t (int, max_table_size,MLX5_FS_MAX_ENTRIES );
@@ -1347,16 +1360,24 @@ _get_flow_table(struct mlx5_ib_dev *dev,if (!ns)return ERR_PTR (-EOPNOTSUPP ); -if (fs_matcher->ns_type ==MLX5_FLOW_NAMESPACE_BYPASS ) +switch (fs_matcher->ns_type) { +case MLX5_FLOW_NAMESPACE_BYPASS : prio = &dev->flow_db->prios[priority]; -else if (fs_matcher->ns_type ==MLX5_FLOW_NAMESPACE_EGRESS ) +break ; +case MLX5_FLOW_NAMESPACE_EGRESS : prio = &dev->flow_db->egress_prios[priority]; -else if (fs_matcher->ns_type ==MLX5_FLOW_NAMESPACE_FDB ) +break ; +case MLX5_FLOW_NAMESPACE_FDB : prio = &dev->flow_db->fdb; -else if (fs_matcher->ns_type ==MLX5_FLOW_NAMESPACE_RDMA_RX ) +break ; +case MLX5_FLOW_NAMESPACE_RDMA_RX : prio = &dev->flow_db->rdma_rx[priority]; -else if (fs_matcher->ns_type ==MLX5_FLOW_NAMESPACE_RDMA_TX ) +break ; +case MLX5_FLOW_NAMESPACE_RDMA_TX : prio = &dev->flow_db->rdma_tx[priority]; +break ; +default :return ERR_PTR (-EINVAL ); + }if (!prio)return ERR_PTR (-EINVAL );
@@ -1489,20 +1510,25 @@ static struct mlx5_ib_flow_handler *raw_fs_rule_add( goto unlock; } -if (dest_type ==MLX5_FLOW_DESTINATION_TYPE_TIR ) { +switch (dest_type) { +case MLX5_FLOW_DESTINATION_TYPE_TIR : dst[dst_num].type = dest_type; dst[dst_num++].tir_num = dest_id; flow_act->action |=MLX5_FLOW_CONTEXT_ACTION_FWD_DEST ; - }else if (dest_type ==MLX5_FLOW_DESTINATION_TYPE_FLOW_TABLE ) { +break ; +case MLX5_FLOW_DESTINATION_TYPE_FLOW_TABLE : dst[dst_num].type =MLX5_FLOW_DESTINATION_TYPE_FLOW_TABLE_NUM ; dst[dst_num++].ft_num = dest_id; flow_act->action |=MLX5_FLOW_CONTEXT_ACTION_FWD_DEST ; - }else if (dest_type ==MLX5_FLOW_DESTINATION_TYPE_PORT ) { +break ; +case MLX5_FLOW_DESTINATION_TYPE_PORT : dst[dst_num++].type =MLX5_FLOW_DESTINATION_TYPE_PORT ; flow_act->action |=MLX5_FLOW_CONTEXT_ACTION_ALLOW ; +break ; +default : +break ; } -if (flow_act->action &MLX5_FLOW_CONTEXT_ACTION_COUNT ) { dst[dst_num].type =MLX5_FLOW_DESTINATION_TYPE_COUNTER ; dst[dst_num].counter_id = counter_id;
Signature · 1 line
2.26.2
PATCH 2/3 RDMA/mlx5: Replace open-coded offsetofend() macro
In reply to Leon RomanovskyFrom: Leon Romanovsky <[email protected]>
Clean mlx5_ib from open-coded implementations of offsetofend.
--- drivers/infiniband/hw/mlx5/ah.c | 4 ++-- drivers/infiniband/hw/mlx5/fs.c | 12 ++++-------- drivers/infiniband/hw/mlx5/mr.c | 4 ++-- drivers/infiniband/hw/mlx5/qp.c | 20 +++++++++++--------- 4 files changed, 19 insertions(+), 21 deletions(-)
drivers/infiniband/hw/mlx5/ah.c +2 -2
@@ -106,8 +106,8 @@ int mlx5_ib_create_ah(struct ib_ah *ibah, struct rdma_ah_init_attr *init_attr,if (ah_type ==RDMA_AH_ATTR_TYPE_ROCE && udata) {int err;struct mlx5_ib_create_ah_resp resp = {}; -u32 min_resp_len = offsetof(typeof (resp ), dmac) + -sizeof (resp.dmac); +u32 min_resp_len = + offsetofend(struct mlx5_ib_create_ah_resp, dmac);if (udata->outlen < min_resp_len)return -EINVAL ;
drivers/infiniband/hw/mlx5/fs.c +4 -8
@@ -136,12 +136,9 @@ static int check_mpls_supp_fields(u32 field_support, const __be32 *set_mask)#define LAST_COUNTERS_FIELD counters/* Field is the last supported field */ -#define FIELDS_NOT_SUPPORTED (filter, field)\ - memchr_inv((void *)&filter.field +\ - sizeof(filter.field), 0,\ - sizeof(filter) -\ - offsetof(typeof(filter), field) -\ - sizeof(filter.field)) +#define FIELDS_NOT_SUPPORTED (filter, field) \ + memchr_inv((void *)&filter.field + sizeof(filter.field), 0, \ + sizeof(filter) - offsetofend(typeof(filter), field)) int parse_flow_flow_action(struct mlx5_ib_flow_action *maction, bool is_egress,
@@ -1165,8 +1162,7 @@ static struct ib_flow *mlx5_ib_create_flow(struct ib_qp *qp,int underlay_qpn;if (udata && udata->inlen) { - min_ucmd_sz = offsetof(typeof (ucmd_hdr ), reserved) + -sizeof (ucmd_hdr.reserved); + min_ucmd_sz = offsetofend(struct mlx5_ib_create_flow, reserved);if (udata->inlen < min_ucmd_sz)return ERR_PTR (-EOPNOTSUPP );
drivers/infiniband/hw/mlx5/mr.c +2 -2
@@ -2047,8 +2047,8 @@ struct ib_mw *mlx5_ib_alloc_mw(struct ib_pd *pd, enum ib_mw_type type, mw->ibmw.rkey = mw->mmkey.key; mw->ndescs = ndescs; - resp.response_length =min (offsetof(typeof (resp ), response_length) + -sizeof (resp.response_length), udata->outlen); + resp.response_length = +min (offsetofend (typeof (resp), response_length), udata->outlen);if (resp.response_length) { err =ib_copy_to_udata (udata, &resp, resp.response_length);if (err) {
drivers/infiniband/hw/mlx5/qp.c +11 -9
@@ -4953,8 +4953,8 @@ static int prepare_user_rq(struct ib_pd *pd,int err;size_t required_cmd_sz; - required_cmd_sz = offsetof(typeof (ucmd ), single_stride_log_num_of_bytes) - +sizeof (ucmd.single_stride_log_num_of_bytes); + required_cmd_sz = offsetofend(struct mlx5_ib_create_wq, + single_stride_log_num_of_bytes);if (udata->inlen < required_cmd_sz) {mlx5_ib_dbg (dev,"invalid inlen\n" );return -EINVAL ;
@@ -5038,7 +5038,7 @@ struct ib_wq *mlx5_ib_create_wq(struct ib_pd *pd,if (!udata)return ERR_PTR (-ENOSYS ); - min_resp_len = offsetof(typeof (resp ), reserved) +sizeof (resp.reserved); + min_resp_len = offsetofend(struct mlx5_ib_create_wq_resp, reserved);if (udata->outlen && udata->outlen < min_resp_len)return ERR_PTR (-EINVAL );
@@ -5068,8 +5068,8 @@ struct ib_wq *mlx5_ib_create_wq(struct ib_pd *pd, rwq->ibwq.wq_num = rwq->core_qp.qpn; rwq->ibwq.state =IB_WQS_RESET ;if (udata->outlen) { - resp.response_length = offsetof(typeof (resp ), response_length) + -sizeof (resp.response_length); + resp.response_length =offsetofend ( + struct mlx5_ib_create_wq_resp, response_length); err =ib_copy_to_udata (udata, &resp, resp.response_length);if (err) goto err_copy;
@@ -5126,7 +5126,8 @@ struct ib_rwq_ind_table *mlx5_ib_create_rwq_ind_table(struct ib_device *device,return ERR_PTR (-EINVAL ); } - min_resp_len = offsetof(typeof (resp ), reserved) +sizeof (resp.reserved); + min_resp_len = + offsetofend(struct mlx5_ib_create_rwq_ind_tbl_resp, reserved);if (udata->outlen && udata->outlen < min_resp_len)return ERR_PTR (-EINVAL );
@@ -5160,8 +5161,9 @@ struct ib_rwq_ind_table *mlx5_ib_create_rwq_ind_table(struct ib_device *device, rwq_ind_tbl->ib_rwq_ind_tbl.ind_tbl_num = rwq_ind_tbl->rqtn;if (udata->outlen) { - resp.response_length = offsetof(typeof (resp ), response_length) + -sizeof (resp.response_length); + resp.response_length = + offsetofend(struct mlx5_ib_create_rwq_ind_tbl_resp, + response_length); err =ib_copy_to_udata (udata, &resp, resp.response_length);if (err) goto err_copy;
@@ -5201,7 +5203,7 @@ int mlx5_ib_modify_wq(struct ib_wq *wq, struct ib_wq_attr *wq_attr,void *rqc;void *in; - required_cmd_sz = offsetof(typeof (ucmd ), reserved) +sizeof (ucmd.reserved); + required_cmd_sz = offsetofend(struct mlx5_ib_modify_wq, reserved);if (udata->inlen < required_cmd_sz)return -EINVAL ;
Signature · 1 line
2.26.2
PATCH 3/3 RDMA: Remove constant domain argument from flow creation call
In reply to Leon RomanovskyFrom: Leon Romanovsky <[email protected]>
The "domain" argument is constant and modern device (mlx5) doesn't support anything except IB_FLOW_DOMAIN_USER, so delete this extra parameter and simplify code.
--- drivers/infiniband/core/uverbs_cmd.c | 4 ++-- drivers/infiniband/hw/mlx4/main.c | 31 +++++++--------------------- drivers/infiniband/hw/mlx5/fs.c | 9 +++----- include/rdma/ib_verbs.h | 13 +----------- 4 files changed, 14 insertions(+), 43 deletions(-)
drivers/infiniband/core/uverbs_cmd.c +2 -2
@@ -3232,8 +3232,8 @@ static int ib_uverbs_ex_create_flow(struct uverbs_attr_bundle *attrs) goto err_free; } - flow_id = qp->device->ops.create_flow ( - qp, flow_attr,IB_FLOW_DOMAIN_USER , &attrs->driver_udata); + flow_id = qp->device->ops.create_flow (qp, flow_attr, + &attrs->driver_udata);if (IS_ERR (flow_id)) { err =PTR_ERR (flow_id);
drivers/infiniband/hw/mlx4/main.c +8 -23
@@ -1532,23 +1532,11 @@ static int __mlx4_ib_create_flow(struct ib_qp *qp, struct ib_flow_attr *flow_attstruct mlx4_net_trans_rule_hw_ctrl *ctrl;int default_flow; -static const u16 __mlx4_domain[] = { - [IB_FLOW_DOMAIN_USER ] =MLX4_DOMAIN_UVERBS , - [IB_FLOW_DOMAIN_ETHTOOL ] =MLX4_DOMAIN_ETHTOOL , - [IB_FLOW_DOMAIN_RFS ] =MLX4_DOMAIN_RFS , - [IB_FLOW_DOMAIN_NIC ] =MLX4_DOMAIN_NIC , - }; -if (flow_attr->priority >MLX4_IB_FLOW_MAX_PRIO ) {pr_err ("Invalid priority value %d\n" , flow_attr->priority);return -EINVAL ; } -if (domain >=IB_FLOW_DOMAIN_NUM ) { -pr_err ("Invalid domain value %d\n" , domain); -return -EINVAL ; - } -if (mlx4_map_sw_to_hw_steering_mode (mdev->dev, flow_type) <0 )return -EINVAL ;
@@ -1557,8 +1545,7 @@ static int __mlx4_ib_create_flow(struct ib_qp *qp, struct ib_flow_attr *flow_attreturn PTR_ERR (mailbox); ctrl = mailbox->buf; - ctrl->prio =cpu_to_be16 (__mlx4_domain[domain] | - flow_attr->priority); + ctrl->prio =cpu_to_be16 (domain | flow_attr->priority); ctrl->type =mlx4_map_sw_to_hw_steering_mode (mdev->dev, flow_type); ctrl->port = flow_attr->port; ctrl->qpn =cpu_to_be32 (qp->qp_num);
@@ -1700,8 +1687,8 @@ static int mlx4_ib_add_dont_trap_rule(struct mlx4_dev *dev, }static struct ib_flow *mlx4_ib_create_flow (struct ib_qp *qp, -struct ib_flow_attr *flow_attr, -int domain,struct ib_udata *udata) +struct ib_flow_attr *flow_attr, +struct ib_udata *udata) {int err =0 , i =0 , j =0 ;struct mlx4_ib_flow *mflow;
@@ -1767,8 +1754,8 @@ static struct ib_flow *mlx4_ib_create_flow(struct ib_qp *qp, }while (i <ARRAY_SIZE (type) && type[i]) { - err =__mlx4_ib_create_flow (qp, flow_attr, domain, type[i], - &mflow->reg_id[i].id); + err =__mlx4_ib_create_flow (qp, flow_attr,MLX4_DOMAIN_UVERBS , + type[i], &mflow->reg_id[i].id);if (err) goto err_create_flow;if (is_bonded) {
@@ -1777,7 +1764,7 @@ static struct ib_flow *mlx4_ib_create_flow(struct ib_qp *qp,*/ flow_attr->port =2 ; err =__mlx4_ib_create_flow (qp, flow_attr, - domain, type[j], +MLX4_DOMAIN_UVERBS , type[j], &mflow->reg_id[j].mirror); flow_attr->port =1 ;if (err)
@@ -2988,10 +2975,8 @@ int mlx4_ib_steer_qp_reg(struct mlx4_ib_dev *mdev, struct mlx4_ib_qp *mqp,/* Add an empty rule for IB L2 */ memset (&ib_spec->mask,0 ,sizeof (ib_spec->mask)); - err =__mlx4_ib_create_flow (&mqp->ibqp, flow, -IB_FLOW_DOMAIN_NIC , -MLX4_FS_REGULAR , - &mqp->reg_id); + err =__mlx4_ib_create_flow (&mqp->ibqp, flow,MLX4_DOMAIN_NIC , +MLX4_FS_REGULAR , &mqp->reg_id); }else { err =__mlx4_ib_destroy_flow (mdev->dev, mqp->reg_id); }
drivers/infiniband/hw/mlx5/fs.c +3 -6
@@ -1143,10 +1143,8 @@ static struct mlx5_ib_flow_handler *create_sniffer_rule(struct mlx5_ib_dev *dev,return ERR_PTR (err); } -static struct ib_flow *mlx5_ib_create_flow (struct ib_qp *qp,struct ib_flow_attr *flow_attr, -int domain,struct ib_udata *udata) {struct mlx5_ib_dev *dev =to_mdev (qp->device);
@@ -1196,10 +1194,9 @@ static struct ib_flow *mlx5_ib_create_flow(struct ib_qp *qp, goto free_ucmd; } -if (domain !=IB_FLOW_DOMAIN_USER || - flow_attr->port > dev->num_ports || - (flow_attr->flags & ~(IB_FLOW_ATTR_FLAGS_DONT_TRAP | -IB_FLOW_ATTR_FLAGS_EGRESS ))) { +if (flow_attr->port > dev->num_ports || + (flow_attr->flags & + ~(IB_FLOW_ATTR_FLAGS_DONT_TRAP |IB_FLOW_ATTR_FLAGS_EGRESS ))) { err = -EINVAL ; goto free_ucmd; }
include/rdma/ib_verbs.h +1 -12
@@ -1864,17 +1864,6 @@ enum ib_flow_spec_type {#define IB_FLOW_SPEC_LAYER_MASK 0xF0#define IB_FLOW_SPEC_SUPPORT_LAYERS 10 -/* Flow steering rule priority is set according to it's domain. -* Lower domain value means higher priority. -*/ -enum ib_flow_domain { -IB_FLOW_DOMAIN_USER , -IB_FLOW_DOMAIN_ETHTOOL , -IB_FLOW_DOMAIN_RFS , -IB_FLOW_DOMAIN_NIC , -IB_FLOW_DOMAIN_NUM /* Must be last */ -}; -enum ib_flow_flags {IB_FLOW_ATTR_FLAGS_DONT_TRAP =1UL <<1 ,/* Continue match, no steal */ IB_FLOW_ATTR_FLAGS_EGRESS =1UL <<2 ,/* Egress flow */
@@ -2472,7 +2461,7 @@ struct ib_device_ops {void (*dealloc_xrcd)(struct ib_xrcd *xrcd,struct ib_udata *udata);struct ib_flow *(*create_flow)(struct ib_qp *qp,struct ib_flow_attr *flow_attr, -int domain,struct ib_udata *udata); +struct ib_udata *udata);int (*destroy_flow)(struct ib_flow *flow_id); struct ib_flow_action *(*create_flow_action_esp)( struct ib_device *device,
Signature · 1 line
2.26.2
Quoted 10 lines · Leon Romanovsky
From: Leon Romanovsky <[email protected]>
Very straightforward cleanup.
Thanks
Leon Romanovsky (3):
RDMA/mlx5: Simplify multiple else-if cases with switch keyword RDMA/mlx5: Replace open-codedoffsetofend()macro
RDMA: Remove constant domain argument from flow creation call
Applied to for-next, thanks
Jason