patches for DPDK stable branches
 help / color / mirror / Atom feed
From: luca.boccassi@gmail.com
To: Dapeng Yu <dapengx.yu@intel.com>
Cc: Qi Zhang <qi.z.zhang@intel.com>, dpdk stable <stable@dpdk.org>
Subject: [dpdk-stable] patch 'net/i40e: fix multi-process shared data' has been queued to stable release 20.11.3
Date: Mon, 12 Jul 2021 14:04:46 +0100	[thread overview]
Message-ID: <20210712130551.2462159-51-luca.boccassi@gmail.com> (raw)
In-Reply-To: <20210712130551.2462159-1-luca.boccassi@gmail.com>

Hi,

FYI, your patch has been queued to stable release 20.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 07/14/21. 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 are on a temporary branch at:
https://github.com/bluca/dpdk-stable

This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/37a61f47701ff59cc36dd37d5feb4bc8bf90385a

Thanks.

Luca Boccassi

---
From 37a61f47701ff59cc36dd37d5feb4bc8bf90385a Mon Sep 17 00:00:00 2001
From: Dapeng Yu <dapengx.yu@intel.com>
Date: Mon, 21 Jun 2021 15:23:53 +0800
Subject: [PATCH] net/i40e: fix multi-process shared data

[ upstream commit e391a7b7f815795eacfae3240c4405353cf37a53 ]

The rte_eth_devices array is not in share memory, it should not be
referenced by i40e_adapter which is shared by primary and secondary.
Any process set i40e_adapter->eth_dev will corrupt another process's
context.

The patch removed the field "eth_dev" from i40e_adapter.
Now, when the data paths try to access the rte_eth_dev_data instance,
they should replace adapter->eth_dev->data with adapter->pf.dev_data.

Fixes: 4861cde46116 ("i40e: new poll mode driver")

Signed-off-by: Dapeng Yu <dapengx.yu@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
---
 drivers/net/i40e/i40e_ethdev.c         | 44 +++++++++++++-------------
 drivers/net/i40e/i40e_ethdev.h         |  7 ++--
 drivers/net/i40e/i40e_fdir.c           |  4 +--
 drivers/net/i40e/i40e_flow.c           |  2 +-
 drivers/net/i40e/i40e_rxtx.c           |  4 +--
 drivers/net/i40e/i40e_vf_representor.c | 37 ++++++++++++----------
 6 files changed, 51 insertions(+), 47 deletions(-)

diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c
index 63a9fc04d0..d617e9c71b 100644
--- a/drivers/net/i40e/i40e_ethdev.c
+++ b/drivers/net/i40e/i40e_ethdev.c
@@ -727,10 +727,11 @@ i40e_write_global_rx_ctl(struct i40e_hw *hw, uint32_t reg_addr,
 			 uint32_t reg_val)
 {
 	uint32_t ori_reg_val;
-	struct rte_eth_dev *dev;
+	struct rte_eth_dev_data *dev_data =
+		((struct i40e_adapter *)hw->back)->pf.dev_data;
+	struct rte_eth_dev *dev = &rte_eth_devices[dev_data->port_id];
 
 	ori_reg_val = i40e_read_rx_ctl(hw, reg_addr);
-	dev = ((struct i40e_adapter *)hw->back)->eth_dev;
 	i40e_write_rx_ctl(hw, reg_addr, reg_val);
 	if (ori_reg_val != reg_val)
 		PMD_DRV_LOG(WARNING,
@@ -1321,7 +1322,9 @@ i40e_aq_debug_write_global_register(struct i40e_hw *hw,
 				    struct i40e_asq_cmd_details *cmd_details)
 {
 	uint64_t ori_reg_val;
-	struct rte_eth_dev *dev;
+	struct rte_eth_dev_data *dev_data =
+		((struct i40e_adapter *)hw->back)->pf.dev_data;
+	struct rte_eth_dev *dev = &rte_eth_devices[dev_data->port_id];
 	int ret;
 
 	ret = i40e_aq_debug_read_register(hw, reg_addr, &ori_reg_val, NULL);
@@ -1331,7 +1334,6 @@ i40e_aq_debug_write_global_register(struct i40e_hw *hw,
 			    reg_addr);
 		return -EIO;
 	}
-	dev = ((struct i40e_adapter *)hw->back)->eth_dev;
 
 	if (ori_reg_val != reg_val)
 		PMD_DRV_LOG(WARNING,
@@ -1506,7 +1508,6 @@ eth_i40e_dev_init(struct rte_eth_dev *dev, void *init_params __rte_unused)
 	dev->data->dev_flags |= RTE_ETH_DEV_AUTOFILL_QUEUE_XSTATS;
 
 	pf->adapter = I40E_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private);
-	pf->adapter->eth_dev = dev;
 	pf->dev_data = dev->data;
 
 	hw->back = I40E_PF_TO_ADAPTER(pf);
@@ -2039,7 +2040,7 @@ err:
 void
 i40e_vsi_queues_unbind_intr(struct i40e_vsi *vsi)
 {
-	struct rte_eth_dev *dev = vsi->adapter->eth_dev;
+	struct rte_eth_dev *dev = I40E_VSI_TO_ETH_DEV(vsi);
 	struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev);
 	struct rte_intr_handle *intr_handle = &pci_dev->intr_handle;
 	struct i40e_hw *hw = I40E_VSI_TO_HW(vsi);
@@ -2155,7 +2156,7 @@ __vsi_queues_bind_intr(struct i40e_vsi *vsi, uint16_t msix_vect,
 int
 i40e_vsi_queues_bind_intr(struct i40e_vsi *vsi, uint16_t itr_idx)
 {
-	struct rte_eth_dev *dev = vsi->adapter->eth_dev;
+	struct rte_eth_dev *dev = I40E_VSI_TO_ETH_DEV(vsi);
 	struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev);
 	struct rte_intr_handle *intr_handle = &pci_dev->intr_handle;
 	struct i40e_hw *hw = I40E_VSI_TO_HW(vsi);
@@ -2231,7 +2232,7 @@ i40e_vsi_queues_bind_intr(struct i40e_vsi *vsi, uint16_t itr_idx)
 void
 i40e_vsi_enable_queues_intr(struct i40e_vsi *vsi)
 {
-	struct rte_eth_dev *dev = vsi->adapter->eth_dev;
+	struct rte_eth_dev *dev = I40E_VSI_TO_ETH_DEV(vsi);
 	struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev);
 	struct rte_intr_handle *intr_handle = &pci_dev->intr_handle;
 	struct i40e_hw *hw = I40E_VSI_TO_HW(vsi);
@@ -2258,7 +2259,7 @@ i40e_vsi_enable_queues_intr(struct i40e_vsi *vsi)
 void
 i40e_vsi_disable_queues_intr(struct i40e_vsi *vsi)
 {
-	struct rte_eth_dev *dev = vsi->adapter->eth_dev;
+	struct rte_eth_dev *dev = I40E_VSI_TO_ETH_DEV(vsi);
 	struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev);
 	struct rte_intr_handle *intr_handle = &pci_dev->intr_handle;
 	struct i40e_hw *hw = I40E_VSI_TO_HW(vsi);
@@ -6472,8 +6473,7 @@ i40e_dev_tx_init(struct i40e_pf *pf)
 			break;
 	}
 	if (ret == I40E_SUCCESS)
-		i40e_set_tx_function(container_of(pf, struct i40e_adapter, pf)
-				     ->eth_dev);
+		i40e_set_tx_function(&rte_eth_devices[pf->dev_data->port_id]);
 
 	return ret;
 }
@@ -6501,8 +6501,7 @@ i40e_dev_rx_init(struct i40e_pf *pf)
 		}
 	}
 	if (ret == I40E_SUCCESS)
-		i40e_set_rx_function(container_of(pf, struct i40e_adapter, pf)
-				     ->eth_dev);
+		i40e_set_rx_function(&rte_eth_devices[pf->dev_data->port_id]);
 
 	return ret;
 }
@@ -7941,7 +7940,7 @@ i40e_status_code i40e_replace_mpls_l1_filter(struct i40e_pf *pf)
 	struct i40e_aqc_replace_cloud_filters_cmd  filter_replace;
 	struct i40e_aqc_replace_cloud_filters_cmd_buf  filter_replace_buf;
 	struct i40e_hw *hw = I40E_PF_TO_HW(pf);
-	struct rte_eth_dev *dev = ((struct i40e_adapter *)hw->back)->eth_dev;
+	struct rte_eth_dev *dev = &rte_eth_devices[pf->dev_data->port_id];
 	enum i40e_status_code status = I40E_SUCCESS;
 
 	if (pf->support_multi_driver) {
@@ -8002,7 +8001,7 @@ i40e_status_code i40e_replace_mpls_cloud_filter(struct i40e_pf *pf)
 	struct i40e_aqc_replace_cloud_filters_cmd  filter_replace;
 	struct i40e_aqc_replace_cloud_filters_cmd_buf  filter_replace_buf;
 	struct i40e_hw *hw = I40E_PF_TO_HW(pf);
-	struct rte_eth_dev *dev = ((struct i40e_adapter *)hw->back)->eth_dev;
+	struct rte_eth_dev *dev = &rte_eth_devices[pf->dev_data->port_id];
 	enum i40e_status_code status = I40E_SUCCESS;
 
 	if (pf->support_multi_driver) {
@@ -8077,7 +8076,7 @@ i40e_replace_gtp_l1_filter(struct i40e_pf *pf)
 	struct i40e_aqc_replace_cloud_filters_cmd  filter_replace;
 	struct i40e_aqc_replace_cloud_filters_cmd_buf  filter_replace_buf;
 	struct i40e_hw *hw = I40E_PF_TO_HW(pf);
-	struct rte_eth_dev *dev = ((struct i40e_adapter *)hw->back)->eth_dev;
+	struct rte_eth_dev *dev = &rte_eth_devices[pf->dev_data->port_id];
 	enum i40e_status_code status = I40E_SUCCESS;
 
 	if (pf->support_multi_driver) {
@@ -8165,7 +8164,7 @@ i40e_status_code i40e_replace_gtp_cloud_filter(struct i40e_pf *pf)
 	struct i40e_aqc_replace_cloud_filters_cmd  filter_replace;
 	struct i40e_aqc_replace_cloud_filters_cmd_buf  filter_replace_buf;
 	struct i40e_hw *hw = I40E_PF_TO_HW(pf);
-	struct rte_eth_dev *dev = ((struct i40e_adapter *)hw->back)->eth_dev;
+	struct rte_eth_dev *dev = &rte_eth_devices[pf->dev_data->port_id];
 	enum i40e_status_code status = I40E_SUCCESS;
 
 	if (pf->support_multi_driver) {
@@ -8240,7 +8239,7 @@ i40e_replace_port_l1_filter(struct i40e_pf *pf,
 	struct i40e_aqc_replace_cloud_filters_cmd  filter_replace;
 	enum i40e_status_code status = I40E_SUCCESS;
 	struct i40e_hw *hw = I40E_PF_TO_HW(pf);
-	struct rte_eth_dev *dev = ((struct i40e_adapter *)hw->back)->eth_dev;
+	struct rte_eth_dev *dev = &rte_eth_devices[pf->dev_data->port_id];
 
 	if (pf->support_multi_driver) {
 		PMD_DRV_LOG(ERR, "Replace l1 filter is not supported.");
@@ -8312,7 +8311,7 @@ i40e_replace_port_cloud_filter(struct i40e_pf *pf,
 	struct i40e_aqc_replace_cloud_filters_cmd  filter_replace;
 	enum i40e_status_code status = I40E_SUCCESS;
 	struct i40e_hw *hw = I40E_PF_TO_HW(pf);
-	struct rte_eth_dev *dev = ((struct i40e_adapter *)hw->back)->eth_dev;
+	struct rte_eth_dev *dev = &rte_eth_devices[pf->dev_data->port_id];
 
 	if (pf->support_multi_driver) {
 		PMD_DRV_LOG(ERR, "Replace cloud filter is not supported.");
@@ -9646,9 +9645,10 @@ void
 i40e_check_write_global_reg(struct i40e_hw *hw, uint32_t addr, uint32_t val)
 {
 	uint32_t reg = i40e_read_rx_ctl(hw, addr);
-	struct rte_eth_dev *dev;
+	struct rte_eth_dev_data *dev_data =
+		((struct i40e_adapter *)hw->back)->pf.dev_data;
+	struct rte_eth_dev *dev = &rte_eth_devices[dev_data->port_id];
 
-	dev = ((struct i40e_adapter *)hw->back)->eth_dev;
 	if (reg != val) {
 		i40e_write_rx_ctl(hw, addr, val);
 		PMD_DRV_LOG(WARNING,
@@ -12493,7 +12493,7 @@ i40e_cloud_filter_qinq_create(struct i40e_pf *pf)
 	struct i40e_aqc_replace_cloud_filters_cmd  filter_replace;
 	struct i40e_aqc_replace_cloud_filters_cmd_buf  filter_replace_buf;
 	struct i40e_hw *hw = I40E_PF_TO_HW(pf);
-	struct rte_eth_dev *dev = ((struct i40e_adapter *)hw->back)->eth_dev;
+	struct rte_eth_dev *dev = &rte_eth_devices[pf->dev_data->port_id];
 
 	if (pf->support_multi_driver) {
 		PMD_DRV_LOG(ERR, "Replace cloud filter is not supported.");
diff --git a/drivers/net/i40e/i40e_ethdev.h b/drivers/net/i40e/i40e_ethdev.h
index ba1bb3dc98..d80316d2f7 100644
--- a/drivers/net/i40e/i40e_ethdev.h
+++ b/drivers/net/i40e/i40e_ethdev.h
@@ -88,8 +88,10 @@
 	do {								\
 		uint32_t ori_val;					\
 		struct rte_eth_dev *dev;				\
+		struct rte_eth_dev_data *dev_data;			\
 		ori_val = I40E_READ_REG((hw), (reg));			\
-		dev = ((struct i40e_adapter *)hw->back)->eth_dev;	\
+		dev_data = ((struct i40e_adapter *)hw->back)->pf.dev_data; \
+		dev = &rte_eth_devices[dev_data->port_id];		\
 		I40E_PCI_REG_WRITE(I40E_PCI_REG_ADDR((hw),		\
 						     (reg)), (value));	\
 		if (ori_val != value)					\
@@ -1264,7 +1266,6 @@ struct i40e_vf {
 struct i40e_adapter {
 	/* Common for both PF and VF */
 	struct i40e_hw hw;
-	struct rte_eth_dev *eth_dev;
 
 	/* Specific for PF or VF */
 	union {
@@ -1514,7 +1515,7 @@ i40e_get_vsi_from_adapter(struct i40e_adapter *adapter)
 #define I40E_VSI_TO_DEV_DATA(vsi) \
 	(((struct i40e_vsi *)vsi)->adapter->pf.dev_data)
 #define I40E_VSI_TO_ETH_DEV(vsi) \
-	(((struct i40e_vsi *)vsi)->adapter->eth_dev)
+	(&rte_eth_devices[((struct i40e_vsi *)vsi)->adapter->pf.dev_data->port_id])
 
 /* I40E_PF_TO */
 #define I40E_PF_TO_HW(pf) \
diff --git a/drivers/net/i40e/i40e_fdir.c b/drivers/net/i40e/i40e_fdir.c
index 5f8e167632..05fdcef24f 100644
--- a/drivers/net/i40e/i40e_fdir.c
+++ b/drivers/net/i40e/i40e_fdir.c
@@ -159,7 +159,7 @@ i40e_fdir_setup(struct i40e_pf *pf)
 	int err = I40E_SUCCESS;
 	char z_name[RTE_MEMZONE_NAMESIZE];
 	const struct rte_memzone *mz = NULL;
-	struct rte_eth_dev *eth_dev = pf->adapter->eth_dev;
+	struct rte_eth_dev *eth_dev = &rte_eth_devices[pf->dev_data->port_id];
 	uint16_t i;
 
 	if ((pf->flags & I40E_FLAG_FDIR) == 0) {
@@ -283,7 +283,7 @@ i40e_fdir_teardown(struct i40e_pf *pf)
 {
 	struct i40e_hw *hw = I40E_PF_TO_HW(pf);
 	struct i40e_vsi *vsi;
-	struct rte_eth_dev *dev = pf->adapter->eth_dev;
+	struct rte_eth_dev *dev = &rte_eth_devices[pf->dev_data->port_id];
 
 	vsi = pf->fdir.fdir_vsi;
 	if (!vsi)
diff --git a/drivers/net/i40e/i40e_flow.c b/drivers/net/i40e/i40e_flow.c
index 7de1a8dbc0..70c5c72326 100644
--- a/drivers/net/i40e/i40e_flow.c
+++ b/drivers/net/i40e/i40e_flow.c
@@ -5458,7 +5458,7 @@ i40e_flow_flush(struct rte_eth_dev *dev, struct rte_flow_error *error)
 static int
 i40e_flow_flush_fdir_filter(struct i40e_pf *pf)
 {
-	struct rte_eth_dev *dev = pf->adapter->eth_dev;
+	struct rte_eth_dev *dev = &rte_eth_devices[pf->dev_data->port_id];
 	struct i40e_fdir_info *fdir_info = &pf->fdir;
 	struct i40e_fdir_filter *fdir_filter;
 	enum i40e_filter_pctype pctype;
diff --git a/drivers/net/i40e/i40e_rxtx.c b/drivers/net/i40e/i40e_rxtx.c
index 3986842a62..39a69b74d1 100644
--- a/drivers/net/i40e/i40e_rxtx.c
+++ b/drivers/net/i40e/i40e_rxtx.c
@@ -2952,7 +2952,7 @@ i40e_fdir_setup_tx_resources(struct i40e_pf *pf)
 		return I40E_ERR_BAD_PTR;
 	}
 
-	dev = pf->adapter->eth_dev;
+	dev = &rte_eth_devices[pf->dev_data->port_id];
 
 	/* Allocate the TX queue data structure. */
 	txq = rte_zmalloc_socket("i40e fdir tx queue",
@@ -3010,7 +3010,7 @@ i40e_fdir_setup_rx_resources(struct i40e_pf *pf)
 		return I40E_ERR_BAD_PTR;
 	}
 
-	dev = pf->adapter->eth_dev;
+	dev = &rte_eth_devices[pf->dev_data->port_id];
 
 	/* Allocate the RX queue data structure. */
 	rxq = rte_zmalloc_socket("i40e fdir rx queue",
diff --git a/drivers/net/i40e/i40e_vf_representor.c b/drivers/net/i40e/i40e_vf_representor.c
index 9e40406a3d..7ab4b19a42 100644
--- a/drivers/net/i40e/i40e_vf_representor.c
+++ b/drivers/net/i40e/i40e_vf_representor.c
@@ -19,15 +19,18 @@ i40e_vf_representor_link_update(struct rte_eth_dev *ethdev,
 	int wait_to_complete)
 {
 	struct i40e_vf_representor *representor = ethdev->data->dev_private;
+	struct rte_eth_dev *dev =
+		&rte_eth_devices[representor->adapter->pf.dev_data->port_id];
 
-	return i40e_dev_link_update(representor->adapter->eth_dev,
-		wait_to_complete);
+	return i40e_dev_link_update(dev, wait_to_complete);
 }
 static int
 i40e_vf_representor_dev_infos_get(struct rte_eth_dev *ethdev,
 	struct rte_eth_dev_info *dev_info)
 {
 	struct i40e_vf_representor *representor = ethdev->data->dev_private;
+	struct rte_eth_dev_data *pf_dev_data =
+		representor->adapter->pf.dev_data;
 
 	/* get dev info for the vdev */
 	dev_info->device = ethdev->device;
@@ -99,7 +102,7 @@ i40e_vf_representor_dev_infos_get(struct rte_eth_dev *ethdev,
 	};
 
 	dev_info->switch_info.name =
-		representor->adapter->eth_dev->device->name;
+		rte_eth_devices[pf_dev_data->port_id].device->name;
 	dev_info->switch_info.domain_id = representor->switch_domain_id;
 	dev_info->switch_info.port_id = representor->vf_id;
 
@@ -213,7 +216,7 @@ i40e_vf_representor_stats_get(struct rte_eth_dev *ethdev,
 	int ret;
 
 	ret = rte_pmd_i40e_get_vf_native_stats(
-		representor->adapter->eth_dev->data->port_id,
+		representor->adapter->pf.dev_data->port_id,
 		representor->vf_id, &native_stats);
 	if (ret == 0) {
 		i40evf_stat_update_48(
@@ -273,7 +276,7 @@ i40e_vf_representor_stats_reset(struct rte_eth_dev *ethdev)
 	struct i40e_vf_representor *representor = ethdev->data->dev_private;
 
 	return rte_pmd_i40e_get_vf_native_stats(
-		representor->adapter->eth_dev->data->port_id,
+		representor->adapter->pf.dev_data->port_id,
 		representor->vf_id, &representor->stats_offset);
 }
 
@@ -283,7 +286,7 @@ i40e_vf_representor_promiscuous_enable(struct rte_eth_dev *ethdev)
 	struct i40e_vf_representor *representor = ethdev->data->dev_private;
 
 	return rte_pmd_i40e_set_vf_unicast_promisc(
-		representor->adapter->eth_dev->data->port_id,
+		representor->adapter->pf.dev_data->port_id,
 		representor->vf_id, 1);
 }
 
@@ -293,7 +296,7 @@ i40e_vf_representor_promiscuous_disable(struct rte_eth_dev *ethdev)
 	struct i40e_vf_representor *representor = ethdev->data->dev_private;
 
 	return rte_pmd_i40e_set_vf_unicast_promisc(
-		representor->adapter->eth_dev->data->port_id,
+		representor->adapter->pf.dev_data->port_id,
 		representor->vf_id, 0);
 }
 
@@ -303,7 +306,7 @@ i40e_vf_representor_allmulticast_enable(struct rte_eth_dev *ethdev)
 	struct i40e_vf_representor *representor = ethdev->data->dev_private;
 
 	return rte_pmd_i40e_set_vf_multicast_promisc(
-		representor->adapter->eth_dev->data->port_id,
+		representor->adapter->pf.dev_data->port_id,
 		representor->vf_id,  1);
 }
 
@@ -313,7 +316,7 @@ i40e_vf_representor_allmulticast_disable(struct rte_eth_dev *ethdev)
 	struct i40e_vf_representor *representor = ethdev->data->dev_private;
 
 	return rte_pmd_i40e_set_vf_multicast_promisc(
-		representor->adapter->eth_dev->data->port_id,
+		representor->adapter->pf.dev_data->port_id,
 		representor->vf_id,  0);
 }
 
@@ -323,7 +326,7 @@ i40e_vf_representor_mac_addr_remove(struct rte_eth_dev *ethdev, uint32_t index)
 	struct i40e_vf_representor *representor = ethdev->data->dev_private;
 
 	rte_pmd_i40e_remove_vf_mac_addr(
-		representor->adapter->eth_dev->data->port_id,
+		representor->adapter->pf.dev_data->port_id,
 		representor->vf_id, &ethdev->data->mac_addrs[index]);
 }
 
@@ -334,7 +337,7 @@ i40e_vf_representor_mac_addr_set(struct rte_eth_dev *ethdev,
 	struct i40e_vf_representor *representor = ethdev->data->dev_private;
 
 	return rte_pmd_i40e_set_vf_mac_addr(
-		representor->adapter->eth_dev->data->port_id,
+		representor->adapter->pf.dev_data->port_id,
 		representor->vf_id, mac_addr);
 }
 
@@ -346,7 +349,7 @@ i40e_vf_representor_vlan_filter_set(struct rte_eth_dev *ethdev,
 	uint64_t vf_mask = 1ULL << representor->vf_id;
 
 	return rte_pmd_i40e_set_vf_vlan_filter(
-		representor->adapter->eth_dev->data->port_id,
+		representor->adapter->pf.dev_data->port_id,
 		vlan_id, vf_mask, on);
 }
 
@@ -360,7 +363,7 @@ i40e_vf_representor_vlan_offload_set(struct rte_eth_dev *ethdev, int mask)
 	struct i40e_pf *pf;
 	uint32_t vfid;
 
-	pdev = representor->adapter->eth_dev;
+	pdev = &rte_eth_devices[representor->adapter->pf.dev_data->port_id];
 	vfid = representor->vf_id;
 
 	if (!is_i40e_supported(pdev)) {
@@ -410,7 +413,7 @@ i40e_vf_representor_vlan_strip_queue_set(struct rte_eth_dev *ethdev,
 	struct i40e_vf_representor *representor = ethdev->data->dev_private;
 
 	rte_pmd_i40e_set_vf_vlan_stripq(
-		representor->adapter->eth_dev->data->port_id,
+		representor->adapter->pf.dev_data->port_id,
 		representor->vf_id, on);
 }
 
@@ -421,7 +424,7 @@ i40e_vf_representor_vlan_pvid_set(struct rte_eth_dev *ethdev, uint16_t vlan_id,
 	struct i40e_vf_representor *representor = ethdev->data->dev_private;
 
 	return rte_pmd_i40e_set_vf_vlan_insert(
-		representor->adapter->eth_dev->data->port_id,
+		representor->adapter->pf.dev_data->port_id,
 		representor->vf_id, vlan_id);
 }
 
@@ -487,7 +490,7 @@ i40e_vf_representor_init(struct rte_eth_dev *ethdev, void *init_params)
 		((struct i40e_vf_representor *)init_params)->adapter;
 
 	pf = I40E_DEV_PRIVATE_TO_PF(
-		representor->adapter->eth_dev->data->dev_private);
+		representor->adapter->pf.dev_data->dev_private);
 
 	if (representor->vf_id >= pf->vf_num)
 		return -ENODEV;
@@ -519,7 +522,7 @@ i40e_vf_representor_init(struct rte_eth_dev *ethdev, void *init_params)
 	ethdev->data->mac_addrs = &vf->mac_addr;
 
 	/* Link state. Inherited from PF */
-	link = &representor->adapter->eth_dev->data->dev_link;
+	link = &representor->adapter->pf.dev_data->dev_link;
 
 	ethdev->data->dev_link.link_speed = link->link_speed;
 	ethdev->data->dev_link.link_duplex = link->link_duplex;
-- 
2.30.2

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2021-07-12 13:41:39.297403515 +0100
+++ 0051-net-i40e-fix-multi-process-shared-data.patch	2021-07-12 13:41:36.430121361 +0100
@@ -1 +1 @@
-From e391a7b7f815795eacfae3240c4405353cf37a53 Mon Sep 17 00:00:00 2001
+From 37a61f47701ff59cc36dd37d5feb4bc8bf90385a Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit e391a7b7f815795eacfae3240c4405353cf37a53 ]
+
@@ -16 +17,0 @@
-Cc: stable@dpdk.org
@@ -25 +25,0 @@
- drivers/net/i40e/i40e_hash.c           |  7 ++--
@@ -28 +28 @@
- 7 files changed, 55 insertions(+), 50 deletions(-)
+ 6 files changed, 51 insertions(+), 47 deletions(-)
@@ -31 +31 @@
-index df716c180f..5b0a7f2537 100644
+index 63a9fc04d0..d617e9c71b 100644
@@ -34 +34 @@
-@@ -732,10 +732,11 @@ i40e_write_global_rx_ctl(struct i40e_hw *hw, uint32_t reg_addr,
+@@ -727,10 +727,11 @@ i40e_write_global_rx_ctl(struct i40e_hw *hw, uint32_t reg_addr,
@@ -48 +48 @@
-@@ -1326,7 +1327,9 @@ i40e_aq_debug_write_global_register(struct i40e_hw *hw,
+@@ -1321,7 +1322,9 @@ i40e_aq_debug_write_global_register(struct i40e_hw *hw,
@@ -59 +59 @@
-@@ -1336,7 +1339,6 @@ i40e_aq_debug_write_global_register(struct i40e_hw *hw,
+@@ -1331,7 +1334,6 @@ i40e_aq_debug_write_global_register(struct i40e_hw *hw,
@@ -67 +67 @@
-@@ -1455,7 +1457,6 @@ eth_i40e_dev_init(struct rte_eth_dev *dev, void *init_params __rte_unused)
+@@ -1506,7 +1508,6 @@ eth_i40e_dev_init(struct rte_eth_dev *dev, void *init_params __rte_unused)
@@ -75 +75 @@
-@@ -1982,7 +1983,7 @@ err:
+@@ -2039,7 +2040,7 @@ err:
@@ -84 +84 @@
-@@ -2098,7 +2099,7 @@ __vsi_queues_bind_intr(struct i40e_vsi *vsi, uint16_t msix_vect,
+@@ -2155,7 +2156,7 @@ __vsi_queues_bind_intr(struct i40e_vsi *vsi, uint16_t msix_vect,
@@ -93 +93 @@
-@@ -2174,7 +2175,7 @@ i40e_vsi_queues_bind_intr(struct i40e_vsi *vsi, uint16_t itr_idx)
+@@ -2231,7 +2232,7 @@ i40e_vsi_queues_bind_intr(struct i40e_vsi *vsi, uint16_t itr_idx)
@@ -102 +102 @@
-@@ -2201,7 +2202,7 @@ i40e_vsi_enable_queues_intr(struct i40e_vsi *vsi)
+@@ -2258,7 +2259,7 @@ i40e_vsi_enable_queues_intr(struct i40e_vsi *vsi)
@@ -111 +111 @@
-@@ -6416,8 +6417,7 @@ i40e_dev_tx_init(struct i40e_pf *pf)
+@@ -6472,8 +6473,7 @@ i40e_dev_tx_init(struct i40e_pf *pf)
@@ -121 +121 @@
-@@ -6445,8 +6445,7 @@ i40e_dev_rx_init(struct i40e_pf *pf)
+@@ -6501,8 +6501,7 @@ i40e_dev_rx_init(struct i40e_pf *pf)
@@ -131 +131 @@
-@@ -7885,7 +7884,7 @@ i40e_status_code i40e_replace_mpls_l1_filter(struct i40e_pf *pf)
+@@ -7941,7 +7940,7 @@ i40e_status_code i40e_replace_mpls_l1_filter(struct i40e_pf *pf)
@@ -140 +140 @@
-@@ -7946,7 +7945,7 @@ i40e_status_code i40e_replace_mpls_cloud_filter(struct i40e_pf *pf)
+@@ -8002,7 +8001,7 @@ i40e_status_code i40e_replace_mpls_cloud_filter(struct i40e_pf *pf)
@@ -149 +149 @@
-@@ -8021,7 +8020,7 @@ i40e_replace_gtp_l1_filter(struct i40e_pf *pf)
+@@ -8077,7 +8076,7 @@ i40e_replace_gtp_l1_filter(struct i40e_pf *pf)
@@ -158 +158 @@
-@@ -8109,7 +8108,7 @@ i40e_status_code i40e_replace_gtp_cloud_filter(struct i40e_pf *pf)
+@@ -8165,7 +8164,7 @@ i40e_status_code i40e_replace_gtp_cloud_filter(struct i40e_pf *pf)
@@ -167 +167 @@
-@@ -8184,7 +8183,7 @@ i40e_replace_port_l1_filter(struct i40e_pf *pf,
+@@ -8240,7 +8239,7 @@ i40e_replace_port_l1_filter(struct i40e_pf *pf,
@@ -176 +176 @@
-@@ -8256,7 +8255,7 @@ i40e_replace_port_cloud_filter(struct i40e_pf *pf,
+@@ -8312,7 +8311,7 @@ i40e_replace_port_cloud_filter(struct i40e_pf *pf,
@@ -185 +185 @@
-@@ -9583,9 +9582,10 @@ void
+@@ -9646,9 +9645,10 @@ void
@@ -198 +198 @@
-@@ -12377,7 +12377,7 @@ i40e_cloud_filter_qinq_create(struct i40e_pf *pf)
+@@ -12493,7 +12493,7 @@ i40e_cloud_filter_qinq_create(struct i40e_pf *pf)
@@ -208 +208 @@
-index 585a0d8eb2..cd6deabd60 100644
+index ba1bb3dc98..d80316d2f7 100644
@@ -211 +211 @@
-@@ -90,8 +90,10 @@
+@@ -88,8 +88,10 @@
@@ -223 +223 @@
-@@ -1285,7 +1287,6 @@ struct i40e_vf {
+@@ -1264,7 +1266,6 @@ struct i40e_vf {
@@ -231 +231 @@
-@@ -1540,7 +1541,7 @@ i40e_get_vsi_from_adapter(struct i40e_adapter *adapter)
+@@ -1514,7 +1515,7 @@ i40e_get_vsi_from_adapter(struct i40e_adapter *adapter)
@@ -241 +241 @@
-index 6f73936091..af075fda2a 100644
+index 5f8e167632..05fdcef24f 100644
@@ -244 +244 @@
-@@ -160,7 +160,7 @@ i40e_fdir_setup(struct i40e_pf *pf)
+@@ -159,7 +159,7 @@ i40e_fdir_setup(struct i40e_pf *pf)
@@ -253 +253 @@
-@@ -284,7 +284,7 @@ i40e_fdir_teardown(struct i40e_pf *pf)
+@@ -283,7 +283,7 @@ i40e_fdir_teardown(struct i40e_pf *pf)
@@ -263 +263 @@
-index ff8441b378..3c1570bd9c 100644
+index 7de1a8dbc0..70c5c72326 100644
@@ -266 +266 @@
-@@ -4897,7 +4897,7 @@ i40e_flow_flush(struct rte_eth_dev *dev, struct rte_flow_error *error)
+@@ -5458,7 +5458,7 @@ i40e_flow_flush(struct rte_eth_dev *dev, struct rte_flow_error *error)
@@ -275,32 +274,0 @@
-diff --git a/drivers/net/i40e/i40e_hash.c b/drivers/net/i40e/i40e_hash.c
-index 8787a6996d..1fb8c9abfc 100644
---- a/drivers/net/i40e/i40e_hash.c
-+++ b/drivers/net/i40e/i40e_hash.c
-@@ -732,7 +732,7 @@ i40e_hash_config_region(struct i40e_pf *pf,
- 			const struct i40e_rte_flow_rss_conf *rss_conf)
- {
- 	struct i40e_hw *hw = &pf->adapter->hw;
--	struct rte_eth_dev *dev = pf->adapter->eth_dev;
-+	struct rte_eth_dev *dev = &rte_eth_devices[pf->dev_data->port_id];
- 	struct i40e_queue_region_info *regions = pf->queue_region.region;
- 	uint32_t num = pf->queue_region.queue_region_number;
- 	uint32_t i, region_id_mask = 0;
-@@ -1270,6 +1270,7 @@ i40e_hash_reset_conf(struct i40e_pf *pf,
- 		     struct i40e_rte_flow_rss_conf *rss_conf)
- {
- 	struct i40e_hw *hw = &pf->adapter->hw;
-+	struct rte_eth_dev *dev;
- 	uint64_t inset;
- 	uint32_t idx;
- 	int ret;
-@@ -1283,8 +1284,8 @@ i40e_hash_reset_conf(struct i40e_pf *pf,
- 	}
- 
- 	if (rss_conf->misc_reset_flags & I40E_HASH_FLOW_RESET_FLAG_REGION) {
--		ret = i40e_flush_queue_region_all_conf(pf->adapter->eth_dev,
--						       hw, pf, 0);
-+		dev = &rte_eth_devices[pf->dev_data->port_id];
-+		ret = i40e_flush_queue_region_all_conf(dev, hw, pf, 0);
- 		if (ret)
- 			return ret;
- 
@@ -308 +276 @@
-index ee19102ad3..8d65f287f4 100644
+index 3986842a62..39a69b74d1 100644
@@ -311 +279 @@
-@@ -3064,7 +3064,7 @@ i40e_fdir_setup_tx_resources(struct i40e_pf *pf)
+@@ -2952,7 +2952,7 @@ i40e_fdir_setup_tx_resources(struct i40e_pf *pf)
@@ -320 +288 @@
-@@ -3122,7 +3122,7 @@ i40e_fdir_setup_rx_resources(struct i40e_pf *pf)
+@@ -3010,7 +3010,7 @@ i40e_fdir_setup_rx_resources(struct i40e_pf *pf)
@@ -330 +298 @@
-index 7ed47c1a2c..0481b55381 100644
+index 9e40406a3d..7ab4b19a42 100644

  parent reply	other threads:[~2021-07-12 13:12 UTC|newest]

Thread overview: 208+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-07-12 13:03 [dpdk-stable] patch 'graph: fix memory leak in stats' " luca.boccassi
2021-07-12 13:03 ` [dpdk-stable] patch 'graph: fix null dereference " luca.boccassi
2021-07-12 13:03 ` [dpdk-stable] patch 'bitmap: fix buffer overrun in bitmap init' " luca.boccassi
2021-07-12 13:03 ` [dpdk-stable] patch 'malloc: fix size annotation for NUMA-aware realloc' " luca.boccassi
2021-07-12 13:04 ` [dpdk-stable] patch 'net/bnxt: check access to possible null pointer' " luca.boccassi
2021-07-12 13:04 ` [dpdk-stable] patch 'net/bnxt: fix Rx burst size constraint' " luca.boccassi
2021-07-12 13:04 ` [dpdk-stable] patch 'net/bnxt: workaround spurious zero stats in Thor' " luca.boccassi
2021-07-12 13:04 ` [dpdk-stable] patch 'net/bnxt: fix error messages in VNIC prepare' " luca.boccassi
2021-07-12 13:04 ` [dpdk-stable] patch 'net/bnxt: set flow error when free filter not available' " luca.boccassi
2021-07-12 13:04 ` [dpdk-stable] patch 'net/bnxt: remove unnecessary code' " luca.boccassi
2021-07-12 13:04 ` [dpdk-stable] patch 'net/bnxt: fix error handling in VNIC prepare' " luca.boccassi
2021-07-12 13:04 ` [dpdk-stable] patch 'net/bnxt: set flow error after tunnel redirection free' " luca.boccassi
2021-07-12 13:04 ` [dpdk-stable] patch 'net/bnxt: use common function to free VNIC resource' " luca.boccassi
2021-07-12 13:04 ` [dpdk-stable] patch 'net/bnxt: fix check for PTP support in FW' " luca.boccassi
2021-07-12 13:04 ` [dpdk-stable] patch 'net/bnxt: improve probing log message' " luca.boccassi
2021-07-12 13:04 ` [dpdk-stable] patch 'net/bnxt: remove unnecessary comment' " luca.boccassi
2021-07-12 13:04 ` [dpdk-stable] patch 'net/iavf: fix RSS key access out of bound' " luca.boccassi
2021-07-12 13:04 ` [dpdk-stable] patch 'net/ice: fix default RSS key generation' " luca.boccassi
2021-07-12 13:04 ` [dpdk-stable] patch 'net/iavf: fix handling of unsupported promiscuous' " luca.boccassi
2021-07-12 13:04 ` [dpdk-stable] patch 'net/i40e: fix raw packet flow director' " luca.boccassi
2021-07-12 13:04 ` [dpdk-stable] patch 'net/ice: fix data path selection in secondary process' " luca.boccassi
2021-07-12 13:04 ` [dpdk-stable] patch 'net/ice: fix data path " luca.boccassi
2021-07-12 13:04 ` [dpdk-stable] patch 'net/i40e: fix use after free in FDIR release' " luca.boccassi
2021-07-12 13:04 ` [dpdk-stable] patch 'net/iavf: fix scalar Rx' " luca.boccassi
2021-07-12 13:04 ` [dpdk-stable] patch 'acl: fix build with GCC 6.3' " luca.boccassi
2021-07-12 20:31   ` Liang Ma
2021-07-15 14:59     ` Luca Boccassi
2021-07-12 13:04 ` [dpdk-stable] patch 'doc: fix typo in SPDX tag' " luca.boccassi
2021-07-12 13:04 ` [dpdk-stable] patch 'doc: fix default burst size in testpmd' " luca.boccassi
2021-07-12 13:04 ` [dpdk-stable] patch 'vfio: add stdbool include' " luca.boccassi
2021-07-12 13:04 ` [dpdk-stable] patch 'devtools: fix file listing in maintainers check' " luca.boccassi
2021-07-12 13:04 ` [dpdk-stable] patch 'vhost/crypto: check request pointer before dereference' " luca.boccassi
2021-07-12 13:04 ` [dpdk-stable] patch 'kni: fix mbuf allocation for kernel side use' " luca.boccassi
2021-07-12 13:04 ` [dpdk-stable] patch 'kni: fix crash on userspace VA for segmented packets' " luca.boccassi
2021-07-12 13:04 ` [dpdk-stable] patch 'flow_classify: fix leaking rules on delete' " luca.boccassi
2021-07-12 13:04 ` [dpdk-stable] patch 'rib: fix max depth IPv6 lookup' " luca.boccassi
2021-07-12 13:04 ` [dpdk-stable] patch 'tests/cmdline: fix memory leaks' " luca.boccassi
2021-07-12 13:04 ` [dpdk-stable] patch 'tests/eal: fix memory leak' " luca.boccassi
2021-07-12 13:04 ` [dpdk-stable] patch 'net/mlx5: fix RSS pattern expansion' " luca.boccassi
2021-07-12 13:04 ` [dpdk-stable] patch 'net/mlx5: fix switchdev mode recognition' " luca.boccassi
2021-07-12 13:04 ` [dpdk-stable] patch 'net/mlx5: fix IPIP multi-tunnel validation' " luca.boccassi
2021-07-12 13:04 ` [dpdk-stable] patch 'common/mlx5: fix Netlink port name padding in probing' " luca.boccassi
2021-07-12 13:04 ` [dpdk-stable] patch 'bus/pci: fix IOVA as VA support for PowerNV' " luca.boccassi
2021-07-12 13:04 ` [dpdk-stable] patch 'app/test: fix IPv6 header initialization' " luca.boccassi
2021-07-12 13:04 ` [dpdk-stable] patch 'examples/l2fwd: fix [no-]mac-updating options' " luca.boccassi
2021-07-12 13:04 ` [dpdk-stable] patch 'bus/pci: fix leak for unbound devices' " luca.boccassi
2021-07-12 13:04 ` [dpdk-stable] patch 'test/mbuf: fix virtual address conversion' " luca.boccassi
2021-07-12 13:04 ` [dpdk-stable] patch 'net/octeontx2: fix flow creation limit on CN98xx' " luca.boccassi
2021-07-12 13:04 ` [dpdk-stable] patch 'net/octeontx2: use runtime LSO format indices' " luca.boccassi
2021-07-12 13:04 ` [dpdk-stable] patch 'net/ice: fix overflow in maximum packet length config' " luca.boccassi
2021-07-12 13:04 ` [dpdk-stable] patch 'net/ice/base: fix first profile mask' " luca.boccassi
2021-07-13  2:07   ` Wu, Wenjun1
2021-07-15 14:57     ` Luca Boccassi
2021-07-12 13:04 ` [dpdk-stable] patch 'net/i40e: fix flow director input set conflict' " luca.boccassi
2021-07-12 13:04 ` luca.boccassi [this message]
2021-07-12 13:04 ` [dpdk-stable] patch 'vhost: fix missing memory table NUMA realloc' " luca.boccassi
2021-07-12 13:04 ` [dpdk-stable] patch 'vhost: fix missing guest pages " luca.boccassi
2021-07-12 13:04 ` [dpdk-stable] patch 'vhost: fix NUMA reallocation with multi-queue' " luca.boccassi
2021-07-12 13:04 ` [dpdk-stable] patch 'vdpa/mlx5: fix TSO offload without checksum' " luca.boccassi
2021-07-12 13:04 ` [dpdk-stable] patch 'mempool/octeontx2: fix shift calculation' " luca.boccassi
2021-07-12 13:04 ` [dpdk-stable] patch 'net/sfc: check ID overflow in action port ID' " luca.boccassi
2021-07-12 13:04 ` [dpdk-stable] patch 'net/sfc: fix outer match in MAE backend' " luca.boccassi
2021-07-12 13:04 ` [dpdk-stable] patch 'drivers/net: fix memzone allocations for DMA memory' " luca.boccassi
2021-07-12 13:04 ` [dpdk-stable] patch 'net/hns3: increase VF reset retry maximum' " luca.boccassi
2021-07-12 13:04 ` [dpdk-stable] patch 'net/hns3: fix delay for waiting to stop Rx/Tx' " luca.boccassi
2021-07-12 13:04 ` [dpdk-stable] patch 'net/hns3: fix fake queue rollback' " luca.boccassi
2021-07-12 13:04 ` [dpdk-stable] patch 'net/hns3: fix VLAN strip log' " luca.boccassi
2021-07-12 13:04 ` [dpdk-stable] patch 'net/hns3: fix maximum queues on configuration failure' " luca.boccassi
2021-07-12 13:05 ` [dpdk-stable] patch 'net/pfe: remove unnecessary null check' " luca.boccassi
2021-07-12 13:05 ` [dpdk-stable] patch 'net/sfc: fix outer L4 checksum Rx' " luca.boccassi
2021-07-12 13:05 ` [dpdk-stable] patch 'net/tap: fix Rx checksum flags on IP options packets' " luca.boccassi
2021-07-12 13:05 ` [dpdk-stable] patch 'net/tap: fix Rx checksum flags on TCP " luca.boccassi
2021-07-12 13:05 ` [dpdk-stable] patch 'app/testpmd: fix type of FEC mode parsing output' " luca.boccassi
2021-07-12 13:05 ` [dpdk-stable] patch 'ethdev: fix doc of flow action' " luca.boccassi
2021-07-12 13:05 ` [dpdk-stable] patch 'app/testpmd: change port link speed without stopping all' " luca.boccassi
2021-07-12 13:05 ` [dpdk-stable] patch 'crypto/qat: fix Arm build with special memcpy' " luca.boccassi
2021-07-12 13:05 ` [dpdk-stable] patch 'app/crypto-perf: fix out-of-place mempool allocation' " luca.boccassi
2021-07-12 13:05 ` [dpdk-stable] patch 'test/crypto: fix mbuf reset after null check' " luca.boccassi
2021-07-12 13:05 ` [dpdk-stable] patch 'crypto/aesni_gcm: fix performance on some AVX512 CPUs' " luca.boccassi
2021-07-12 13:05 ` [dpdk-stable] patch 'test/crypto: fix autotest function parameters' " luca.boccassi
2021-07-12 13:05 ` [dpdk-stable] patch 'test/crypto: fix typo in AES case' " luca.boccassi
2021-07-12 13:05 ` [dpdk-stable] patch 'test/crypto: fix typo in ESN " luca.boccassi
2021-07-12 13:05 ` [dpdk-stable] patch 'crypto/mvsam: fix AES-GCM session parameters' " luca.boccassi
2021-07-12 13:05 ` [dpdk-stable] patch 'crypto/mvsam: fix capabilities' " luca.boccassi
2021-07-12 13:05 ` [dpdk-stable] patch 'crypto/mvsam: fix session data reset' " luca.boccassi
2021-07-12 13:05 ` [dpdk-stable] patch 'crypto/mvsam: fix options parsing' " luca.boccassi
2021-07-12 13:05 ` [dpdk-stable] patch 'ipc: stop mp control thread on cleanup' " luca.boccassi
2021-07-12 13:05 ` [dpdk-stable] patch 'net/bnxt: cleanup code' " luca.boccassi
2021-07-12 13:05 ` [dpdk-stable] patch 'net/bnxt: fix typo in log message' " luca.boccassi
2021-07-12 13:05 ` [dpdk-stable] patch 'net/bnxt: fix auto-negociation on Whitney+' " luca.boccassi
2021-07-12 13:05 ` [dpdk-stable] patch 'net/bnxt: invoke device removal event on recovery failure' " luca.boccassi
2021-07-12 13:05 ` [dpdk-stable] patch 'net/bnxt: fix ring and context memory allocation' " luca.boccassi
2021-07-12 13:05 ` [dpdk-stable] patch 'net/bnxt: fix Tx descriptor status implementation' " luca.boccassi
2021-07-12 13:05 ` [dpdk-stable] patch 'net/bnxt: fix scalar Tx completion handling' " luca.boccassi
2021-07-12 13:05 ` [dpdk-stable] patch 'net/bnxt: fix Rx interrupt setting' " luca.boccassi
2021-07-12 13:05 ` [dpdk-stable] patch 'net/mlx5: fix multi-segment inline for the first segments' " luca.boccassi
2021-07-12 13:05 ` [dpdk-stable] patch 'common/mlx5: fix memory region leak' " luca.boccassi
2021-07-12 13:05 ` [dpdk-stable] patch 'net/mlx5: fix TSO multi-segment inline length' " luca.boccassi
2021-07-12 13:05 ` [dpdk-stable] patch 'doc: add limitation for ConnectX-4 with L2 in mlx5 guide' " luca.boccassi
2021-07-12 13:05 ` [dpdk-stable] patch 'net/mlx5: fix r/w lock usage in DMA unmap' " luca.boccassi
2021-07-12 13:05 ` [dpdk-stable] patch 'net/mlx5: fix pattern expansion in RSS flow rules' " luca.boccassi
2021-07-12 13:05 ` [dpdk-stable] patch 'net/mlx5: fix match MPLS over GRE with key' " luca.boccassi
2021-07-12 13:05 ` [dpdk-stable] patch 'common/mlx5: fix Netlink receive message buffer size' " luca.boccassi
2021-07-12 13:05 ` [dpdk-stable] patch 'net/mlx5: remove unsupported flow item MPLS over IP' " luca.boccassi
2021-07-12 13:05 ` [dpdk-stable] patch 'net/mlx5: fix MPLS RSS expansion' " luca.boccassi
2021-07-12 13:05 ` [dpdk-stable] patch 'common/mlx5: use new port query API if available' " luca.boccassi
2021-07-12 13:05 ` [dpdk-stable] patch 'common/mlx5: fix compatibility with OFED port query API' " luca.boccassi
2021-07-12 13:05 ` [dpdk-stable] patch 'net/ice: fix memzone leak when firmware is missing' " luca.boccassi
2021-07-12 13:05 ` [dpdk-stable] patch 'net/i40e: fix descriptor scan on Arm' " luca.boccassi
2021-07-12 13:05 ` [dpdk-stable] patch 'net/ixgbe: fix flow entry access after freeing' " luca.boccassi
2021-07-12 13:05 ` [dpdk-stable] patch 'net/octeontx/base: fix debug build with clang' " luca.boccassi
2021-07-12 13:05 ` [dpdk-stable] patch 'doc: fix build on Windows with Meson 0.58' " luca.boccassi
2021-07-12 13:05 ` [dpdk-stable] patch 'test/power: fix CPU frequency when turbo enabled' " luca.boccassi
2021-07-12 13:05 ` [dpdk-stable] patch 'Revert "test/power: fix CPU frequency when turbo enabled"' " luca.boccassi
2021-07-12 13:05 ` [dpdk-stable] patch 'build: support drivers symlink on Windows' " luca.boccassi
2021-07-12 13:05 ` [dpdk-stable] patch 'net/sfc: fix aarch32 build' " luca.boccassi
2021-07-12 13:05 ` [dpdk-stable] patch 'net/bnxt: " luca.boccassi
2021-07-12 13:05 ` [dpdk-stable] patch 'net/virtio: " luca.boccassi
2021-07-12 13:05 ` [dpdk-stable] patch 'net/hns3: fix Arm SVE build with GCC 8.3' " luca.boccassi
2021-07-12 13:05 ` [dpdk-stable] patch 'table: fix bucket empty check' " luca.boccassi
2021-07-26 13:52 ` [dpdk-stable] patch 'net/bonding: fix error message on flow verify' " luca.boccassi
2021-07-26 13:52   ` [dpdk-stable] patch 'net/bonding: check flow setting' " luca.boccassi
2021-07-26 13:52   ` [dpdk-stable] patch 'net/softnic: fix connection memory leak' " luca.boccassi
2021-07-26 13:52   ` [dpdk-stable] patch 'app/testpmd: fix offloads for newly attached port' " luca.boccassi
2021-07-26 13:52   ` [dpdk-stable] patch 'net/mlx5: remove redundant operations in NEON Rx' " luca.boccassi
2021-07-26 13:52   ` [dpdk-stable] patch 'net/mlx5: fix missing RSS expandable items' " luca.boccassi
2021-07-26 13:52   ` [dpdk-stable] patch 'net/mlx5: fix missing RSS expansion of IPv6 frag' " luca.boccassi
2021-07-26 13:52   ` [dpdk-stable] patch 'net/mlx5: fix threshold for mbuf replenishment in MPRQ' " luca.boccassi
2021-07-26 13:52   ` [dpdk-stable] patch 'net/mlx5: fix typo in vectorized Rx comments' " luca.boccassi
2021-07-26 13:52   ` [dpdk-stable] patch 'net/mvpp2: fix port speed overflow' " luca.boccassi
2021-07-26 13:52   ` [dpdk-stable] patch 'net/mvpp2: fix configured state dependency' " luca.boccassi
2021-07-26 13:52   ` [dpdk-stable] patch 'net/octeontx2: fix TM node statistics query' " luca.boccassi
2021-07-26 13:52   ` [dpdk-stable] patch 'net/bnxt: fix missing barriers in completion handling' " luca.boccassi
2021-07-26 13:52   ` [dpdk-stable] patch 'net/bnxt: fix nested lock during bonding' " luca.boccassi
2021-07-26 13:52   ` [dpdk-stable] patch 'net/bnxt: clear cached statistics' " luca.boccassi
2021-07-26 13:52   ` [dpdk-stable] patch 'distributor: fix 128-bit write alignment' " luca.boccassi
2021-07-26 13:52   ` [dpdk-stable] patch 'raw/ioat: fix config script queue size calculation' " luca.boccassi
2021-07-26 13:52   ` [dpdk-stable] patch 'test/power: fix CPU frequency check for intel_pstate' " luca.boccassi
2021-07-26 13:52   ` [dpdk-stable] patch 'crypto/octeontx2: fix IPsec session member overlap' " luca.boccassi
2021-07-26 13:52   ` [dpdk-stable] patch 'crypto/octeontx2: fix lookaside IPsec IV pointer' " luca.boccassi
2021-07-26 13:52   ` [dpdk-stable] patch 'test/crypto: fix mempool size for session-less' " luca.boccassi
2021-07-26 13:52   ` [dpdk-stable] patch 'vhost: check header for legacy dequeue offload' " luca.boccassi
2021-07-26 13:52   ` [dpdk-stable] patch 'net/virtio: fix refill order in packed ring datapath' " luca.boccassi
2021-07-26 13:52   ` [dpdk-stable] patch 'vhost: fix lock on device readiness notification' " luca.boccassi
2021-07-26 13:52   ` [dpdk-stable] patch 'net/virtio: fix Rx scatter offload' " luca.boccassi
2021-07-26 13:52   ` [dpdk-stable] patch 'regex/mlx5: fix size of setup constants' " luca.boccassi
2021-07-26 13:52   ` [dpdk-stable] patch 'vdpa/mlx5: fix overflow in queue attribute' " luca.boccassi
2021-07-26 13:52   ` [dpdk-stable] patch 'net/mlx5: fix overflow in mempool argument' " luca.boccassi
2021-07-26 13:52   ` [dpdk-stable] patch 'regex/mlx5: fix redundancy in device removal' " luca.boccassi
2021-07-26 13:52   ` [dpdk-stable] patch 'net/mlx5: fix Rx/Tx queue checks' " luca.boccassi
2021-07-26 13:52   ` [dpdk-stable] patch 'net/mlx5: fix indirect action modify rollback' " luca.boccassi
2021-07-26 13:52   ` [dpdk-stable] patch 'net/mlx5: fix RoCE LAG bond device probing' " luca.boccassi
2021-07-26 13:52   ` [dpdk-stable] patch 'net/mlx5: fix RSS expansion for GTP' " luca.boccassi
2021-07-26 13:52   ` [dpdk-stable] patch 'net/mlx5: reject inner ethernet matching in " luca.boccassi
2021-07-26 13:52   ` [dpdk-stable] patch 'net/mlx5: export PMD-specific API file' " luca.boccassi
2021-07-26 13:52   ` [dpdk-stable] patch 'net/bnxt: remove workaround for default VNIC' " luca.boccassi
2021-07-26 13:53   ` [dpdk-stable] patch 'net/bnxt: fix null dereference in interrupt handler' " luca.boccassi
2021-07-26 13:53   ` [dpdk-stable] patch 'eal/windows: check callback parameter of alarm functions' " luca.boccassi
2021-07-26 13:53   ` [dpdk-stable] patch 'net/softnic: fix memory leak in arguments parsing' " luca.boccassi
2021-07-26 13:53   ` [dpdk-stable] patch 'net/hns3: fix residual MAC address entry' " luca.boccassi
2021-07-26 13:53   ` [dpdk-stable] patch 'net/hns3: fix filter parsing comment' " luca.boccassi
2021-07-26 13:53   ` [dpdk-stable] patch 'net/hns3: fix timing of clearing interrupt source' " luca.boccassi
2021-07-26 13:53   ` [dpdk-stable] patch 'net/hns3: fix flow rule list in multi-process' " luca.boccassi
2021-07-26 13:53   ` [dpdk-stable] patch 'net/hns3: fix Tx prepare after stop' " luca.boccassi
2021-07-26 13:53   ` [dpdk-stable] patch 'net/hinic: increase protection of the VLAN' " luca.boccassi
2021-07-26 13:53   ` [dpdk-stable] patch 'net/hinic/base: fix LRO' " luca.boccassi
2021-07-26 13:53   ` [dpdk-stable] patch 'net/hinic: fix MTU consistency with firmware' " luca.boccassi
2021-07-26 13:53   ` [dpdk-stable] patch 'net/ena: trigger reset on Tx prepare failure' " luca.boccassi
2021-07-26 13:53   ` [dpdk-stable] patch 'bus/dpaa: fix freeing in FMAN interface destructor' " luca.boccassi
2021-07-26 13:53   ` [dpdk-stable] patch 'net/dpaa: fix headroom in VSP case' " luca.boccassi
2021-07-26 13:53   ` [dpdk-stable] patch 'net/sfc: fix MAC stats lock in xstats query by ID' " luca.boccassi
2021-07-26 13:53   ` [dpdk-stable] patch 'net/sfc: fix reading adapter state without locking' " luca.boccassi
2021-07-26 13:53   ` [dpdk-stable] patch 'net/sfc: fix xstats query by ID according to ethdev' " luca.boccassi
2021-07-26 13:53   ` [dpdk-stable] patch 'net/sfc: fix xstats query by unsorted list of IDs' " luca.boccassi
2021-07-26 13:53   ` [dpdk-stable] patch 'net/sfc: fix MAC stats update for stopped device' " luca.boccassi
2021-07-26 13:53   ` [dpdk-stable] patch 'sched: fix profile allocation failure handling' " luca.boccassi
2021-07-26 13:53   ` [dpdk-stable] patch 'sched: rework configuration " luca.boccassi
2021-07-26 13:53   ` [dpdk-stable] patch 'app/testpmd: fix help string for port reset' " luca.boccassi
2021-07-26 13:53   ` [dpdk-stable] patch 'app/testpmd: fix MAC address after " luca.boccassi
2021-08-03 12:21     ` [dpdk-stable] patch 'net/virtio: report maximum MTU in device info' " luca.boccassi
2021-08-03 12:21       ` [dpdk-stable] patch 'vhost: fix crash on reconnect' " luca.boccassi
2021-08-03 12:21       ` [dpdk-stable] patch 'net/virtio: fix interrupt handle leak' " luca.boccassi
2021-08-03 12:21       ` [dpdk-stable] patch 'net/virtio: fix default duplex mode' " luca.boccassi
2021-08-03 12:21       ` [dpdk-stable] patch 'net/iavf: fix Tx threshold check' " luca.boccassi
2021-08-03 12:21       ` [dpdk-stable] patch 'net/mlx5: fix representor interrupt handler' " luca.boccassi
2021-08-03 12:21       ` [dpdk-stable] patch 'net/mlx5: fix queue leaking in hairpin auto bind check' " luca.boccassi
2021-08-03 12:21       ` [dpdk-stable] patch 'net/mlx5: fix RSS flow rule with L4 mismatch' " luca.boccassi
2021-08-03 12:21       ` [dpdk-stable] patch 'net/mlx5: fix default queue number in RSS flow rule' " luca.boccassi
2021-08-03 12:21       ` [dpdk-stable] patch 'net/mlx5: fix flow engine type in function name' " luca.boccassi
2021-08-03 12:22       ` [dpdk-stable] patch 'net/mlx5: fix timestamp initialization on empty clock queue' " luca.boccassi
2021-08-03 12:22       ` [dpdk-stable] patch 'net/mlx5: add Tx scheduling check on queue creation' " luca.boccassi
2021-08-03 12:22       ` [dpdk-stable] patch 'net/ena: enable multi-segment in Tx offload flags' " luca.boccassi
2021-08-03 12:22       ` [dpdk-stable] patch 'net/memif: fix abstract socket address length' " luca.boccassi
2021-08-03 12:22       ` [dpdk-stable] patch 'net/softnic: fix null dereference in arguments parsing' " luca.boccassi
2021-08-03 12:22       ` [dpdk-stable] patch 'net/softnic: fix memory leak as profile is freed' " luca.boccassi
2021-08-03 12:22       ` [dpdk-stable] patch 'app/testpmd: fix Tx checksum calculation for tunnel' " luca.boccassi
2021-08-03 12:22       ` [dpdk-stable] patch 'eventdev: fix event port setup in Tx adapter' " luca.boccassi
2021-08-03 12:22       ` [dpdk-stable] patch 'eal/windows: cleanup virt2phys handle' " luca.boccassi
2021-08-03 12:22       ` [dpdk-stable] patch 'cryptodev: fix freeing after device release' " luca.boccassi
2021-08-03 12:22       ` [dpdk-stable] patch 'crypto/octeontx: " luca.boccassi
2021-08-03 12:22       ` [dpdk-stable] patch 'crypto/qat: disable asymmetric crypto on GEN3' " luca.boccassi
2021-08-03 12:22       ` [dpdk-stable] patch 'doc: fix spelling' " luca.boccassi
2021-08-03 12:22       ` [dpdk-stable] patch 'doc: remove old deprecation notice for sched' " luca.boccassi
2021-08-03 12:22       ` [dpdk-stable] patch 'doc: update atomic operation deprecation' " luca.boccassi
2021-08-05  9:53         ` [dpdk-stable] patch 'net/mlx5: workaround drop action with old kernel' " luca.boccassi
2021-08-05  9:53           ` [dpdk-stable] patch 'bus: clarify log for non-NUMA-aware devices' " luca.boccassi
2021-08-05  9:53           ` [dpdk-stable] patch 'app/testpmd: fix IPv4 checksum' " luca.boccassi
2021-08-09  8:29           ` [dpdk-stable] patch 'net/mlx5: workaround drop action with old kernel' " Luca Boccassi

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=20210712130551.2462159-51-luca.boccassi@gmail.com \
    --to=luca.boccassi@gmail.com \
    --cc=dapengx.yu@intel.com \
    --cc=qi.z.zhang@intel.com \
    --cc=stable@dpdk.org \
    /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).