DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH] common/sfc_efx/base: do not validate MAE action COUNT order
@ 2021-07-29  9:32 Ivan Malov
  2021-07-30 11:17 ` Thomas Monjalon
  0 siblings, 1 reply; 2+ messages in thread
From: Ivan Malov @ 2021-07-29  9:32 UTC (permalink / raw)
  To: dev; +Cc: Andrew Rybchenko, Andy Moreton

In DPDK + Open vSwitch use case, action COUNT is always the
first one to be added. In particular, it goes before action
DECAP in that use case. The current code enforces the right
order (DECAP goes before COUNT), and this provokes failures.
As an exception, do not validate the order for action COUNT.

Signed-off-by: Ivan Malov <ivan.malov@oktetlabs.ru>
Reviewed-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Reviewed-by: Andy Moreton <amoreton@xilinx.com>
---
 drivers/common/sfc_efx/base/efx.h     | 12 ++++++++++++
 drivers/common/sfc_efx/base/efx_mae.c |  1 +
 2 files changed, 13 insertions(+)

diff --git a/drivers/common/sfc_efx/base/efx.h b/drivers/common/sfc_efx/base/efx.h
index b2301b845a..24e1314cc3 100644
--- a/drivers/common/sfc_efx/base/efx.h
+++ b/drivers/common/sfc_efx/base/efx.h
@@ -4310,6 +4310,18 @@ efx_mae_action_set_populate_encap(
 /*
  * Use efx_mae_action_set_fill_in_counter_id() to set ID of a counter
  * in the specification prior to action set allocation.
+ *
+ * NOTICE: the HW will conduct action COUNT after actions DECAP,
+ * VLAN_POP, VLAN_PUSH (if any) have been applied to the packet,
+ * but, as a workaround, this order is not validated by the API.
+ *
+ * The workaround helps to unblock DPDK + Open vSwitch use case.
+ * In Open vSwitch, this action is always the first to be added,
+ * in particular, it's known to be inserted before action DECAP,
+ * so enforcing the right order here would cause runtime errors.
+ * The existing behaviour in Open vSwitch is unlikely to change
+ * any time soon, and the workaround is a good solution because
+ * in fact the real COUNT order is a don't care to Open vSwitch.
  */
 LIBEFX_API
 extern	__checkReturn			efx_rc_t
diff --git a/drivers/common/sfc_efx/base/efx_mae.c b/drivers/common/sfc_efx/base/efx_mae.c
index 47e809a22f..c22206e227 100644
--- a/drivers/common/sfc_efx/base/efx_mae.c
+++ b/drivers/common/sfc_efx/base/efx_mae.c
@@ -1547,6 +1547,7 @@ static const uint32_t efx_mae_action_ordered_map =
  * strictly ordered actions.
  */
 static const uint32_t efx_mae_action_nonstrict_map =
+	(1U << EFX_MAE_ACTION_COUNT) |
 	(1U << EFX_MAE_ACTION_FLAG) |
 	(1U << EFX_MAE_ACTION_MARK);
 
-- 
2.20.1


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [dpdk-dev] [PATCH] common/sfc_efx/base: do not validate MAE action COUNT order
  2021-07-29  9:32 [dpdk-dev] [PATCH] common/sfc_efx/base: do not validate MAE action COUNT order Ivan Malov
@ 2021-07-30 11:17 ` Thomas Monjalon
  0 siblings, 0 replies; 2+ messages in thread
From: Thomas Monjalon @ 2021-07-30 11:17 UTC (permalink / raw)
  To: Ivan Malov; +Cc: dev, Andrew Rybchenko, Andy Moreton

29/07/2021 11:32, Ivan Malov:
> In DPDK + Open vSwitch use case, action COUNT is always the
> first one to be added. In particular, it goes before action
> DECAP in that use case. The current code enforces the right
> order (DECAP goes before COUNT), and this provokes failures.
> As an exception, do not validate the order for action COUNT.
> 
> Signed-off-by: Ivan Malov <ivan.malov@oktetlabs.ru>
> Reviewed-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
> Reviewed-by: Andy Moreton <amoreton@xilinx.com>

Applied, thanks





^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2021-07-30 11:16 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-07-29  9:32 [dpdk-dev] [PATCH] common/sfc_efx/base: do not validate MAE action COUNT order Ivan Malov
2021-07-30 11:17 ` Thomas Monjalon

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).