Friday, October 19, 2018 6:21 PM, Slava Ovsiienko: > Subject: [PATCH v3 3/6] net/mlx5: flow counters simplifying runtime support > check
How about "net/mlx5: simplify flow counters support check > > This part of patchset removes the redundant check of counters support in > runtime. The flag flow_counter_en is eliminated from the code. The Verbs > create counter function just returns an error if no counter support presented > in kernel. > > Some log messages regarding the counter support type and presence are > added. > > mlx5_flow_validate_action_count() is also updated due to flow_counter_en > flag removal. In continue to previous patch comments, this patch should only make the needed preparation for the new counters. The new counters macro along with implementation should be on a separate commit. > > Signed-off-by: Viacheslav Ovsiienko <viachesl...@mellanox.com> > --- > drivers/net/mlx5/mlx5.c | 15 ++++++++++----- > drivers/net/mlx5/mlx5.h | 1 - > drivers/net/mlx5/mlx5_flow.c | 16 +++++++++------- > 3 files changed, 19 insertions(+), 13 deletions(-) > > diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c index > bb19085..8a33639 100644 > --- a/drivers/net/mlx5/mlx5.c > +++ b/drivers/net/mlx5/mlx5.c > @@ -1009,12 +1009,17 @@ > config.hw_csum = !!(attr.device_cap_flags_ex & > IBV_DEVICE_RAW_IP_CSUM); > DRV_LOG(DEBUG, "checksum offloading is %ssupported", > (config.hw_csum ? "" : "not ")); > -#ifdef HAVE_IBV_DEVICE_COUNTERS_SET_V42 > - config.flow_counter_en = !!attr.max_counter_sets; > +#if defined(HAVE_IBV_DEVICE_COUNTERS_SET_V42) > mlx5_glue->describe_counter_set(ctx, 0, &cs_desc); > - DRV_LOG(DEBUG, "counter type = %d, num of cs = %ld, attributes = > %d", > - cs_desc.counter_type, cs_desc.num_of_cs, > - cs_desc.attributes); > + DRV_LOG(DEBUG, "Flow counters are supported (4.2), " > + "type = %d, num of cs = %ld, attr = %d", > + cs_desc.counter_type, > + cs_desc.num_of_cs, > + cs_desc.attributes); I would refine on saying the counters are supported (since you cannot be sure). I would recommend to have a message log only if the macro is not defined to say "flow counters are not supported". This is the only thing we know for sure. > +#elif defined(HAVE_IBV_DEVICE_COUNTERS_SET_V45) > + DRV_LOG(DEBUG, "Flow counters are supported (4.5)"); #else > + DRV_LOG(DEBUG, "Flow counters are not supported"); > #endif > config.ind_table_max_size = > attr.rss_caps.max_rwq_indirection_table_size; > diff --git a/drivers/net/mlx5/mlx5.h b/drivers/net/mlx5/mlx5.h index > d14239c..74d87c0 100644 > --- a/drivers/net/mlx5/mlx5.h > +++ b/drivers/net/mlx5/mlx5.h > @@ -114,7 +114,6 @@ struct mlx5_dev_config { > unsigned int tunnel_en:1; > /* Whether tunnel stateless offloads are supported. */ > unsigned int mpls_en:1; /* MPLS over GRE/UDP is enabled. */ > - unsigned int flow_counter_en:1; /* Whether flow counter is > supported. */ > unsigned int cqe_comp:1; /* CQE compression is enabled. */ > unsigned int tso:1; /* Whether TSO is supported. */ > unsigned int tx_vec_en:1; /* Tx vector is enabled. */ diff --git > a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c index > fcabab0..c15722d 100644 > --- a/drivers/net/mlx5/mlx5_flow.c > +++ b/drivers/net/mlx5/mlx5_flow.c > @@ -921,22 +921,24 @@ uint32_t mlx5_flow_adjust_priority(struct > rte_eth_dev *dev, int32_t priority, > * 0 on success, a negative errno value otherwise and rte_ernno is set. > */ > int > -mlx5_flow_validate_action_count(struct rte_eth_dev *dev, > +mlx5_flow_validate_action_count(struct rte_eth_dev *dev __rte_unused, > const struct rte_flow_attr *attr, > struct rte_flow_error *error) > { > - struct priv *priv = dev->data->dev_private; > - > - if (!priv->config.flow_counter_en) > - return rte_flow_error_set(error, ENOTSUP, > - RTE_FLOW_ERROR_TYPE_ACTION, > NULL, > - "flow counters are not supported."); > +#if !defined(HAVE_IBV_DEVICE_COUNTERS_SET_V42) && \ > + !defined(HAVE_IBV_DEVICE_COUNTERS_SET_V45) > + (void)attr; > + return rte_flow_error_set(error, ENOTSUP, > + RTE_FLOW_ERROR_TYPE_ACTION, NULL, > + "flow counters are not supported."); #else This ifdef addition is not needed. Just let It fall on the counter creation (like you commit log says). > if (attr->egress) > return rte_flow_error_set(error, ENOTSUP, > > RTE_FLOW_ERROR_TYPE_ATTR_EGRESS, NULL, > "count action not supported for " > "egress"); > return 0; > +#endif > } > > /** > -- > 1.8.3.1