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 CCA9CA0350 for ; Mon, 28 Feb 2022 22:22:19 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id C640140140; Mon, 28 Feb 2022 22:22:19 +0100 (CET) Received: from mail-wm1-f41.google.com (mail-wm1-f41.google.com [209.85.128.41]) by mails.dpdk.org (Postfix) with ESMTP id E99B840140 for ; Mon, 28 Feb 2022 22:22:15 +0100 (CET) Received: by mail-wm1-f41.google.com with SMTP id y5so6467687wmi.0 for ; Mon, 28 Feb 2022 13:22:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=OZBzwuCyzuOZfu++6gicc9zGO1tJWr06pcpFcqdCJxc=; b=V9JbSpjx04yn9q1OxlERsa1kJCKzP3sErMyq7Ei7F1yNa2blfngnZQKsyQ1FgPHDKR 51bJr+tcHPZAi8x6WwtdowGuistXi/fLebw1BKBBzQn887KGW7sr2UTwjSzUJP/rBbYU QmHeAsPcvasJ2VKPn7pYHnk0qFHwYQMkwu/zjSIaj0BIznIjUsTHCCQNQZnkAp0ZtYxk Qh7IrctMRwurqp/hzFiJomV7O/lQZplfRfNKaSw6dkzIPCEHu0SVnFAY/+4Gjya32TJX t0Qp7z7E7X2DxMeJ5wysfZrHYn1bSXR24eZCuMxrPZ0Didp4dUEaoLEqjRYxHM5r6nV6 gazQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=OZBzwuCyzuOZfu++6gicc9zGO1tJWr06pcpFcqdCJxc=; b=iEkcEep10NBL6bxySx+bAP2WFEJlw2Hz/JhXJOrZTu8cCCBs3R5q5QKBhGS7yyT7hv PCsfS6rgKO++ScXIV1xQKEg1VNdgDG0JjpXWs3J3GmLf0HS0WmO/EBtFlpyRzw4XFS/4 2gHdUZy7HpF6KDRDxafxI2dhJUdknXgqoWoy/Ker4J2E9fh9iV+vV/PFtpXa8v1AANWb mDG5HXa5EqTCYQorvTstpgajDWNOZ/1x+ygiavMZ2YFNA+s08sFs6qTr2ATGXvHdec1j AfIQhAyOI9pqGOu39phnlgNkg3Oal5CpdgU9I65x7fn+I6ribhSxx898qfyr0E8AdSPc rdUw== X-Gm-Message-State: AOAM533ryK/XlhkDMxjcrzedk7acMQLU03CoqPuco2OE85lbOm1hjq2O yFbR3nwUVjv4j6fX2lZWsUkUmDxbShxNZw== X-Google-Smtp-Source: ABdhPJw1bnEa1NVGu21XLarrTlQs6AnlHMeW6HNPJqjSq9eDLEZd4Vy+f5rBN/Y/BkwepuJhNFBxSQ== X-Received: by 2002:a05:600c:4c94:b0:381:4060:8327 with SMTP id g20-20020a05600c4c9400b0038140608327mr13298512wmp.191.1646083335658; Mon, 28 Feb 2022 13:22:15 -0800 (PST) Received: from localhost ([2a01:4b00:f41a:3600:360b:9754:2e3a:c344]) by smtp.gmail.com with ESMTPSA id v25-20020a05600c215900b0038117f41728sm496110wml.43.2022.02.28.13.22.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Feb 2022 13:22:15 -0800 (PST) From: luca.boccassi@gmail.com To: Dapeng Yu Cc: Peng Zhang , Qi Zhang , dpdk stable Subject: patch 'net/i40e: enable maximum frame size at port level' has been queued to stable release 20.11.5 Date: Mon, 28 Feb 2022 21:20:26 +0000 Message-Id: <20220228212047.3341966-30-luca.boccassi@gmail.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220228212047.3341966-1-luca.boccassi@gmail.com> References: <20220218123931.1749595-122-luca.boccassi@gmail.com> <20220228212047.3341966-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 20.11.5 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 03/02/22. 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/1b7f6d2ad92d522e4f024c46e5794fad8540e94f Thanks. Luca Boccassi --- >From 1b7f6d2ad92d522e4f024c46e5794fad8540e94f Mon Sep 17 00:00:00 2001 From: Dapeng Yu Date: Tue, 7 Dec 2021 16:59:46 +0800 Subject: [PATCH] net/i40e: enable maximum frame size at port level [ upstream commit a4ba773679231264e4077824358260c6583cc874 ] Currently max frame size is set at queue level, which makes the values of the following counters wrong when a jumbo frame is received. The expected value: rx_good_bytes: 0 rx_errors: 1 rx_oversize_errors: 1 The actual value: rx_good_bytes: 1626 rx_errors: 0 rx_oversize_errors: 0 This patch enables setting max frame size at port level, and makes the values above right. Signed-off-by: Dapeng Yu Tested-by: Peng Zhang Reviewed-by: Qi Zhang --- drivers/net/i40e/i40e_ethdev.c | 41 ++++++++++++++++++++++++++++------ 1 file changed, 34 insertions(+), 7 deletions(-) diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c index 72a1959367..e396e82f06 100644 --- a/drivers/net/i40e/i40e_ethdev.c +++ b/drivers/net/i40e/i40e_ethdev.c @@ -397,6 +397,7 @@ static int i40e_set_default_mac_addr(struct rte_eth_dev *dev, struct rte_ether_addr *mac_addr); static int i40e_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu); +static void i40e_set_mac_max_frame(struct rte_eth_dev *dev, uint16_t size); static int i40e_ethertype_filter_convert( const struct rte_eth_ethertype_filter *input, @@ -1775,11 +1776,6 @@ eth_i40e_dev_init(struct rte_eth_dev *dev, void *init_params __rte_unused) */ i40e_add_tx_flow_control_drop_filter(pf); - /* Set the max frame size to 0x2600 by default, - * in case other drivers changed the default value. - */ - i40e_aq_set_mac_config(hw, I40E_FRAME_SIZE_MAX, TRUE, false, 0, NULL); - /* initialize mirror rule list */ TAILQ_INIT(&pf->mirror_list); @@ -2434,6 +2430,7 @@ i40e_dev_start(struct rte_eth_dev *dev) uint32_t intr_vector = 0; struct i40e_vsi *vsi; uint16_t nb_rxq, nb_txq; + uint16_t max_frame_size; hw->adapter_stopped = 0; @@ -2575,6 +2572,9 @@ i40e_dev_start(struct rte_eth_dev *dev) "please call hierarchy_commit() " "before starting the port"); + max_frame_size = dev->data->mtu + I40E_ETH_OVERHEAD; + i40e_set_mac_max_frame(dev, max_frame_size); + return I40E_SUCCESS; tx_err: @@ -2942,6 +2942,9 @@ i40e_dev_set_link_down(struct rte_eth_dev *dev) return i40e_phy_conf_link(hw, abilities, speed, false); } +#define CHECK_INTERVAL 100 /* 100ms */ +#define MAX_REPEAT_TIME 10 /* 1s (10 * 100ms) in total */ + static __rte_always_inline void update_link_reg(struct i40e_hw *hw, struct rte_eth_link *link) { @@ -3009,8 +3012,6 @@ static __rte_always_inline void update_link_aq(struct i40e_hw *hw, struct rte_eth_link *link, bool enable_lse, int wait_to_complete) { -#define CHECK_INTERVAL 100 /* 100ms */ -#define MAX_REPEAT_TIME 10 /* 1s (10 * 100ms) in total */ uint32_t rep_cnt = MAX_REPEAT_TIME; struct i40e_link_status link_status; int status; @@ -6813,6 +6814,7 @@ i40e_dev_handle_aq_msg(struct rte_eth_dev *dev) if (!ret) rte_eth_dev_callback_process(dev, RTE_ETH_EVENT_INTR_LSC, NULL); + break; default: PMD_DRV_LOG(DEBUG, "Request %u is not supported yet", @@ -13130,6 +13132,31 @@ i40e_config_rss_filter(struct i40e_pf *pf, return 0; } +static void +i40e_set_mac_max_frame(struct rte_eth_dev *dev, uint16_t size) +{ + struct i40e_hw *hw = I40E_DEV_PRIVATE_TO_HW(dev->data->dev_private); + uint32_t rep_cnt = MAX_REPEAT_TIME; + struct rte_eth_link link; + enum i40e_status_code status; + + do { + update_link_reg(hw, &link); + if (link.link_status) + break; + + rte_delay_ms(CHECK_INTERVAL); + } while (--rep_cnt); + + if (link.link_status) { + status = i40e_aq_set_mac_config(hw, size, TRUE, 0, false, NULL); + if (status != I40E_SUCCESS) + PMD_DRV_LOG(ERR, "Failed to set max frame size at port level"); + } else { + PMD_DRV_LOG(ERR, "Set max frame size at port level not applicable on link down"); + } +} + RTE_LOG_REGISTER(i40e_logtype_init, pmd.net.i40e.init, NOTICE); RTE_LOG_REGISTER(i40e_logtype_driver, pmd.net.i40e.driver, NOTICE); #ifdef RTE_LIBRTE_I40E_DEBUG_RX -- 2.30.2 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2022-02-28 21:17:56.369917283 +0000 +++ 0030-net-i40e-enable-maximum-frame-size-at-port-level.patch 2022-02-28 21:17:53.944931510 +0000 @@ -1 +1 @@ -From a4ba773679231264e4077824358260c6583cc874 Mon Sep 17 00:00:00 2001 +From 1b7f6d2ad92d522e4f024c46e5794fad8540e94f Mon Sep 17 00:00:00 2001 @@ -5,0 +6,2 @@ +[ upstream commit a4ba773679231264e4077824358260c6583cc874 ] + @@ -22,2 +23,0 @@ -Cc: stable@dpdk.org - @@ -32 +32 @@ -index ecfa3c94db..755786dc10 100644 +index 72a1959367..e396e82f06 100644 @@ -35 +35 @@ -@@ -386,6 +386,7 @@ static int i40e_set_default_mac_addr(struct rte_eth_dev *dev, +@@ -397,6 +397,7 @@ static int i40e_set_default_mac_addr(struct rte_eth_dev *dev, @@ -43 +43 @@ -@@ -1709,11 +1710,6 @@ eth_i40e_dev_init(struct rte_eth_dev *dev, void *init_params __rte_unused) +@@ -1775,11 +1776,6 @@ eth_i40e_dev_init(struct rte_eth_dev *dev, void *init_params __rte_unused) @@ -52,2 +52,2 @@ - /* initialize RSS rule list */ - TAILQ_INIT(&pf->rss_config_list); + /* initialize mirror rule list */ + TAILQ_INIT(&pf->mirror_list); @@ -55 +55 @@ -@@ -2355,6 +2351,7 @@ i40e_dev_start(struct rte_eth_dev *dev) +@@ -2434,6 +2430,7 @@ i40e_dev_start(struct rte_eth_dev *dev) @@ -63 +63 @@ -@@ -2493,6 +2490,9 @@ i40e_dev_start(struct rte_eth_dev *dev) +@@ -2575,6 +2572,9 @@ i40e_dev_start(struct rte_eth_dev *dev) @@ -73 +73 @@ -@@ -2839,6 +2839,9 @@ i40e_dev_set_link_down(struct rte_eth_dev *dev) +@@ -2942,6 +2942,9 @@ i40e_dev_set_link_down(struct rte_eth_dev *dev) @@ -83 +83 @@ -@@ -2905,8 +2908,6 @@ static __rte_always_inline void +@@ -3009,8 +3012,6 @@ static __rte_always_inline void @@ -92 +92 @@ -@@ -6710,6 +6711,7 @@ i40e_dev_handle_aq_msg(struct rte_eth_dev *dev) +@@ -6813,6 +6814,7 @@ i40e_dev_handle_aq_msg(struct rte_eth_dev *dev) @@ -100,2 +100,2 @@ -@@ -12094,6 +12096,31 @@ i40e_cloud_filter_qinq_create(struct i40e_pf *pf) - return ret; +@@ -13130,6 +13132,31 @@ i40e_config_rss_filter(struct i40e_pf *pf, + return 0; @@ -129,3 +129,3 @@ - RTE_LOG_REGISTER_SUFFIX(i40e_logtype_init, init, NOTICE); - RTE_LOG_REGISTER_SUFFIX(i40e_logtype_driver, driver, NOTICE); - #ifdef RTE_ETHDEV_DEBUG_RX + RTE_LOG_REGISTER(i40e_logtype_init, pmd.net.i40e.init, NOTICE); + RTE_LOG_REGISTER(i40e_logtype_driver, pmd.net.i40e.driver, NOTICE); + #ifdef RTE_LIBRTE_I40E_DEBUG_RX