[dpdk-dev] [RFC PATCH] ethdev: add support for testpmd-compliant flow rule dumping
Singh, Aman Deep
aman.deep.singh at intel.com
Mon Jun 14 14:42:23 CEST 2021
Hi Ivan,
As a suggestion, can we add a check for debug log_level in
"rte_flow_snprint" itself.
So we can avoid CPU time, in cases where we don't want these logs.
On 5/27/2021 1:55 PM, Ivan Malov wrote:
> DPDK applications (for example, OvS) or tests which use RTE
> flow API need to log created or rejected flow rules to help
> to recognise what goes right or wrong. From this standpoint,
> testpmd-compliant format is nice for the purpose because it
> allows to copy-paste the flow rules and debug using testpmd.
>
> Recognisable pattern items:
> VOID, VF, PF, PHY_PORT, PORT_ID, ETH, VLAN, IPV4, IPV6, UDP,
> TCP, VXLAN, NVGRE, GENEVE, MARK, PPPOES, PPPOED.
>
> Recognisable actions:
> VOID, JUMP, MARK, FLAG, QUEUE, DROP, COUNT, RSS, PF, VF, PHY_PORT,
> PORT_ID, OF_POP_VLAN, OF_PUSH_VLAN, OF_SET_VLAN_VID,
> OF_SET_VLAN_PCP, VXLAN_ENCAP, VXLAN_DECAP.
>
> Recognisable RSS types (action RSS):
> IPV4, FRAG_IPV4, NONFRAG_IPV4_TCP, NONFRAG_IPV4_UDP, NONFRAG_IPV4_OTHER,
> IPV6, FRAG_IPV6, NONFRAG_IPV6_TCP, NONFRAG_IPV6_UDP, NONFRAG_IPV6_OTHER,
> IPV6_EX, IPV6_TCP_EX, IPV6_UDP_EX, L3_SRC_ONLY, L3_DST_ONLY,
> L4_SRC_ONLY, L4_DST_ONLY.
>
> Unrecognised parts of the flow specification are represented by
> tokens "{unknown}" and "{unknown bits}". Interested parties are
> welcome to extend this tool to recognise more items and actions.
>
> Signed-off-by: Ivan Malov <ivan.malov at oktetlabs.ru>
>
> +int
> +rte_flow_snprint(char *buf, size_t buf_size, size_t *nb_chars_total,
> + const struct rte_flow_attr *attr,
> + const struct rte_flow_item pattern[],
> + const struct rte_flow_action actions[])
> +{
> + int rc;
> +
Like add a check with "rte_log_can_log()" and return from here.
> + if (buf == NULL && buf_size != 0)
> + return -EINVAL;
> +
> + *nb_chars_total = 0;
> +
> + rc = rte_flow_snprint_attr(buf, buf_size, nb_chars_total, attr);
> + if (rc != 0)
> + return rc;
> +
> + rc = rte_flow_snprint_pattern(buf, buf_size, nb_chars_total, pattern);
> + if (rc != 0)
> + return rc;
> +
> + rc = rte_flow_snprint_actions(buf, buf_size, nb_chars_total, actions);
> + if (rc != 0)
> + return rc;
> +
> + return 0;
> +}
Regards
Aman
More information about the dev
mailing list