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 3F35645BB6 for ; Wed, 23 Oct 2024 23:21:22 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 3A4A14331E; Wed, 23 Oct 2024 23:21:22 +0200 (CEST) Received: from mail-wm1-f45.google.com (mail-wm1-f45.google.com [209.85.128.45]) by mails.dpdk.org (Postfix) with ESMTP id EA3724331E for ; Wed, 23 Oct 2024 23:21:20 +0200 (CEST) Received: by mail-wm1-f45.google.com with SMTP id 5b1f17b1804b1-43162cf1eaaso3021765e9.0 for ; Wed, 23 Oct 2024 14:21:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1729718480; x=1730323280; darn=dpdk.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=vP2k8XMN3kS4cQ3+zzjrM9PNJfjFeFaviWnIPUtXZSM=; b=gXG56mCkhwQPH7FmpqRgbiPKn28N9oqqcqC7Cjd8c78M90X/7ng5K221PZJ+OG9zK2 yeIRnowqZgx/a2ydJNkSAhIkRB/PBtrvOQ3CLSuPs720mPsey5jqD4aFsMNPhJyL97fy 1JMQBNV0wRpM8VZ08hLt2jB+6KOCesZQi2M02SxnxU1K8hb1JqhoxVrjztwXs2255nrT hgiNcIl9mNLgQKvp1azcZfC+l24731LsVIqhhdZcr89rVvN/rdkzMkpqn5SNweUuKsWY qQX627xcGo5PqLk6blNtdlssP37j/FPco52RaJdP9xntZTd/cYzENN/Z9W6ZdQUapohs GEmw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1729718480; x=1730323280; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=vP2k8XMN3kS4cQ3+zzjrM9PNJfjFeFaviWnIPUtXZSM=; b=Ebek+fpE4f51LNXUpVEuFy/vakOC07tKASWS0ouYONpCQI1fFEmv/E7pq4JutFHQfz MbTjh3rpdOPVtjyGYsM97aOkIL80N3oLrEmto2+Fma1JAoy5yFJbu1VD4J/7JStlxQhf 3o2wx1NgN/zDvrUFHHCepQukH74DrG3iHy4Pfxw5fiDSCBKtO+FPo00GCNPDcSoNYPNc SmKhbNNmJH8j2yIpSaRY/Nl+2EGfIUj6qu4g8bcq3UuJpaEOK1kRIZ4hZvmp/W/V6Avh Yo/Hlf3i1biwk5qxbzoLpXdEKxouSGh7bLieLCQI9DN3HEAcyVnadHAwwCMWL8N86cv0 uI6g== X-Forwarded-Encrypted: i=1; AJvYcCVJqJJYBlv7E/Z0ZRl9Uo4n4TdxEbSYmKieYgiOezx3zOTcmBCfwAtTychYV7lZpABsv/IknJ0=@dpdk.org X-Gm-Message-State: AOJu0YyiWLJ1K1yq78y+WwiV26T3oT7F5J7QpqSq7YU/vFUk01c4tm/y hgepSP7cTz2Hw2QOnr+jtIfPhgEWhYScnoyONrR2JgTyTggR3Fya X-Google-Smtp-Source: AGHT+IFXxfIbE2D/sw9NkqIDR0HdJJM4QV5zL6+cVdKHoTUCRu7/4p1+TexeW+hZp/EvT4fMW/xN8Q== X-Received: by 2002:a05:600c:1c92:b0:431:604d:b22 with SMTP id 5b1f17b1804b1-4318421133amr44867015e9.16.1729718480437; Wed, 23 Oct 2024 14:21:20 -0700 (PDT) Received: from localhost ([2a01:4b00:d036:ae00:21cd:def0:a01d:d2aa]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-37ee0a37b41sm9807676f8f.5.2024.10.23.14.21.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 23 Oct 2024 14:21:19 -0700 (PDT) From: luca.boccassi@gmail.com To: David Marchand Cc: Bruce Richardson , dpdk stable Subject: patch 'net/iavf: preserve MAC address with i40e PF Linux driver' has been queued to stable release 22.11.7 Date: Wed, 23 Oct 2024 22:16:49 +0100 Message-ID: <20241023211704.1216956-69-luca.boccassi@gmail.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20241023211704.1216956-1-luca.boccassi@gmail.com> References: <20241023211704.1216956-1-luca.boccassi@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit 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 Hi, FYI, your patch has been queued to stable release 22.11.7 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 10/25/24. 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/873da637bbf990a6afac97a98bfec8ebbf225f21 Thanks. Luca Boccassi --- >From 873da637bbf990a6afac97a98bfec8ebbf225f21 Mon Sep 17 00:00:00 2001 From: David Marchand Date: Tue, 1 Oct 2024 11:12:54 +0200 Subject: [PATCH] net/iavf: preserve MAC address with i40e PF Linux driver [ upstream commit 3d42086def307be853d1e2e5b9d1e76725c3661f ] Following two upstream Linux kernel changes (see links), the mac address of a iavf port, serviced by a i40e PF driver, is lost when the DPDK iavf driver probes the port again (which may be triggered at any point of a DPDK application life, like when a reset event is triggered by the PF). A first change results in the mac address of the VF port being reset to 0 during the VIRTCHNL_OP_GET_VF_RESOURCES query. The i40e PF driver change is pretty obscure but the iavf Linux driver does set VIRTCHNL_VF_OFFLOAD_USO. Announcing such a capability in the DPDK driver does not seem to be an issue, so do the same in DPDK to keep the legacy behavior of a fixed mac. Then a second change in the kernel results in the VF mac address being cleared when the VF driver remove its default mac address. Removing (unicast or multicast) mac addresses is not done by the kernel VF driver in general. The reason why the DPDK driver behaves like this is undocumented (and lost because the authors are not active anymore). Aligning DPDK behavior to the upstream kernel driver is safer in any case. Link: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=fed0d9f13266 Link: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=ceb29474bbbc Signed-off-by: David Marchand Acked-by: Bruce Richardson --- drivers/net/iavf/iavf_ethdev.c | 19 +++++-------------- drivers/net/iavf/iavf_vchnl.c | 1 + 2 files changed, 6 insertions(+), 14 deletions(-) diff --git a/drivers/net/iavf/iavf_ethdev.c b/drivers/net/iavf/iavf_ethdev.c index b6c3cd425d..c117896547 100644 --- a/drivers/net/iavf/iavf_ethdev.c +++ b/drivers/net/iavf/iavf_ethdev.c @@ -1012,7 +1012,7 @@ iavf_dev_start(struct rte_eth_dev *dev) if (iavf_configure_queues(adapter, IAVF_CFG_Q_NUM_PER_BUF, index) != 0) { PMD_DRV_LOG(ERR, "configure queues failed"); - goto err_queue; + goto error; } num_queue_pairs -= IAVF_CFG_Q_NUM_PER_BUF; index += IAVF_CFG_Q_NUM_PER_BUF; @@ -1020,12 +1020,12 @@ iavf_dev_start(struct rte_eth_dev *dev) if (iavf_configure_queues(adapter, num_queue_pairs, index) != 0) { PMD_DRV_LOG(ERR, "configure queues failed"); - goto err_queue; + goto error; } if (iavf_config_rx_queues_irqs(dev, intr_handle) != 0) { PMD_DRV_LOG(ERR, "configure irq failed"); - goto err_queue; + goto error; } /* re-enable intr again, because efd assign may change */ if (dev->data->dev_conf.intr_conf.rxq != 0) { @@ -1045,14 +1045,12 @@ iavf_dev_start(struct rte_eth_dev *dev) if (iavf_start_queues(dev) != 0) { PMD_DRV_LOG(ERR, "enable queues failed"); - goto err_mac; + goto error; } return 0; -err_mac: - iavf_add_del_all_mac_addr(adapter, false); -err_queue: +error: return -1; } @@ -1084,13 +1082,6 @@ iavf_dev_stop(struct rte_eth_dev *dev) /* Rx interrupt vector mapping free */ rte_intr_vec_list_free(intr_handle); - /* remove all mac addrs */ - iavf_add_del_all_mac_addr(adapter, false); - - /* remove all multicast addresses */ - iavf_add_del_mc_addr_list(adapter, vf->mc_addrs, vf->mc_addrs_num, - false); - iavf_stop_queues(dev); adapter->stopped = 1; diff --git a/drivers/net/iavf/iavf_vchnl.c b/drivers/net/iavf/iavf_vchnl.c index 0164dddcb0..da1eec273c 100644 --- a/drivers/net/iavf/iavf_vchnl.c +++ b/drivers/net/iavf/iavf_vchnl.c @@ -696,6 +696,7 @@ iavf_get_vf_resource(struct iavf_adapter *adapter) VIRTCHNL_VF_OFFLOAD_ADV_RSS_PF | VIRTCHNL_VF_OFFLOAD_FSUB_PF | VIRTCHNL_VF_OFFLOAD_REQ_QUEUES | + VIRTCHNL_VF_OFFLOAD_USO | VIRTCHNL_VF_OFFLOAD_CRC | VIRTCHNL_VF_OFFLOAD_VLAN_V2 | VIRTCHNL_VF_LARGE_NUM_QPAIRS | -- 2.45.2 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2024-10-23 22:16:43.132781984 +0100 +++ 0069-net-iavf-preserve-MAC-address-with-i40e-PF-Linux-dri.patch 2024-10-23 22:16:40.535944141 +0100 @@ -1 +1 @@ -From 3d42086def307be853d1e2e5b9d1e76725c3661f Mon Sep 17 00:00:00 2001 +From 873da637bbf990a6afac97a98bfec8ebbf225f21 Mon Sep 17 00:00:00 2001 @@ -5,0 +6,2 @@ +[ upstream commit 3d42086def307be853d1e2e5b9d1e76725c3661f ] + @@ -27,2 +28,0 @@ -Cc: stable@dpdk.org - @@ -35 +35 @@ - drivers/net/iavf/iavf_ethdev.c | 22 +++++----------------- + drivers/net/iavf/iavf_ethdev.c | 19 +++++-------------- @@ -37 +37 @@ - 2 files changed, 6 insertions(+), 17 deletions(-) + 2 files changed, 6 insertions(+), 14 deletions(-) @@ -40 +40 @@ -index c200f63b4f..7f80cd6258 100644 +index b6c3cd425d..c117896547 100644 @@ -43 +43 @@ -@@ -1044,7 +1044,7 @@ iavf_dev_start(struct rte_eth_dev *dev) +@@ -1012,7 +1012,7 @@ iavf_dev_start(struct rte_eth_dev *dev) @@ -52 +52 @@ -@@ -1052,12 +1052,12 @@ iavf_dev_start(struct rte_eth_dev *dev) +@@ -1020,12 +1020,12 @@ iavf_dev_start(struct rte_eth_dev *dev) @@ -67 +67 @@ -@@ -1077,14 +1077,12 @@ iavf_dev_start(struct rte_eth_dev *dev) +@@ -1045,14 +1045,12 @@ iavf_dev_start(struct rte_eth_dev *dev) @@ -84 +84 @@ -@@ -1113,16 +1111,6 @@ iavf_dev_stop(struct rte_eth_dev *dev) +@@ -1084,13 +1082,6 @@ iavf_dev_stop(struct rte_eth_dev *dev) @@ -88,4 +88,2 @@ -- /* adminq will be disabled when vf is resetting. */ -- if (!vf->in_reset_recovery) { -- /* remove all mac addrs */ -- iavf_add_del_all_mac_addr(adapter, false); +- /* remove all mac addrs */ +- iavf_add_del_all_mac_addr(adapter, false); @@ -93,2 +91,2 @@ -- /* remove all multicast addresses */ -- iavf_add_del_mc_addr_list(adapter, vf->mc_addrs, vf->mc_addrs_num, +- /* remove all multicast addresses */ +- iavf_add_del_mc_addr_list(adapter, vf->mc_addrs, vf->mc_addrs_num, @@ -96 +93,0 @@ -- } @@ -102 +99 @@ -index 69420bc9b6..065ab3594c 100644 +index 0164dddcb0..da1eec273c 100644 @@ -105 +102 @@ -@@ -710,6 +710,7 @@ iavf_get_vf_resource(struct iavf_adapter *adapter) +@@ -696,6 +696,7 @@ iavf_get_vf_resource(struct iavf_adapter *adapter)