Update DPDK version from 19.11 to 20.11 and also support hns3 PMD for Kunpeng 920 and Kunpeng 930. Signed-off-by: speech_white <humin29@huawei.com>
123 lines
4.1 KiB
Diff
123 lines
4.1 KiB
Diff
From 73f3a8aa0b5926083482f5e1f9999e246856a2ae Mon Sep 17 00:00:00 2001
|
|
From: Huisong Li <lihuisong@huawei.com>
|
|
Date: Thu, 4 Mar 2021 15:44:46 +0800
|
|
Subject: [PATCH 050/189] net/hns3: encapsulate port shaping interface
|
|
|
|
When rate of port changes, the rate limit of the port needs to
|
|
be updated. So it is necessary to encapsulate an interface that
|
|
configures the rate limit based on the rate.
|
|
|
|
Signed-off-by: Huisong Li <lihuisong@huawei.com>
|
|
Signed-off-by: Lijun Ou <oulijun@huawei.com>
|
|
---
|
|
drivers/net/hns3/hns3_dcb.c | 22 +++++++++++++++++-----
|
|
drivers/net/hns3/hns3_dcb.h | 2 +-
|
|
drivers/net/hns3/hns3_ethdev.c | 10 +++-------
|
|
3 files changed, 21 insertions(+), 13 deletions(-)
|
|
|
|
diff --git a/drivers/net/hns3/hns3_dcb.c b/drivers/net/hns3/hns3_dcb.c
|
|
index 7fc6ac9..ebfc240 100644
|
|
--- a/drivers/net/hns3/hns3_dcb.c
|
|
+++ b/drivers/net/hns3/hns3_dcb.c
|
|
@@ -330,8 +330,8 @@ hns3_dcb_get_shapping_para(uint8_t ir_b, uint8_t ir_u, uint8_t ir_s,
|
|
return shapping_para;
|
|
}
|
|
|
|
-int
|
|
-hns3_dcb_port_shaper_cfg(struct hns3_hw *hw)
|
|
+static int
|
|
+hns3_dcb_port_shaper_cfg(struct hns3_hw *hw, uint32_t speed)
|
|
{
|
|
struct hns3_port_shapping_cmd *shap_cfg_cmd;
|
|
struct hns3_shaper_parameter shaper_parameter;
|
|
@@ -340,7 +340,7 @@ hns3_dcb_port_shaper_cfg(struct hns3_hw *hw)
|
|
struct hns3_cmd_desc desc;
|
|
int ret;
|
|
|
|
- ret = hns3_shaper_para_calc(hw, hw->mac.link_speed,
|
|
+ ret = hns3_shaper_para_calc(hw, speed,
|
|
HNS3_SHAPER_LVL_PORT, &shaper_parameter);
|
|
if (ret) {
|
|
hns3_err(hw, "calculate shaper parameter failed: %d", ret);
|
|
@@ -366,12 +366,24 @@ hns3_dcb_port_shaper_cfg(struct hns3_hw *hw)
|
|
* depends on the firmware version. But driver still needs to
|
|
* calculate it and configure to firmware for better compatibility.
|
|
*/
|
|
- shap_cfg_cmd->port_rate = rte_cpu_to_le_32(hw->mac.link_speed);
|
|
+ shap_cfg_cmd->port_rate = rte_cpu_to_le_32(speed);
|
|
hns3_set_bit(shap_cfg_cmd->flag, HNS3_TM_RATE_VLD_B, 1);
|
|
|
|
return hns3_cmd_send(hw, &desc, 1);
|
|
}
|
|
|
|
+int
|
|
+hns3_port_shaper_update(struct hns3_hw *hw, uint32_t speed)
|
|
+{
|
|
+ int ret;
|
|
+
|
|
+ ret = hns3_dcb_port_shaper_cfg(hw, speed);
|
|
+ if (ret)
|
|
+ hns3_err(hw, "configure port shappering failed: ret = %d", ret);
|
|
+
|
|
+ return ret;
|
|
+}
|
|
+
|
|
static int
|
|
hns3_dcb_pg_shapping_cfg(struct hns3_hw *hw, enum hns3_shap_bucket bucket,
|
|
uint8_t pg_id, uint32_t shapping_para, uint32_t rate)
|
|
@@ -961,7 +973,7 @@ hns3_dcb_shaper_cfg(struct hns3_hw *hw)
|
|
{
|
|
int ret;
|
|
|
|
- ret = hns3_dcb_port_shaper_cfg(hw);
|
|
+ ret = hns3_dcb_port_shaper_cfg(hw, hw->mac.link_speed);
|
|
if (ret) {
|
|
hns3_err(hw, "config port shaper failed: %d", ret);
|
|
return ret;
|
|
diff --git a/drivers/net/hns3/hns3_dcb.h b/drivers/net/hns3/hns3_dcb.h
|
|
index 8248434..0d25d3b 100644
|
|
--- a/drivers/net/hns3/hns3_dcb.h
|
|
+++ b/drivers/net/hns3/hns3_dcb.h
|
|
@@ -208,7 +208,7 @@ 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);
|
|
+int hns3_port_shaper_update(struct hns3_hw *hw, uint32_t speed);
|
|
int hns3_pg_shaper_rate_cfg(struct hns3_hw *hw, uint8_t pg_id, uint32_t rate);
|
|
int hns3_pri_shaper_rate_cfg(struct hns3_hw *hw, uint8_t tc_no, uint32_t rate);
|
|
uint8_t hns3_txq_mapped_tc_get(struct hns3_hw *hw, uint16_t txq_no);
|
|
diff --git a/drivers/net/hns3/hns3_ethdev.c b/drivers/net/hns3/hns3_ethdev.c
|
|
index 96ad9b0..94c08e8 100644
|
|
--- a/drivers/net/hns3/hns3_ethdev.c
|
|
+++ b/drivers/net/hns3/hns3_ethdev.c
|
|
@@ -4384,7 +4384,6 @@ 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);
|
|
@@ -4395,14 +4394,11 @@ hns3_cfg_mac_speed_dup(struct hns3_hw *hw, uint32_t speed, uint8_t duplex)
|
|
if (ret)
|
|
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;
|
|
+ ret = hns3_port_shaper_update(hw, speed);
|
|
+ if (ret)
|
|
return ret;
|
|
- }
|
|
|
|
+ mac->link_speed = speed;
|
|
mac->link_duplex = duplex;
|
|
|
|
return 0;
|
|
--
|
|
2.7.4
|
|
|