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 4039541BAE for ; Thu, 2 Feb 2023 13:37:27 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 38CCC42DAB; Thu, 2 Feb 2023 13:37:27 +0100 (CET) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by mails.dpdk.org (Postfix) with ESMTP id 7C20642D59; Thu, 2 Feb 2023 13:37:23 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1675341444; x=1706877444; h=from:to:cc:subject:date:message-id:in-reply-to: references; bh=/GD6Xu+ed6WXJI9bPJDNserujwJpcfGeOCNR9/gTPVw=; b=Kr0q8yRBwOrs1k+PDluBSIkoH77JRw6EuBpDnGgmfPeZdxlXEy67jEDT Z/t2raHnypqFN4p4pOHkHkc1mVobqF8CbAFluLuP8J6tz5RMx5OBTSZXn mC3xcFe3kmm2IG+O45Q789Wbgv+uoqU4+5AItUz6dSad6/4190Jn77Eec 5COFiNmm5JHns3aHhmRJn5qXiAZ6OkNW3JPnv8rXmAErrKTLViE2EQWbC iXGilVIuWtFqQQkL3+o6qB/4YN1AYiIkdZSl36VRr97mwstRcNzrw8aZg 3LT/4L5ASVDIUhh81zMtTRMF4twcStprzpwTcRtf2/SDdjt4Epqf2g3rj A==; X-IronPort-AV: E=McAfee;i="6500,9779,10608"; a="326129713" X-IronPort-AV: E=Sophos;i="5.97,267,1669104000"; d="scan'208";a="326129713" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Feb 2023 04:37:22 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10608"; a="665268638" X-IronPort-AV: E=Sophos;i="5.97,267,1669104000"; d="scan'208";a="665268638" Received: from unknown (HELO npg-dpdk-simeisu-cvl-119d218.sh.intel.com) ([10.67.119.208]) by orsmga002.jf.intel.com with ESMTP; 02 Feb 2023 04:37:19 -0800 From: Simei Su To: beilei.xing@intel.com, yuying.zhang@intel.com, david.marchand@redhat.com Cc: dev@dpdk.org, qi.z.zhang@intel.com, qiming.yang@intel.com, Simei Su , stable@dpdk.org Subject: [PATCH v5] net/i40e: rework maximum frame size configuration Date: Thu, 2 Feb 2023 20:36:32 +0800 Message-Id: <20230202123632.56730-1-simei.su@intel.com> X-Mailer: git-send-email 2.9.5 In-Reply-To: <20230202123021.54416-1-simei.su@intel.com> References: <20230202123021.54416-1-simei.su@intel.com> 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 This patch reverts mentioned changes below to remove unnecessary link status check and only moves max frame size configuration to dev_start. Also, it sets the parameter "wait to complete" true to wait for complete right after setting link up. Fixes: a4ba77367923 ("net/i40e: enable maximum frame size at port level") Fixes: 2184f7cdeeaa ("net/i40e: fix max frame size config at port level") Fixes: 719469f13b11 ("net/i40e: fix jumbo frame Rx with X722") Cc: stable@dpdk.org Signed-off-by: Simei Su --- v5: * Fix misspelling in commit log. v4: * Refine commit log. * Avoid duplicate call to set parameter "wait to complete" true. v3: * Put link update before interrupt enable. v2: * Refine commit log. * Add link update. drivers/net/i40e/i40e_ethdev.c | 54 ++++++++++-------------------------------- 1 file changed, 13 insertions(+), 41 deletions(-) diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c index 7726a89d..5d57bb9 100644 --- a/drivers/net/i40e/i40e_ethdev.c +++ b/drivers/net/i40e/i40e_ethdev.c @@ -387,7 +387,6 @@ 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, @@ -2449,7 +2448,7 @@ i40e_dev_start(struct rte_eth_dev *dev) PMD_DRV_LOG(WARNING, "Fail to set phy mask"); /* Call get_link_info aq command to enable/disable LSE */ - i40e_dev_link_update(dev, 0); + i40e_dev_link_update(dev, 1); } if (dev->data->dev_conf.intr_conf.rxq == 0) { @@ -2467,8 +2466,16 @@ 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); + max_frame_size = dev->data->mtu ? + dev->data->mtu + I40E_ETH_OVERHEAD : + I40E_FRAME_SIZE_MAX; + + /* Set the max frame size to HW*/ + ret = i40e_aq_set_mac_config(hw, max_frame_size, TRUE, false, 0, NULL); + if (ret) { + PMD_DRV_LOG(ERR, "Fail to set mac config"); + return ret; + } return I40E_SUCCESS; @@ -2809,9 +2816,6 @@ 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) { @@ -2878,6 +2882,8 @@ 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; @@ -12123,40 +12129,6 @@ i40e_cloud_filter_qinq_create(struct i40e_pf *pf) return ret; } -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; - bool can_be_set = true; - - /* - * I40E_MEDIA_TYPE_BASET link up can be ignored - * I40E_MEDIA_TYPE_BASET link down that hw->phy.media_type - * is I40E_MEDIA_TYPE_UNKNOWN - */ - if (hw->phy.media_type != I40E_MEDIA_TYPE_BASET && - hw->phy.media_type != I40E_MEDIA_TYPE_UNKNOWN) { - do { - update_link_reg(hw, &link); - if (link.link_status) - break; - rte_delay_ms(CHECK_INTERVAL); - } while (--rep_cnt); - can_be_set = !!link.link_status; - } - - if (can_be_set) { - 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_SUFFIX(i40e_logtype_init, init, NOTICE); RTE_LOG_REGISTER_SUFFIX(i40e_logtype_driver, driver, NOTICE); #ifdef RTE_ETHDEV_DEBUG_RX -- 2.9.5