patch 'net/hns3: fix minimum Tx frame length' has been queued to stable release 20.11.7

luca.boccassi at gmail.com luca.boccassi at gmail.com
Thu Nov 3 10:27:49 CET 2022


Hi,

FYI, your patch has been queued to stable release 20.11.7

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/05/22. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.

Queued patches are on a temporary branch at:
https://github.com/kevintraynor/dpdk-stable

This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/4c5ddfcccb55feb496cec5a3aac64436ad06888c

Thanks.

Luca Boccassi

---
>From 4c5ddfcccb55feb496cec5a3aac64436ad06888c Mon Sep 17 00:00:00 2001
From: Jie Hai <haijie1 at huawei.com>
Date: Fri, 30 Sep 2022 15:22:20 +0800
Subject: [PATCH] net/hns3: fix minimum Tx frame length

[ upstream commit 5f5391d45b87a374de424c62da1d0cba41ac7207 ]

When packet length in Tx is less than length hardware supported,
the minimum frame length in hns3 is used to do padding to avoid
hardware error. Currently, this length is fixed by macro, which
is very unfavorable for subsequent hardware evolution. So fix it
as firmware report.

Fixes: 395b5e08ef8d ("net/hns3: add Tx short frame padding compatibility")

Signed-off-by: Jie Hai <haijie1 at huawei.com>
Signed-off-by: Dongdong Liu <liudongdong3 at huawei.com>
---
 drivers/net/hns3/hns3_cmd.h       | 6 ++++++
 drivers/net/hns3/hns3_ethdev.c    | 4 +++-
 drivers/net/hns3/hns3_ethdev.h    | 3 +--
 drivers/net/hns3/hns3_ethdev_vf.c | 4 +++-
 4 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/drivers/net/hns3/hns3_cmd.h b/drivers/net/hns3/hns3_cmd.h
index b7eaf924da..02bb6fa3c8 100644
--- a/drivers/net/hns3/hns3_cmd.h
+++ b/drivers/net/hns3/hns3_cmd.h
@@ -875,6 +875,12 @@ struct hns3_dev_specs_0_cmd {
 	uint32_t max_tm_rate;
 };
 
+struct hns3_dev_specs_1_cmd {
+	uint8_t rsv0[12];
+	uint8_t min_tx_pkt_len;
+	uint8_t rsv1[11];
+};
+
 #define HNS3_MAX_TQP_NUM_HIP08_PF	64
 #define HNS3_DEFAULT_TX_BUF		0x4000    /* 16k  bytes */
 #define HNS3_TOTAL_PKT_BUF		0x108000  /* 1.03125M bytes */
diff --git a/drivers/net/hns3/hns3_ethdev.c b/drivers/net/hns3/hns3_ethdev.c
index 9cf96f4167..9eaa6f3fa0 100644
--- a/drivers/net/hns3/hns3_ethdev.c
+++ b/drivers/net/hns3/hns3_ethdev.c
@@ -3022,14 +3022,17 @@ static void
 hns3_parse_dev_specifications(struct hns3_hw *hw, struct hns3_cmd_desc *desc)
 {
 	struct hns3_dev_specs_0_cmd *req0;
+	struct hns3_dev_specs_1_cmd *req1;
 
 	req0 = (struct hns3_dev_specs_0_cmd *)desc[0].data;
+	req1 = (struct hns3_dev_specs_1_cmd *)desc[1].data;
 
 	hw->max_non_tso_bd_num = req0->max_non_tso_bd_num;
 	hw->rss_ind_tbl_size = rte_le_to_cpu_16(req0->rss_ind_tbl_size);
 	hw->rss_key_size = rte_le_to_cpu_16(req0->rss_key_size);
 	hw->max_tm_rate = rte_le_to_cpu_32(req0->max_tm_rate);
 	hw->intr.int_ql_max = rte_le_to_cpu_16(req0->intr_ql_max);
+	hw->min_tx_pkt_len = req1->min_tx_pkt_len;
 }
 
 static int
@@ -3129,7 +3132,6 @@ hns3_get_capability(struct hns3_hw *hw)
 	hw->intr.gl_unit = HNS3_INTR_COALESCE_GL_UINT_1US;
 	hw->tso_mode = HNS3_TSO_HW_CAL_PSEUDO_H_CSUM;
 	hw->vlan_mode = HNS3_HW_SHIFT_AND_DISCARD_MODE;
-	hw->min_tx_pkt_len = HNS3_HIP09_MIN_TX_PKT_LEN;
 	pf->tqp_config_mode = HNS3_FLEX_MAX_TQP_NUM_MODE;
 	hw->rss_info.ipv6_sctp_offload_supported = true;
 	hw->udp_cksum_mode = HNS3_SPECIAL_PORT_HW_CKSUM_MODE;
diff --git a/drivers/net/hns3/hns3_ethdev.h b/drivers/net/hns3/hns3_ethdev.h
index fcea844037..03969bccee 100644
--- a/drivers/net/hns3/hns3_ethdev.h
+++ b/drivers/net/hns3/hns3_ethdev.h
@@ -69,7 +69,6 @@
 #define HNS3_DEFAULT_MTU		1500UL
 #define HNS3_DEFAULT_FRAME_LEN		(HNS3_DEFAULT_MTU + HNS3_ETH_OVERHEAD)
 #define HNS3_HIP08_MIN_TX_PKT_LEN	33
-#define HNS3_HIP09_MIN_TX_PKT_LEN	9
 
 #define HNS3_BITS_PER_BYTE	8
 
@@ -474,7 +473,7 @@ struct hns3_hw {
 	 * The minimum length of the packet supported by hardware in the Tx
 	 * direction.
 	 */
-	uint32_t min_tx_pkt_len;
+	uint8_t min_tx_pkt_len;
 
 	struct hns3_queue_intr intr;
 	/*
diff --git a/drivers/net/hns3/hns3_ethdev_vf.c b/drivers/net/hns3/hns3_ethdev_vf.c
index 17dbf48576..61e6b9a867 100644
--- a/drivers/net/hns3/hns3_ethdev_vf.c
+++ b/drivers/net/hns3/hns3_ethdev_vf.c
@@ -1146,13 +1146,16 @@ static void
 hns3vf_parse_dev_specifications(struct hns3_hw *hw, struct hns3_cmd_desc *desc)
 {
 	struct hns3_dev_specs_0_cmd *req0;
+	struct hns3_dev_specs_1_cmd *req1;
 
 	req0 = (struct hns3_dev_specs_0_cmd *)desc[0].data;
+	req1 = (struct hns3_dev_specs_1_cmd *)desc[1].data;
 
 	hw->max_non_tso_bd_num = req0->max_non_tso_bd_num;
 	hw->rss_ind_tbl_size = rte_le_to_cpu_16(req0->rss_ind_tbl_size);
 	hw->rss_key_size = rte_le_to_cpu_16(req0->rss_key_size);
 	hw->intr.int_ql_max = rte_le_to_cpu_16(req0->intr_ql_max);
+	hw->min_tx_pkt_len = req1->min_tx_pkt_len;
 }
 
 static int
@@ -1235,7 +1238,6 @@ hns3vf_get_capability(struct hns3_hw *hw)
 	hw->intr.mapping_mode = HNS3_INTR_MAPPING_VEC_ALL;
 	hw->intr.gl_unit = HNS3_INTR_COALESCE_GL_UINT_1US;
 	hw->tso_mode = HNS3_TSO_HW_CAL_PSEUDO_H_CSUM;
-	hw->min_tx_pkt_len = HNS3_HIP09_MIN_TX_PKT_LEN;
 	hw->rss_info.ipv6_sctp_offload_supported = true;
 	hw->promisc_mode = HNS3_LIMIT_PROMISC_MODE;
 
-- 
2.34.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2022-11-03 09:27:31.051537779 +0000
+++ 0091-net-hns3-fix-minimum-Tx-frame-length.patch	2022-11-03 09:27:25.557426003 +0000
@@ -1 +1 @@
-From 5f5391d45b87a374de424c62da1d0cba41ac7207 Mon Sep 17 00:00:00 2001
+From 4c5ddfcccb55feb496cec5a3aac64436ad06888c Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 5f5391d45b87a374de424c62da1d0cba41ac7207 ]
+
@@ -13 +14,0 @@
-Cc: stable at dpdk.org
@@ -25 +26 @@
-index 8ac8b45819..994dfc48cc 100644
+index b7eaf924da..02bb6fa3c8 100644
@@ -28 +29 @@
-@@ -967,6 +967,12 @@ struct hns3_dev_specs_0_cmd {
+@@ -875,6 +875,12 @@ struct hns3_dev_specs_0_cmd {
@@ -38,3 +39,3 @@
- struct hns3_query_rpu_cmd {
- 	uint32_t tc_queue_num;
- 	uint32_t rsv1[2];
+ #define HNS3_MAX_TQP_NUM_HIP08_PF	64
+ #define HNS3_DEFAULT_TX_BUF		0x4000    /* 16k  bytes */
+ #define HNS3_TOTAL_PKT_BUF		0x108000  /* 1.03125M bytes */
@@ -42 +43 @@
-index 60e933998a..813fcedc6a 100644
+index 9cf96f4167..9eaa6f3fa0 100644
@@ -45 +46 @@
-@@ -2661,14 +2661,17 @@ static void
+@@ -3022,14 +3022,17 @@ static void
@@ -63 +64,2 @@
-@@ -2763,7 +2766,6 @@ hns3_get_capability(struct hns3_hw *hw)
+@@ -3129,7 +3132,6 @@ hns3_get_capability(struct hns3_hw *hw)
+ 	hw->intr.gl_unit = HNS3_INTR_COALESCE_GL_UINT_1US;
@@ -66 +67,0 @@
- 	hw->drop_stats_mode = HNS3_PKTS_DROP_STATS_MODE2;
@@ -72 +73 @@
-index 9fe9766736..2457754b3d 100644
+index fcea844037..03969bccee 100644
@@ -75 +76 @@
-@@ -75,7 +75,6 @@
+@@ -69,7 +69,6 @@
@@ -83 +84 @@
-@@ -550,7 +549,7 @@ struct hns3_hw {
+@@ -474,7 +473,7 @@ struct hns3_hw {
@@ -93 +94 @@
-index 446a0cdbc7..c1bbcf42b1 100644
+index 17dbf48576..61e6b9a867 100644
@@ -96 +97 @@
-@@ -701,13 +701,16 @@ static void
+@@ -1146,13 +1146,16 @@ static void
@@ -113 +114,2 @@
-@@ -846,7 +849,6 @@ hns3vf_get_capability(struct hns3_hw *hw)
+@@ -1235,7 +1238,6 @@ hns3vf_get_capability(struct hns3_hw *hw)
+ 	hw->intr.mapping_mode = HNS3_INTR_MAPPING_VEC_ALL;
@@ -116 +117,0 @@
- 	hw->drop_stats_mode = HNS3_PKTS_DROP_STATS_MODE2;


More information about the stable mailing list