[dpdk-dev] [PATCH v5 4/4] net/mlx5: support e-switch flow count action

Ferruh Yigit ferruh.yigit at intel.com
Mon Oct 22 11:14:58 CEST 2018


On 10/18/2018 7:29 PM, Moti Haimovsky wrote:
> +/**
> + * Parse flower action section in the message retrieving the requested
> + * attribute from the first action that provides it.
> + *
> + * @param opt
> + *   flower section in the Netlink message received.
> + * @param rta_type
> + *   The backward sequence of rta_types, as written in the attribute table,
> + *   we need to traverse in order to get to the requested object.
> + * @param idx
> + *   Current location in rta_type table.
> + * @param[out] data
> + *   data retrieved from the message query.
> + *
> + * @return
> + *   0 if data was found and retrieved, -1 otherwise.
> + */
> +static int
> +flow_tcf_nl_action_parse_and_get(const struct rtattr *arg,
> +				 uint16_t rta_type[], int idx, void *data)
> +{
> +	struct rtattr *tb[TCA_ACT_MAX_PRIO + 1];
> +	int i;
> +
> +	if (arg == NULL || idx < 0)
> +		return -1;
> +	flow_tcf_nl_parse_rtattr(tb, TCA_ACT_MAX_PRIO,
> +				 RTA_DATA(arg), RTA_PAYLOAD(arg));
> +	switch (rta_type[idx]) {
> +	/*
> +	 * flow counters are stored in the actions defined by the flow
> +	 * and not in the flow itself, therefore we need to traverse the
> +	 * flower chain of actions in search for them.
> +	 *
> +	 * Note that the index is not decremented here.
> +	 */
> +	case TCA_ACT_STATS:
> +		for (i = 0; i <= TCA_ACT_MAX_PRIO; i++) {
> +			if (tb[i] &&
> +			!flow_tcf_nl_parse_one_action_and_get(tb[i],
> +							      rta_type,
> +							      idx, data))
> +				return 0;
> +		}
> +		break;
> +	default:
> +		break;
> +	}
> +	return -1;
> +}

Getting following build error with clang, will not pull from mlx tree until
issue resolved, thanks.

.../drivers/net/mlx5/mlx5_flow_tcf.c:2507:6: warning: cast from 'const struct
rtattr *' to 'char *' drops const qualifier [-Wcast-qual]
                                 RTA_DATA(arg), RTA_PAYLOAD(arg));
                                 ^
/usr/include/linux/rtnetlink.h:183:42: note: expanded from macro 'RTA_DATA'
#define RTA_DATA(rta)   ((void*)(((char*)(rta)) + RTA_LENGTH(0)))
                                         ^
.../drivers/net/mlx5/mlx5_flow_tcf.c:2593:31: warning: cast from 'const struct
nlmsghdr *' to 'char *' drops const qualifier [-Wcast-qual]
        struct tcmsg *t = NLMSG_DATA(nlh);



More information about the dev mailing list