From patchwork Sat Jun 11 07:42:26 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dongdong Liu X-Patchwork-Id: 112673 X-Patchwork-Delegate: ferruh.yigit@amd.com 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 EF0FAA0553; Sat, 11 Jun 2022 09:42:55 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 8BBBB427F9; Sat, 11 Jun 2022 09:42:51 +0200 (CEST) Received: from szxga01-in.huawei.com (szxga01-in.huawei.com [45.249.212.187]) by mails.dpdk.org (Postfix) with ESMTP id D0B9C40689; Sat, 11 Jun 2022 09:42:49 +0200 (CEST) Received: from kwepemi500017.china.huawei.com (unknown [172.30.72.55]) by szxga01-in.huawei.com (SkyGuard) with ESMTP id 4LKqXW21TmzjX8g; Sat, 11 Jun 2022 15:41:47 +0800 (CST) Received: from localhost.localdomain (10.28.79.22) by kwepemi500017.china.huawei.com (7.221.188.110) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.24; Sat, 11 Jun 2022 15:42:47 +0800 From: Dongdong Liu To: CC: , Huisong Li , Dongdong Liu , "Min Hu (Connor)" , Yisen Zhuang , Lijun Ou , Chengwen Feng Subject: [PATCH 1/2] net/hns3: fix fail to obtain VF LSC capability Date: Sat, 11 Jun 2022 15:42:26 +0800 Message-ID: <20220611074227.30276-2-liudongdong3@huawei.com> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20220611074227.30276-1-liudongdong3@huawei.com> References: <20220611074227.30276-1-liudongdong3@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.28.79.22] X-ClientProxiedBy: dggems705-chm.china.huawei.com (10.3.19.182) To kwepemi500017.china.huawei.com (7.221.188.110) X-CFilter-Loop: Reflected 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 From: Huisong Li Currently, the VF LSC capability is obtained from PF driver in the interrupt mailbox interrupt thread, it is asynchronous. The VF driver waits for 500ms to get this capability in probe process. The primary process will receive a message and do probe in the interrupt thread context when attach a device in the secondary process. At this case, VF driver never obtains this capability from PF. The root cause is that 'vf->pf_push_lsc_cap' is not updated by the handling mailbox thread until finishing probe. The reason this update wouldn't be done is that the handling mailbox interrupt thread and the probe alarm thread are both in epool thread, and the probe alarm thread is before the mailbox interrupt thread. Fixes: 9bc2289fe5ea ("net/hns3: refactor VF LSC event report") Cc: stable@dpdk.org Signed-off-by: Huisong Li Signed-off-by: Dongdong Liu --- drivers/net/hns3/hns3_ethdev_vf.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/net/hns3/hns3_ethdev_vf.c b/drivers/net/hns3/hns3_ethdev_vf.c index bebfaa6417..3abd4aafcb 100644 --- a/drivers/net/hns3/hns3_ethdev_vf.c +++ b/drivers/net/hns3/hns3_ethdev_vf.c @@ -777,6 +777,14 @@ hns3vf_get_push_lsc_cap(struct hns3_hw *hw) while (remain_ms > 0) { rte_delay_ms(HNS3_POLL_RESPONE_MS); + /* + * The probe process may perform in interrupt thread context. + * For example, users attach a device in the secondary process. + * At the moment, the handling mailbox task will be blocked. So + * driver has to actively handle the HNS3_MBX_LINK_STAT_CHANGE + * mailbox from PF driver to get this capability. + */ + hns3_dev_handle_mbx_msg(hw); if (__atomic_load_n(&vf->pf_push_lsc_cap, __ATOMIC_ACQUIRE) != HNS3_PF_PUSH_LSC_CAP_UNKNOWN) break; From patchwork Sat Jun 11 07:42:27 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dongdong Liu X-Patchwork-Id: 112674 X-Patchwork-Delegate: ferruh.yigit@amd.com 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 E6154A0553; Sat, 11 Jun 2022 09:43:01 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 851EA410E5; Sat, 11 Jun 2022 09:42:59 +0200 (CEST) Received: from szxga02-in.huawei.com (szxga02-in.huawei.com [45.249.212.188]) by mails.dpdk.org (Postfix) with ESMTP id 2118640689; Sat, 11 Jun 2022 09:42:58 +0200 (CEST) Received: from kwepemi500017.china.huawei.com (unknown [172.30.72.54]) by szxga02-in.huawei.com (SkyGuard) with ESMTP id 4LKqV54K4jzRhq8; Sat, 11 Jun 2022 15:39:41 +0800 (CST) Received: from localhost.localdomain (10.28.79.22) by kwepemi500017.china.huawei.com (7.221.188.110) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.24; Sat, 11 Jun 2022 15:42:56 +0800 From: Dongdong Liu To: CC: , Chengwen Feng , Dongdong Liu , "Min Hu (Connor)" , Yisen Zhuang , Lijun Ou Subject: [PATCH 2/2] net/hns3: support backplane media type Date: Sat, 11 Jun 2022 15:42:27 +0800 Message-ID: <20220611074227.30276-3-liudongdong3@huawei.com> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20220611074227.30276-1-liudongdong3@huawei.com> References: <20220611074227.30276-1-liudongdong3@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.28.79.22] X-ClientProxiedBy: dggems705-chm.china.huawei.com (10.3.19.182) To kwepemi500017.china.huawei.com (7.221.188.110) X-CFilter-Loop: Reflected 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 From: Chengwen Feng The 802.11 physical PMA sub-layer defines three media: copper, fiber and backplane. For PMD, the backplane is similar to the fiber, the main differences are that backplane doesn't have optical module. Because the interface of firmware fiber is also applicable to the backplane, this patch supports the backplane only through simple extension. Cc: stable@dpdk.org Signed-off-by: Chengwen Feng Signed-off-by: Dongdong Liu --- drivers/net/hns3/hns3_ethdev.c | 54 +++++++++++++++++++--------------- 1 file changed, 30 insertions(+), 24 deletions(-) diff --git a/drivers/net/hns3/hns3_ethdev.c b/drivers/net/hns3/hns3_ethdev.c index 6c77c8b964..b17a3e8669 100644 --- a/drivers/net/hns3/hns3_ethdev.c +++ b/drivers/net/hns3/hns3_ethdev.c @@ -2787,11 +2787,8 @@ hns3_check_media_type(struct hns3_hw *hw, uint8_t media_type) } break; case HNS3_MEDIA_TYPE_FIBER: - ret = 0; - break; case HNS3_MEDIA_TYPE_BACKPLANE: - PMD_INIT_LOG(ERR, "Media type is Backplane, not supported."); - ret = -EOPNOTSUPP; + ret = 0; break; default: PMD_INIT_LOG(ERR, "Unknown media type = %u!", media_type); @@ -4244,14 +4241,11 @@ hns3_update_link_info(struct rte_eth_dev *eth_dev) { struct hns3_adapter *hns = eth_dev->data->dev_private; struct hns3_hw *hw = &hns->hw; - int ret = 0; if (hw->mac.media_type == HNS3_MEDIA_TYPE_COPPER) - ret = hns3_update_copper_link_info(hw); - else if (hw->mac.media_type == HNS3_MEDIA_TYPE_FIBER) - ret = hns3_update_fiber_link_info(hw); + return hns3_update_copper_link_info(hw); - return ret; + return hns3_update_fiber_link_info(hw); } static int @@ -4544,11 +4538,13 @@ hns3_get_port_supported_speed(struct rte_eth_dev *eth_dev) if (ret) return ret; - if (mac->media_type == HNS3_MEDIA_TYPE_FIBER) { + if (mac->media_type == HNS3_MEDIA_TYPE_FIBER || + mac->media_type == HNS3_MEDIA_TYPE_BACKPLANE) { /* * Some firmware does not support the report of supported_speed, - * and only report the effective speed of SFP. In this case, it - * is necessary to use the SFP's speed as the supported_speed. + * and only report the effective speed of SFP/backplane. In this + * case, it is necessary to use the SFP/backplane's speed as the + * supported_speed. */ if (mac->supported_speed == 0) mac->supported_speed = @@ -4810,7 +4806,7 @@ hns3_check_port_speed(struct hns3_hw *hw, uint32_t link_speeds) if (mac->media_type == HNS3_MEDIA_TYPE_COPPER) speed_bit = hns3_convert_link_speeds2bitmap_copper(link_speeds); - else if (mac->media_type == HNS3_MEDIA_TYPE_FIBER) + else speed_bit = hns3_convert_link_speeds2bitmap_fiber(link_speeds); if (!(speed_bit & supported_speed)) { @@ -4954,6 +4950,19 @@ hns3_set_fiber_port_link_speed(struct hns3_hw *hw, return hns3_cfg_mac_speed_dup(hw, cfg->speed, cfg->duplex); } +static const char * +hns3_get_media_type_name(uint8_t media_type) +{ + if (media_type == HNS3_MEDIA_TYPE_FIBER) + return "fiber"; + else if (media_type == HNS3_MEDIA_TYPE_COPPER) + return "copper"; + else if (media_type == HNS3_MEDIA_TYPE_BACKPLANE) + return "backplane"; + else + return "unknown"; +} + static int hns3_set_port_link_speed(struct hns3_hw *hw, struct hns3_set_link_speed_cfg *cfg) @@ -4968,18 +4977,15 @@ hns3_set_port_link_speed(struct hns3_hw *hw, #endif ret = hns3_set_copper_port_link_speed(hw, cfg); - if (ret) { - hns3_err(hw, "failed to set copper port link speed," - "ret = %d.", ret); - return ret; - } - } else if (hw->mac.media_type == HNS3_MEDIA_TYPE_FIBER) { + } else { ret = hns3_set_fiber_port_link_speed(hw, cfg); - if (ret) { - hns3_err(hw, "failed to set fiber port link speed," - "ret = %d.", ret); - return ret; - } + } + + if (ret) { + hns3_err(hw, "failed to set %s port link speed, ret = %d.", + hns3_get_media_type_name(hw->mac.media_type), + ret); + return ret; } return 0;