patches for DPDK stable branches
 help / color / Atom feed
From: luca.boccassi@gmail.com
To: Bing Zhao <bingz@mellanox.com>
Cc: Viacheslav Ovsiienko <viacheslavo@mellanox.com>,
	dpdk stable <stable@dpdk.org>
Subject: [dpdk-stable] patch 'net/mlx5: fix header modify action validation' has been queued to stable release 19.11.3
Date: Tue, 19 May 2020 14:04:01 +0100
Message-ID: <20200519130549.112823-106-luca.boccassi@gmail.com> (raw)
In-Reply-To: <20200519130549.112823-1-luca.boccassi@gmail.com>

Hi,

FYI, your patch has been queued to stable release 19.11.3

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 05/21/20. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.

Thanks.

Luca Boccassi

---
From bf10f18c64b7ab27ec38682f4eefe4702a7ef9b2 Mon Sep 17 00:00:00 2001
From: Bing Zhao <bingz@mellanox.com>
Date: Tue, 21 Apr 2020 22:03:34 +0800
Subject: [PATCH] net/mlx5: fix header modify action validation

[ upstream commit 72a944dba1639fff11f74c5ae1ab7d622bcc39fd ]

The header modify actions number supported now has some limitation,
and it is decided by both driver and hardware. If the configuration
is different or the table to insert the flow is different, the result
might be different if the flow contains header modify actions.
Currently, the actual action number could only be calculated in the
later stage called translate, from user specified value to the driver
format. And the action numbers checking is missed in the flow
validation. So PMD will return incorrect result to indicate the
flow actions are valid by rte_flow_validate but then it will fail
when calling rte_flow_create.

Adding some simple checking in the validation will help to get rid
of this incorrect checking. Most of the actions will only consume 1
SW action field except the MAC address and IPv6 address. And from
SW POV, the maximal action fields for these will be consumed even if
only part of such field will be modified because that there is no
mask in the flow actions and the mask will always be all ONEs.

The metering or extra metadata supports will cost one more action.

Fixes: 9597330c6844 ("net/mlx5: update modify header action translator")

Signed-off-by: Bing Zhao <bingz@mellanox.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
---
 drivers/net/mlx5/mlx5_flow.c       | 58 +++++++++++++++-------------
 drivers/net/mlx5/mlx5_flow.h       | 18 +++++++++
 drivers/net/mlx5/mlx5_flow_dv.c    | 61 ++++++++++++++++++++++++++----
 drivers/net/mlx5/mlx5_flow_verbs.c |  3 ++
 4 files changed, 106 insertions(+), 34 deletions(-)

diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c
index 55f514af30..05e2d4c82a 100644
--- a/drivers/net/mlx5/mlx5_flow.c
+++ b/drivers/net/mlx5/mlx5_flow.c
@@ -2302,6 +2302,7 @@ flow_null_validate(struct rte_eth_dev *dev __rte_unused,
 		   const struct rte_flow_item items[] __rte_unused,
 		   const struct rte_flow_action actions[] __rte_unused,
 		   bool external __rte_unused,
+		   int hairpin __rte_unused,
 		   struct rte_flow_error *error)
 {
 	return rte_flow_error_set(error, ENOTSUP,
@@ -2416,6 +2417,8 @@ flow_get_drv_type(struct rte_eth_dev *dev, const struct rte_flow_attr *attr)
  *   Pointer to the list of actions.
  * @param[in] external
  *   This flow rule is created by request external to PMD.
+ * @param[in] hairpin
+ *   Number of hairpin TX actions, 0 means classic flow.
  * @param[out] error
  *   Pointer to the error structure.
  *
@@ -2427,13 +2430,14 @@ flow_drv_validate(struct rte_eth_dev *dev,
 		  const struct rte_flow_attr *attr,
 		  const struct rte_flow_item items[],
 		  const struct rte_flow_action actions[],
-		  bool external, struct rte_flow_error *error)
+		  bool external, int hairpin, struct rte_flow_error *error)
 {
 	const struct mlx5_flow_driver_ops *fops;
 	enum mlx5_flow_drv_type type = flow_get_drv_type(dev, attr);
 
 	fops = flow_get_drv_ops(type);
-	return fops->validate(dev, attr, items, actions, external, error);
+	return fops->validate(dev, attr, items, actions, external,
+			      hairpin, error);
 }
 
 /**
@@ -2591,27 +2595,6 @@ flow_drv_destroy(struct rte_eth_dev *dev, struct rte_flow *flow)
 	fops->destroy(dev, flow);
 }
 
-/**
- * Validate a flow supported by the NIC.
- *
- * @see rte_flow_validate()
- * @see rte_flow_ops
- */
-int
-mlx5_flow_validate(struct rte_eth_dev *dev,
-		   const struct rte_flow_attr *attr,
-		   const struct rte_flow_item items[],
-		   const struct rte_flow_action actions[],
-		   struct rte_flow_error *error)
-{
-	int ret;
-
-	ret = flow_drv_validate(dev, attr, items, actions, true, error);
-	if (ret < 0)
-		return ret;
-	return 0;
-}
-
 /**
  * Get RSS action from the action list.
  *
@@ -4184,15 +4167,16 @@ flow_list_create(struct rte_eth_dev *dev, struct mlx5_flows *list,
 	const struct rte_flow_action *p_actions_rx = actions;
 	uint32_t i;
 	uint32_t flow_size;
-	int hairpin_flow = 0;
+	int hairpin_flow;
 	uint32_t hairpin_id = 0;
 	struct rte_flow_attr attr_tx = { .priority = 0 };
-	int ret = flow_drv_validate(dev, attr, items, p_actions_rx, external,
-				    error);
+	int ret;
 
+	hairpin_flow = flow_check_hairpin_split(dev, attr, actions);
+	ret = flow_drv_validate(dev, attr, items, p_actions_rx,
+				external, hairpin_flow, error);
 	if (ret < 0)
 		return NULL;
-	hairpin_flow = flow_check_hairpin_split(dev, attr, actions);
 	if (hairpin_flow > 0) {
 		if (hairpin_flow > MLX5_MAX_SPLIT_ACTIONS) {
 			rte_errno = EINVAL;
@@ -4369,6 +4353,26 @@ mlx5_flow_create_esw_table_zero_flow(struct rte_eth_dev *dev)
 				actions, false, &error);
 }
 
+/**
+ * Validate a flow supported by the NIC.
+ *
+ * @see rte_flow_validate()
+ * @see rte_flow_ops
+ */
+int
+mlx5_flow_validate(struct rte_eth_dev *dev,
+		   const struct rte_flow_attr *attr,
+		   const struct rte_flow_item items[],
+		   const struct rte_flow_action actions[],
+		   struct rte_flow_error *error)
+{
+	int hairpin_flow;
+
+	hairpin_flow = flow_check_hairpin_split(dev, attr, actions);
+	return flow_drv_validate(dev, attr, items, actions,
+				true, hairpin_flow, error);
+}
+
 /**
  * Create a flow.
  *
diff --git a/drivers/net/mlx5/mlx5_flow.h b/drivers/net/mlx5/mlx5_flow.h
index 6d278c63d8..4e38d3fa5a 100644
--- a/drivers/net/mlx5/mlx5_flow.h
+++ b/drivers/net/mlx5/mlx5_flow.h
@@ -330,6 +330,23 @@ enum mlx5_feature_name {
 #define MLX5_ENCAPSULATION_DECISION_SIZE (sizeof(struct rte_flow_item_eth) + \
 					  sizeof(struct rte_flow_item_ipv4))
 
+/* Software header modify action numbers of a flow. */
+#define MLX5_ACT_NUM_MDF_IPV4		1
+#define MLX5_ACT_NUM_MDF_IPV6		4
+#define MLX5_ACT_NUM_MDF_MAC		2
+#define MLX5_ACT_NUM_MDF_VID		1
+#define MLX5_ACT_NUM_MDF_PORT		2
+#define MLX5_ACT_NUM_MDF_TTL		1
+#define MLX5_ACT_NUM_DEC_TTL		MLX5_ACT_NUM_MDF_TTL
+#define MLX5_ACT_NUM_MDF_TCPSEQ		1
+#define MLX5_ACT_NUM_MDF_TCPACK		1
+#define MLX5_ACT_NUM_SET_REG		1
+#define MLX5_ACT_NUM_SET_TAG		1
+#define MLX5_ACT_NUM_CPY_MREG		MLX5_ACT_NUM_SET_TAG
+#define MLX5_ACT_NUM_SET_MARK		MLX5_ACT_NUM_SET_TAG
+#define MLX5_ACT_NUM_SET_META		MLX5_ACT_NUM_SET_TAG
+#define MLX5_ACT_NUM_SET_DSCP		1
+
 enum mlx5_flow_drv_type {
 	MLX5_FLOW_TYPE_MIN,
 	MLX5_FLOW_TYPE_DV,
@@ -677,6 +694,7 @@ typedef int (*mlx5_flow_validate_t)(struct rte_eth_dev *dev,
 				    const struct rte_flow_item items[],
 				    const struct rte_flow_action actions[],
 				    bool external,
+				    int hairpin,
 				    struct rte_flow_error *error);
 typedef struct mlx5_flow *(*mlx5_flow_prepare_t)
 	(const struct rte_flow_attr *attr, const struct rte_flow_item items[],
diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c
index acc0fd3271..8d326f0229 100644
--- a/drivers/net/mlx5/mlx5_flow_dv.c
+++ b/drivers/net/mlx5/mlx5_flow_dv.c
@@ -427,6 +427,7 @@ flow_dv_convert_modify_action(struct rte_flow_item *item,
 		/* Fetch variable byte size mask from the array. */
 		mask = flow_dv_fetch_field((const uint8_t *)item->mask +
 					   field->offset, field->size);
+		assert(mask);
 		if (!mask) {
 			++field;
 			continue;
@@ -4285,7 +4286,9 @@ flow_dv_counter_release(struct rte_eth_dev *dev,
  *   Pointer to error structure.
  *
  * @return
- *   0 on success, a negative errno value otherwise and rte_errno is set.
+ *   - 0 on success and non root table.
+ *   - 1 on success and root table.
+ *   - a negative errno value otherwise and rte_errno is set.
  */
 static int
 flow_dv_validate_attributes(struct rte_eth_dev *dev,
@@ -4295,6 +4298,7 @@ flow_dv_validate_attributes(struct rte_eth_dev *dev,
 {
 	struct mlx5_priv *priv = dev->data->dev_private;
 	uint32_t priority_max = priv->config.flow_prio - 1;
+	int ret = 0;
 
 #ifndef HAVE_MLX5DV_DR
 	if (attributes->group)
@@ -4303,14 +4307,15 @@ flow_dv_validate_attributes(struct rte_eth_dev *dev,
 					  NULL,
 					  "groups are not supported");
 #else
-	uint32_t table;
-	int ret;
+	uint32_t table = 0;
 
 	ret = mlx5_flow_group_to_table(attributes, external,
 				       attributes->group, !!priv->fdb_def_rule,
 				       &table, error);
 	if (ret)
 		return ret;
+	if (!table)
+		ret = MLX5DV_DR_ACTION_FLAGS_ROOT_LEVEL;
 #endif
 	if (attributes->priority != MLX5_FLOW_PRIO_RSVD &&
 	    attributes->priority >= priority_max)
@@ -4340,7 +4345,7 @@ flow_dv_validate_attributes(struct rte_eth_dev *dev,
 					  RTE_FLOW_ERROR_TYPE_ATTR, NULL,
 					  "must specify exactly one of "
 					  "ingress or egress");
-	return 0;
+	return ret;
 }
 
 /**
@@ -4356,6 +4361,8 @@ flow_dv_validate_attributes(struct rte_eth_dev *dev,
  *   Pointer to the list of actions.
  * @param[in] external
  *   This flow rule is created by request external to PMD.
+ * @param[in] hairpin
+ *   Number of hairpin TX actions, 0 means classic flow.
  * @param[out] error
  *   Pointer to the error structure.
  *
@@ -4366,7 +4373,7 @@ static int
 flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
 		 const struct rte_flow_item items[],
 		 const struct rte_flow_action actions[],
-		 bool external, struct rte_flow_error *error)
+		 bool external, int hairpin, struct rte_flow_error *error)
 {
 	int ret;
 	uint64_t action_flags = 0;
@@ -4391,12 +4398,15 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
 	struct mlx5_dev_config *dev_conf = &priv->config;
 	uint16_t queue_index = 0xFFFF;
 	const struct rte_flow_item_vlan *vlan_m = NULL;
+	int16_t rw_act_num = 0;
+	uint64_t is_root;
 
 	if (items == NULL)
 		return -1;
 	ret = flow_dv_validate_attributes(dev, attr, external, error);
 	if (ret < 0)
 		return ret;
+	is_root = (uint64_t)ret;
 	for (; items->type != RTE_FLOW_ITEM_TYPE_END; items++) {
 		int tunnel = !!(item_flags & MLX5_FLOW_LAYER_TUNNEL);
 		int type = items->type;
@@ -4664,6 +4674,7 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
 				action_flags |= MLX5_FLOW_ACTION_FLAG;
 				++actions_n;
 			}
+			rw_act_num += MLX5_ACT_NUM_SET_MARK;
 			break;
 		case RTE_FLOW_ACTION_TYPE_MARK:
 			ret = flow_dv_validate_action_mark(dev, actions,
@@ -4682,6 +4693,7 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
 				action_flags |= MLX5_FLOW_ACTION_MARK;
 				++actions_n;
 			}
+			rw_act_num += MLX5_ACT_NUM_SET_MARK;
 			break;
 		case RTE_FLOW_ACTION_TYPE_SET_META:
 			ret = flow_dv_validate_action_set_meta(dev, actions,
@@ -4693,6 +4705,7 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
 			if (!(action_flags & MLX5_FLOW_MODIFY_HDR_ACTIONS))
 				++actions_n;
 			action_flags |= MLX5_FLOW_ACTION_SET_META;
+			rw_act_num += MLX5_ACT_NUM_SET_META;
 			break;
 		case RTE_FLOW_ACTION_TYPE_SET_TAG:
 			ret = flow_dv_validate_action_set_tag(dev, actions,
@@ -4704,6 +4717,7 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
 			if (!(action_flags & MLX5_FLOW_MODIFY_HDR_ACTIONS))
 				++actions_n;
 			action_flags |= MLX5_FLOW_ACTION_SET_TAG;
+			rw_act_num += MLX5_ACT_NUM_SET_TAG;
 			break;
 		case RTE_FLOW_ACTION_TYPE_DROP:
 			ret = mlx5_flow_validate_action_drop(action_flags,
@@ -4781,6 +4795,7 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
 				return ret;
 			/* Count VID with push_vlan command. */
 			action_flags |= MLX5_FLOW_ACTION_OF_SET_VLAN_VID;
+			rw_act_num += MLX5_ACT_NUM_MDF_VID;
 			break;
 		case RTE_FLOW_ACTION_TYPE_VXLAN_ENCAP:
 		case RTE_FLOW_ACTION_TYPE_NVGRE_ENCAP:
@@ -4842,8 +4857,15 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
 					RTE_FLOW_ACTION_TYPE_SET_MAC_SRC ?
 						MLX5_FLOW_ACTION_SET_MAC_SRC :
 						MLX5_FLOW_ACTION_SET_MAC_DST;
+			/*
+			 * Even if the source and destination MAC addresses have
+			 * overlap in the header with 4B alignment, the convert
+			 * function will handle them separately and 4 SW actions
+			 * will be created. And 2 actions will be added each
+			 * time no matter how many bytes of address will be set.
+			 */
+			rw_act_num += MLX5_ACT_NUM_MDF_MAC;
 			break;
-
 		case RTE_FLOW_ACTION_TYPE_SET_IPV4_SRC:
 		case RTE_FLOW_ACTION_TYPE_SET_IPV4_DST:
 			ret = flow_dv_validate_action_modify_ipv4(action_flags,
@@ -4859,6 +4881,7 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
 					RTE_FLOW_ACTION_TYPE_SET_IPV4_SRC ?
 						MLX5_FLOW_ACTION_SET_IPV4_SRC :
 						MLX5_FLOW_ACTION_SET_IPV4_DST;
+			rw_act_num += MLX5_ACT_NUM_MDF_IPV4;
 			break;
 		case RTE_FLOW_ACTION_TYPE_SET_IPV6_SRC:
 		case RTE_FLOW_ACTION_TYPE_SET_IPV6_DST:
@@ -4881,6 +4904,7 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
 					RTE_FLOW_ACTION_TYPE_SET_IPV6_SRC ?
 						MLX5_FLOW_ACTION_SET_IPV6_SRC :
 						MLX5_FLOW_ACTION_SET_IPV6_DST;
+			rw_act_num += MLX5_ACT_NUM_MDF_IPV6;
 			break;
 		case RTE_FLOW_ACTION_TYPE_SET_TP_SRC:
 		case RTE_FLOW_ACTION_TYPE_SET_TP_DST:
@@ -4897,6 +4921,7 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
 					RTE_FLOW_ACTION_TYPE_SET_TP_SRC ?
 						MLX5_FLOW_ACTION_SET_TP_SRC :
 						MLX5_FLOW_ACTION_SET_TP_DST;
+			rw_act_num += MLX5_ACT_NUM_MDF_PORT;
 			break;
 		case RTE_FLOW_ACTION_TYPE_DEC_TTL:
 		case RTE_FLOW_ACTION_TYPE_SET_TTL:
@@ -4913,6 +4938,7 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
 					RTE_FLOW_ACTION_TYPE_SET_TTL ?
 						MLX5_FLOW_ACTION_SET_TTL :
 						MLX5_FLOW_ACTION_DEC_TTL;
+			rw_act_num += MLX5_ACT_NUM_MDF_TTL;
 			break;
 		case RTE_FLOW_ACTION_TYPE_JUMP:
 			ret = flow_dv_validate_action_jump(actions,
@@ -4940,6 +4966,7 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
 					RTE_FLOW_ACTION_TYPE_INC_TCP_SEQ ?
 						MLX5_FLOW_ACTION_INC_TCP_SEQ :
 						MLX5_FLOW_ACTION_DEC_TCP_SEQ;
+			rw_act_num += MLX5_ACT_NUM_MDF_TCPSEQ;
 			break;
 		case RTE_FLOW_ACTION_TYPE_INC_TCP_ACK:
 		case RTE_FLOW_ACTION_TYPE_DEC_TCP_ACK:
@@ -4957,10 +4984,13 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
 					RTE_FLOW_ACTION_TYPE_INC_TCP_ACK ?
 						MLX5_FLOW_ACTION_INC_TCP_ACK :
 						MLX5_FLOW_ACTION_DEC_TCP_ACK;
+			rw_act_num += MLX5_ACT_NUM_MDF_TCPACK;
 			break;
-		case MLX5_RTE_FLOW_ACTION_TYPE_TAG:
 		case MLX5_RTE_FLOW_ACTION_TYPE_MARK:
+			break;
+		case MLX5_RTE_FLOW_ACTION_TYPE_TAG:
 		case MLX5_RTE_FLOW_ACTION_TYPE_COPY_MREG:
+			rw_act_num += MLX5_ACT_NUM_SET_TAG;
 			break;
 		case RTE_FLOW_ACTION_TYPE_METER:
 			ret = mlx5_flow_validate_action_meter(dev,
@@ -4971,6 +5001,8 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
 				return ret;
 			action_flags |= MLX5_FLOW_ACTION_METER;
 			++actions_n;
+			/* Meter action will add one more TAG action. */
+			rw_act_num += MLX5_ACT_NUM_SET_TAG;
 			break;
 		default:
 			return rte_flow_error_set(error, ENOTSUP,
@@ -5043,6 +5075,21 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
 						  NULL, "encap is not supported"
 						  " for ingress traffic");
 	}
+	/* Hairpin flow will add one more TAG action. */
+	if (hairpin > 0)
+		rw_act_num += MLX5_ACT_NUM_SET_TAG;
+	/* extra metadata enabled: one more TAG action will be add. */
+	if (dev_conf->dv_flow_en &&
+	    dev_conf->dv_xmeta_en != MLX5_XMETA_MODE_LEGACY &&
+	    mlx5_flow_ext_mreg_supported(dev))
+		rw_act_num += MLX5_ACT_NUM_SET_TAG;
+	if ((uint32_t)rw_act_num >=
+			flow_dv_modify_hdr_action_max(dev, is_root)) {
+		return rte_flow_error_set(error, ENOTSUP,
+					  RTE_FLOW_ERROR_TYPE_ACTION,
+					  NULL, "too many header modify"
+					  " actions to support");
+	}
 	return 0;
 }
 
diff --git a/drivers/net/mlx5/mlx5_flow_verbs.c b/drivers/net/mlx5/mlx5_flow_verbs.c
index c162527a5e..f66489c791 100644
--- a/drivers/net/mlx5/mlx5_flow_verbs.c
+++ b/drivers/net/mlx5/mlx5_flow_verbs.c
@@ -1016,6 +1016,8 @@ flow_verbs_translate_action_count(struct mlx5_flow *dev_flow,
  *   Pointer to the list of actions.
  * @param[in] external
  *   This flow rule is created by request external to PMD.
+ * @param[in] hairpin
+ *   Number of hairpin TX actions, 0 means classic flow.
  * @param[out] error
  *   Pointer to the error structure.
  *
@@ -1028,6 +1030,7 @@ flow_verbs_validate(struct rte_eth_dev *dev,
 		    const struct rte_flow_item items[],
 		    const struct rte_flow_action actions[],
 		    bool external __rte_unused,
+		    int hairpin __rte_unused,
 		    struct rte_flow_error *error)
 {
 	int ret;
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2020-05-19 14:04:48.772446780 +0100
+++ 0106-net-mlx5-fix-header-modify-action-validation.patch	2020-05-19 14:04:44.340650620 +0100
@@ -1,8 +1,10 @@
-From 72a944dba1639fff11f74c5ae1ab7d622bcc39fd Mon Sep 17 00:00:00 2001
+From bf10f18c64b7ab27ec38682f4eefe4702a7ef9b2 Mon Sep 17 00:00:00 2001
 From: Bing Zhao <bingz@mellanox.com>
 Date: Tue, 21 Apr 2020 22:03:34 +0800
 Subject: [PATCH] net/mlx5: fix header modify action validation
 
+[ upstream commit 72a944dba1639fff11f74c5ae1ab7d622bcc39fd ]
+
 The header modify actions number supported now has some limitation,
 and it is decided by both driver and hardware. If the configuration
 is different or the table to insert the flow is different, the result
@@ -24,22 +26,21 @@
 The metering or extra metadata supports will cost one more action.
 
 Fixes: 9597330c6844 ("net/mlx5: update modify header action translator")
-Cc: stable@dpdk.org
 
 Signed-off-by: Bing Zhao <bingz@mellanox.com>
 Acked-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
 ---
- drivers/net/mlx5/mlx5_flow.c       | 58 ++++++++++++++-------------
+ drivers/net/mlx5/mlx5_flow.c       | 58 +++++++++++++++-------------
  drivers/net/mlx5/mlx5_flow.h       | 18 +++++++++
- drivers/net/mlx5/mlx5_flow_dv.c    | 63 ++++++++++++++++++++++++++----
+ drivers/net/mlx5/mlx5_flow_dv.c    | 61 ++++++++++++++++++++++++++----
  drivers/net/mlx5/mlx5_flow_verbs.c |  3 ++
- 4 files changed, 108 insertions(+), 34 deletions(-)
+ 4 files changed, 106 insertions(+), 34 deletions(-)
 
 diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c
-index 109d71e923..84aa069db4 100644
+index 55f514af30..05e2d4c82a 100644
 --- a/drivers/net/mlx5/mlx5_flow.c
 +++ b/drivers/net/mlx5/mlx5_flow.c
-@@ -2342,6 +2342,7 @@ flow_null_validate(struct rte_eth_dev *dev __rte_unused,
+@@ -2302,6 +2302,7 @@ flow_null_validate(struct rte_eth_dev *dev __rte_unused,
  		   const struct rte_flow_item items[] __rte_unused,
  		   const struct rte_flow_action actions[] __rte_unused,
  		   bool external __rte_unused,
@@ -47,7 +48,7 @@
  		   struct rte_flow_error *error)
  {
  	return rte_flow_error_set(error, ENOTSUP,
-@@ -2457,6 +2458,8 @@ flow_get_drv_type(struct rte_eth_dev *dev, const struct rte_flow_attr *attr)
+@@ -2416,6 +2417,8 @@ flow_get_drv_type(struct rte_eth_dev *dev, const struct rte_flow_attr *attr)
   *   Pointer to the list of actions.
   * @param[in] external
   *   This flow rule is created by request external to PMD.
@@ -56,7 +57,7 @@
   * @param[out] error
   *   Pointer to the error structure.
   *
-@@ -2468,13 +2471,14 @@ flow_drv_validate(struct rte_eth_dev *dev,
+@@ -2427,13 +2430,14 @@ flow_drv_validate(struct rte_eth_dev *dev,
  		  const struct rte_flow_attr *attr,
  		  const struct rte_flow_item items[],
  		  const struct rte_flow_action actions[],
@@ -73,7 +74,7 @@
  }
  
  /**
-@@ -2635,27 +2639,6 @@ flow_drv_destroy(struct rte_eth_dev *dev, struct rte_flow *flow)
+@@ -2591,27 +2595,6 @@ flow_drv_destroy(struct rte_eth_dev *dev, struct rte_flow *flow)
  	fops->destroy(dev, flow);
  }
  
@@ -101,10 +102,10 @@
  /**
   * Get RSS action from the action list.
   *
-@@ -4271,15 +4254,16 @@ flow_list_create(struct rte_eth_dev *dev, uint32_t *list,
+@@ -4184,15 +4167,16 @@ flow_list_create(struct rte_eth_dev *dev, struct mlx5_flows *list,
  	const struct rte_flow_action *p_actions_rx = actions;
  	uint32_t i;
- 	uint32_t idx = 0;
+ 	uint32_t flow_size;
 -	int hairpin_flow = 0;
 +	int hairpin_flow;
  	uint32_t hairpin_id = 0;
@@ -117,13 +118,13 @@
 +	ret = flow_drv_validate(dev, attr, items, p_actions_rx,
 +				external, hairpin_flow, error);
  	if (ret < 0)
- 		return 0;
+ 		return NULL;
 -	hairpin_flow = flow_check_hairpin_split(dev, attr, actions);
  	if (hairpin_flow > 0) {
  		if (hairpin_flow > MLX5_MAX_SPLIT_ACTIONS) {
  			rte_errno = EINVAL;
-@@ -4470,6 +4454,26 @@ mlx5_flow_create_esw_table_zero_flow(struct rte_eth_dev *dev)
- 						   actions, false, &error);
+@@ -4369,6 +4353,26 @@ mlx5_flow_create_esw_table_zero_flow(struct rte_eth_dev *dev)
+ 				actions, false, &error);
  }
  
 +/**
@@ -150,10 +151,10 @@
   * Create a flow.
   *
 diff --git a/drivers/net/mlx5/mlx5_flow.h b/drivers/net/mlx5/mlx5_flow.h
-index 062bcf1f57..2a1f59698c 100644
+index 6d278c63d8..4e38d3fa5a 100644
 --- a/drivers/net/mlx5/mlx5_flow.h
 +++ b/drivers/net/mlx5/mlx5_flow.h
-@@ -332,6 +332,23 @@ enum mlx5_feature_name {
+@@ -330,6 +330,23 @@ enum mlx5_feature_name {
  #define MLX5_ENCAPSULATION_DECISION_SIZE (sizeof(struct rte_flow_item_eth) + \
  					  sizeof(struct rte_flow_item_ipv4))
  
@@ -177,27 +178,27 @@
  enum mlx5_flow_drv_type {
  	MLX5_FLOW_TYPE_MIN,
  	MLX5_FLOW_TYPE_DV,
-@@ -812,6 +829,7 @@ typedef int (*mlx5_flow_validate_t)(struct rte_eth_dev *dev,
+@@ -677,6 +694,7 @@ typedef int (*mlx5_flow_validate_t)(struct rte_eth_dev *dev,
  				    const struct rte_flow_item items[],
  				    const struct rte_flow_action actions[],
  				    bool external,
 +				    int hairpin,
  				    struct rte_flow_error *error);
  typedef struct mlx5_flow *(*mlx5_flow_prepare_t)
- 	(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
+ 	(const struct rte_flow_attr *attr, const struct rte_flow_item items[],
 diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c
-index c6d132c6b7..6263ecc731 100644
+index acc0fd3271..8d326f0229 100644
 --- a/drivers/net/mlx5/mlx5_flow_dv.c
 +++ b/drivers/net/mlx5/mlx5_flow_dv.c
-@@ -434,6 +434,7 @@ flow_dv_convert_modify_action(struct rte_flow_item *item,
+@@ -427,6 +427,7 @@ flow_dv_convert_modify_action(struct rte_flow_item *item,
  		/* Fetch variable byte size mask from the array. */
  		mask = flow_dv_fetch_field((const uint8_t *)item->mask +
  					   field->offset, field->size);
-+		MLX5_ASSERT(mask);
++		assert(mask);
  		if (!mask) {
  			++field;
  			continue;
-@@ -4490,7 +4491,9 @@ flow_dv_counter_release(struct rte_eth_dev *dev, uint32_t counter)
+@@ -4285,7 +4286,9 @@ flow_dv_counter_release(struct rte_eth_dev *dev,
   *   Pointer to error structure.
   *
   * @return
@@ -208,7 +209,7 @@
   */
  static int
  flow_dv_validate_attributes(struct rte_eth_dev *dev,
-@@ -4500,6 +4503,7 @@ flow_dv_validate_attributes(struct rte_eth_dev *dev,
+@@ -4295,6 +4298,7 @@ flow_dv_validate_attributes(struct rte_eth_dev *dev,
  {
  	struct mlx5_priv *priv = dev->data->dev_private;
  	uint32_t priority_max = priv->config.flow_prio - 1;
@@ -216,7 +217,7 @@
  
  #ifndef HAVE_MLX5DV_DR
  	if (attributes->group)
-@@ -4508,14 +4512,15 @@ flow_dv_validate_attributes(struct rte_eth_dev *dev,
+@@ -4303,14 +4307,15 @@ flow_dv_validate_attributes(struct rte_eth_dev *dev,
  					  NULL,
  					  "groups are not supported");
  #else
@@ -234,7 +235,7 @@
  #endif
  	if (attributes->priority != MLX5_FLOW_PRIO_RSVD &&
  	    attributes->priority >= priority_max)
-@@ -4545,7 +4550,7 @@ flow_dv_validate_attributes(struct rte_eth_dev *dev,
+@@ -4340,7 +4345,7 @@ flow_dv_validate_attributes(struct rte_eth_dev *dev,
  					  RTE_FLOW_ERROR_TYPE_ATTR, NULL,
  					  "must specify exactly one of "
  					  "ingress or egress");
@@ -243,7 +244,7 @@
  }
  
  /**
-@@ -4561,6 +4566,8 @@ flow_dv_validate_attributes(struct rte_eth_dev *dev,
+@@ -4356,6 +4361,8 @@ flow_dv_validate_attributes(struct rte_eth_dev *dev,
   *   Pointer to the list of actions.
   * @param[in] external
   *   This flow rule is created by request external to PMD.
@@ -252,7 +253,7 @@
   * @param[out] error
   *   Pointer to the error structure.
   *
-@@ -4571,7 +4578,7 @@ static int
+@@ -4366,7 +4373,7 @@ static int
  flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
  		 const struct rte_flow_item items[],
  		 const struct rte_flow_action actions[],
@@ -261,7 +262,7 @@
  {
  	int ret;
  	uint64_t action_flags = 0;
-@@ -4618,12 +4625,15 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
+@@ -4391,12 +4398,15 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
  	struct mlx5_dev_config *dev_conf = &priv->config;
  	uint16_t queue_index = 0xFFFF;
  	const struct rte_flow_item_vlan *vlan_m = NULL;
@@ -277,7 +278,7 @@
  	for (; items->type != RTE_FLOW_ITEM_TYPE_END; items++) {
  		int tunnel = !!(item_flags & MLX5_FLOW_LAYER_TUNNEL);
  		int type = items->type;
-@@ -4900,6 +4910,7 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
+@@ -4664,6 +4674,7 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
  				action_flags |= MLX5_FLOW_ACTION_FLAG;
  				++actions_n;
  			}
@@ -285,7 +286,7 @@
  			break;
  		case RTE_FLOW_ACTION_TYPE_MARK:
  			ret = flow_dv_validate_action_mark(dev, actions,
-@@ -4918,6 +4929,7 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
+@@ -4682,6 +4693,7 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
  				action_flags |= MLX5_FLOW_ACTION_MARK;
  				++actions_n;
  			}
@@ -293,7 +294,7 @@
  			break;
  		case RTE_FLOW_ACTION_TYPE_SET_META:
  			ret = flow_dv_validate_action_set_meta(dev, actions,
-@@ -4929,6 +4941,7 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
+@@ -4693,6 +4705,7 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
  			if (!(action_flags & MLX5_FLOW_MODIFY_HDR_ACTIONS))
  				++actions_n;
  			action_flags |= MLX5_FLOW_ACTION_SET_META;
@@ -301,7 +302,7 @@
  			break;
  		case RTE_FLOW_ACTION_TYPE_SET_TAG:
  			ret = flow_dv_validate_action_set_tag(dev, actions,
-@@ -4940,6 +4953,7 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
+@@ -4704,6 +4717,7 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
  			if (!(action_flags & MLX5_FLOW_MODIFY_HDR_ACTIONS))
  				++actions_n;
  			action_flags |= MLX5_FLOW_ACTION_SET_TAG;
@@ -309,7 +310,7 @@
  			break;
  		case RTE_FLOW_ACTION_TYPE_DROP:
  			ret = mlx5_flow_validate_action_drop(action_flags,
-@@ -5017,6 +5031,7 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
+@@ -4781,6 +4795,7 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
  				return ret;
  			/* Count VID with push_vlan command. */
  			action_flags |= MLX5_FLOW_ACTION_OF_SET_VLAN_VID;
@@ -317,7 +318,7 @@
  			break;
  		case RTE_FLOW_ACTION_TYPE_VXLAN_ENCAP:
  		case RTE_FLOW_ACTION_TYPE_NVGRE_ENCAP:
-@@ -5078,8 +5093,15 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
+@@ -4842,8 +4857,15 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
  					RTE_FLOW_ACTION_TYPE_SET_MAC_SRC ?
  						MLX5_FLOW_ACTION_SET_MAC_SRC :
  						MLX5_FLOW_ACTION_SET_MAC_DST;
@@ -334,7 +335,7 @@
  		case RTE_FLOW_ACTION_TYPE_SET_IPV4_SRC:
  		case RTE_FLOW_ACTION_TYPE_SET_IPV4_DST:
  			ret = flow_dv_validate_action_modify_ipv4(action_flags,
-@@ -5095,6 +5117,7 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
+@@ -4859,6 +4881,7 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
  					RTE_FLOW_ACTION_TYPE_SET_IPV4_SRC ?
  						MLX5_FLOW_ACTION_SET_IPV4_SRC :
  						MLX5_FLOW_ACTION_SET_IPV4_DST;
@@ -342,7 +343,7 @@
  			break;
  		case RTE_FLOW_ACTION_TYPE_SET_IPV6_SRC:
  		case RTE_FLOW_ACTION_TYPE_SET_IPV6_DST:
-@@ -5117,6 +5140,7 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
+@@ -4881,6 +4904,7 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
  					RTE_FLOW_ACTION_TYPE_SET_IPV6_SRC ?
  						MLX5_FLOW_ACTION_SET_IPV6_SRC :
  						MLX5_FLOW_ACTION_SET_IPV6_DST;
@@ -350,7 +351,7 @@
  			break;
  		case RTE_FLOW_ACTION_TYPE_SET_TP_SRC:
  		case RTE_FLOW_ACTION_TYPE_SET_TP_DST:
-@@ -5133,6 +5157,7 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
+@@ -4897,6 +4921,7 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
  					RTE_FLOW_ACTION_TYPE_SET_TP_SRC ?
  						MLX5_FLOW_ACTION_SET_TP_SRC :
  						MLX5_FLOW_ACTION_SET_TP_DST;
@@ -358,7 +359,7 @@
  			break;
  		case RTE_FLOW_ACTION_TYPE_DEC_TTL:
  		case RTE_FLOW_ACTION_TYPE_SET_TTL:
-@@ -5149,6 +5174,7 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
+@@ -4913,6 +4938,7 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
  					RTE_FLOW_ACTION_TYPE_SET_TTL ?
  						MLX5_FLOW_ACTION_SET_TTL :
  						MLX5_FLOW_ACTION_DEC_TTL;
@@ -366,7 +367,7 @@
  			break;
  		case RTE_FLOW_ACTION_TYPE_JUMP:
  			ret = flow_dv_validate_action_jump(actions,
-@@ -5176,6 +5202,7 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
+@@ -4940,6 +4966,7 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
  					RTE_FLOW_ACTION_TYPE_INC_TCP_SEQ ?
  						MLX5_FLOW_ACTION_INC_TCP_SEQ :
  						MLX5_FLOW_ACTION_DEC_TCP_SEQ;
@@ -374,7 +375,7 @@
  			break;
  		case RTE_FLOW_ACTION_TYPE_INC_TCP_ACK:
  		case RTE_FLOW_ACTION_TYPE_DEC_TCP_ACK:
-@@ -5193,10 +5220,13 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
+@@ -4957,10 +4984,13 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
  					RTE_FLOW_ACTION_TYPE_INC_TCP_ACK ?
  						MLX5_FLOW_ACTION_INC_TCP_ACK :
  						MLX5_FLOW_ACTION_DEC_TCP_ACK;
@@ -389,32 +390,16 @@
  			break;
  		case RTE_FLOW_ACTION_TYPE_METER:
  			ret = mlx5_flow_validate_action_meter(dev,
-@@ -5207,6 +5237,8 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
+@@ -4971,6 +5001,8 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
  				return ret;
  			action_flags |= MLX5_FLOW_ACTION_METER;
  			++actions_n;
 +			/* Meter action will add one more TAG action. */
 +			rw_act_num += MLX5_ACT_NUM_SET_TAG;
  			break;
- 		case RTE_FLOW_ACTION_TYPE_SET_IPV4_DSCP:
- 			ret = flow_dv_validate_action_modify_ipv4_dscp
-@@ -5220,6 +5252,7 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
- 			if (!(action_flags & MLX5_FLOW_MODIFY_HDR_ACTIONS))
- 				++actions_n;
- 			action_flags |= MLX5_FLOW_ACTION_SET_IPV4_DSCP;
-+			rw_act_num += MLX5_ACT_NUM_SET_DSCP;
- 			break;
- 		case RTE_FLOW_ACTION_TYPE_SET_IPV6_DSCP:
- 			ret = flow_dv_validate_action_modify_ipv6_dscp
-@@ -5233,6 +5266,7 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
- 			if (!(action_flags & MLX5_FLOW_MODIFY_HDR_ACTIONS))
- 				++actions_n;
- 			action_flags |= MLX5_FLOW_ACTION_SET_IPV6_DSCP;
-+			rw_act_num += MLX5_ACT_NUM_SET_DSCP;
- 			break;
  		default:
  			return rte_flow_error_set(error, ENOTSUP,
-@@ -5305,6 +5339,21 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
+@@ -5043,6 +5075,21 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr,
  						  NULL, "encap is not supported"
  						  " for ingress traffic");
  	}
@@ -437,10 +422,10 @@
  }
  
 diff --git a/drivers/net/mlx5/mlx5_flow_verbs.c b/drivers/net/mlx5/mlx5_flow_verbs.c
-index 722220c3d3..d20098ce45 100644
+index c162527a5e..f66489c791 100644
 --- a/drivers/net/mlx5/mlx5_flow_verbs.c
 +++ b/drivers/net/mlx5/mlx5_flow_verbs.c
-@@ -1108,6 +1108,8 @@ flow_verbs_translate_action_count(struct mlx5_flow *dev_flow,
+@@ -1016,6 +1016,8 @@ flow_verbs_translate_action_count(struct mlx5_flow *dev_flow,
   *   Pointer to the list of actions.
   * @param[in] external
   *   This flow rule is created by request external to PMD.
@@ -449,7 +434,7 @@
   * @param[out] error
   *   Pointer to the error structure.
   *
-@@ -1120,6 +1122,7 @@ flow_verbs_validate(struct rte_eth_dev *dev,
+@@ -1028,6 +1030,7 @@ flow_verbs_validate(struct rte_eth_dev *dev,
  		    const struct rte_flow_item items[],
  		    const struct rte_flow_action actions[],
  		    bool external __rte_unused,

  parent reply index

Thread overview: 371+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-19 12:53 [dpdk-stable] patch 'crypto/octeontx2: fix build with gcc 10' " luca.boccassi
2020-05-19 12:53 ` [dpdk-stable] patch 'test: " luca.boccassi
2020-05-19 12:53 ` [dpdk-stable] patch 'app/pipeline: " luca.boccassi
2020-05-19 12:53 ` [dpdk-stable] patch 'examples/vhost_blk: " luca.boccassi
2020-05-19 12:53 ` [dpdk-stable] patch 'examples/eventdev: " luca.boccassi
2020-05-19 12:53 ` [dpdk-stable] patch 'examples/qos_sched: " luca.boccassi
2020-05-19 12:53 ` [dpdk-stable] patch 'drivers: add crypto as dependency for event drivers' " luca.boccassi
2020-05-19 12:53 ` [dpdk-stable] patch 'drivers/crypto: fix build with make 4.3' " luca.boccassi
2020-05-19 12:53 ` [dpdk-stable] patch 'eal: fix log message print for regex' " luca.boccassi
2020-05-19 12:53 ` [dpdk-stable] patch 'eal/arm64: fix precise TSC' " luca.boccassi
2020-05-19 12:53 ` [dpdk-stable] patch 'mem: mark pages as not accessed when reserving VA' " luca.boccassi
2020-06-09 13:45   ` Kevin Traynor
2020-06-09 14:14     ` Luca Boccassi
2020-06-12  8:00       ` Luca Boccassi
2020-06-16  8:13         ` David Marchand
2020-06-16 10:41           ` Luca Boccassi
2020-05-19 12:53 ` [dpdk-stable] patch 'service: fix crash on exit' " luca.boccassi
2020-05-19 12:53 ` [dpdk-stable] patch 'telemetry: fix port stats retrieval' " luca.boccassi
2020-05-19 12:53 ` [dpdk-stable] patch 'pci: remove unneeded includes in public header file' " luca.boccassi
2020-05-19 12:53 ` [dpdk-stable] patch 'pci: fix build on FreeBSD' " luca.boccassi
2020-05-19 12:53 ` [dpdk-stable] patch 'pci: fix build on ppc' " luca.boccassi
2020-05-19 12:53 ` [dpdk-stable] patch 'build: fix linker warnings with clang on Windows' " luca.boccassi
2020-05-19 12:53 ` [dpdk-stable] patch 'net/octeontx2: fix link information for loopback port' " luca.boccassi
2020-05-19 12:53 ` [dpdk-stable] patch 'net/i40e: relax barrier in Tx' " luca.boccassi
2020-05-19 12:53 ` [dpdk-stable] patch 'net/mlx5: fix VLAN PCP item calculation' " luca.boccassi
2020-05-19 12:53 ` [dpdk-stable] patch 'net/i40e: fix X722 performance' " luca.boccassi
2020-05-19 12:53 ` [dpdk-stable] patch 'net/ice: fix hash flow crash' " luca.boccassi
2020-05-19 12:53 ` [dpdk-stable] patch 'net/enetc: fix Rx lock-up' " luca.boccassi
2020-05-19 12:53 ` [dpdk-stable] patch 'net/ice: remove unnecessary variable' " luca.boccassi
2020-05-19 12:53 ` [dpdk-stable] patch 'doc: fix number of failsafe sub-devices' " luca.boccassi
2020-05-19 12:53 ` [dpdk-stable] patch 'net/sfc: fix reported promiscuous/multicast mode' " luca.boccassi
2020-05-19 12:53 ` [dpdk-stable] patch 'net/vmxnet3: fix RSS setting on v4' " luca.boccassi
2020-05-19 12:53 ` [dpdk-stable] patch 'net/sfc: fix initialization error path' " luca.boccassi
2020-05-19 12:53 ` [dpdk-stable] patch 'net/sfc: fix Rx queue start failure " luca.boccassi
2020-05-19 12:53 ` [dpdk-stable] patch 'net/ice: remove bulk alloc option' " luca.boccassi
2020-05-19 12:53 ` [dpdk-stable] patch 'net/mlx5: fix mask used for IPv6 item validation' " luca.boccassi
2020-05-19 12:53 ` [dpdk-stable] patch 'build: support MinGW-w64 with Meson' " luca.boccassi
2020-05-19 12:53 ` [dpdk-stable] patch 'net/memif: fix init when already connected' " luca.boccassi
2020-05-19 12:53 ` [dpdk-stable] patch 'net/hinic: fix snprintf length of cable info' " luca.boccassi
2020-05-19 12:53 ` [dpdk-stable] patch 'net/hinic: fix repeating cable log and length check' " luca.boccassi
2020-05-19 12:53 ` [dpdk-stable] patch 'net/hns3: fix promiscuous mode for PF' " luca.boccassi
2020-05-19 12:53 ` [dpdk-stable] patch 'ethdev: fix spelling' " luca.boccassi
2020-05-19 12:53 ` [dpdk-stable] patch 'net/sfc: fix promiscuous and allmulticast toggles errors' " luca.boccassi
2020-05-19 12:53 ` [dpdk-stable] patch 'net/sfc: set priority of created filters to manual' " luca.boccassi
2020-05-19 12:53 ` [dpdk-stable] patch 'net/sfc/base: reduce filter priorities to implemented only' " luca.boccassi
2020-05-19 12:53 ` [dpdk-stable] patch 'net/sfc/base: reject automatic filter creation by users' " luca.boccassi
2020-05-19 12:53 ` [dpdk-stable] patch 'net/sfc/base: refactor filter lookup loop in EF10' " luca.boccassi
2020-05-19 12:53 ` [dpdk-stable] patch 'net/sfc/base: handle manual and auto filter clashes " luca.boccassi
2020-05-20  9:53   ` Igor Romanov
2020-05-20 11:57     ` Luca Boccassi
2020-05-20 12:12       ` Igor Romanov
2020-05-20 16:50         ` Luca Boccassi
2020-05-19 12:53 ` [dpdk-stable] patch 'net/mlx5: fix zero metadata action' " luca.boccassi
2020-05-19 12:53 ` [dpdk-stable] patch 'net/hinic: allocate IO memory with socket id' " luca.boccassi
2020-05-19 12:53 ` [dpdk-stable] patch 'net/mlx5: fix CVLAN tag set in IP item translation' " luca.boccassi
2020-05-19 12:53 ` [dpdk-stable] patch 'net/mlx5: reduce Tx completion index memory loads' " luca.boccassi
2020-05-19 12:53 ` [dpdk-stable] patch 'contigmem: cleanup properly when load fails' " luca.boccassi
2020-05-19 12:53 ` [dpdk-stable] patch 'devtools: fix symbol map change check' " luca.boccassi
2020-05-19 12:54 ` [dpdk-stable] patch 'test: load drivers when required' " luca.boccassi
2020-05-19 12:54 ` [dpdk-stable] patch 'test: skip some subtests in no-huge mode' " luca.boccassi
2020-05-19 12:54 ` [dpdk-stable] patch 'eal/freebsd: fix queuing duplicate alarm callbacks' " luca.boccassi
2020-05-19 12:54 ` [dpdk-stable] patch 'mem: preallocate VA space in no-huge mode' " luca.boccassi
2020-05-19 12:54 ` [dpdk-stable] patch 'test/kvargs: fix to consider empty elements as valid' " luca.boccassi
2020-05-19 12:54 ` [dpdk-stable] patch 'test/kvargs: fix invalid cases check' " luca.boccassi
2020-05-19 12:54 ` [dpdk-stable] patch 'kvargs: fix buffer overflow when parsing list' " luca.boccassi
2020-05-19 12:54 ` [dpdk-stable] patch 'bus/pci: fix devargs on probing again' " luca.boccassi
2020-05-19 12:54 ` [dpdk-stable] patch 'ci: fix telemetry dependency in Travis' " luca.boccassi
2020-05-19 12:54 ` [dpdk-stable] patch 'fib: fix headers for C++ support' " luca.boccassi
2020-05-19 12:54 ` [dpdk-stable] patch 'cryptodev: fix missing device id range checking' " luca.boccassi
2020-05-19 12:54 ` [dpdk-stable] patch 'common/qat: fix GEN3 marketing name' " luca.boccassi
2020-06-04 17:13   ` Trahe, Fiona
2020-06-05  7:52     ` Luca Boccassi
2020-05-19 12:54 ` [dpdk-stable] patch 'test/ipsec: fix crash in session destroy' " luca.boccassi
2020-05-19 12:54 ` [dpdk-stable] patch 'baseband/turbo_sw: fix exposed LLR decimals assumption' " luca.boccassi
2020-05-19 12:54 ` [dpdk-stable] patch 'crypto/nitrox: fix CSR register address generation' " luca.boccassi
2020-05-19 12:54 ` [dpdk-stable] patch 'crypto/nitrox: fix oversized device name' " luca.boccassi
2020-05-19 12:54 ` [dpdk-stable] patch 'event/dsw: remove redundant control ring poll' " luca.boccassi
2020-05-19 12:54 ` [dpdk-stable] patch 'event/dsw: remove unnecessary read barrier' " luca.boccassi
2020-05-19 12:54 ` [dpdk-stable] patch 'doc: fix sphinx compatibility' " luca.boccassi
2020-05-19 12:54 ` [dpdk-stable] patch 'ipsec: fix build dependency on hash lib' " luca.boccassi
2020-05-19 12:54 ` [dpdk-stable] patch 'log: fix level picked with globbing on type register' " luca.boccassi
2020-05-19 12:54 ` [dpdk-stable] patch 'doc: fix matrix CSS for recent sphinx' " luca.boccassi
2020-05-19 12:54 ` [dpdk-stable] patch 'eal: fix PRNG init with HPET enabled' " luca.boccassi
2020-05-19 12:54 ` [dpdk-stable] patch 'vfio: fix race condition with sysfs' " luca.boccassi
2020-05-19 12:54 ` [dpdk-stable] patch 'vfio: fix use after free with multiprocess' " luca.boccassi
2020-05-19 12:54 ` [dpdk-stable] patch 'drivers: fix log type variables for -fno-common' " luca.boccassi
2020-05-19 12:54 ` [dpdk-stable] patch 'cryptodev: add asymmetric session-less feature name' " luca.boccassi
2020-05-19 12:54 ` [dpdk-stable] patch 'drivers/crypto: fix log type variables for -fno-common' " luca.boccassi
2020-05-19 12:54 ` [dpdk-stable] patch 'test/crypto: fix flag check' " luca.boccassi
2020-05-19 12:54 ` [dpdk-stable] patch 'crypto/openssl: fix out-of-place encryption' " luca.boccassi
2020-05-19 12:54 ` [dpdk-stable] patch 'security: fix verification of parameters' " luca.boccassi
2020-05-19 13:02 ` [dpdk-stable] patch 'security: fix return types in documentation' " luca.boccassi
2020-05-19 13:02   ` [dpdk-stable] patch 'security: fix session counter' " luca.boccassi
2020-05-19 13:02   ` [dpdk-stable] patch 'test: remove redundant macro' " luca.boccassi
2020-05-19 13:02   ` [dpdk-stable] patch 'net/hns3: fix packets offload features flags in Rx' " luca.boccassi
2020-05-19 13:02   ` [dpdk-stable] patch 'net/hns3: fix default error code of command interface' " luca.boccassi
2020-05-19 13:02   ` [dpdk-stable] patch 'net/hns3: fix crash when flushing RSS flow rules with FLR' " luca.boccassi
2020-05-19 13:02   ` [dpdk-stable] patch 'net/hns3: fix configuring illegal VLAN PVID' " luca.boccassi
2020-05-19 13:02   ` [dpdk-stable] patch 'net/hns3: fix status after repeated resets' " luca.boccassi
2020-05-19 13:02   ` [dpdk-stable] patch 'net/hinic: fix LRO' " luca.boccassi
2020-05-19 13:02   ` [dpdk-stable] patch 'net/hinic/base: fix port start during FW hot update' " luca.boccassi
2020-05-19 13:02   ` [dpdk-stable] patch 'net/ipn3ke: use control thread to check link status' " luca.boccassi
2020-05-19 13:02   ` [dpdk-stable] patch 'net/hns3: fix configuring RSS hash when rules are flushed' " luca.boccassi
2020-05-19 13:02   ` [dpdk-stable] patch 'net/hns3: fix mailbox opcode data type' " luca.boccassi
2020-05-19 13:02   ` [dpdk-stable] patch 'net/hns3: fix return value of setting VLAN offload' " luca.boccassi
2020-05-19 13:02   ` [dpdk-stable] patch 'net/ice/base: fix uninitialized stack variables' " luca.boccassi
2020-05-19 13:02   ` [dpdk-stable] patch 'net/ice/base: read PSM clock frequency from register' " luca.boccassi
2020-05-19 13:02   ` [dpdk-stable] patch 'net/ice/base: minor fixes' " luca.boccassi
2020-05-19 13:02   ` [dpdk-stable] patch 'net/ice/base: fix MAC write command' " luca.boccassi
2020-05-19 13:02   ` [dpdk-stable] patch 'net/ixgbe: fix link status inconsistencies' " luca.boccassi
2020-05-19 13:02   ` [dpdk-stable] patch 'net/mlx5: fix validation of VXLAN/VXLAN-GPE specs' " luca.boccassi
2020-05-19 13:02   ` [dpdk-stable] patch 'net/mlx5: fix metadata for compressed Rx CQEs' " luca.boccassi
2020-05-19 13:02   ` [dpdk-stable] patch 'net/mlx5: update VLAN and encap actions validation' " luca.boccassi
2020-05-19 13:02   ` [dpdk-stable] patch 'net/mlx5: fix call to modify action without init item' " luca.boccassi
2020-05-19 13:02   ` [dpdk-stable] patch 'net/mlx5: fix zero value validation for metadata' " luca.boccassi
2020-05-19 13:02   ` [dpdk-stable] patch 'examples/vmdq: fix output of pools/queues' " luca.boccassi
2020-05-19 13:02   ` [dpdk-stable] patch 'net/mvneta: do not use PMD log type' " luca.boccassi
2020-05-19 13:02   ` [dpdk-stable] patch 'net/virtio: " luca.boccassi
2020-05-19 13:02   ` [dpdk-stable] patch 'net/tap: " luca.boccassi
2020-05-19 13:02   ` [dpdk-stable] patch 'net/pfe: " luca.boccassi
2020-05-19 13:02   ` [dpdk-stable] patch 'net/bnxt: " luca.boccassi
2020-05-19 13:02   ` [dpdk-stable] patch 'net/dpaa: use dynamic " luca.boccassi
2020-05-19 13:02   ` [dpdk-stable] patch 'net/thunderx: " luca.boccassi
2020-05-19 13:02   ` [dpdk-stable] patch 'net/mlx5: fix imissed counter overflow' " luca.boccassi
2020-05-19 13:02   ` [dpdk-stable] patch 'net/ice/base: fix binary order for GTPU filter' " luca.boccassi
2020-05-19 13:02   ` [dpdk-stable] patch 'net/ice/base: check memory pointer before copying' " luca.boccassi
2020-05-19 13:02   ` [dpdk-stable] patch 'net/tap: remove unused assert' " luca.boccassi
2020-05-19 13:02   ` [dpdk-stable] patch 'net/octeontx: fix meson build for disabled drivers' " luca.boccassi
2020-05-19 13:02   ` [dpdk-stable] patch 'net/octeontx2: fix device configuration sequence' " luca.boccassi
2020-05-19 13:02   ` [dpdk-stable] patch 'net/ice: change default tunnel type' " luca.boccassi
2020-05-19 13:02   ` [dpdk-stable] patch 'net/ice: add action number check for switch' " luca.boccassi
2020-05-19 13:02   ` [dpdk-stable] patch 'net/ice: fix input set of VLAN item' " luca.boccassi
2020-05-19 13:02   ` [dpdk-stable] patch 'net/netvsc: propagate descriptor limits from VF' " luca.boccassi
2020-05-19 13:02   ` [dpdk-stable] patch 'net/netvsc: handle Rx packets during multi-channel setup' " luca.boccassi
2020-05-19 13:02   ` [dpdk-stable] patch 'net/netvsc: split send buffers from Tx descriptors' " luca.boccassi
2020-05-19 13:03   ` [dpdk-stable] patch 'net/netvsc: fix memory free on device close' " luca.boccassi
2020-05-19 13:03   ` [dpdk-stable] patch 'net/netvsc: remove process event optimization' " luca.boccassi
2020-05-19 13:03   ` [dpdk-stable] patch 'net/netvsc: handle Tx completions based on burst size' " luca.boccassi
2020-05-19 13:03   ` [dpdk-stable] patch 'net/netvsc: avoid possible live lock' " luca.boccassi
2020-05-19 13:03   ` [dpdk-stable] patch 'net/memif: fix resource leak' " luca.boccassi
2020-05-19 13:03   ` [dpdk-stable] patch 'ethdev: fix build when vtune profiling is on' " luca.boccassi
2020-05-19 13:03   ` [dpdk-stable] patch 'examples/vmdq: fix RSS configuration' " luca.boccassi
2020-05-19 13:03   ` [dpdk-stable] patch 'net/nfp: fix log format specifiers' " luca.boccassi
2020-05-19 13:03   ` [dpdk-stable] patch 'net/nfp: fix dangling pointer on probe failure' " luca.boccassi
2020-05-19 13:03   ` [dpdk-stable] patch 'net/ice: fix RSS advanced rule' " luca.boccassi
2020-05-19 13:03   ` [dpdk-stable] patch 'net/ice/base: remove unused code in switch " luca.boccassi
2020-05-19 13:03   ` [dpdk-stable] patch 'net/ena/base: make allocation macros thread-safe' " luca.boccassi
2020-05-19 13:03   ` [dpdk-stable] patch 'net/ena/base: prevent allocation of zero sized memory' " luca.boccassi
2020-05-19 13:03   ` [dpdk-stable] patch 'net/ena/base: fix documentation of functions' " luca.boccassi
2020-05-19 13:03   ` [dpdk-stable] patch 'net/ena/base: fix indentation in CQ polling' " luca.boccassi
2020-05-19 13:03   ` [dpdk-stable] patch 'net/ena/base: fix indentation of multiple defines' " luca.boccassi
2020-05-19 13:03   ` [dpdk-stable] patch 'net/ena: set IO ring size to valid value' " luca.boccassi
2020-05-19 13:03   ` [dpdk-stable] patch 'net/mlx5: fix counter container usage' " luca.boccassi
2020-05-19 13:03   ` [dpdk-stable] patch 'app/testpmd: fix PPPoE flow command' " luca.boccassi
2020-05-19 13:03   ` [dpdk-stable] patch 'net/pfe: fix double free of MAC address' " luca.boccassi
2020-05-19 13:03   ` [dpdk-stable] patch 'net/null: fix secondary burst function selection' " luca.boccassi
2020-05-19 13:03   ` [dpdk-stable] patch 'net/null: remove redundant check' " luca.boccassi
2020-05-19 13:03   ` [dpdk-stable] patch 'net/hinic/base: fix PF firmware hot-active problem' " luca.boccassi
2020-05-20 12:29     ` Wangxiaoyun (Cloud)
2020-05-20 12:48       ` Kevin Traynor
2020-05-20 16:55       ` Luca Boccassi
2020-05-19 13:03   ` [dpdk-stable] patch 'vhost/crypto: add missing user protocol flag' " luca.boccassi
2020-05-19 13:03   ` [dpdk-stable] patch 'vhost: fix packed ring zero-copy' " luca.boccassi
2020-05-19 13:03   ` [dpdk-stable] patch 'net/vhost: fix potential memory leak on close' " luca.boccassi
2020-05-19 13:03   ` [dpdk-stable] patch 'net/virtio: fix outdated comment' " luca.boccassi
2020-05-19 13:03   ` [dpdk-stable] patch 'vhost: remove unused variable' " luca.boccassi
2020-05-19 13:03   ` [dpdk-stable] patch 'vhost: make IOTLB cache name unique among processes' " luca.boccassi
2020-05-19 13:03   ` [dpdk-stable] patch 'net/hns3: clear residual flow rules on init' " luca.boccassi
2020-05-19 13:03   ` [dpdk-stable] patch 'net/hns3: add RSS hash offload to capabilities' " luca.boccassi
2020-05-19 13:03   ` [dpdk-stable] patch 'net/hns3: fix RSS key length' " luca.boccassi
2020-05-19 13:03   ` [dpdk-stable] patch 'net/hns3: fix default VLAN filter configuration for PF' " luca.boccassi
2020-05-19 13:03   ` [dpdk-stable] patch 'net/hns3: fix VLAN filter when setting promisucous mode' " luca.boccassi
2020-05-19 13:03   ` [dpdk-stable] patch 'common/mlx5: fix build with -fno-common' " luca.boccassi
2020-05-19 13:03   ` [dpdk-stable] patch 'net/mlx4: " luca.boccassi
2020-05-19 13:03   ` [dpdk-stable] patch 'net/mlx5: use open/read/close for ib stats query' " luca.boccassi
2020-05-19 13:03   ` [dpdk-stable] patch 'net/octeontx2: enable error and RAS interrupt in configure' " luca.boccassi
2020-05-19 13:03   ` [dpdk-stable] patch 'net/octeontx2: disable unnecessary error interrupts' " luca.boccassi
2020-05-19 13:03   ` [dpdk-stable] patch 'net/i40e: relax barrier in Tx for NEON' " luca.boccassi
2020-05-19 13:03   ` [dpdk-stable] patch 'net/mlx5: add device parameter for MPRQ stride size' " luca.boccassi
2020-05-19 13:03   ` [dpdk-stable] patch 'net/mlx5: enable MPRQ multi-stride operations' " luca.boccassi
2020-05-19 13:03   ` [dpdk-stable] patch 'net/mlx5: add multi-segment packets in MPRQ mode' " luca.boccassi
2020-05-19 13:03   ` [dpdk-stable] patch 'net/mlx5: fix meter suffix table leak' " luca.boccassi
2020-05-19 13:03   ` [dpdk-stable] patch 'net/mlx5: fix jump " luca.boccassi
2020-05-19 13:03   ` [dpdk-stable] patch 'net/enic: fix flow action reordering' " luca.boccassi
2020-05-19 13:03   ` [dpdk-stable] patch 'net/mlx5: fix push VLAN action to use item info' " luca.boccassi
2020-05-19 13:03   ` [dpdk-stable] patch 'net/mlx5: fix validation of push VLAN without full mask' " luca.boccassi
2020-05-19 13:03   ` [dpdk-stable] patch 'net/tap: fix mbuf double free when writev fails' " luca.boccassi
2020-05-19 13:03   ` [dpdk-stable] patch 'net/tap: fix mbuf and mem leak during queue release' " luca.boccassi
2020-05-19 13:03   ` [dpdk-stable] patch 'net/tap: fix check for mbuf number of segment' " luca.boccassi
2020-05-19 13:03   ` [dpdk-stable] patch 'net/tap: fix file close on remove' " luca.boccassi
2020-05-19 13:03   ` [dpdk-stable] patch 'net/tap: fix fd leak on creation failure' " luca.boccassi
2020-05-19 13:03   ` [dpdk-stable] patch 'net/tap: fix unexpected link handler' " luca.boccassi
2020-05-19 13:03   ` [dpdk-stable] patch 'vhost: fix shadow update' " luca.boccassi
2020-05-19 13:03   ` [dpdk-stable] patch 'vhost: fix shadowed descriptors not flushed' " luca.boccassi
2020-05-19 13:03   ` [dpdk-stable] patch 'net/virtio-user: fix devargs parsing' " luca.boccassi
2020-05-19 13:03   ` [dpdk-stable] patch 'net/tap: fix queues fd check before close' " luca.boccassi
2020-05-19 13:03   ` [dpdk-stable] patch 'net/i40e: fix flow director initialisation' " luca.boccassi
2020-05-19 13:03   ` [dpdk-stable] patch 'common/mlx5: fix build with rdma-core 21' " luca.boccassi
2020-05-19 13:04   ` [dpdk-stable] patch 'net/mlx5: fix crash when releasing meter table' " luca.boccassi
2020-05-19 13:04   ` luca.boccassi [this message]
2020-05-19 13:04   ` [dpdk-stable] patch 'net/mlx5: set dynamic flow metadata in Rx queues' " luca.boccassi
2020-05-19 13:04   ` [dpdk-stable] patch 'net/mlx5: improve logging of MPRQ selection' " luca.boccassi
2020-05-19 13:04   ` [dpdk-stable] patch 'net/ixgbe: fix resource leak after thread exits normally' " luca.boccassi
2020-05-19 13:04   ` [dpdk-stable] patch 'net/ixgbe: fix link status after port reset' " luca.boccassi
2020-05-19 13:04   ` [dpdk-stable] patch 'net/iavf: fix stats query error code' " luca.boccassi
2020-05-19 13:04   ` [dpdk-stable] patch 'net/bnxt: fix HWRM command during FW reset' " luca.boccassi
2020-05-19 13:04   ` [dpdk-stable] patch 'net/bnxt: use true/false for bool types' " luca.boccassi
2020-05-19 13:04   ` [dpdk-stable] patch 'net/bnxt: fix port start failure handling' " luca.boccassi
2020-05-19 13:04   ` [dpdk-stable] patch 'net/bnxt: fix VLAN add when port is stopped' " luca.boccassi
2020-05-19 13:04   ` [dpdk-stable] patch 'security: fix crash at accessing non-implemented ops' " luca.boccassi
2020-05-19 13:04   ` [dpdk-stable] patch 'mempool: remove inline functions from export list' " luca.boccassi
2020-05-19 13:04   ` [dpdk-stable] patch 'lpm6: fix size of tbl8 group' " luca.boccassi
2020-05-19 13:04   ` [dpdk-stable] patch 'lpm6: fix comments spelling' " luca.boccassi
2020-05-19 13:04   ` [dpdk-stable] patch 'eal: " luca.boccassi
2020-05-19 13:04   ` [dpdk-stable] patch 'timer: protect initialization with lock' " luca.boccassi
2020-05-19 13:04   ` [dpdk-stable] patch 'fix various typos found by Lintian' " luca.boccassi
2020-05-19 13:04   ` [dpdk-stable] patch 'app: fix usage help of options separated by dashes' " luca.boccassi
2020-05-19 13:04   ` [dpdk-stable] patch 'usertools: check for pci.ids in /usr/share/misc' " luca.boccassi
2020-05-19 13:04   ` [dpdk-stable] patch 'bus/pci: fix UIO resource access from secondary process' " luca.boccassi
2020-05-19 13:04   ` [dpdk-stable] patch 'net/bnxt: fix memory leak during queue restart' " luca.boccassi
2020-05-19 13:04   ` [dpdk-stable] patch 'net/bnxt: fix VNIC Rx queue count on VNIC free' " luca.boccassi
2020-05-19 13:04   ` [dpdk-stable] patch 'app/testpmd: add parsing for QinQ VLAN headers' " luca.boccassi
2020-05-19 13:04   ` [dpdk-stable] patch 'doc: fix log level example in Linux guide' " luca.boccassi
2020-05-19 13:04   ` [dpdk-stable] patch 'eal: fix typo in endian conversion macros' " luca.boccassi
2020-05-19 13:04   ` [dpdk-stable] patch 'net/avp: fix gcc 10 maybe-uninitialized warning' " luca.boccassi
2020-05-19 13:04   ` [dpdk-stable] patch 'examples/ipsec-gw: " luca.boccassi
2020-05-19 13:04   ` [dpdk-stable] patch 'eal/x86: ignore gcc 10 stringop-overflow warnings' " luca.boccassi
2020-05-19 13:04   ` [dpdk-stable] patch 'kvargs: fix invalid token parsing on FreeBSD' " luca.boccassi
2020-05-19 13:04   ` [dpdk-stable] patch 'eal/ppc: fix build with gcc 9.3' " luca.boccassi
2020-05-19 13:04   ` [dpdk-stable] patch 'net/bnxt: fix max ring count' " luca.boccassi
2020-05-19 13:04   ` [dpdk-stable] patch 'net/i40e: fix flow director for ARP packets' " luca.boccassi
2020-05-19 13:04   ` [dpdk-stable] patch 'doc: add i40e limitation for flow director' " luca.boccassi
2020-05-19 13:04   ` [dpdk-stable] patch 'net/i40e: fix flush of flow director filter' " luca.boccassi
2020-05-19 13:04   ` [dpdk-stable] patch 'net/mlx5: fix assert in doorbell lookup' " luca.boccassi
2020-05-19 13:04   ` [dpdk-stable] patch 'vhost: fix peer close check' " luca.boccassi
2020-05-19 13:04   ` [dpdk-stable] patch 'vhost: prevent zero-copy with incompatible client mode' " luca.boccassi
2020-05-19 13:04   ` [dpdk-stable] patch 'net/mlx5: fix assert in dynamic metadata handling' " luca.boccassi
2020-05-19 13:04   ` [dpdk-stable] patch 'net/mlx5: fix actions validation on root table' " luca.boccassi
2020-05-19 13:04   ` [dpdk-stable] patch 'net/sfc/base: use simpler EF10 family conditional check' " luca.boccassi
2020-05-19 13:04   ` [dpdk-stable] patch 'net/sfc/base: use simpler EF10 family run-time checks' " luca.boccassi
2020-05-19 13:04   ` [dpdk-stable] patch 'net/sfc/base: fix build when EVB is enabled' " luca.boccassi
2020-05-19 13:04   ` [dpdk-stable] patch 'net/softnic: fix memory leak for thread' " luca.boccassi
2020-05-19 13:04   ` [dpdk-stable] patch 'net/softnic: fix resource leak for pipeline' " luca.boccassi
2020-05-19 13:04   ` [dpdk-stable] patch 'net/hns3: fix VLAN PVID when configuring device' " luca.boccassi
2020-05-19 13:04   ` [dpdk-stable] patch 'net/hns3: fix return value when clearing statistics' " luca.boccassi
2020-05-19 13:04   ` [dpdk-stable] patch 'net/octeontx: fix dangling pointer on init failure' " luca.boccassi
2020-05-19 13:04   ` [dpdk-stable] patch 'net/mlx5: fix RSS enablement' " luca.boccassi
2020-05-19 13:04   ` [dpdk-stable] patch 'net/mlx5: fix assert in modify converting' " luca.boccassi
2020-05-19 13:04   ` [dpdk-stable] patch 'net/mlx5: fix VLAN ID check' " luca.boccassi
2020-05-19 13:04   ` [dpdk-stable] patch 'net/mlx5: fix gcc 10 enum-conversion warning' " luca.boccassi
2020-05-19 13:04   ` [dpdk-stable] patch 'event/octeontx2: fix queue removal from Rx adapter' " luca.boccassi
2020-05-19 13:04   ` [dpdk-stable] patch 'eventdev: fix probe and remove for secondary process' " luca.boccassi
2020-05-19 13:04   ` [dpdk-stable] patch 'event/dsw: avoid reusing previously recorded events' " luca.boccassi
2020-05-19 13:04   ` [dpdk-stable] patch 'common/octeontx: fix gcc 9.1 ABI break' " luca.boccassi
2020-05-19 13:04   ` [dpdk-stable] patch 'mk: fix static linkage of mlx dependency' " luca.boccassi
2020-05-19 13:04   ` [dpdk-stable] patch 'service: fix race condition for MT unsafe service' " luca.boccassi
2020-05-19 13:04   ` [dpdk-stable] patch 'service: fix identification of service running on other lcore' " luca.boccassi
2020-05-19 13:04   ` [dpdk-stable] patch 'service: remove rte prefix from static functions' " luca.boccassi
2020-05-19 13:05   ` [dpdk-stable] patch 'remove references to private PCI probe function' " luca.boccassi
2020-05-19 13:05   ` [dpdk-stable] patch 'examples/l2fwd-keepalive: fix mbuf pool size' " luca.boccassi
2020-05-19 13:05   ` [dpdk-stable] patch 'mem: fix overflow on allocation' " luca.boccassi
2020-05-19 13:05   ` [dpdk-stable] patch 'examples/eventdev: fix crash on exit' " luca.boccassi
2020-05-19 13:05   ` [dpdk-stable] patch 'mempool/octeontx2: fix build for gcc O1 optimization' " luca.boccassi
2020-05-19 13:05   ` [dpdk-stable] patch 'net/ena: fix build for " luca.boccassi
2020-05-19 13:05   ` [dpdk-stable] patch 'event/octeontx2: " luca.boccassi
2020-05-19 13:05   ` [dpdk-stable] patch 'test/flow_classify: enable multi-sockets system' " luca.boccassi
2020-05-19 13:05   ` [dpdk-stable] patch 'bbdev: fix doxygen comments' " luca.boccassi
2020-05-19 13:05   ` [dpdk-stable] patch 'crypto/ccp: fix fd leak on probe failure' " luca.boccassi
2020-05-19 13:20     ` Kumar, Ravi1
2020-05-19 13:05   ` [dpdk-stable] patch 'app/crypto-perf: fix display of sample test vector' " luca.boccassi
2020-05-19 13:05   ` [dpdk-stable] patch 'crypto/qat: fix cipher descriptor for ZUC and SNOW' " luca.boccassi
2020-05-19 13:05   ` [dpdk-stable] patch 'crypto/kasumi: fix extern declaration' " luca.boccassi
2020-05-19 13:05   ` [dpdk-stable] patch 'examples/fips_validation: fix parsing of algorithms' " luca.boccassi
2020-05-19 13:05   ` [dpdk-stable] patch 'drivers/crypto: disable gcc 10 no-common errors' " luca.boccassi
2020-05-19 13:05   ` [dpdk-stable] patch 'ipsec: check SAD lookup error' " luca.boccassi
2020-05-19 13:05   ` [dpdk-stable] patch 'net/failsafe: fix fd leak' " luca.boccassi
2020-05-19 13:05   ` [dpdk-stable] patch 'app/testpmd: fix statistics after reset' " luca.boccassi
2020-05-19 13:05   ` [dpdk-stable] patch 'net/netvsc: fix comment spelling' " luca.boccassi
2020-05-19 13:05   ` [dpdk-stable] patch 'bus/vmbus: " luca.boccassi
2020-05-19 13:05   ` [dpdk-stable] patch 'net/netvsc: do RSS across Rx queue only' " luca.boccassi
2020-05-19 13:05   ` [dpdk-stable] patch 'net/netvsc: do not configure RSS if disabled' " luca.boccassi
2020-05-19 13:05   ` [dpdk-stable] patch 'net/bnxt: fix possible stack smashing' " luca.boccassi
2020-05-19 13:05   ` [dpdk-stable] patch 'net/iavf: fix link speed' " luca.boccassi
2020-05-19 13:05   ` [dpdk-stable] patch 'net/ixgbe: fix link status synchronization on BSD' " luca.boccassi
2020-05-19 13:05   ` [dpdk-stable] patch 'net/ice: support mark only action for flow director' " luca.boccassi
2020-05-19 13:05   ` [dpdk-stable] patch 'net/ice: fix crash in switch filter' " luca.boccassi
2020-05-19 13:05   ` [dpdk-stable] patch 'net/tap: fix crash in flow destroy' " luca.boccassi
2020-05-19 13:05   ` [dpdk-stable] patch 'net/bnxt: fix number of TQM ring' " luca.boccassi
2020-05-19 13:05   ` [dpdk-stable] patch 'net/bnxt: fix TQM ring context memory size' " luca.boccassi
2020-05-19 13:05   ` [dpdk-stable] patch 'net/virtio: fix crash when device reconnecting' " luca.boccassi
2020-05-19 13:05   ` [dpdk-stable] patch 'net/bnxt: fix FW version query' " luca.boccassi
2020-05-19 13:05   ` [dpdk-stable] patch 'app/testpmd: fix memory failure handling for i40e DDP' " luca.boccassi
2020-05-19 13:05   ` [dpdk-stable] patch 'bus/fslmc: fix dereferencing null pointer' " luca.boccassi
2020-05-19 13:05   ` [dpdk-stable] patch 'net/dpaa2: fix 10G port negotiation' " luca.boccassi
2020-05-19 13:05   ` [dpdk-stable] patch 'net/dpaa2: fix congestion ID for multiple traffic classes' " luca.boccassi
2020-05-19 13:05   ` [dpdk-stable] patch 'bus/fslmc: fix size of qman fq descriptor' " luca.boccassi
2020-05-19 13:05   ` [dpdk-stable] patch 'net/ixgbe: fix link state timing on fiber ports' " luca.boccassi
2020-05-19 13:05   ` [dpdk-stable] patch 'Revert "net/bnxt: fix TQM ring context memory size"' " luca.boccassi
2020-05-19 13:05   ` [dpdk-stable] patch 'Revert "net/bnxt: fix number of TQM ring"' " luca.boccassi
2020-05-19 13:05   ` [dpdk-stable] patch 'net/ice: fix variable initialization' " luca.boccassi
2020-05-19 13:05   ` [dpdk-stable] patch 'net/ring: fix device pointer on allocation' " luca.boccassi
2020-05-19 13:05   ` [dpdk-stable] patch 'net/mlx5: fix match on empty VLAN item in DV mode' " luca.boccassi
2020-05-19 13:05   ` [dpdk-stable] patch 'net/mlx5: fix matching for UDP tunnels with Verbs' " luca.boccassi
2020-05-19 13:05   ` [dpdk-stable] patch 'net/mlx5: fix meter color register consideration' " luca.boccassi
2020-05-19 13:05   ` [dpdk-stable] patch 'net/mlx4: fix drop queue error handling' " luca.boccassi
2020-05-19 13:05   ` [dpdk-stable] patch 'net/mlx5: fix Tx queue release debug log timing' " luca.boccassi
2020-05-19 13:05   ` [dpdk-stable] patch 'app: remove extra new line after link duplex' " luca.boccassi
2020-05-19 13:05   ` [dpdk-stable] patch 'examples: " luca.boccassi
2020-05-19 13:05   ` [dpdk-stable] patch 'crypto/qat: support plain SHA1..SHA512 hashes' " luca.boccassi
2020-05-22  9:39     ` [dpdk-stable] patch 'event/dsw: fix enqueue burst return value' " luca.boccassi
2020-05-22  9:39       ` [dpdk-stable] patch 'app/eventdev: check Tx adapter service ID' " luca.boccassi
2020-05-22  9:39       ` [dpdk-stable] patch 'crypto/caam_jr: fix check of file descriptors' " luca.boccassi
2020-05-22  9:39       ` [dpdk-stable] patch 'crypto/caam_jr: fix IRQ functions return type' " luca.boccassi
2020-05-22  9:39       ` [dpdk-stable] patch 'build: disable gcc 10 zero-length-bounds warning' " luca.boccassi
2020-05-22  9:39       ` [dpdk-stable] patch 'doc: fix LTO config option' " luca.boccassi
2020-05-22  9:39       ` [dpdk-stable] patch 'doc: fix default symbol binding in ABI guide' " luca.boccassi
2020-05-22  9:39       ` [dpdk-stable] patch 'eal: fix C++17 compilation' " luca.boccassi
2020-05-22  9:39       ` [dpdk-stable] patch 'doc: fix build issue in ABI guide' " luca.boccassi
2020-05-22  9:39       ` [dpdk-stable] patch 'net/e1000: fix port hotplug for multi-process' " luca.boccassi
2020-05-22  9:39       ` [dpdk-stable] patch 'doc: fix multicast filter feature announcement' " luca.boccassi
2020-05-22  9:39       ` [dpdk-stable] patch 'common/mlx5: fix umem buffer alignment' " luca.boccassi
2020-05-22  9:39       ` [dpdk-stable] patch 'net/ixgbe: fix statistics in flow control mode' " luca.boccassi
2020-05-22  9:39       ` [dpdk-stable] patch 'net/qede: fix link state configuration' " luca.boccassi
2020-05-22  9:39       ` [dpdk-stable] patch 'net/mlx5: fix VLAN flow action with wildcard VLAN item' " luca.boccassi
2020-05-22  9:39       ` [dpdk-stable] patch 'net/vmxnet3: handle bad host framing' " luca.boccassi
2020-05-22  9:39       ` [dpdk-stable] patch 'net/hinic: fix queues resource free' " luca.boccassi
2020-05-22  9:39       ` [dpdk-stable] patch 'net/hinic: fix Tx mbuf length while copying' " luca.boccassi
2020-05-22  9:39       ` [dpdk-stable] patch 'vhost: handle mbuf allocation failure' " luca.boccassi
2020-05-22  9:39       ` [dpdk-stable] patch 'net/virtio: fix unexpected event after reconnect' " luca.boccassi
2020-05-22  9:40       ` [dpdk-stable] patch 'net/qede: fix port reconfiguration' " luca.boccassi
2020-05-22  9:40       ` [dpdk-stable] patch 'net/bnxt: fix error log for command timeout' " luca.boccassi
2020-05-22  9:40       ` [dpdk-stable] patch 'net/bnxt: fix using RSS config struct' " luca.boccassi
2020-05-22  9:40       ` [dpdk-stable] patch 'net/bnxt: fix storing MAC address twice' " luca.boccassi
2020-05-22  9:40       ` [dpdk-stable] patch 'net/i40e: fix queue region in RSS flow' " luca.boccassi
2020-05-22  9:40       ` [dpdk-stable] patch 'net/mlx5: fix doorbell bitmap management offsets' " luca.boccassi
2020-05-22  9:40       ` [dpdk-stable] patch 'common/mlx5: fix netlink buffer allocation from stack' " luca.boccassi
2020-05-22  9:40       ` [dpdk-stable] patch 'app/testpmd: fix DCB set' " luca.boccassi
2020-05-22  9:40       ` [dpdk-stable] patch 'net/ixgbe/base: update copyright' " luca.boccassi
2020-05-22  9:40       ` [dpdk-stable] patch 'net/i40e/base: " luca.boccassi
2020-05-22  9:40       ` [dpdk-stable] patch 'common/iavf: " luca.boccassi
2020-05-22  9:40       ` [dpdk-stable] patch 'net/ice/base: " luca.boccassi
2020-05-22  9:40       ` [dpdk-stable] patch 'pci: accept 32-bit domain numbers' " luca.boccassi
2020-05-22  9:40       ` [dpdk-stable] patch 'pci: reject negative values in PCI id' " luca.boccassi
2020-05-22  9:40       ` [dpdk-stable] patch 'doc: fix typos in ABI policy' " luca.boccassi
2020-05-22  9:40       ` [dpdk-stable] patch 'kvargs: fix strcmp helper documentation' " luca.boccassi
2020-05-22  9:40       ` [dpdk-stable] patch 'mempool/dpaa2: install missing header with meson' " luca.boccassi
2020-05-22  9:40       ` [dpdk-stable] patch 'fix same typo in multiple places' " luca.boccassi
2020-05-22  9:40       ` [dpdk-stable] patch 'examples/kni: fix MTU change to setup Tx queue' " luca.boccassi
2020-05-22  9:40       ` [dpdk-stable] patch 'net/i40e: fix wild pointer' " luca.boccassi
2020-05-22  9:40       ` [dpdk-stable] patch 'net/ice: fix RSS for GTPU' " luca.boccassi
2020-05-22  9:40       ` [dpdk-stable] patch 'net/i40e: fix queue related exception handling' " luca.boccassi
2020-05-22  9:40       ` [dpdk-stable] patch 'vhost: fix zero-copy server mode' " luca.boccassi
2020-05-27  9:24         ` [dpdk-stable] patch 'net/mvpp2: fix build with gcc 10' " luca.boccassi
2020-05-27  9:24           ` [dpdk-stable] patch 'examples/vm_power: fix build with -fno-common' " luca.boccassi
2020-05-27  9:24           ` [dpdk-stable] patch 'examples/vm_power: drop Unix path limit redefinition' " luca.boccassi
2020-05-27  9:24           ` [dpdk-stable] patch 'doc: fix build with doxygen 1.8.18' " luca.boccassi
2020-05-27  9:24           ` [dpdk-stable] patch 'cryptodev: fix SHA-1 digest enum comment' " luca.boccassi
2020-05-27  9:24           ` [dpdk-stable] patch 'net/bnxt: fix Rx ring producer index' " luca.boccassi
2020-05-27  9:24           ` [dpdk-stable] patch 'net/octeontx2: fix buffer size assignment' " luca.boccassi
2020-05-27  9:24           ` [dpdk-stable] patch 'net/hinic: fix TSO' " luca.boccassi
2020-05-27  9:24           ` [dpdk-stable] patch 'net/sfc/base: fix manual filter delete in EF10' " luca.boccassi
2020-05-27  9:24           ` [dpdk-stable] patch 'net/i40e: fix setting L2TAG' " luca.boccassi
2020-05-27  9:24           ` [dpdk-stable] patch 'net/iavf: " luca.boccassi
2020-05-27  9:24           ` [dpdk-stable] patch 'net/ice: " luca.boccassi
2020-05-27  9:24           ` [dpdk-stable] patch 'net/i40e: fix flow director enabling' " luca.boccassi
2020-05-27  9:24           ` [dpdk-stable] patch 'net/ixgbe: check driver type in MACsec API' " luca.boccassi
2020-05-27  9:24           ` [dpdk-stable] patch 'examples/kni: fix crash during MTU set' " luca.boccassi
2020-05-27  9:24           ` [dpdk-stable] patch 'examples/ip_pipeline: remove check of null response' " luca.boccassi
2020-05-27  9:24           ` [dpdk-stable] patch 'doc: fix typo in contributors guide' " luca.boccassi
2020-05-27  9:24           ` luca.boccassi
2020-05-27  9:24           ` [dpdk-stable] patch 'doc: prefer https when pointing to dpdk.org' " luca.boccassi

Reply instructions:

You may reply publically to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200519130549.112823-106-luca.boccassi@gmail.com \
    --to=luca.boccassi@gmail.com \
    --cc=bingz@mellanox.com \
    --cc=stable@dpdk.org \
    --cc=viacheslavo@mellanox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

patches for DPDK stable branches

Archives are clonable:
	git clone --mirror http://inbox.dpdk.org/stable/0 stable/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 stable stable/ http://inbox.dpdk.org/stable \
		stable@dpdk.org
	public-inbox-index stable


Newsgroup available over NNTP:
	nntp://inbox.dpdk.org/inbox.dpdk.stable


AGPL code for this site: git clone https://public-inbox.org/ public-inbox