On Tue, Dec 13, 2022 at 06:15:09PM +0800, Huisong Li wrote: > Currently, use rte_tel_value_type as index of array to find the > tel_container_types in rte_tel_data_start_array. It's not good > for maintenance. > > Fixes: ed1bfad7d384 ("telemetry: add functions for returning callback data") > Cc: sta...@dpdk.org > > Signed-off-by: Huisong Li <lihuis...@huawei.com> > Acked-by: Morten Brørup <m...@smartsharesystems.com> > Acked-by: Chengwen Feng <fengcheng...@huawei.com> > --- > lib/telemetry/telemetry_data.c | 28 ++++++++++++++++++++++------ > 1 file changed, 22 insertions(+), 6 deletions(-) > > diff --git a/lib/telemetry/telemetry_data.c b/lib/telemetry/telemetry_data.c > index 34366ecee3..080d99aec9 100644 > --- a/lib/telemetry/telemetry_data.c > +++ b/lib/telemetry/telemetry_data.c > @@ -15,13 +15,29 @@ > int > rte_tel_data_start_array(struct rte_tel_data *d, enum rte_tel_value_type > type) > { > - enum tel_container_types array_types[] = { > - RTE_TEL_ARRAY_STRING, /* RTE_TEL_STRING_VAL = 0 */ > - RTE_TEL_ARRAY_INT, /* RTE_TEL_INT_VAL = 1 */ > - RTE_TEL_ARRAY_U64, /* RTE_TEL_u64_VAL = 2 */ > - RTE_TEL_ARRAY_CONTAINER, /* RTE_TEL_CONTAINER = 3 */ > + struct { > + enum rte_tel_value_type value_type; > + enum tel_container_types array_type; > + } value2array_types_map[] = { > + {RTE_TEL_STRING_VAL, RTE_TEL_ARRAY_STRING}, > + {RTE_TEL_INT_VAL, RTE_TEL_ARRAY_INT}, > + {RTE_TEL_U64_VAL, RTE_TEL_ARRAY_U64}, > + {RTE_TEL_CONTAINER, RTE_TEL_ARRAY_CONTAINER}, > }; > - d->type = array_types[type]; > + int array_types = -1; > + uint16_t i; > + > + for (i = 0; i < RTE_DIM(value2array_types_map); i++) { > + if (type == value2array_types_map[i].value_type) { > + array_types = value2array_types_map[i].array_type; > + break; > + } > + } > + While this may need cleanup, I don't think this particular way is the best method to use, so NAK for this patch for now.
/Bruce