patches for DPDK stable branches
 help / color / mirror / Atom feed
From: Kevin Traynor <ktraynor@redhat.com>
To: Yongseok Koh <yskoh@mellanox.com>
Cc: Raslan Darawsheh <rasland@mellanox.com>,
	Shahaf Shuler <shahafs@mellanox.com>,
	dpdk stable <stable@dpdk.org>
Subject: [dpdk-stable] patch 'net/mlx4: change device reference for secondary process' has been queued to LTS release 18.11.2
Date: Tue, 30 Apr 2019 18:00:57 +0100	[thread overview]
Message-ID: <20190430170133.2331-2-ktraynor@redhat.com> (raw)
In-Reply-To: <20190430170133.2331-1-ktraynor@redhat.com>

Hi,

FYI, your patch has been queued to LTS release 18.11.2

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/07/19. 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.

Queued patches can be viewed on a temporary branch at:
	https://github.com/kevintraynor/dpdk-stable-queue.git

Thanks.

Kevin Traynor

---
From fbc7be121f71629834a60f50d4419932740bddd1 Mon Sep 17 00:00:00 2001
From: Yongseok Koh <yskoh@mellanox.com>
Date: Mon, 1 Apr 2019 14:15:51 -0700
Subject: [PATCH] net/mlx4: change device reference for secondary process

[ upstream commit 099c2c5376131b3d352d70f8904e586c0e84651e ]

rte_eth_devices[] is not shared between primary and secondary process,
but a static array to each process. The reverse pointer of device
(priv->dev) becomes invalid if mlx4 supports secondary process.
Instead, priv has the pointer to shared data of the device,
  struct rte_eth_dev_data *dev_data;

Two macros are added,
  #define PORT_ID(priv) ((priv)->dev_data->port_id)
  #define ETH_DEV(priv) (&rte_eth_devices[PORT_ID(priv)])

Suggested-by: Raslan Darawsheh <rasland@mellanox.com>
Signed-off-by: Yongseok Koh <yskoh@mellanox.com>
Acked-by: Shahaf Shuler <shahafs@mellanox.com>
---
 drivers/net/mlx4/mlx4.c      |  4 ++--
 drivers/net/mlx4/mlx4.h      |  5 ++++-
 drivers/net/mlx4/mlx4_flow.c | 39 +++++++++++++++++++-----------------
 drivers/net/mlx4/mlx4_intr.c | 20 +++++++++---------
 drivers/net/mlx4/mlx4_mr.c   |  8 ++++----
 drivers/net/mlx4/mlx4_rxq.c  | 36 +++++++++++++++++----------------
 drivers/net/mlx4/mlx4_txq.c  |  8 ++++----
 7 files changed, 64 insertions(+), 56 deletions(-)

diff --git a/drivers/net/mlx4/mlx4.c b/drivers/net/mlx4/mlx4.c
index 8aa116cb7..4bc966d5f 100644
--- a/drivers/net/mlx4/mlx4.c
+++ b/drivers/net/mlx4/mlx4.c
@@ -753,9 +753,9 @@ mlx4_pci_probe(struct rte_pci_driver *pci_drv, struct rte_pci_device *pci_dev)
 		 */
 		eth_dev->intr_handle = &priv->intr_handle;
-		priv->dev = eth_dev;
+		priv->dev_data = eth_dev->data;
 		eth_dev->dev_ops = &mlx4_dev_ops;
 		/* Bring Ethernet device up. */
 		DEBUG("forcing Ethernet interface up");
-		mlx4_dev_set_link_up(priv->dev);
+		mlx4_dev_set_link_up(eth_dev);
 		/* Update link status once if waiting for LSC. */
 		if (eth_dev->data->dev_flags & RTE_ETH_DEV_INTR_LSC)
diff --git a/drivers/net/mlx4/mlx4.h b/drivers/net/mlx4/mlx4.h
index 180e5186c..fc568eb3e 100644
--- a/drivers/net/mlx4/mlx4.h
+++ b/drivers/net/mlx4/mlx4.h
@@ -80,5 +80,5 @@ struct mlx4_priv {
 	LIST_ENTRY(mlx4_priv) mem_event_cb;
 	/**< Called by memory event callback. */
-	struct rte_eth_dev *dev; /**< Ethernet device. */
+	struct rte_eth_dev_data *dev_data;  /* Pointer to device data. */
 	struct ibv_context *ctx; /**< Verbs context. */
 	struct ibv_device_attr device_attr; /**< Device properties. */
@@ -114,4 +114,7 @@ struct mlx4_priv {
 };
 
+#define PORT_ID(priv) ((priv)->dev_data->port_id)
+#define ETH_DEV(priv) (&rte_eth_devices[PORT_ID(priv)])
+
 /* mlx4_ethdev.c */
 
diff --git a/drivers/net/mlx4/mlx4_flow.c b/drivers/net/mlx4/mlx4_flow.c
index f16037d1d..5136d136f 100644
--- a/drivers/net/mlx4/mlx4_flow.c
+++ b/drivers/net/mlx4/mlx4_flow.c
@@ -768,5 +768,5 @@ fill:
 				break;
 			queue = action->conf;
-			if (queue->index >= priv->dev->data->nb_rx_queues) {
+			if (queue->index >= ETH_DEV(priv)->data->nb_rx_queues) {
 				msg = "queue target index beyond number of"
 					" configured Rx queues";
@@ -797,5 +797,5 @@ fill:
 			for (i = 0; i < rss->queue_num; ++i)
 				if (rss->queue[i] >=
-				    priv->dev->data->nb_rx_queues)
+				    ETH_DEV(priv)->data->nb_rx_queues)
 					break;
 			if (i != rss->queue_num) {
@@ -1067,6 +1067,6 @@ mlx4_flow_toggle(struct mlx4_priv *priv,
 		for (i = 0; i != rss->queues; ++i)
 			if (rss->queue_id[i] >=
-			    priv->dev->data->nb_rx_queues ||
-			    !priv->dev->data->rx_queues[rss->queue_id[i]]) {
+			    ETH_DEV(priv)->data->nb_rx_queues ||
+			    !ETH_DEV(priv)->data->rx_queues[rss->queue_id[i]]) {
 				missing = 1;
 				break;
@@ -1253,5 +1253,5 @@ mlx4_flow_internal_next_vlan(struct mlx4_priv *priv, uint16_t vlan)
 {
 	while (vlan < 4096) {
-		if (priv->dev->data->vlan_filter_conf.ids[vlan / 64] &
+		if (ETH_DEV(priv)->data->vlan_filter_conf.ids[vlan / 64] &
 		    (UINT64_C(1) << (vlan % 64)))
 			return vlan;
@@ -1330,5 +1330,5 @@ mlx4_flow_internal(struct mlx4_priv *priv, struct rte_flow_error *error)
 	 */
 	uint32_t queues =
-		rte_align32pow2(priv->dev->data->nb_rx_queues + 1) >> 1;
+		rte_align32pow2(ETH_DEV(priv)->data->nb_rx_queues + 1) >> 1;
 	uint16_t queue[queues];
 	struct rte_flow_action_rss action_rss = {
@@ -1352,7 +1352,7 @@ mlx4_flow_internal(struct mlx4_priv *priv, struct rte_flow_error *error)
 	struct ether_addr *rule_mac = &eth_spec.dst;
 	rte_be16_t *rule_vlan =
-		(priv->dev->data->dev_conf.rxmode.offloads &
+		(ETH_DEV(priv)->data->dev_conf.rxmode.offloads &
 		 DEV_RX_OFFLOAD_VLAN_FILTER) &&
-		!priv->dev->data->promiscuous ?
+		!ETH_DEV(priv)->data->promiscuous ?
 		&vlan_spec.tci :
 		NULL;
@@ -1434,5 +1434,5 @@ next_vlan:
 			/* Not found, create a new flow rule. */
 			memcpy(rule_mac, mac, sizeof(*mac));
-			flow = mlx4_flow_create(priv->dev, &attr, pattern,
+			flow = mlx4_flow_create(ETH_DEV(priv), &attr, pattern,
 						actions, error);
 			if (!flow) {
@@ -1450,13 +1450,14 @@ next_vlan:
 	}
 	/* Take care of promiscuous and all multicast flow rules. */
-	if (priv->dev->data->promiscuous || priv->dev->data->all_multicast) {
+	if (ETH_DEV(priv)->data->promiscuous ||
+	    ETH_DEV(priv)->data->all_multicast) {
 		for (flow = LIST_FIRST(&priv->flows);
 		     flow && flow->internal;
 		     flow = LIST_NEXT(flow, next)) {
-			if (priv->dev->data->promiscuous) {
+			if (ETH_DEV(priv)->data->promiscuous) {
 				if (flow->promisc)
 					break;
 			} else {
-				assert(priv->dev->data->all_multicast);
+				assert(ETH_DEV(priv)->data->all_multicast);
 				if (flow->allmulti)
 					break;
@@ -1472,14 +1473,14 @@ next_vlan:
 		if (!flow || !flow->internal) {
 			/* Not found, create a new flow rule. */
-			if (priv->dev->data->promiscuous) {
+			if (ETH_DEV(priv)->data->promiscuous) {
 				pattern[1].spec = NULL;
 				pattern[1].mask = NULL;
 			} else {
-				assert(priv->dev->data->all_multicast);
+				assert(ETH_DEV(priv)->data->all_multicast);
 				pattern[1].spec = &eth_allmulti;
 				pattern[1].mask = &eth_allmulti;
 			}
 			pattern[2] = pattern[3];
-			flow = mlx4_flow_create(priv->dev, &attr, pattern,
+			flow = mlx4_flow_create(ETH_DEV(priv), &attr, pattern,
 						actions, error);
 			if (!flow) {
@@ -1498,5 +1499,6 @@ error:
 
 		if (!flow->select)
-			claim_zero(mlx4_flow_destroy(priv->dev, flow, error));
+			claim_zero(mlx4_flow_destroy(ETH_DEV(priv), flow,
+						     error));
 		else
 			flow->select = 0;
@@ -1536,5 +1538,6 @@ mlx4_flow_sync(struct mlx4_priv *priv, struct rte_flow_error *error)
 		     flow && flow->internal;
 		     flow = LIST_FIRST(&priv->flows))
-			claim_zero(mlx4_flow_destroy(priv->dev, flow, error));
+			claim_zero(mlx4_flow_destroy(ETH_DEV(priv), flow,
+						     error));
 	} else {
 		/* Refresh internal rules. */
@@ -1569,5 +1572,5 @@ mlx4_flow_clean(struct mlx4_priv *priv)
 
 	while ((flow = LIST_FIRST(&priv->flows)))
-		mlx4_flow_destroy(priv->dev, flow, NULL);
+		mlx4_flow_destroy(ETH_DEV(priv), flow, NULL);
 	assert(LIST_EMPTY(&priv->rss));
 }
diff --git a/drivers/net/mlx4/mlx4_intr.c b/drivers/net/mlx4/mlx4_intr.c
index ec9124219..4f3352675 100644
--- a/drivers/net/mlx4/mlx4_intr.c
+++ b/drivers/net/mlx4/mlx4_intr.c
@@ -66,5 +66,5 @@ mlx4_rx_intr_vec_enable(struct mlx4_priv *priv)
 {
 	unsigned int i;
-	unsigned int rxqs_n = priv->dev->data->nb_rx_queues;
+	unsigned int rxqs_n = ETH_DEV(priv)->data->nb_rx_queues;
 	unsigned int n = RTE_MIN(rxqs_n, (uint32_t)RTE_MAX_RXTX_INTR_VEC_ID);
 	unsigned int count = 0;
@@ -80,5 +80,5 @@ mlx4_rx_intr_vec_enable(struct mlx4_priv *priv)
 	}
 	for (i = 0; i != n; ++i) {
-		struct rxq *rxq = priv->dev->data->rx_queues[i];
+		struct rxq *rxq = ETH_DEV(priv)->data->rx_queues[i];
 
 		/* Skip queues that cannot request interrupts. */
@@ -121,10 +121,10 @@ mlx4_link_status_alarm(struct mlx4_priv *priv)
 {
 	const struct rte_intr_conf *const intr_conf =
-		&priv->dev->data->dev_conf.intr_conf;
+		&ETH_DEV(priv)->data->dev_conf.intr_conf;
 
 	assert(priv->intr_alarm == 1);
 	priv->intr_alarm = 0;
 	if (intr_conf->lsc && !mlx4_link_status_check(priv))
-		_rte_eth_dev_callback_process(priv->dev,
+		_rte_eth_dev_callback_process(ETH_DEV(priv),
 					      RTE_ETH_EVENT_INTR_LSC,
 					      NULL);
@@ -146,6 +146,6 @@ static int
 mlx4_link_status_check(struct mlx4_priv *priv)
 {
-	struct rte_eth_link *link = &priv->dev->data->dev_link;
-	int ret = mlx4_link_update(priv->dev, 0);
+	struct rte_eth_link *link = &ETH_DEV(priv)->data->dev_link;
+	int ret = mlx4_link_update(ETH_DEV(priv), 0);
 
 	if (ret)
@@ -186,5 +186,5 @@ mlx4_interrupt_handler(struct mlx4_priv *priv)
 	struct ibv_async_event event;
 	const struct rte_intr_conf *const intr_conf =
-		&priv->dev->data->dev_conf.intr_conf;
+		&ETH_DEV(priv)->data->dev_conf.intr_conf;
 	unsigned int i;
 
@@ -209,5 +209,5 @@ mlx4_interrupt_handler(struct mlx4_priv *priv)
 	for (i = 0; i != RTE_DIM(caught); ++i)
 		if (caught[i])
-			_rte_eth_dev_callback_process(priv->dev, type[i],
+			_rte_eth_dev_callback_process(ETH_DEV(priv), type[i],
 						      NULL);
 }
@@ -283,5 +283,5 @@ mlx4_intr_install(struct mlx4_priv *priv)
 {
 	const struct rte_intr_conf *const intr_conf =
-		&priv->dev->data->dev_conf.intr_conf;
+		&ETH_DEV(priv)->data->dev_conf.intr_conf;
 	int rc;
 
@@ -382,5 +382,5 @@ mlx4_rxq_intr_enable(struct mlx4_priv *priv)
 {
 	const struct rte_intr_conf *const intr_conf =
-		&priv->dev->data->dev_conf.intr_conf;
+		&ETH_DEV(priv)->data->dev_conf.intr_conf;
 
 	if (intr_conf->rxq && mlx4_rx_intr_vec_enable(priv) < 0)
diff --git a/drivers/net/mlx4/mlx4_mr.c b/drivers/net/mlx4/mlx4_mr.c
index 4376ad0b6..e4be46ab2 100644
--- a/drivers/net/mlx4/mlx4_mr.c
+++ b/drivers/net/mlx4/mlx4_mr.c
@@ -897,5 +897,5 @@ mlx4_mr_mem_event_cb(enum rte_mem_event event_type, const void *addr,
 		/* Iterate all the existing mlx4 devices. */
 		LIST_FOREACH(priv, &mlx4_mem_event_cb_list, mem_event_cb)
-			mlx4_mr_mem_event_free_cb(priv->dev, addr, len);
+			mlx4_mr_mem_event_free_cb(ETH_DEV(priv), addr, len);
 		rte_rwlock_read_unlock(&mlx4_mem_event_rwlock);
 		break;
@@ -1029,5 +1029,5 @@ mlx4_rx_addr2mr_bh(struct rxq *rxq, uintptr_t addr)
 	DEBUG("Rx queue %u: miss on top-half, mru=%u, head=%u, addr=%p",
 	      rxq->stats.idx, mr_ctrl->mru, mr_ctrl->head, (void *)addr);
-	return mlx4_mr_addr2mr_bh(priv->dev, mr_ctrl, addr);
+	return mlx4_mr_addr2mr_bh(ETH_DEV(priv), mr_ctrl, addr);
 }
 
@@ -1051,5 +1051,5 @@ mlx4_tx_addr2mr_bh(struct txq *txq, uintptr_t addr)
 	DEBUG("Tx queue %u: miss on top-half, mru=%u, head=%u, addr=%p",
 	      txq->stats.idx, mr_ctrl->mru, mr_ctrl->head, (void *)addr);
-	return mlx4_mr_addr2mr_bh(priv->dev, mr_ctrl, addr);
+	return mlx4_mr_addr2mr_bh(ETH_DEV(priv), mr_ctrl, addr);
 }
 
@@ -1226,5 +1226,5 @@ mlx4_tx_update_ext_mp(struct txq *txq, uintptr_t addr, struct rte_mempool *mp)
 	struct mlx4_priv *priv = txq->priv;
 
-	mlx4_mr_update_ext_mp(priv->dev, mr_ctrl, mp);
+	mlx4_mr_update_ext_mp(ETH_DEV(priv), mr_ctrl, mp);
 	return mlx4_tx_addr2mr_bh(txq, addr);
 }
diff --git a/drivers/net/mlx4/mlx4_rxq.c b/drivers/net/mlx4/mlx4_rxq.c
index 3782c6baa..50f33eb0c 100644
--- a/drivers/net/mlx4/mlx4_rxq.c
+++ b/drivers/net/mlx4/mlx4_rxq.c
@@ -177,4 +177,5 @@ mlx4_rss_attach(struct mlx4_rss *rss)
 	struct ibv_wq *ind_tbl[rss->queues];
 	struct mlx4_priv *priv = rss->priv;
+	struct rte_eth_dev *dev = ETH_DEV(priv);
 	const char *msg;
 	unsigned int i = 0;
@@ -190,6 +191,6 @@ mlx4_rss_attach(struct mlx4_rss *rss)
 		struct rxq *rxq = NULL;
 
-		if (id < priv->dev->data->nb_rx_queues)
-			rxq = priv->dev->data->rx_queues[id];
+		if (id < dev->data->nb_rx_queues)
+			rxq = dev->data->rx_queues[id];
 		if (!rxq) {
 			ret = EINVAL;
@@ -270,5 +271,5 @@ error:
 	}
 	while (i--)
-		mlx4_rxq_detach(priv->dev->data->rx_queues[rss->queue_id[i]]);
+		mlx4_rxq_detach(dev->data->rx_queues[rss->queue_id[i]]);
 	ERROR("mlx4: %s", msg);
 	--rss->usecnt;
@@ -292,4 +293,5 @@ mlx4_rss_detach(struct mlx4_rss *rss)
 {
 	struct mlx4_priv *priv = rss->priv;
+	struct rte_eth_dev *dev = ETH_DEV(priv);
 	unsigned int i;
 
@@ -304,5 +306,5 @@ mlx4_rss_detach(struct mlx4_rss *rss)
 	rss->ind = NULL;
 	for (i = 0; i != rss->queues; ++i)
-		mlx4_rxq_detach(priv->dev->data->rx_queues[rss->queue_id[i]]);
+		mlx4_rxq_detach(dev->data->rx_queues[rss->queue_id[i]]);
 }
 
@@ -330,5 +332,5 @@ int
 mlx4_rss_init(struct mlx4_priv *priv)
 {
-	struct rte_eth_dev *dev = priv->dev;
+	struct rte_eth_dev *dev = ETH_DEV(priv);
 	uint8_t log2_range = rte_log2_u32(dev->data->nb_rx_queues);
 	uint32_t wq_num_prev = 0;
@@ -339,5 +341,5 @@ mlx4_rss_init(struct mlx4_priv *priv)
 	if (priv->rss_init)
 		return 0;
-	if (priv->dev->data->nb_rx_queues > priv->hw_rss_max_qps) {
+	if (ETH_DEV(priv)->data->nb_rx_queues > priv->hw_rss_max_qps) {
 		ERROR("RSS does not support more than %d queues",
 		      priv->hw_rss_max_qps);
@@ -357,6 +359,6 @@ mlx4_rss_init(struct mlx4_priv *priv)
 		return -ret;
 	}
-	for (i = 0; i != priv->dev->data->nb_rx_queues; ++i) {
-		struct rxq *rxq = priv->dev->data->rx_queues[i];
+	for (i = 0; i != ETH_DEV(priv)->data->nb_rx_queues; ++i) {
+		struct rxq *rxq = ETH_DEV(priv)->data->rx_queues[i];
 		struct ibv_cq *cq;
 		struct ibv_wq *wq;
@@ -433,5 +435,5 @@ error:
 	      i, msg, strerror(ret));
 	while (i--) {
-		struct rxq *rxq = priv->dev->data->rx_queues[i];
+		struct rxq *rxq = ETH_DEV(priv)->data->rx_queues[i];
 
 		if (rxq)
@@ -458,6 +460,6 @@ mlx4_rss_deinit(struct mlx4_priv *priv)
 	if (!priv->rss_init)
 		return;
-	for (i = 0; i != priv->dev->data->nb_rx_queues; ++i) {
-		struct rxq *rxq = priv->dev->data->rx_queues[i];
+	for (i = 0; i != ETH_DEV(priv)->data->nb_rx_queues; ++i) {
+		struct rxq *rxq = ETH_DEV(priv)->data->rx_queues[i];
 
 		if (rxq) {
@@ -495,5 +497,5 @@ mlx4_rxq_attach(struct rxq *rxq)
 
 	struct mlx4_priv *priv = rxq->priv;
-	struct rte_eth_dev *dev = priv->dev;
+	struct rte_eth_dev *dev = ETH_DEV(priv);
 	const uint32_t elts_n = 1 << rxq->elts_n;
 	const uint32_t sges_n = 1 << rxq->sges_n;
@@ -562,5 +564,5 @@ mlx4_rxq_attach(struct rxq *rxq)
 	/* Pre-register Rx mempool. */
 	DEBUG("port %u Rx queue %u registering mp %s having %u chunks",
-	      priv->dev->data->port_id, rxq->stats.idx,
+	      ETH_DEV(priv)->data->port_id, rxq->stats.idx,
 	      rxq->mp->name, rxq->mp->nb_mem_chunks);
 	mlx4_mr_update_mp(dev, &rxq->mr_ctrl, rxq->mp);
@@ -918,9 +920,9 @@ mlx4_rx_queue_release(void *dpdk_rxq)
 		return;
 	priv = rxq->priv;
-	for (i = 0; i != priv->dev->data->nb_rx_queues; ++i)
-		if (priv->dev->data->rx_queues[i] == rxq) {
+	for (i = 0; i != ETH_DEV(priv)->data->nb_rx_queues; ++i)
+		if (ETH_DEV(priv)->data->rx_queues[i] == rxq) {
 			DEBUG("%p: removing Rx queue %p from list",
-			      (void *)priv->dev, (void *)rxq);
-			priv->dev->data->rx_queues[i] = NULL;
+			      (void *)ETH_DEV(priv), (void *)rxq);
+			ETH_DEV(priv)->data->rx_queues[i] = NULL;
 			break;
 		}
diff --git a/drivers/net/mlx4/mlx4_txq.c b/drivers/net/mlx4/mlx4_txq.c
index 8142775fc..352700820 100644
--- a/drivers/net/mlx4/mlx4_txq.c
+++ b/drivers/net/mlx4/mlx4_txq.c
@@ -358,9 +358,9 @@ mlx4_tx_queue_release(void *dpdk_txq)
 		return;
 	priv = txq->priv;
-	for (i = 0; i != priv->dev->data->nb_tx_queues; ++i)
-		if (priv->dev->data->tx_queues[i] == txq) {
+	for (i = 0; i != ETH_DEV(priv)->data->nb_tx_queues; ++i)
+		if (ETH_DEV(priv)->data->tx_queues[i] == txq) {
 			DEBUG("%p: removing Tx queue %p from list",
-			      (void *)priv->dev, (void *)txq);
-			priv->dev->data->tx_queues[i] = NULL;
+			      (void *)ETH_DEV(priv), (void *)txq);
+			ETH_DEV(priv)->data->tx_queues[i] = NULL;
 			break;
 		}
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-04-30 17:58:13.919023416 +0100
+++ 0002-net-mlx4-change-device-reference-for-secondary-proce.patch	2019-04-30 17:58:13.746141028 +0100
@@ -1 +1 @@
-From 099c2c5376131b3d352d70f8904e586c0e84651e Mon Sep 17 00:00:00 2001
+From fbc7be121f71629834a60f50d4419932740bddd1 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 099c2c5376131b3d352d70f8904e586c0e84651e ]
+
@@ -16,2 +17,0 @@
-Cc: stable@dpdk.org
-
@@ -32 +32 @@
-index 5ef2e7f41..bb6ab8ec6 100644
+index 8aa116cb7..4bc966d5f 100644
@@ -35 +35 @@
-@@ -754,9 +754,9 @@ mlx4_pci_probe(struct rte_pci_driver *pci_drv, struct rte_pci_device *pci_dev)
+@@ -753,9 +753,9 @@ mlx4_pci_probe(struct rte_pci_driver *pci_drv, struct rte_pci_device *pci_dev)
@@ -48 +48 @@
-index 7ac49ca67..51566caf7 100644
+index 180e5186c..fc568eb3e 100644
@@ -67 +67 @@
-index f4df4ab1f..038dc71d3 100644
+index f16037d1d..5136d136f 100644
@@ -70 +70 @@
-@@ -774,5 +774,5 @@ fill:
+@@ -768,5 +768,5 @@ fill:
@@ -77 +77 @@
-@@ -803,5 +803,5 @@ fill:
+@@ -797,5 +797,5 @@ fill:
@@ -84 +84 @@
-@@ -1073,6 +1073,6 @@ mlx4_flow_toggle(struct mlx4_priv *priv,
+@@ -1067,6 +1067,6 @@ mlx4_flow_toggle(struct mlx4_priv *priv,
@@ -93 +93 @@
-@@ -1259,5 +1259,5 @@ mlx4_flow_internal_next_vlan(struct mlx4_priv *priv, uint16_t vlan)
+@@ -1253,5 +1253,5 @@ mlx4_flow_internal_next_vlan(struct mlx4_priv *priv, uint16_t vlan)
@@ -100 +100 @@
-@@ -1336,5 +1336,5 @@ mlx4_flow_internal(struct mlx4_priv *priv, struct rte_flow_error *error)
+@@ -1330,5 +1330,5 @@ mlx4_flow_internal(struct mlx4_priv *priv, struct rte_flow_error *error)
@@ -107 +107 @@
-@@ -1358,7 +1358,7 @@ mlx4_flow_internal(struct mlx4_priv *priv, struct rte_flow_error *error)
+@@ -1352,7 +1352,7 @@ mlx4_flow_internal(struct mlx4_priv *priv, struct rte_flow_error *error)
@@ -117 +117 @@
-@@ -1440,5 +1440,5 @@ next_vlan:
+@@ -1434,5 +1434,5 @@ next_vlan:
@@ -124 +124 @@
-@@ -1456,13 +1456,14 @@ next_vlan:
+@@ -1450,13 +1450,14 @@ next_vlan:
@@ -142 +142 @@
-@@ -1478,14 +1479,14 @@ next_vlan:
+@@ -1472,14 +1473,14 @@ next_vlan:
@@ -160 +160 @@
-@@ -1504,5 +1505,6 @@ error:
+@@ -1498,5 +1499,6 @@ error:
@@ -168 +168 @@
-@@ -1542,5 +1544,6 @@ mlx4_flow_sync(struct mlx4_priv *priv, struct rte_flow_error *error)
+@@ -1536,5 +1538,6 @@ mlx4_flow_sync(struct mlx4_priv *priv, struct rte_flow_error *error)
@@ -176 +176 @@
-@@ -1575,5 +1578,5 @@ mlx4_flow_clean(struct mlx4_priv *priv)
+@@ -1569,5 +1572,5 @@ mlx4_flow_clean(struct mlx4_priv *priv)

  reply	other threads:[~2019-04-30 17:01 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-04-30 17:00 [dpdk-stable] patch 'net/mlx5: fix memory event on " Kevin Traynor
2019-04-30 17:00 ` Kevin Traynor [this message]
2019-04-30 17:00 ` [dpdk-stable] patch 'net/mlx: remove debug messages on datapath' " Kevin Traynor
2019-04-30 17:00 ` [dpdk-stable] patch 'net/mlx5: fix external memory registration' " Kevin Traynor
2019-04-30 17:01 ` [dpdk-stable] patch 'net/sfc: improve TSO header length check in EFX datapath' " Kevin Traynor
2019-04-30 17:01 ` [dpdk-stable] patch 'net/sfc: improve TSO header length check in EF10 " Kevin Traynor
2019-04-30 17:01 ` [dpdk-stable] patch 'net: fix Tx VLAN flag for offload emulation' " Kevin Traynor
2019-04-30 17:01 ` [dpdk-stable] patch 'app/testpmd: fix Tx VLAN and QinQ dependency' " Kevin Traynor
2019-04-30 17:01 ` [dpdk-stable] patch 'app/testpmd: fix Tx QinQ set' " Kevin Traynor
2019-04-30 17:01 ` [dpdk-stable] patch 'table: fix arm64 hash function selection' " Kevin Traynor
2019-04-30 17:01 ` [dpdk-stable] patch 'net/nfp: fix file descriptor check' " Kevin Traynor
2019-04-30 17:01 ` [dpdk-stable] patch 'net/nfp: fix potential integer overflow' " Kevin Traynor
2019-04-30 17:01 ` [dpdk-stable] patch 'net/nfp: check return value' " Kevin Traynor
2019-04-30 17:01 ` [dpdk-stable] patch 'net/nfp: fix memory leak' " Kevin Traynor
2019-04-30 17:01 ` [dpdk-stable] patch 'app/testpmd: fix mempool free on exit' " Kevin Traynor
2019-04-30 17:01 ` [dpdk-stable] patch 'app/testpmd: fix hex string parser support for flow API' " Kevin Traynor
2019-04-30 17:01 ` [dpdk-stable] patch 'app/testpmd: fix return value check' " Kevin Traynor
2019-04-30 17:01 ` [dpdk-stable] patch 'net/bnxt: fix big endian build' " Kevin Traynor
2019-04-30 17:01 ` [dpdk-stable] patch 'net/i40e: fix scattered Rx enabling' " Kevin Traynor
2019-04-30 17:01 ` [dpdk-stable] patch 'doc: fix spelling in testpmd guide' " Kevin Traynor
2019-04-30 17:01 ` [dpdk-stable] patch 'doc: add flow API to qede NIC features' " Kevin Traynor
2019-04-30 17:01 ` [dpdk-stable] patch 'devtools: accept experimental symbol promotion' " Kevin Traynor
2019-05-02  7:25   ` David Marchand
2019-05-02  8:01     ` Kevin Traynor
2019-04-30 17:01 ` [dpdk-stable] patch 'devtools: skip meson build for missing compilers' " Kevin Traynor
2019-04-30 17:01 ` [dpdk-stable] patch 'devtools: support older compilers with meson test' " Kevin Traynor
2019-04-30 17:01 ` [dpdk-stable] patch 'examples/l2fwd-cat: fix build on FreeBSD' " Kevin Traynor
2019-04-30 17:01 ` [dpdk-stable] patch 'build: use default flags for default Arm machine' " Kevin Traynor
2019-04-30 17:01 ` [dpdk-stable] patch 'drivers/event: disable OcteonTx for buggy Arm compilers' " Kevin Traynor
2019-04-30 17:01 ` [dpdk-stable] patch 'examples/fips_validation: fix CMAC test' " Kevin Traynor
2019-04-30 17:01 ` [dpdk-stable] patch 'doc: add missing algorithms for AESNI-MB PMD' " Kevin Traynor
2019-04-30 17:01 ` [dpdk-stable] patch 'crypto/caam_jr: fix shared descriptor endianness' " Kevin Traynor
2019-04-30 17:01 ` [dpdk-stable] patch 'crypto/caam_jr: fix total length in auth only s/g' " Kevin Traynor
2019-04-30 17:01 ` [dpdk-stable] patch 'crypto/caam_jr: fix memory leak and illegal access' " Kevin Traynor
2019-04-30 17:01 ` [dpdk-stable] patch 'doc: fix missing asymmetric crypto table' " Kevin Traynor
2019-04-30 17:01 ` [dpdk-stable] patch 'app/crypto-perf: check range of socket id' " Kevin Traynor
2019-04-30 17:01 ` [dpdk-stable] patch 'crypto/dpaa: fix session destroy' " Kevin Traynor
2019-04-30 17:01 ` [dpdk-stable] patch 'kni: fix build with Linux 5.1' " Kevin Traynor
2019-04-30 17:01 ` [dpdk-stable] patch 'kni: fix type for MAC address' " Kevin Traynor
2019-04-30 17:01 ` [dpdk-stable] patch 'mbuf: update Tx VLAN and QinQ flags documentation' " Kevin Traynor

Reply instructions:

You may reply publicly 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=20190430170133.2331-2-ktraynor@redhat.com \
    --to=ktraynor@redhat.com \
    --cc=rasland@mellanox.com \
    --cc=shahafs@mellanox.com \
    --cc=stable@dpdk.org \
    --cc=yskoh@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
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).