In case of CPFL PMD, port_representor action is used for
the local vport and represented_port action is used for
the remote port(remote port in this case is either the idpf
pf or the vf port that is being represeted by the cpfl pmd).
Any mismatch in either of the cases PMD will throw
an error.
Fixes: 441e777b85f1 ("net/cpfl: support represented port action")
Cc: [email protected]
Signed-off-by: Praveen Shetty <[email protected]>
---
drivers/net/cpfl/cpfl_flow_engine_fxp.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/drivers/net/cpfl/cpfl_flow_engine_fxp.c
b/drivers/net/cpfl/cpfl_flow_engine_fxp.c
index b9e825ef57..e760acd722 100644
--- a/drivers/net/cpfl/cpfl_flow_engine_fxp.c
+++ b/drivers/net/cpfl/cpfl_flow_engine_fxp.c
@@ -292,6 +292,17 @@ cpfl_fxp_parse_action(struct cpfl_itf *itf,
is_vsi = (action_type ==
RTE_FLOW_ACTION_TYPE_PORT_REPRESENTOR ||
dst_itf->type == CPFL_ITF_TYPE_REPRESENTOR);
+ /* Added checks to throw an error for the invalid
action types. */
+ if (action_type ==
RTE_FLOW_ACTION_TYPE_PORT_REPRESENTOR &&
+ dst_itf->type == CPFL_ITF_TYPE_REPRESENTOR) {
+ PMD_DRV_LOG(ERR, "Cannot use port_representor
action for the represented_port");
+ goto err;
+ }
+ if (action_type ==
RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT &&
+ dst_itf->type == CPFL_ITF_TYPE_VPORT) {
+ PMD_DRV_LOG(ERR, "Cannot use represented_port
action for the local vport");
+ goto err;
+ }
if (is_vsi)
dev_id = cpfl_get_vsi_id(dst_itf);
else
--
2.34.1