From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 7F8C9A04E7; Mon, 2 Nov 2020 15:40:22 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 3D4C6C964; Mon, 2 Nov 2020 15:38:08 +0100 (CET) Received: from szxga05-in.huawei.com (szxga05-in.huawei.com [45.249.212.191]) by dpdk.org (Postfix) with ESMTP id 3623FC918 for ; Mon, 2 Nov 2020 15:38:02 +0100 (CET) Received: from DGGEMS403-HUB.china.huawei.com (unknown [172.30.72.58]) by szxga05-in.huawei.com (SkyGuard) with ESMTP id 4CPwW66rFYzLsmh for ; Mon, 2 Nov 2020 22:37:54 +0800 (CST) Received: from localhost.localdomain (10.69.192.56) by DGGEMS403-HUB.china.huawei.com (10.3.19.203) with Microsoft SMTP Server id 14.3.487.0; Mon, 2 Nov 2020 22:37:47 +0800 From: Lijun Ou To: CC: , Date: Mon, 2 Nov 2020 22:38:16 +0800 Message-ID: <1604327899-60126-6-git-send-email-oulijun@huawei.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1604327899-60126-1-git-send-email-oulijun@huawei.com> References: <1604327899-60126-1-git-send-email-oulijun@huawei.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.69.192.56] X-CFilter-Loop: Reflected Subject: [dpdk-dev] [PATCH 5/8] net/hns3: fix configurations of port-level scheduling rate X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Huisong Li Scheduling rate of port-level in hns3 PF driver configured to hardware is obtained from firmware, which determines the bandwidth capability of the port. The rate in firmware is generally configured with the maximum value for network engine supporting multiple rates, such as 10G and 25G. It may cause the following issues: 1) When a 10G optical module is used on the network engine, scheduling rate of this port will also be configured to hardware with 25G. However, the MAC rate of this port is 10G. In this case, it is unreasonable that the port scheduling rate is different from the MAC rate. 2) If default speed in firmware is not the maximum value, the 25G port may not reach the capability of the port. Therefore, we fix configurations of port-level scheduling rate according to updating of MAC link speed. Fixes: 59fad0f32135 ("net/hns3: support link update operation") Cc: stable@dpdk.org Signed-off-by: Huisong Li Signed-off-by: Lijun Ou --- drivers/net/hns3/hns3_dcb.c | 2 +- drivers/net/hns3/hns3_dcb.h | 1 + drivers/net/hns3/hns3_ethdev.c | 8 ++++++++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/drivers/net/hns3/hns3_dcb.c b/drivers/net/hns3/hns3_dcb.c index 27ae014..ae8d826 100644 --- a/drivers/net/hns3/hns3_dcb.c +++ b/drivers/net/hns3/hns3_dcb.c @@ -336,7 +336,7 @@ hns3_dcb_get_shapping_para(uint8_t ir_b, uint8_t ir_u, uint8_t ir_s, return shapping_para; } -static int +int hns3_dcb_port_shaper_cfg(struct hns3_hw *hw) { struct hns3_port_shapping_cmd *shap_cfg_cmd; diff --git a/drivers/net/hns3/hns3_dcb.h b/drivers/net/hns3/hns3_dcb.h index 39ff332..7ab9093 100644 --- a/drivers/net/hns3/hns3_dcb.h +++ b/drivers/net/hns3/hns3_dcb.h @@ -204,5 +204,6 @@ int hns3_queue_to_tc_mapping(struct hns3_hw *hw, uint16_t nb_rx_q, uint16_t nb_tx_q); int hns3_dcb_cfg_update(struct hns3_adapter *hns); +int hns3_dcb_port_shaper_cfg(struct hns3_hw *hw); #endif /* _HNS3_DCB_H_ */ diff --git a/drivers/net/hns3/hns3_ethdev.c b/drivers/net/hns3/hns3_ethdev.c index 6b4be76..1e382f1 100644 --- a/drivers/net/hns3/hns3_ethdev.c +++ b/drivers/net/hns3/hns3_ethdev.c @@ -4332,6 +4332,7 @@ static int hns3_cfg_mac_speed_dup(struct hns3_hw *hw, uint32_t speed, uint8_t duplex) { struct hns3_mac *mac = &hw->mac; + uint32_t cur_speed = mac->link_speed; int ret; duplex = hns3_check_speed_dup(duplex, speed); @@ -4343,6 +4344,13 @@ hns3_cfg_mac_speed_dup(struct hns3_hw *hw, uint32_t speed, uint8_t duplex) return ret; mac->link_speed = speed; + ret = hns3_dcb_port_shaper_cfg(hw); + if (ret) { + hns3_err(hw, "failed to configure port shaper, ret = %d.", ret); + mac->link_speed = cur_speed; + return ret; + } + mac->link_duplex = duplex; return 0; -- 2.7.4