From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 55B09A0C4C for ; Mon, 12 Jul 2021 15:11:07 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 4F1A74069D; Mon, 12 Jul 2021 15:11:07 +0200 (CEST) Received: from mail-wm1-f52.google.com (mail-wm1-f52.google.com [209.85.128.52]) by mails.dpdk.org (Postfix) with ESMTP id 70697406B4 for ; Mon, 12 Jul 2021 15:11:06 +0200 (CEST) Received: by mail-wm1-f52.google.com with SMTP id h18-20020a05600c3512b029020e4ceb9588so14441012wmq.5 for ; Mon, 12 Jul 2021 06:11:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=BQYU2PDExirP4MjJNv9GlgLAl+JY5yXC4/Xc68Omu/I=; b=l91TE/0YEOXc1Qx70//JSrsvHdJ/8d51+CSpxY7HbV8BcZeWGSsjc9A7TrcNdbU6ZF qIPvAWfID0HFBO1TgHZc4/3a8BKGhC1N1YYVSRl2iXjpVCB9OwM5mGP/ahIzVVnqMv3x gbZGhNrHoChTflahPt+brdkT5F5KQ8Ei82dNkhmcIRaK4gnxqcyNUSa+F0B5FdVJMn4w 2kPFh/nOKB58pAL8P7pIUFrpPUQinHw7VGy7RJZl19VQkmh8MUCnyTtNUI7XXiD59Ra/ A1/k1/CVdODIANDz6WfONW9hCRlNWQqbnPzoHTgz64PDGEdExQdiQ53/CXOTTwotUAhk tX7w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=BQYU2PDExirP4MjJNv9GlgLAl+JY5yXC4/Xc68Omu/I=; b=Y0oDIN9iegFpdxsTrF6DRdtfodD9S1UK5PNGM/SfbkvzRLqRRFmXf/LWDr0oJ+ORri 3BSLlUqEb+cqLBawuleGWxH+ra1sxMM9nxl8m5E1BS+ynnBKtv/zQFzG73LBNsakvo6K 29bbluIw5ul8x35/a+kF0rwDW378hzVr7IdpgI/zcPd0AEb6Ux0FU2D32NwEwku0p9U6 upvnVrz1ssqbchw+j77wAYug3HQMLnjMCQ3OFzzKXIyW1vDagz7U1KZdagiQyeZRIcTl +LCO8mkfXleQBm+2C25cG28MoDqA5ZC1Y7a1j8rFSoxqwuRlOhds9a+mDb3mCEEvopBO wySA== X-Gm-Message-State: AOAM531cUHJrKKCAtOQL619ZY7w++vl42PWbZHWCcdfmcxPvJVwoX5QQ dThBGLsN/rci3E2jbouJgQ8= X-Google-Smtp-Source: ABdhPJykW8NaWENoLhVk3xDPqfKxZBSsbYLMlhvAy+qD+DivdaaZzWo+WzPXeuS0Sj79vdDbUxULbg== X-Received: by 2002:a05:600c:287:: with SMTP id 7mr11273015wmk.1.1626095466143; Mon, 12 Jul 2021 06:11:06 -0700 (PDT) Received: from localhost ([137.220.125.106]) by smtp.gmail.com with ESMTPSA id r3sm6498440wrw.24.2021.07.12.06.11.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 12 Jul 2021 06:11:04 -0700 (PDT) From: luca.boccassi@gmail.com To: Qi Zhang Cc: Yixue Wang , dpdk stable Date: Mon, 12 Jul 2021 14:04:17 +0100 Message-Id: <20210712130551.2462159-22-luca.boccassi@gmail.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20210712130551.2462159-1-luca.boccassi@gmail.com> References: <20210712130551.2462159-1-luca.boccassi@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [dpdk-stable] patch 'net/ice: fix data path in secondary process' has been queued to stable release 20.11.3 X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org Sender: "stable" 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/1050357ef7ed784159e8f46443ccdeafc3d68fb8 Thanks. Luca Boccassi --- >From 1050357ef7ed784159e8f46443ccdeafc3d68fb8 Mon Sep 17 00:00:00 2001 From: Qi Zhang Date: Wed, 26 May 2021 14:12:56 +0800 Subject: [PATCH] net/ice: fix data path in secondary process [ upstream commit 45f6a19f6565a3ae8572868c1a6fd2ad70687171 ] The rte_eth_devices array is not in share memory, it should not be referenced by ice_adapter which is shared by primary and secondary. Any process set ice_adapter->eth_dev will corrupt another process' context. The patch removed the field "eth_dev" from ice_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: f9cf4f864150 ("net/ice: support device initialization") Reported-by: Yixue Wang Signed-off-by: Qi Zhang Tested-by: Yixue Wang --- drivers/net/ice/ice_dcf_parent.c | 1 - drivers/net/ice/ice_ethdev.c | 13 ++++++------- drivers/net/ice/ice_ethdev.h | 3 --- drivers/net/ice/ice_fdir_filter.c | 6 +++--- drivers/net/ice/ice_rxtx.c | 24 +++++++++--------------- drivers/net/ice/ice_rxtx.h | 4 ++-- drivers/net/ice/ice_rxtx_vec_avx2.c | 2 +- drivers/net/ice/ice_rxtx_vec_avx512.c | 2 +- drivers/net/ice/ice_rxtx_vec_common.h | 2 +- drivers/net/ice/ice_rxtx_vec_sse.c | 2 +- drivers/net/ice/ice_switch_filter.c | 6 +++--- 11 files changed, 27 insertions(+), 38 deletions(-) diff --git a/drivers/net/ice/ice_dcf_parent.c b/drivers/net/ice/ice_dcf_parent.c index b109e360f9..903e4db616 100644 --- a/drivers/net/ice/ice_dcf_parent.c +++ b/drivers/net/ice/ice_dcf_parent.c @@ -363,7 +363,6 @@ ice_dcf_init_parent_adapter(struct rte_eth_dev *eth_dev) const struct rte_ether_addr *mac; int err; - parent_adapter->eth_dev = eth_dev; parent_adapter->pf.adapter = parent_adapter; parent_adapter->pf.dev_data = eth_dev->data; /* create a dummy main_vsi */ diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c index 3541cc2381..4234353455 100644 --- a/drivers/net/ice/ice_ethdev.c +++ b/drivers/net/ice/ice_ethdev.c @@ -2157,7 +2157,6 @@ ice_dev_init(struct rte_eth_dev *dev) intr_handle = &pci_dev->intr_handle; pf->adapter = ICE_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private); - pf->adapter->eth_dev = dev; pf->dev_data = dev->data; hw->back = pf->adapter; hw->hw_addr = (uint8_t *)pci_dev->mem_resource[0].addr; @@ -2321,7 +2320,7 @@ ice_release_vsi(struct ice_vsi *vsi) void ice_vsi_disable_queues_intr(struct ice_vsi *vsi) { - struct rte_eth_dev *dev = vsi->adapter->eth_dev; + struct rte_eth_dev *dev = &rte_eth_devices[vsi->adapter->pf.dev_data->port_id]; struct rte_pci_device *pci_dev = ICE_DEV_TO_PCI(dev); struct rte_intr_handle *intr_handle = &pci_dev->intr_handle; struct ice_hw *hw = ICE_VSI_TO_HW(vsi); @@ -3206,7 +3205,7 @@ static int ice_init_rss(struct ice_pf *pf) { struct ice_hw *hw = ICE_PF_TO_HW(pf); struct ice_vsi *vsi = pf->main_vsi; - struct rte_eth_dev *dev = pf->adapter->eth_dev; + struct rte_eth_dev_data *dev_data = pf->dev_data; struct ice_aq_get_set_rss_lut_params lut_params; struct rte_eth_rss_conf *rss_conf; struct ice_aqc_get_set_rss_keys key; @@ -3215,8 +3214,8 @@ static int ice_init_rss(struct ice_pf *pf) bool is_safe_mode = pf->adapter->is_safe_mode; uint32_t reg; - rss_conf = &dev->data->dev_conf.rx_adv_conf.rss_conf; - nb_q = dev->data->nb_rx_queues; + rss_conf = &dev_data->dev_conf.rx_adv_conf.rss_conf; + nb_q = dev_data->nb_rx_queues; vsi->rss_key_size = ICE_AQC_GET_SET_RSS_KEY_DATA_RSS_KEY_SIZE; vsi->rss_lut_size = pf->hash_lut_size; @@ -3348,7 +3347,7 @@ __vsi_queues_bind_intr(struct ice_vsi *vsi, uint16_t msix_vect, void ice_vsi_queues_bind_intr(struct ice_vsi *vsi) { - struct rte_eth_dev *dev = vsi->adapter->eth_dev; + struct rte_eth_dev *dev = &rte_eth_devices[vsi->adapter->pf.dev_data->port_id]; struct rte_pci_device *pci_dev = ICE_DEV_TO_PCI(dev); struct rte_intr_handle *intr_handle = &pci_dev->intr_handle; struct ice_hw *hw = ICE_VSI_TO_HW(vsi); @@ -3401,7 +3400,7 @@ ice_vsi_queues_bind_intr(struct ice_vsi *vsi) void ice_vsi_enable_queues_intr(struct ice_vsi *vsi) { - struct rte_eth_dev *dev = vsi->adapter->eth_dev; + struct rte_eth_dev *dev = &rte_eth_devices[vsi->adapter->pf.dev_data->port_id]; struct rte_pci_device *pci_dev = ICE_DEV_TO_PCI(dev); struct rte_intr_handle *intr_handle = &pci_dev->intr_handle; struct ice_hw *hw = ICE_VSI_TO_HW(vsi); diff --git a/drivers/net/ice/ice_ethdev.h b/drivers/net/ice/ice_ethdev.h index 6a2bf58560..c1b432c1ef 100644 --- a/drivers/net/ice/ice_ethdev.h +++ b/drivers/net/ice/ice_ethdev.h @@ -467,7 +467,6 @@ struct ice_devargs { struct ice_adapter { /* Common for both PF and VF */ struct ice_hw hw; - struct rte_eth_dev *eth_dev; struct ice_pf pf; bool rx_bulk_alloc_allowed; bool rx_vec_allowed; @@ -518,8 +517,6 @@ struct ice_vsi_vlan_pvid_info { (&(((struct ice_vsi *)vsi)->adapter->hw)) #define ICE_VSI_TO_PF(vsi) \ (&(((struct ice_vsi *)vsi)->adapter->pf)) -#define ICE_VSI_TO_ETH_DEV(vsi) \ - (((struct ice_vsi *)vsi)->adapter->eth_dev) /* ICE_PF_TO */ #define ICE_PF_TO_HW(pf) \ diff --git a/drivers/net/ice/ice_fdir_filter.c b/drivers/net/ice/ice_fdir_filter.c index 175abcdd5c..4a071254ce 100644 --- a/drivers/net/ice/ice_fdir_filter.c +++ b/drivers/net/ice/ice_fdir_filter.c @@ -382,7 +382,7 @@ ice_fdir_counter_free(__rte_unused struct ice_pf *pf, static int ice_fdir_init_filter_list(struct ice_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 ice_fdir_info *fdir_info = &pf->fdir; char fdir_hash_name[RTE_HASH_NAMESIZE]; int ret; @@ -444,7 +444,7 @@ ice_fdir_release_filter_list(struct ice_pf *pf) static int ice_fdir_setup(struct ice_pf *pf) { - struct rte_eth_dev *eth_dev = pf->adapter->eth_dev; + struct rte_eth_dev *eth_dev = &rte_eth_devices[pf->dev_data->port_id]; struct ice_hw *hw = ICE_PF_TO_HW(pf); const struct rte_memzone *mz = NULL; char z_name[RTE_MEMZONE_NAMESIZE]; @@ -632,7 +632,7 @@ ice_fdir_prof_rm_all(struct ice_pf *pf) static void ice_fdir_teardown(struct ice_pf *pf) { - struct rte_eth_dev *eth_dev = pf->adapter->eth_dev; + struct rte_eth_dev *eth_dev = &rte_eth_devices[pf->dev_data->port_id]; struct ice_hw *hw = ICE_PF_TO_HW(pf); struct ice_vsi *vsi; int err; diff --git a/drivers/net/ice/ice_rxtx.c b/drivers/net/ice/ice_rxtx.c index d200d21347..f9a475cbb8 100644 --- a/drivers/net/ice/ice_rxtx.c +++ b/drivers/net/ice/ice_rxtx.c @@ -228,11 +228,11 @@ ice_program_hw_rx_queue(struct ice_rx_queue *rxq) struct ice_vsi *vsi = rxq->vsi; struct ice_hw *hw = ICE_VSI_TO_HW(vsi); struct ice_pf *pf = ICE_VSI_TO_PF(vsi); - struct rte_eth_dev *dev = ICE_VSI_TO_ETH_DEV(rxq->vsi); + struct rte_eth_dev_data *dev_data = rxq->vsi->adapter->pf.dev_data; struct ice_rlan_ctx rx_ctx; enum ice_status err; uint16_t buf_size, len; - struct rte_eth_rxmode *rxmode = &dev->data->dev_conf.rxmode; + struct rte_eth_rxmode *rxmode = &dev_data->dev_conf.rxmode; uint32_t rxdid = ICE_RXDID_COMMS_OVS; uint32_t regval; @@ -243,7 +243,7 @@ ice_program_hw_rx_queue(struct ice_rx_queue *rxq) rxq->rx_buf_len = RTE_ALIGN(buf_size, (1 << ICE_RLAN_CTX_DBUF_S)); len = ICE_SUPPORT_CHAIN_NUM * rxq->rx_buf_len; rxq->max_pkt_len = RTE_MIN(len, - dev->data->dev_conf.rxmode.max_rx_pkt_len); + dev_data->dev_conf.rxmode.max_rx_pkt_len); if (rxmode->offloads & DEV_RX_OFFLOAD_JUMBO_FRAME) { if (rxq->max_pkt_len <= ICE_ETH_MAX_LEN || @@ -339,7 +339,7 @@ ice_program_hw_rx_queue(struct ice_rx_queue *rxq) /* Check if scattered RX needs to be used. */ if (rxq->max_pkt_len > buf_size) - dev->data->scattered_rx = 1; + dev_data->scattered_rx = 1; rxq->qrx_tail = hw->hw_addr + QRX_TAIL(rxq->reg_idx); @@ -1644,7 +1644,6 @@ rx_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t nb_pkts) { struct ice_rx_queue *rxq = (struct ice_rx_queue *)rx_queue; uint16_t nb_rx = 0; - struct rte_eth_dev *dev; if (!nb_pkts) return 0; @@ -1661,8 +1660,7 @@ rx_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t nb_pkts) if (ice_rx_alloc_bufs(rxq) != 0) { uint16_t i, j; - dev = ICE_VSI_TO_ETH_DEV(rxq->vsi); - dev->data->rx_mbuf_alloc_failed += + rxq->vsi->adapter->pf.dev_data->rx_mbuf_alloc_failed += rxq->rx_free_thresh; PMD_RX_LOG(DEBUG, "Rx mbuf alloc failed for " "port_id=%u, queue_id=%u", @@ -1735,7 +1733,6 @@ ice_recv_scattered_pkts(void *rx_queue, uint64_t dma_addr; uint64_t pkt_flags; uint32_t *ptype_tbl = rxq->vsi->adapter->ptype_tbl; - struct rte_eth_dev *dev; while (nb_rx < nb_pkts) { rxdp = &rx_ring[rx_id]; @@ -1748,8 +1745,7 @@ ice_recv_scattered_pkts(void *rx_queue, /* allocate mbuf */ nmb = rte_mbuf_raw_alloc(rxq->mp); if (unlikely(!nmb)) { - dev = ICE_VSI_TO_ETH_DEV(rxq->vsi); - dev->data->rx_mbuf_alloc_failed++; + rxq->vsi->adapter->pf.dev_data->rx_mbuf_alloc_failed++; break; } rxd = *rxdp; /* copy descriptor in ring to temp variable*/ @@ -2071,7 +2067,7 @@ ice_fdir_setup_tx_resources(struct ice_pf *pf) return -EINVAL; } - dev = pf->adapter->eth_dev; + dev = &rte_eth_devices[pf->adapter->pf.dev_data->port_id]; /* Allocate the TX queue data structure. */ txq = rte_zmalloc_socket("ice fdir tx queue", @@ -2129,7 +2125,7 @@ ice_fdir_setup_rx_resources(struct ice_pf *pf) return -EINVAL; } - dev = pf->adapter->eth_dev; + dev = &rte_eth_devices[pf->adapter->pf.dev_data->port_id]; /* Allocate the RX queue data structure. */ rxq = rte_zmalloc_socket("ice fdir rx queue", @@ -2198,7 +2194,6 @@ ice_recv_pkts(void *rx_queue, uint64_t dma_addr; uint64_t pkt_flags; uint32_t *ptype_tbl = rxq->vsi->adapter->ptype_tbl; - struct rte_eth_dev *dev; while (nb_rx < nb_pkts) { rxdp = &rx_ring[rx_id]; @@ -2211,8 +2206,7 @@ ice_recv_pkts(void *rx_queue, /* allocate mbuf */ nmb = rte_mbuf_raw_alloc(rxq->mp); if (unlikely(!nmb)) { - dev = ICE_VSI_TO_ETH_DEV(rxq->vsi); - dev->data->rx_mbuf_alloc_failed++; + rxq->vsi->adapter->pf.dev_data->rx_mbuf_alloc_failed++; break; } rxd = *rxdp; /* copy descriptor in ring to temp variable*/ diff --git a/drivers/net/ice/ice_rxtx.h b/drivers/net/ice/ice_rxtx.h index adfae016a9..e9edb7bb29 100644 --- a/drivers/net/ice/ice_rxtx.h +++ b/drivers/net/ice/ice_rxtx.h @@ -266,8 +266,8 @@ int ice_tx_done_cleanup(void *txq, uint32_t free_cnt); #define FDIR_PARSING_ENABLE_PER_QUEUE(ad, on) do { \ int i; \ - for (i = 0; i < (ad)->eth_dev->data->nb_rx_queues; i++) { \ - struct ice_rx_queue *rxq = (ad)->eth_dev->data->rx_queues[i]; \ + for (i = 0; i < (ad)->pf.dev_data->nb_rx_queues; i++) { \ + struct ice_rx_queue *rxq = (ad)->pf.dev_data->rx_queues[i]; \ if (!rxq) \ continue; \ rxq->fdir_enabled = on; \ diff --git a/drivers/net/ice/ice_rxtx_vec_avx2.c b/drivers/net/ice/ice_rxtx_vec_avx2.c index e4edcd38a9..ac2719fa15 100644 --- a/drivers/net/ice/ice_rxtx_vec_avx2.c +++ b/drivers/net/ice/ice_rxtx_vec_avx2.c @@ -466,7 +466,7 @@ _ice_recv_raw_pkts_vec_avx2(struct ice_rx_queue *rxq, struct rte_mbuf **rx_pkts, * needs to load 2nd 16B of each desc for RSS hash parsing, * will cause performance drop to get into this context. */ - if (rxq->vsi->adapter->eth_dev->data->dev_conf.rxmode.offloads & + if (rxq->vsi->adapter->pf.dev_data->dev_conf.rxmode.offloads & DEV_RX_OFFLOAD_RSS_HASH) { /* load bottom half of every 32B desc */ const __m128i raw_desc_bh7 = diff --git a/drivers/net/ice/ice_rxtx_vec_avx512.c b/drivers/net/ice/ice_rxtx_vec_avx512.c index 533da22bc4..719b7b8b38 100644 --- a/drivers/net/ice/ice_rxtx_vec_avx512.c +++ b/drivers/net/ice/ice_rxtx_vec_avx512.c @@ -567,7 +567,7 @@ _ice_recv_raw_pkts_vec_avx512(struct ice_rx_queue *rxq, * needs to load 2nd 16B of each desc for RSS hash parsing, * will cause performance drop to get into this context. */ - if (rxq->vsi->adapter->eth_dev->data->dev_conf.rxmode.offloads & + if (rxq->vsi->adapter->pf.dev_data->dev_conf.rxmode.offloads & DEV_RX_OFFLOAD_RSS_HASH) { /* load bottom half of every 32B desc */ const __m128i raw_desc_bh7 = diff --git a/drivers/net/ice/ice_rxtx_vec_common.h b/drivers/net/ice/ice_rxtx_vec_common.h index a5d76a2936..1d138aa899 100644 --- a/drivers/net/ice/ice_rxtx_vec_common.h +++ b/drivers/net/ice/ice_rxtx_vec_common.h @@ -195,7 +195,7 @@ _ice_tx_queue_release_mbufs_vec(struct ice_tx_queue *txq) i = txq->tx_next_dd - txq->tx_rs_thresh + 1; #ifdef CC_AVX512_SUPPORT - struct rte_eth_dev *dev = txq->vsi->adapter->eth_dev; + struct rte_eth_dev *dev = &rte_eth_devices[txq->vsi->adapter->pf.dev_data->port_id]; if (dev->tx_pkt_burst == ice_xmit_pkts_vec_avx512) { struct ice_vec_tx_entry *swr = (void *)txq->sw_ring; diff --git a/drivers/net/ice/ice_rxtx_vec_sse.c b/drivers/net/ice/ice_rxtx_vec_sse.c index 87e0c3db2e..eef21fa70c 100644 --- a/drivers/net/ice/ice_rxtx_vec_sse.c +++ b/drivers/net/ice/ice_rxtx_vec_sse.c @@ -478,7 +478,7 @@ _ice_recv_raw_pkts_vec(struct ice_rx_queue *rxq, struct rte_mbuf **rx_pkts, * needs to load 2nd 16B of each desc for RSS hash parsing, * will cause performance drop to get into this context. */ - if (rxq->vsi->adapter->eth_dev->data->dev_conf.rxmode.offloads & + if (rxq->vsi->adapter->pf.dev_data->dev_conf.rxmode.offloads & DEV_RX_OFFLOAD_RSS_HASH) { /* load bottom half of every 32B desc */ const __m128i raw_desc_bh3 = diff --git a/drivers/net/ice/ice_switch_filter.c b/drivers/net/ice/ice_switch_filter.c index 8cba6eb7b1..c383cade65 100644 --- a/drivers/net/ice/ice_switch_filter.c +++ b/drivers/net/ice/ice_switch_filter.c @@ -1489,7 +1489,7 @@ ice_switch_parse_action(struct ice_pf *pf, struct ice_adv_rule_info *rule_info) { struct ice_vsi *vsi = pf->main_vsi; - struct rte_eth_dev *dev = pf->adapter->eth_dev; + struct rte_eth_dev_data *dev_data = pf->adapter->pf.dev_data; const struct rte_flow_action_queue *act_q; const struct rte_flow_action_rss *act_qgrop; uint16_t base_queue, i; @@ -1520,7 +1520,7 @@ ice_switch_parse_action(struct ice_pf *pf, goto error; if ((act_qgrop->queue[0] + act_qgrop->queue_num) > - dev->data->nb_rx_queues) + dev_data->nb_rx_queues) goto error1; for (i = 0; i < act_qgrop->queue_num - 1; i++) if (act_qgrop->queue[i + 1] != @@ -1531,7 +1531,7 @@ ice_switch_parse_action(struct ice_pf *pf, break; case RTE_FLOW_ACTION_TYPE_QUEUE: act_q = action->conf; - if (act_q->index >= dev->data->nb_rx_queues) + if (act_q->index >= dev_data->nb_rx_queues) goto error; rule_info->sw_act.fltr_act = ICE_FWD_TO_Q; -- 2.30.2 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2021-07-12 13:41:37.956423428 +0100 +++ 0022-net-ice-fix-data-path-in-secondary-process.patch 2021-07-12 13:41:36.270118028 +0100 @@ -1 +1 @@ -From 45f6a19f6565a3ae8572868c1a6fd2ad70687171 Mon Sep 17 00:00:00 2001 +From 1050357ef7ed784159e8f46443ccdeafc3d68fb8 Mon Sep 17 00:00:00 2001 @@ -5,0 +6,2 @@ +[ upstream commit 45f6a19f6565a3ae8572868c1a6fd2ad70687171 ] + @@ -16 +17,0 @@ -Cc: stable@dpdk.org @@ -36 +37 @@ -index 1d7aa8bc87..19420a0f58 100644 +index b109e360f9..903e4db616 100644 @@ -39 +40 @@ -@@ -408,7 +408,6 @@ ice_dcf_init_parent_adapter(struct rte_eth_dev *eth_dev) +@@ -363,7 +363,6 @@ ice_dcf_init_parent_adapter(struct rte_eth_dev *eth_dev) @@ -48 +49 @@ -index ad20f6baff..09e38590e5 100644 +index 3541cc2381..4234353455 100644 @@ -51 +52 @@ -@@ -2055,7 +2055,6 @@ ice_dev_init(struct rte_eth_dev *dev) +@@ -2157,7 +2157,6 @@ ice_dev_init(struct rte_eth_dev *dev) @@ -59 +60 @@ -@@ -2218,7 +2217,7 @@ ice_release_vsi(struct ice_vsi *vsi) +@@ -2321,7 +2320,7 @@ ice_release_vsi(struct ice_vsi *vsi) @@ -68 +69 @@ -@@ -3019,7 +3018,7 @@ static int ice_init_rss(struct ice_pf *pf) +@@ -3206,7 +3205,7 @@ static int ice_init_rss(struct ice_pf *pf) @@ -77 +78 @@ -@@ -3028,8 +3027,8 @@ static int ice_init_rss(struct ice_pf *pf) +@@ -3215,8 +3214,8 @@ static int ice_init_rss(struct ice_pf *pf) @@ -88 +89 @@ -@@ -3161,7 +3160,7 @@ __vsi_queues_bind_intr(struct ice_vsi *vsi, uint16_t msix_vect, +@@ -3348,7 +3347,7 @@ __vsi_queues_bind_intr(struct ice_vsi *vsi, uint16_t msix_vect, @@ -97 +98 @@ -@@ -3214,7 +3213,7 @@ ice_vsi_queues_bind_intr(struct ice_vsi *vsi) +@@ -3401,7 +3400,7 @@ ice_vsi_queues_bind_intr(struct ice_vsi *vsi) @@ -107 +108 @@ -index aebfd1b0b7..7f3c26fb6f 100644 +index 6a2bf58560..c1b432c1ef 100644 @@ -110 +111 @@ -@@ -475,7 +475,6 @@ struct ice_devargs { +@@ -467,7 +467,6 @@ struct ice_devargs { @@ -118 +119 @@ -@@ -526,8 +525,6 @@ struct ice_vsi_vlan_pvid_info { +@@ -518,8 +517,6 @@ struct ice_vsi_vlan_pvid_info { @@ -128 +129 @@ -index 092c704503..5e07eb24ae 100644 +index 175abcdd5c..4a071254ce 100644 @@ -131 +132 @@ -@@ -354,7 +354,7 @@ ice_fdir_counter_free(__rte_unused struct ice_pf *pf, +@@ -382,7 +382,7 @@ ice_fdir_counter_free(__rte_unused struct ice_pf *pf, @@ -140 +141 @@ -@@ -416,7 +416,7 @@ ice_fdir_release_filter_list(struct ice_pf *pf) +@@ -444,7 +444,7 @@ ice_fdir_release_filter_list(struct ice_pf *pf) @@ -149 +150 @@ -@@ -604,7 +604,7 @@ ice_fdir_prof_rm_all(struct ice_pf *pf) +@@ -632,7 +632,7 @@ ice_fdir_prof_rm_all(struct ice_pf *pf) @@ -159 +160 @@ -index f4f6f48d78..fc9bb5a3e7 100644 +index d200d21347..f9a475cbb8 100644 @@ -162 +163 @@ -@@ -255,11 +255,11 @@ ice_program_hw_rx_queue(struct ice_rx_queue *rxq) +@@ -228,11 +228,11 @@ ice_program_hw_rx_queue(struct ice_rx_queue *rxq) @@ -176 +177 @@ -@@ -270,7 +270,7 @@ ice_program_hw_rx_queue(struct ice_rx_queue *rxq) +@@ -243,7 +243,7 @@ ice_program_hw_rx_queue(struct ice_rx_queue *rxq) @@ -185 +186 @@ -@@ -366,7 +366,7 @@ ice_program_hw_rx_queue(struct ice_rx_queue *rxq) +@@ -339,7 +339,7 @@ ice_program_hw_rx_queue(struct ice_rx_queue *rxq) @@ -194 +195 @@ -@@ -1675,7 +1675,6 @@ rx_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t nb_pkts) +@@ -1644,7 +1644,6 @@ rx_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t nb_pkts) @@ -202 +203 @@ -@@ -1692,8 +1691,7 @@ rx_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t nb_pkts) +@@ -1661,8 +1660,7 @@ rx_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t nb_pkts) @@ -212 +213 @@ -@@ -1766,7 +1764,6 @@ ice_recv_scattered_pkts(void *rx_queue, +@@ -1735,7 +1733,6 @@ ice_recv_scattered_pkts(void *rx_queue, @@ -220 +221 @@ -@@ -1779,8 +1776,7 @@ ice_recv_scattered_pkts(void *rx_queue, +@@ -1748,8 +1745,7 @@ ice_recv_scattered_pkts(void *rx_queue, @@ -230 +231 @@ -@@ -2104,7 +2100,7 @@ ice_fdir_setup_tx_resources(struct ice_pf *pf) +@@ -2071,7 +2067,7 @@ ice_fdir_setup_tx_resources(struct ice_pf *pf) @@ -239 +240 @@ -@@ -2162,7 +2158,7 @@ ice_fdir_setup_rx_resources(struct ice_pf *pf) +@@ -2129,7 +2125,7 @@ ice_fdir_setup_rx_resources(struct ice_pf *pf) @@ -248 +249 @@ -@@ -2231,7 +2227,6 @@ ice_recv_pkts(void *rx_queue, +@@ -2198,7 +2194,6 @@ ice_recv_pkts(void *rx_queue, @@ -256 +257 @@ -@@ -2244,8 +2239,7 @@ ice_recv_pkts(void *rx_queue, +@@ -2211,8 +2206,7 @@ ice_recv_pkts(void *rx_queue, @@ -267 +268 @@ -index b29387ca0f..86b6f3dcc0 100644 +index adfae016a9..e9edb7bb29 100644 @@ -270 +271 @@ -@@ -277,8 +277,8 @@ int ice_get_monitor_addr(void *rx_queue, struct rte_power_monitor_cond *pmc); +@@ -266,8 +266,8 @@ int ice_tx_done_cleanup(void *txq, uint32_t free_cnt); @@ -282 +283 @@ -index 8d4bd6df1b..165bc1bb9d 100644 +index e4edcd38a9..ac2719fa15 100644 @@ -295 +296 @@ -index ad6c69da9b..5bba9887d2 100644 +index 533da22bc4..719b7b8b38 100644 @@ -298,9 +299,9 @@ -@@ -583,7 +583,7 @@ _ice_recv_raw_pkts_vec_avx512(struct ice_rx_queue *rxq, - * needs to load 2nd 16B of each desc for RSS hash parsing, - * will cause performance drop to get into this context. - */ -- if (rxq->vsi->adapter->eth_dev->data->dev_conf.rxmode.offloads & -+ if (rxq->vsi->adapter->pf.dev_data->dev_conf.rxmode.offloads & - DEV_RX_OFFLOAD_RSS_HASH) { - /* load bottom half of every 32B desc */ - const __m128i raw_desc_bh7 = +@@ -567,7 +567,7 @@ _ice_recv_raw_pkts_vec_avx512(struct ice_rx_queue *rxq, + * needs to load 2nd 16B of each desc for RSS hash parsing, + * will cause performance drop to get into this context. + */ +- if (rxq->vsi->adapter->eth_dev->data->dev_conf.rxmode.offloads & ++ if (rxq->vsi->adapter->pf.dev_data->dev_conf.rxmode.offloads & + DEV_RX_OFFLOAD_RSS_HASH) { + /* load bottom half of every 32B desc */ + const __m128i raw_desc_bh7 = @@ -308 +309 @@ -index 6e8d7a6fc5..2d8ef7dc8a 100644 +index a5d76a2936..1d138aa899 100644 @@ -318,2 +319,2 @@ - if (dev->tx_pkt_burst == ice_xmit_pkts_vec_avx512 || - dev->tx_pkt_burst == ice_xmit_pkts_vec_avx512_offload) { + if (dev->tx_pkt_burst == ice_xmit_pkts_vec_avx512) { + struct ice_vec_tx_entry *swr = (void *)txq->sw_ring; @@ -321 +322 @@ -index 6029cc2d99..673e44a243 100644 +index 87e0c3db2e..eef21fa70c 100644 @@ -334 +335 @@ -index 4a64db5385..eeed386c63 100644 +index 8cba6eb7b1..c383cade65 100644 @@ -337 +338 @@ -@@ -1585,7 +1585,7 @@ ice_switch_parse_action(struct ice_pf *pf, +@@ -1489,7 +1489,7 @@ ice_switch_parse_action(struct ice_pf *pf, @@ -346 +347 @@ -@@ -1616,7 +1616,7 @@ ice_switch_parse_action(struct ice_pf *pf, +@@ -1520,7 +1520,7 @@ ice_switch_parse_action(struct ice_pf *pf, @@ -355 +356 @@ -@@ -1627,7 +1627,7 @@ ice_switch_parse_action(struct ice_pf *pf, +@@ -1531,7 +1531,7 @@ ice_switch_parse_action(struct ice_pf *pf,