From patchwork Tue Jan 31 07:44:10 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?6Z+p54i9?= X-Patchwork-Id: 122717 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id D2B4341B8A; Tue, 31 Jan 2023 08:44:19 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 6C67540E28; Tue, 31 Jan 2023 08:44:19 +0100 (CET) Received: from hmat.qianxin.com (hmat.qianxin.com [220.181.41.43]) by mails.dpdk.org (Postfix) with ESMTP id EBA4140DFB; Tue, 31 Jan 2023 08:44:15 +0100 (CET) From: =?utf-8?b?6Z+p54i9?= To: Simei Su , "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" , "stable@dpdk.org" Subject: =?utf-8?q?=E7=AD=94=E5=A4=8D=3A_=5B=5BSPF_Failed=5D=5D=5BPATCH_v2?= =?utf-8?q?=5D_net/i40e=3A_rework_maximum_frame_size_configuration?= Thread-Topic: [[SPF Failed]][PATCH v2] net/i40e: rework maximum frame size configuration Thread-Index: AQHZNUDC8XmV8Kf0ukeY/n3zwfq0sq64IDFg Date: Tue, 31 Jan 2023 07:44:10 +0000 Message-ID: <89ad936909b04363b36f4014680ed65c@qianxin.com> References: <20230116105318.19412-1-simei.su@intel.com> <20230131065229.290041-1-simei.su@intel.com> In-Reply-To: <20230131065229.290041-1-simei.su@intel.com> Accept-Language: zh-CN, en-US Content-Language: zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [172.24.194.36] MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Why i40e_dev_link_update must be called with wait_to_complete when link interrupt is enabled ? I think it's may have the same issue as ice_link_update, please check: https://patches.dpdk.org/project/dpdk/patch/1669207333-8769-1-git-send-email-hanshuang87@gmail.com/ -----邮件原件----- 发件人: Simei Su 发送时间: 2023年1月31日 14:52 收件人: beilei.xing@intel.com; yuying.zhang@intel.com; david.marchand@redhat.com 抄送: dev@dpdk.org; qi.z.zhang@intel.com; qiming.yang@intel.com; Simei Su ; stable@dpdk.org 主题: [[SPF Failed]][PATCH v2] net/i40e: rework maximum frame size configuration 该邮件SPF检测失败,发件IP不被发件域名信任,请谨慎甄别邮件,如有疑问,请蓝信搜索【网络安全部安全运营】反馈! 邮件原文如下: This patch removes unnecessary link status check and adds link update. 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 --- v2: * Refine commit log. * Add link update. drivers/net/i40e/i40e_ethdev.c | 54 +++++++++++------------------------------- 1 file changed, 14 insertions(+), 40 deletions(-) "before starting the port"); - max_frame_size = dev->data->mtu + I40E_ETH_OVERHEAD; - i40e_set_mac_max_frame(dev, max_frame_size); + i40e_dev_link_update(dev, 1); + + 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 +2818,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 +2884,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 +12131,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 diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c index 7726a89d..a3100ec 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, @@ -2467,8 +2466,18 @@ i40e_dev_start(struct rte_eth_dev *dev) "please call hierarchy_commit() "