DPDK patches and discussions
 help / color / mirror / Atom feed
* [PATCH 00/12] bugfix for hns3 PMD
@ 2022-05-19 12:29 Min Hu (Connor)
  2022-05-19 12:29 ` [PATCH 01/12] net/hns3: fix spelling errors Min Hu (Connor)
                   ` (13 more replies)
  0 siblings, 14 replies; 38+ messages in thread
From: Min Hu (Connor) @ 2022-05-19 12:29 UTC (permalink / raw)
  To: dev; +Cc: ferruh.yigit, thomas

This patch set contains 12 bugfix for hns3 PMD.

Chengwen Feng (1):
  net/hns3: fix TM capability incorrectly defined

Huisong Li (10):
  net/hns3: fix spelling errors
  net/hns3: add check for deferred start queue when rollback
  net/hns3: remove redundant parentheses
  net/hns3: adjust the data type of some variables
  net/hns3: fix an unreasonable memset
  net/hns3: remove duplicate definition
  net/hns3: fix return value for unsupported tuple
  net/hns3: modify a function name
  net/hns3: unify the code wrap style
  net/hns3: fix a segfault from secondary process

Min Hu (Connor) (1):
  net/hns3: fix coverity codecheck

 drivers/net/hns3/hns3_cmd.c       |  6 +--
 drivers/net/hns3/hns3_cmd.h       |  2 +-
 drivers/net/hns3/hns3_common.c    | 14 +++----
 drivers/net/hns3/hns3_dcb.c       |  7 ++--
 drivers/net/hns3/hns3_ethdev.c    | 20 +++++-----
 drivers/net/hns3/hns3_ethdev_vf.c | 23 ++++++------
 drivers/net/hns3/hns3_fdir.c      | 30 +++++++--------
 drivers/net/hns3/hns3_fdir.h      |  2 +-
 drivers/net/hns3/hns3_flow.c      | 25 ++++---------
 drivers/net/hns3/hns3_ptp.c       |  2 +-
 drivers/net/hns3/hns3_regs.c      |  2 +-
 drivers/net/hns3/hns3_rss.c       |  8 ++--
 drivers/net/hns3/hns3_rss.h       |  2 +
 drivers/net/hns3/hns3_rxtx.c      | 62 ++++++++++++++++---------------
 drivers/net/hns3/hns3_rxtx_vec.h  |  4 +-
 drivers/net/hns3/hns3_stats.c     | 28 +++++++-------
 16 files changed, 113 insertions(+), 124 deletions(-)

-- 
2.33.0


^ permalink raw reply	[flat|nested] 38+ messages in thread

* [PATCH 01/12] net/hns3: fix spelling errors
  2022-05-19 12:29 [PATCH 00/12] bugfix for hns3 PMD Min Hu (Connor)
@ 2022-05-19 12:29 ` Min Hu (Connor)
  2022-05-19 12:29 ` [PATCH 02/12] net/hns3: add check for deferred start queue when rollback Min Hu (Connor)
                   ` (12 subsequent siblings)
  13 siblings, 0 replies; 38+ messages in thread
From: Min Hu (Connor) @ 2022-05-19 12:29 UTC (permalink / raw)
  To: dev; +Cc: ferruh.yigit, thomas

From: Huisong Li <lihuisong@huawei.com>

This patch fix spelling errors.

Fixes: 70791213242e ("net/hns3: support masking device capability")
Fixes: 2192c428f9a6 ("net/hns3: fix firmware compatibility configuration")
Cc: stable@dpdk.org

Signed-off-by: Huisong Li <lihuisong@huawei.com>
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
---
 drivers/net/hns3/hns3_cmd.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/hns3/hns3_cmd.c b/drivers/net/hns3/hns3_cmd.c
index 96f8f38cbb..5dc874fd7a 100644
--- a/drivers/net/hns3/hns3_cmd.c
+++ b/drivers/net/hns3/hns3_cmd.c
@@ -462,7 +462,7 @@ hns3_mask_capability(struct hns3_hw *hw,
 	for (i = 0; i < MAX_CAPS_BIT; i++) {
 		if (!(caps_masked & BIT_ULL(i)))
 			continue;
-		hns3_info(hw, "mask capabiliy: id-%u, name-%s.",
+		hns3_info(hw, "mask capability: id-%u, name-%s.",
 			  i, hns3_get_caps_name(i));
 	}
 }
@@ -732,7 +732,7 @@ hns3_cmd_init(struct hns3_hw *hw)
 		return 0;
 
 	/*
-	 * Requiring firmware to enable some features, firber port can still
+	 * Requiring firmware to enable some features, fiber port can still
 	 * work without it, but copper port can't work because the firmware
 	 * fails to take over the PHY.
 	 */
-- 
2.33.0


^ permalink raw reply	[flat|nested] 38+ messages in thread

* [PATCH 02/12] net/hns3: add check for deferred start queue when rollback
  2022-05-19 12:29 [PATCH 00/12] bugfix for hns3 PMD Min Hu (Connor)
  2022-05-19 12:29 ` [PATCH 01/12] net/hns3: fix spelling errors Min Hu (Connor)
@ 2022-05-19 12:29 ` Min Hu (Connor)
  2022-05-19 12:29 ` [PATCH 03/12] net/hns3: remove redundant parentheses Min Hu (Connor)
                   ` (11 subsequent siblings)
  13 siblings, 0 replies; 38+ messages in thread
From: Min Hu (Connor) @ 2022-05-19 12:29 UTC (permalink / raw)
  To: dev; +Cc: ferruh.yigit, thomas

From: Huisong Li <lihuisong@huawei.com>

Driver doesn't allocate mbufs for the deferred start queues, so no need to
free it when rollback.

Signed-off-by: Huisong Li <lihuisong@huawei.com>
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
---
 drivers/net/hns3/hns3_rxtx.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/net/hns3/hns3_rxtx.c b/drivers/net/hns3/hns3_rxtx.c
index d3fa4889d2..a9b997d32e 100644
--- a/drivers/net/hns3/hns3_rxtx.c
+++ b/drivers/net/hns3/hns3_rxtx.c
@@ -1202,6 +1202,9 @@ hns3_init_rx_queues(struct hns3_adapter *hns)
 out:
 	for (j = 0; j < i; j++) {
 		rxq = (struct hns3_rx_queue *)hw->data->rx_queues[j];
+		if (rxq->rx_deferred_start)
+			continue;
+
 		hns3_rx_queue_release_mbufs(rxq);
 	}
 
-- 
2.33.0


^ permalink raw reply	[flat|nested] 38+ messages in thread

* [PATCH 03/12] net/hns3: remove redundant parentheses
  2022-05-19 12:29 [PATCH 00/12] bugfix for hns3 PMD Min Hu (Connor)
  2022-05-19 12:29 ` [PATCH 01/12] net/hns3: fix spelling errors Min Hu (Connor)
  2022-05-19 12:29 ` [PATCH 02/12] net/hns3: add check for deferred start queue when rollback Min Hu (Connor)
@ 2022-05-19 12:29 ` Min Hu (Connor)
  2022-05-19 12:29 ` [PATCH 04/12] net/hns3: adjust the data type of some variables Min Hu (Connor)
                   ` (10 subsequent siblings)
  13 siblings, 0 replies; 38+ messages in thread
From: Min Hu (Connor) @ 2022-05-19 12:29 UTC (permalink / raw)
  To: dev; +Cc: ferruh.yigit, thomas

From: Huisong Li <lihuisong@huawei.com>

Remove redundant parentheses.

Signed-off-by: Huisong Li <lihuisong@huawei.com>
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
---
 drivers/net/hns3/hns3_rxtx.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/hns3/hns3_rxtx.c b/drivers/net/hns3/hns3_rxtx.c
index a9b997d32e..ee0aaaf7fc 100644
--- a/drivers/net/hns3/hns3_rxtx.c
+++ b/drivers/net/hns3/hns3_rxtx.c
@@ -170,7 +170,7 @@ hns3_fake_rx_queue_release(struct hns3_rx_queue *queue)
 	}
 
 	/* free fake rx queue arrays */
-	if (idx == (hw->fkq_data.nb_fake_rx_queues - 1)) {
+	if (idx == hw->fkq_data.nb_fake_rx_queues - 1) {
 		hw->fkq_data.nb_fake_rx_queues = 0;
 		rte_free(hw->fkq_data.rx_queues);
 		hw->fkq_data.rx_queues = NULL;
@@ -197,7 +197,7 @@ hns3_fake_tx_queue_release(struct hns3_tx_queue *queue)
 	}
 
 	/* free fake tx queue arrays */
-	if (idx == (hw->fkq_data.nb_fake_tx_queues - 1)) {
+	if (idx == hw->fkq_data.nb_fake_tx_queues - 1) {
 		hw->fkq_data.nb_fake_tx_queues = 0;
 		rte_free(hw->fkq_data.tx_queues);
 		hw->fkq_data.tx_queues = NULL;
-- 
2.33.0


^ permalink raw reply	[flat|nested] 38+ messages in thread

* [PATCH 04/12] net/hns3: adjust the data type of some variables
  2022-05-19 12:29 [PATCH 00/12] bugfix for hns3 PMD Min Hu (Connor)
                   ` (2 preceding siblings ...)
  2022-05-19 12:29 ` [PATCH 03/12] net/hns3: remove redundant parentheses Min Hu (Connor)
@ 2022-05-19 12:29 ` Min Hu (Connor)
  2022-05-19 12:29 ` [PATCH 05/12] net/hns3: fix an unreasonable memset Min Hu (Connor)
                   ` (9 subsequent siblings)
  13 siblings, 0 replies; 38+ messages in thread
From: Min Hu (Connor) @ 2022-05-19 12:29 UTC (permalink / raw)
  To: dev; +Cc: ferruh.yigit, thomas

From: Huisong Li <lihuisong@huawei.com>

Using the 'int' type and 'uint16_t' type to compare is insecure. This patch
makes them consistent.

Signed-off-by: Huisong Li <lihuisong@huawei.com>
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
---
 drivers/net/hns3/hns3_common.c   |  4 ++--
 drivers/net/hns3/hns3_dcb.c      |  2 +-
 drivers/net/hns3/hns3_ethdev.c   |  2 +-
 drivers/net/hns3/hns3_regs.c     |  2 +-
 drivers/net/hns3/hns3_rss.c      |  2 +-
 drivers/net/hns3/hns3_rxtx.c     | 23 ++++++++++++-----------
 drivers/net/hns3/hns3_rxtx_vec.h |  4 ++--
 7 files changed, 20 insertions(+), 19 deletions(-)

diff --git a/drivers/net/hns3/hns3_common.c b/drivers/net/hns3/hns3_common.c
index 9c86c00a04..edd16d8076 100644
--- a/drivers/net/hns3/hns3_common.c
+++ b/drivers/net/hns3/hns3_common.c
@@ -475,7 +475,7 @@ hns3_configure_all_mac_addr(struct hns3_adapter *hns, bool del)
 	struct rte_ether_addr *addr;
 	uint16_t mac_addrs_capa;
 	int ret = 0;
-	int i;
+	uint16_t i;
 
 	mac_addrs_capa =
 		hns->is_vf ? HNS3_VF_UC_MACADDR_NUM : HNS3_UC_MACADDR_NUM;
@@ -645,8 +645,8 @@ int
 hns3_init_ring_with_vector(struct hns3_hw *hw)
 {
 	uint16_t vec;
+	uint16_t i;
 	int ret;
-	int i;
 
 	/*
 	 * In hns3 network engine, vector 0 is always the misc interrupt of this
diff --git a/drivers/net/hns3/hns3_dcb.c b/drivers/net/hns3/hns3_dcb.c
index 136ada626b..d88757611c 100644
--- a/drivers/net/hns3/hns3_dcb.c
+++ b/drivers/net/hns3/hns3_dcb.c
@@ -628,7 +628,7 @@ hns3_set_rss_size(struct hns3_hw *hw, uint16_t nb_rx_q)
 	struct hns3_rss_conf *rss_cfg = &hw->rss_info;
 	uint16_t rx_qnum_per_tc;
 	uint16_t used_rx_queues;
-	int i;
+	uint16_t i;
 
 	rx_qnum_per_tc = nb_rx_q / hw->num_tc;
 	if (rx_qnum_per_tc > hw->rss_size_max) {
diff --git a/drivers/net/hns3/hns3_ethdev.c b/drivers/net/hns3/hns3_ethdev.c
index 29c9f96c05..97cf27d2a1 100644
--- a/drivers/net/hns3/hns3_ethdev.c
+++ b/drivers/net/hns3/hns3_ethdev.c
@@ -2929,8 +2929,8 @@ hns3_map_tqps_to_func(struct hns3_hw *hw, uint16_t func_id, uint16_t tqp_pid,
 static int
 hns3_map_tqp(struct hns3_hw *hw)
 {
+	uint16_t i;
 	int ret;
-	int i;
 
 	/*
 	 * In current version, VF is not supported when PF is driven by DPDK
diff --git a/drivers/net/hns3/hns3_regs.c b/drivers/net/hns3/hns3_regs.c
index 86a4cf74d5..6778e4cfc2 100644
--- a/drivers/net/hns3/hns3_regs.c
+++ b/drivers/net/hns3/hns3_regs.c
@@ -294,8 +294,8 @@ hns3_direct_access_regs(struct hns3_hw *hw, uint32_t *data)
 	struct hns3_adapter *hns = HNS3_DEV_HW_TO_ADAPTER(hw);
 	uint32_t *origin_data_ptr = data;
 	uint32_t reg_offset;
+	uint16_t i, j;
 	int reg_num;
-	int i, j;
 
 	/* fetching per-PF registers values from PF PCIe register space */
 	reg_num = sizeof(cmdq_reg_addrs) / sizeof(uint32_t);
diff --git a/drivers/net/hns3/hns3_rss.c b/drivers/net/hns3/hns3_rss.c
index d376486a1d..4c546c9363 100644
--- a/drivers/net/hns3/hns3_rss.c
+++ b/drivers/net/hns3/hns3_rss.c
@@ -631,7 +631,7 @@ hns3_rss_set_default_args(struct hns3_hw *hw)
 {
 	struct hns3_rss_conf *rss_cfg = &hw->rss_info;
 	uint16_t queue_num = hw->alloc_rss_size;
-	int i;
+	uint16_t i;
 
 	/* Default hash algorithm */
 	rss_cfg->conf.func = RTE_ETH_HASH_FUNCTION_TOEPLITZ;
diff --git a/drivers/net/hns3/hns3_rxtx.c b/drivers/net/hns3/hns3_rxtx.c
index ee0aaaf7fc..510802be05 100644
--- a/drivers/net/hns3/hns3_rxtx.c
+++ b/drivers/net/hns3/hns3_rxtx.c
@@ -390,7 +390,7 @@ hns3_enable_all_queues(struct hns3_hw *hw, bool en)
 	struct hns3_tx_queue *txq;
 	uint32_t rcb_reg;
 	void *tqp_base;
-	int i;
+	uint16_t i;
 
 	for (i = 0; i < hw->cfg_max_queues; i++) {
 		if (hns3_dev_get_support(hw, INDEP_TXRX)) {
@@ -736,8 +736,8 @@ hns3pf_reset_all_tqps(struct hns3_hw *hw)
 #define HNS3_RESET_RCB_NOT_SUPPORT	0U
 #define HNS3_RESET_ALL_TQP_SUCCESS	1U
 	uint8_t reset_status;
+	uint16_t i;
 	int ret;
-	int i;
 
 	ret = hns3_reset_rcb_cmd(hw, &reset_status);
 	if (ret)
@@ -774,7 +774,7 @@ hns3vf_reset_all_tqps(struct hns3_hw *hw)
 	uint8_t reset_status;
 	uint8_t msg_data[2];
 	int ret;
-	int i;
+	uint16_t i;
 
 	memset(msg_data, 0, sizeof(uint16_t));
 	ret = hns3_send_mbx_msg(hw, HNS3_MBX_QUEUE_RESET, 0, msg_data,
@@ -806,7 +806,8 @@ int
 hns3_reset_all_tqps(struct hns3_adapter *hns)
 {
 	struct hns3_hw *hw = &hns->hw;
-	int ret, i;
+	uint16_t i;
+	int ret;
 
 	/* Disable all queues before reset all queues */
 	for (i = 0; i < hw->cfg_max_queues; i++) {
@@ -1037,7 +1038,7 @@ hns3_dev_all_rx_queue_intr_enable(struct hns3_hw *hw, bool en)
 {
 	struct rte_eth_dev *dev = &rte_eth_devices[hw->data->port_id];
 	uint16_t nb_rx_q = hw->data->nb_rx_queues;
-	int i;
+	uint16_t i;
 
 	if (dev->data->dev_conf.intr_conf.rxq == 0)
 		return;
@@ -1121,7 +1122,7 @@ static void
 hns3_init_txq(struct hns3_tx_queue *txq)
 {
 	struct hns3_desc *desc;
-	int i;
+	uint16_t i;
 
 	/* Clear tx bd */
 	desc = txq->tx_ring;
@@ -1145,7 +1146,7 @@ hns3_init_tx_ring_tc(struct hns3_adapter *hns)
 
 	for (i = 0; i < HNS3_MAX_TC_NUM; i++) {
 		struct hns3_tc_queue_info *tc_queue = &hw->tc_queue[i];
-		int j;
+		uint16_t j;
 
 		if (!tc_queue->enable)
 			continue;
@@ -1442,7 +1443,7 @@ hns3_alloc_txq_and_dma_zone(struct rte_eth_dev *dev,
 	struct hns3_tx_queue *txq;
 	struct hns3_desc *desc;
 	unsigned int tx_desc;
-	int i;
+	uint16_t i;
 
 	txq = rte_zmalloc_socket(q_info->type, sizeof(struct hns3_tx_queue),
 				 RTE_CACHE_LINE_SIZE, q_info->socket_id);
@@ -1679,7 +1680,7 @@ hns3_dev_release_mbufs(struct hns3_adapter *hns)
 	struct rte_eth_dev_data *dev_data = hns->hw.data;
 	struct hns3_rx_queue *rxq;
 	struct hns3_tx_queue *txq;
-	int i;
+	uint16_t i;
 
 	if (dev_data->rx_queues)
 		for (i = 0; i < dev_data->nb_rx_queues; i++) {
@@ -3086,7 +3087,7 @@ hns3_tx_free_useless_buffer(struct hns3_tx_queue *txq)
 	uint16_t tx_next_use = txq->next_to_use;
 	struct hns3_entry *tx_entry = &txq->sw_ring[tx_next_clean];
 	struct hns3_desc *desc = &txq->tx_ring[tx_next_clean];
-	int i;
+	uint16_t i;
 
 	if (tx_next_use >= tx_next_clean &&
 	    tx_next_use < tx_next_clean + txq->tx_rs_thresh)
@@ -3984,7 +3985,7 @@ hns3_tx_free_buffer_simple(struct hns3_tx_queue *txq)
 	struct hns3_entry *tx_entry;
 	struct hns3_desc *desc;
 	uint16_t tx_next_clean;
-	int i;
+	uint16_t i;
 
 	while (1) {
 		if (HNS3_GET_TX_QUEUE_PEND_BD_NUM(txq) < txq->tx_rs_thresh)
diff --git a/drivers/net/hns3/hns3_rxtx_vec.h b/drivers/net/hns3/hns3_rxtx_vec.h
index 4985a7cae8..d13f18627d 100644
--- a/drivers/net/hns3/hns3_rxtx_vec.h
+++ b/drivers/net/hns3/hns3_rxtx_vec.h
@@ -15,7 +15,7 @@ hns3_tx_bulk_free_buffers(struct hns3_tx_queue *txq)
 	struct hns3_entry *tx_entry;
 	struct rte_mbuf *m;
 	int nb_free = 0;
-	int i;
+	uint16_t i;
 
 	tx_entry = &txq->sw_ring[txq->next_to_clean];
 	if (txq->mbuf_fast_free_en) {
@@ -56,7 +56,7 @@ static inline void
 hns3_tx_free_buffers(struct hns3_tx_queue *txq)
 {
 	struct hns3_desc *tx_desc;
-	int i;
+	uint16_t i;
 
 	/*
 	 * All mbufs can be released only when the VLD bits of all
-- 
2.33.0


^ permalink raw reply	[flat|nested] 38+ messages in thread

* [PATCH 05/12] net/hns3: fix an unreasonable memset
  2022-05-19 12:29 [PATCH 00/12] bugfix for hns3 PMD Min Hu (Connor)
                   ` (3 preceding siblings ...)
  2022-05-19 12:29 ` [PATCH 04/12] net/hns3: adjust the data type of some variables Min Hu (Connor)
@ 2022-05-19 12:29 ` Min Hu (Connor)
  2022-05-20  7:58   ` Andrew Rybchenko
  2022-05-19 12:29 ` [PATCH 06/12] net/hns3: remove duplicate definition Min Hu (Connor)
                   ` (8 subsequent siblings)
  13 siblings, 1 reply; 38+ messages in thread
From: Min Hu (Connor) @ 2022-05-19 12:29 UTC (permalink / raw)
  To: dev; +Cc: ferruh.yigit, thomas

From: Huisong Li <lihuisong@huawei.com>

This patch fixes an unreasonable memset.

Fixes: bba636698316 ("net/hns3: support Rx/Tx and related operations")
Cc: stable@dpdk.org

Signed-off-by: Huisong Li <lihuisong@huawei.com>
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
---
 drivers/net/hns3/hns3_rxtx.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/hns3/hns3_rxtx.c b/drivers/net/hns3/hns3_rxtx.c
index 510802be05..5a2cfe5a54 100644
--- a/drivers/net/hns3/hns3_rxtx.c
+++ b/drivers/net/hns3/hns3_rxtx.c
@@ -776,7 +776,7 @@ hns3vf_reset_all_tqps(struct hns3_hw *hw)
 	int ret;
 	uint16_t i;
 
-	memset(msg_data, 0, sizeof(uint16_t));
+	memset(msg_data, 0, sizeof(msg_data));
 	ret = hns3_send_mbx_msg(hw, HNS3_MBX_QUEUE_RESET, 0, msg_data,
 				sizeof(msg_data), true, &reset_status,
 				sizeof(reset_status));
-- 
2.33.0


^ permalink raw reply	[flat|nested] 38+ messages in thread

* [PATCH 06/12] net/hns3: remove duplicate definition
  2022-05-19 12:29 [PATCH 00/12] bugfix for hns3 PMD Min Hu (Connor)
                   ` (4 preceding siblings ...)
  2022-05-19 12:29 ` [PATCH 05/12] net/hns3: fix an unreasonable memset Min Hu (Connor)
@ 2022-05-19 12:29 ` Min Hu (Connor)
  2022-05-19 12:29 ` [PATCH 07/12] net/hns3: fix coverity codecheck Min Hu (Connor)
                   ` (7 subsequent siblings)
  13 siblings, 0 replies; 38+ messages in thread
From: Min Hu (Connor) @ 2022-05-19 12:29 UTC (permalink / raw)
  To: dev; +Cc: ferruh.yigit, thomas

From: Huisong Li <lihuisong@huawei.com>

The default hash key array is defined twice. Let's remove the extra one.

Fixes: c37ca66f2b27 ("net/hns3: support RSS")
Cc: stable@dpdk.org

Signed-off-by: Huisong Li <lihuisong@huawei.com>
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
---
 drivers/net/hns3/hns3_flow.c | 9 ---------
 drivers/net/hns3/hns3_rss.c  | 6 ++----
 drivers/net/hns3/hns3_rss.h  | 2 ++
 3 files changed, 4 insertions(+), 13 deletions(-)

diff --git a/drivers/net/hns3/hns3_flow.c b/drivers/net/hns3/hns3_flow.c
index 12afc24910..e994cac314 100644
--- a/drivers/net/hns3/hns3_flow.c
+++ b/drivers/net/hns3/hns3_flow.c
@@ -10,15 +10,6 @@
 #include "hns3_logs.h"
 #include "hns3_flow.h"
 
-/* Default default keys */
-static uint8_t hns3_hash_key[] = {
-	0x6D, 0x5A, 0x56, 0xDA, 0x25, 0x5B, 0x0E, 0xC2,
-	0x41, 0x67, 0x25, 0x3D, 0x43, 0xA3, 0x8F, 0xB0,
-	0xD0, 0xCA, 0x2B, 0xCB, 0xAE, 0x7B, 0x30, 0xB4,
-	0x77, 0xCB, 0x2D, 0xA3, 0x80, 0x30, 0xF2, 0x0C,
-	0x6A, 0x42, 0xB7, 0x3B, 0xBE, 0xAC, 0x01, 0xFA
-};
-
 static const uint8_t full_mask[VNI_OR_TNI_LEN] = { 0xFF, 0xFF, 0xFF };
 static const uint8_t zero_mask[VNI_OR_TNI_LEN] = { 0x00, 0x00, 0x00 };
 
diff --git a/drivers/net/hns3/hns3_rss.c b/drivers/net/hns3/hns3_rss.c
index 4c546c9363..1003daf03e 100644
--- a/drivers/net/hns3/hns3_rss.c
+++ b/drivers/net/hns3/hns3_rss.c
@@ -9,10 +9,8 @@
 #include "hns3_ethdev.h"
 #include "hns3_logs.h"
 
-/*
- * The hash key used for rss initialization.
- */
-static const uint8_t hns3_hash_key[] = {
+/* Default hash keys */
+const uint8_t hns3_hash_key[] = {
 	0x6D, 0x5A, 0x56, 0xDA, 0x25, 0x5B, 0x0E, 0xC2,
 	0x41, 0x67, 0x25, 0x3D, 0x43, 0xA3, 0x8F, 0xB0,
 	0xD0, 0xCA, 0x2B, 0xCB, 0xAE, 0x7B, 0x30, 0xB4,
diff --git a/drivers/net/hns3/hns3_rss.h b/drivers/net/hns3/hns3_rss.h
index 7789f02a08..5b90d3a628 100644
--- a/drivers/net/hns3/hns3_rss.h
+++ b/drivers/net/hns3/hns3_rss.h
@@ -88,6 +88,8 @@ static inline uint32_t roundup_pow_of_two(uint32_t x)
 	return 1UL << fls(x - 1);
 }
 
+extern const uint8_t hns3_hash_key[];
+
 struct hns3_adapter;
 
 int hns3_dev_rss_hash_update(struct rte_eth_dev *dev,
-- 
2.33.0


^ permalink raw reply	[flat|nested] 38+ messages in thread

* [PATCH 07/12] net/hns3: fix coverity codecheck
  2022-05-19 12:29 [PATCH 00/12] bugfix for hns3 PMD Min Hu (Connor)
                   ` (5 preceding siblings ...)
  2022-05-19 12:29 ` [PATCH 06/12] net/hns3: remove duplicate definition Min Hu (Connor)
@ 2022-05-19 12:29 ` Min Hu (Connor)
  2022-05-19 12:29 ` [PATCH 08/12] net/hns3: fix return value for unsupported tuple Min Hu (Connor)
                   ` (6 subsequent siblings)
  13 siblings, 0 replies; 38+ messages in thread
From: Min Hu (Connor) @ 2022-05-19 12:29 UTC (permalink / raw)
  To: dev; +Cc: ferruh.yigit, thomas

In bitwise operation, "val" should be an unsigned type. This patch
fixed it.

Fixes: 38b539d96eb6 ("net/hns3: support IEEE 1588 PTP")
Cc: stable@dpdk.org

Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
---
 drivers/net/hns3/hns3_ptp.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/hns3/hns3_ptp.c b/drivers/net/hns3/hns3_ptp.c
index 1442241a4e..0b0061bba5 100644
--- a/drivers/net/hns3/hns3_ptp.c
+++ b/drivers/net/hns3/hns3_ptp.c
@@ -81,7 +81,7 @@ hns3_timesync_configure(struct hns3_adapter *hns, bool en)
 	struct hns3_hw *hw = &hns->hw;
 	struct hns3_pf *pf = &hns->pf;
 	struct hns3_cmd_desc desc;
-	int val;
+	uint32_t val;
 	int ret;
 
 	hns3_cmd_setup_basic_desc(&desc, HNS3_OPC_CFG_PTP_MODE, false);
-- 
2.33.0


^ permalink raw reply	[flat|nested] 38+ messages in thread

* [PATCH 08/12] net/hns3: fix return value for unsupported tuple
  2022-05-19 12:29 [PATCH 00/12] bugfix for hns3 PMD Min Hu (Connor)
                   ` (6 preceding siblings ...)
  2022-05-19 12:29 ` [PATCH 07/12] net/hns3: fix coverity codecheck Min Hu (Connor)
@ 2022-05-19 12:29 ` Min Hu (Connor)
  2022-05-19 12:29 ` [PATCH 09/12] net/hns3: modify a function name Min Hu (Connor)
                   ` (5 subsequent siblings)
  13 siblings, 0 replies; 38+ messages in thread
From: Min Hu (Connor) @ 2022-05-19 12:29 UTC (permalink / raw)
  To: dev; +Cc: ferruh.yigit, thomas

From: Huisong Li <lihuisong@huawei.com>

Driver should return false for unsupported tuple. This patch fixes it.

Fixes: 18a4b4c3fa80 ("net/hns3: add default to switch when parsing fd tuple")
Cc: stable@dpdk.org

Signed-off-by: Huisong Li <lihuisong@huawei.com>
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
---
 drivers/net/hns3/hns3_fdir.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/hns3/hns3_fdir.c b/drivers/net/hns3/hns3_fdir.c
index 2a7978ac07..a0d6598e57 100644
--- a/drivers/net/hns3/hns3_fdir.c
+++ b/drivers/net/hns3/hns3_fdir.c
@@ -631,7 +631,7 @@ static bool hns3_fd_convert_tuple(struct hns3_hw *hw,
 		break;
 	default:
 		hns3_warn(hw, "not support tuple of (%u)", tuple);
-		break;
+		return false;
 	}
 	return true;
 }
-- 
2.33.0


^ permalink raw reply	[flat|nested] 38+ messages in thread

* [PATCH 09/12] net/hns3: modify a function name
  2022-05-19 12:29 [PATCH 00/12] bugfix for hns3 PMD Min Hu (Connor)
                   ` (7 preceding siblings ...)
  2022-05-19 12:29 ` [PATCH 08/12] net/hns3: fix return value for unsupported tuple Min Hu (Connor)
@ 2022-05-19 12:29 ` Min Hu (Connor)
  2022-05-19 12:29 ` [PATCH 10/12] net/hns3: unify the code wrap style Min Hu (Connor)
                   ` (4 subsequent siblings)
  13 siblings, 0 replies; 38+ messages in thread
From: Min Hu (Connor) @ 2022-05-19 12:29 UTC (permalink / raw)
  To: dev; +Cc: ferruh.yigit, thomas

From: Huisong Li <lihuisong@huawei.com>

The meaning of the "hns3_get_count" function is not precise enough. This
patch changes from "hns3_get_count" to "hns3_fd_get_count".

Signed-off-by: Huisong Li <lihuisong@huawei.com>
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
---
 drivers/net/hns3/hns3_fdir.c | 2 +-
 drivers/net/hns3/hns3_fdir.h | 2 +-
 drivers/net/hns3/hns3_flow.c | 6 +++---
 3 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/net/hns3/hns3_fdir.c b/drivers/net/hns3/hns3_fdir.c
index a0d6598e57..762b89a51e 100644
--- a/drivers/net/hns3/hns3_fdir.c
+++ b/drivers/net/hns3/hns3_fdir.c
@@ -1099,7 +1099,7 @@ int hns3_restore_all_fdir_filter(struct hns3_adapter *hns)
 	return 0;
 }
 
-int hns3_get_count(struct hns3_hw *hw, uint32_t id, uint64_t *value)
+int hns3_fd_get_count(struct hns3_hw *hw, uint32_t id, uint64_t *value)
 {
 	struct hns3_fd_get_cnt_cmd *req;
 	struct hns3_cmd_desc desc;
diff --git a/drivers/net/hns3/hns3_fdir.h b/drivers/net/hns3/hns3_fdir.h
index 3376c40c8e..4d18759160 100644
--- a/drivers/net/hns3/hns3_fdir.h
+++ b/drivers/net/hns3/hns3_fdir.h
@@ -184,7 +184,7 @@ void hns3_fdir_filter_uninit(struct hns3_adapter *hns);
 int hns3_fdir_filter_program(struct hns3_adapter *hns,
 			     struct hns3_fdir_rule *rule, bool del);
 int hns3_clear_all_fdir_filter(struct hns3_adapter *hns);
-int hns3_get_count(struct hns3_hw *hw, uint32_t id, uint64_t *value);
+int hns3_fd_get_count(struct hns3_hw *hw, uint32_t id, uint64_t *value);
 int hns3_restore_all_fdir_filter(struct hns3_adapter *hns);
 
 #endif /* _HNS3_FDIR_H_ */
diff --git a/drivers/net/hns3/hns3_flow.c b/drivers/net/hns3/hns3_flow.c
index e994cac314..b60ad596dc 100644
--- a/drivers/net/hns3/hns3_flow.c
+++ b/drivers/net/hns3/hns3_flow.c
@@ -164,13 +164,13 @@ hns3_counter_new(struct rte_eth_dev *dev, uint32_t indirect, uint32_t id,
 				"Counter id is used, indirect flag not match");
 		/* Clear the indirect counter on first use. */
 		if (cnt->indirect && cnt->ref_cnt == 1)
-			(void)hns3_get_count(hw, id, &value);
+			(void)hns3_fd_get_count(hw, id, &value);
 		cnt->ref_cnt++;
 		return 0;
 	}
 
 	/* Clear the counter by read ops because the counter is read-clear */
-	ret = hns3_get_count(hw, id, &value);
+	ret = hns3_fd_get_count(hw, id, &value);
 	if (ret)
 		return rte_flow_error_set(error, EIO,
 					  RTE_FLOW_ERROR_TYPE_HANDLE, NULL,
@@ -210,7 +210,7 @@ hns3_counter_query(struct rte_eth_dev *dev, struct rte_flow *flow,
 					  RTE_FLOW_ERROR_TYPE_HANDLE, NULL,
 					  "Can't find counter id");
 
-	ret = hns3_get_count(&hns->hw, flow->counter_id, &value);
+	ret = hns3_fd_get_count(&hns->hw, flow->counter_id, &value);
 	if (ret) {
 		rte_flow_error_set(error, -ret, RTE_FLOW_ERROR_TYPE_HANDLE,
 				   NULL, "Read counter fail.");
-- 
2.33.0


^ permalink raw reply	[flat|nested] 38+ messages in thread

* [PATCH 10/12] net/hns3: unify the code wrap style
  2022-05-19 12:29 [PATCH 00/12] bugfix for hns3 PMD Min Hu (Connor)
                   ` (8 preceding siblings ...)
  2022-05-19 12:29 ` [PATCH 09/12] net/hns3: modify a function name Min Hu (Connor)
@ 2022-05-19 12:29 ` Min Hu (Connor)
  2022-05-19 12:29 ` [PATCH 11/12] net/hns3: fix a segfault from secondary process Min Hu (Connor)
                   ` (3 subsequent siblings)
  13 siblings, 0 replies; 38+ messages in thread
From: Min Hu (Connor) @ 2022-05-19 12:29 UTC (permalink / raw)
  To: dev; +Cc: ferruh.yigit, thomas

From: Huisong Li <lihuisong@huawei.com>

This patch unifies the code wrap style.

Signed-off-by: Huisong Li <lihuisong@huawei.com>
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
---
 drivers/net/hns3/hns3_cmd.c       |  2 +-
 drivers/net/hns3/hns3_common.c    | 10 +++++-----
 drivers/net/hns3/hns3_dcb.c       |  5 ++---
 drivers/net/hns3/hns3_ethdev.c    | 18 ++++++++----------
 drivers/net/hns3/hns3_ethdev_vf.c | 23 +++++++++++------------
 drivers/net/hns3/hns3_fdir.c      | 26 +++++++++++++-------------
 drivers/net/hns3/hns3_flow.c      | 10 ++++------
 drivers/net/hns3/hns3_rxtx.c      | 28 +++++++++++++---------------
 drivers/net/hns3/hns3_stats.c     | 28 ++++++++++++++--------------
 9 files changed, 71 insertions(+), 79 deletions(-)

diff --git a/drivers/net/hns3/hns3_cmd.c b/drivers/net/hns3/hns3_cmd.c
index 5dc874fd7a..eadc15093f 100644
--- a/drivers/net/hns3/hns3_cmd.c
+++ b/drivers/net/hns3/hns3_cmd.c
@@ -108,7 +108,7 @@ hns3_alloc_cmd_queue(struct hns3_hw *hw, int ring_type)
 	ret = hns3_alloc_cmd_desc(hw, ring);
 	if (ret)
 		hns3_err(hw, "descriptor %s alloc error %d",
-			    (ring_type == HNS3_TYPE_CSQ) ? "CSQ" : "CRQ", ret);
+			 (ring_type == HNS3_TYPE_CSQ) ? "CSQ" : "CRQ", ret);
 
 	return ret;
 }
diff --git a/drivers/net/hns3/hns3_common.c b/drivers/net/hns3/hns3_common.c
index edd16d8076..7a65db907e 100644
--- a/drivers/net/hns3/hns3_common.c
+++ b/drivers/net/hns3/hns3_common.c
@@ -604,7 +604,7 @@ hns3_init_mac_addrs(struct rte_eth_dev *dev)
 				0);
 	if (dev->data->mac_addrs == NULL) {
 		hns3_err(hw, "failed to allocate %zx bytes needed to store MAC addresses",
-			     sizeof(struct rte_ether_addr) * mac_addrs_capa);
+			 sizeof(struct rte_ether_addr) * mac_addrs_capa);
 		return -ENOMEM;
 	}
 
@@ -680,16 +680,16 @@ hns3_init_ring_with_vector(struct hns3_hw *hw)
 		ret = hw->ops.bind_ring_with_vector(hw, vec, false,
 						    HNS3_RING_TYPE_TX, i);
 		if (ret) {
-			PMD_INIT_LOG(ERR, "fail to unbind TX ring(%d) with "
-					  "vector: %u, ret=%d", i, vec, ret);
+			PMD_INIT_LOG(ERR, "fail to unbind TX ring(%d) with vector: %u, ret=%d",
+				     i, vec, ret);
 			return ret;
 		}
 
 		ret = hw->ops.bind_ring_with_vector(hw, vec, false,
 						    HNS3_RING_TYPE_RX, i);
 		if (ret) {
-			PMD_INIT_LOG(ERR, "fail to unbind RX ring(%d) with "
-					  "vector: %u, ret=%d", i, vec, ret);
+			PMD_INIT_LOG(ERR, "fail to unbind RX ring(%d) with vector: %u, ret=%d",
+				     i, vec, ret);
 			return ret;
 		}
 	}
diff --git a/drivers/net/hns3/hns3_dcb.c b/drivers/net/hns3/hns3_dcb.c
index d88757611c..b22f618e0a 100644
--- a/drivers/net/hns3/hns3_dcb.c
+++ b/drivers/net/hns3/hns3_dcb.c
@@ -876,9 +876,8 @@ hns3_dcb_pri_tc_base_dwrr_cfg(struct hns3_hw *hw)
 
 		ret = hns3_dcb_pri_weight_cfg(hw, i, dwrr);
 		if (ret) {
-			hns3_err(hw,
-			       "fail to send priority weight cmd: %d, ret = %d",
-			       i, ret);
+			hns3_err(hw, "fail to send priority weight cmd: %d, ret = %d",
+				 i, ret);
 			return ret;
 		}
 
diff --git a/drivers/net/hns3/hns3_ethdev.c b/drivers/net/hns3/hns3_ethdev.c
index 97cf27d2a1..8a8f3f1950 100644
--- a/drivers/net/hns3/hns3_ethdev.c
+++ b/drivers/net/hns3/hns3_ethdev.c
@@ -1627,7 +1627,7 @@ hns3_set_default_mac_addr(struct rte_eth_dev *dev,
 	ret = hw->ops.del_uc_mac_addr(hw, oaddr);
 	if (ret) {
 		hns3_ether_format_addr(mac_str, RTE_ETHER_ADDR_FMT_SIZE,
-				      oaddr);
+				       oaddr);
 		hns3_warn(hw, "Remove old uc mac address(%s) fail: %d",
 			  mac_str, ret);
 
@@ -1659,7 +1659,7 @@ hns3_set_default_mac_addr(struct rte_eth_dev *dev,
 	ret_val = hw->ops.del_uc_mac_addr(hw, mac_addr);
 	if (ret_val) {
 		hns3_ether_format_addr(mac_str, RTE_ETHER_ADDR_FMT_SIZE,
-				      mac_addr);
+				       mac_addr);
 		hns3_warn(hw,
 			  "Failed to roll back to del setted mac addr(%s): %d",
 			  mac_str, ret_val);
@@ -1670,7 +1670,7 @@ hns3_set_default_mac_addr(struct rte_eth_dev *dev,
 	if (ret_val) {
 		hns3_ether_format_addr(mac_str, RTE_ETHER_ADDR_FMT_SIZE, oaddr);
 		hns3_warn(hw, "Failed to restore old uc mac addr(%s): %d",
-				  mac_str, ret_val);
+			  mac_str, ret_val);
 	}
 	rte_spinlock_unlock(&hw->lock);
 
@@ -1747,7 +1747,7 @@ hns3_add_mc_mac_addr(struct hns3_hw *hw, struct rte_ether_addr *mac_addr)
 		if (ret == -ENOSPC)
 			hns3_err(hw, "mc mac vlan table is full");
 		hns3_ether_format_addr(mac_str, RTE_ETHER_ADDR_FMT_SIZE,
-				      mac_addr);
+				       mac_addr);
 		hns3_err(hw, "failed to add mc mac addr(%s): %d", mac_str, ret);
 	}
 
@@ -2676,9 +2676,8 @@ hns3_check_dev_specifications(struct hns3_hw *hw)
 {
 	if (hw->rss_ind_tbl_size == 0 ||
 	    hw->rss_ind_tbl_size > HNS3_RSS_IND_TBL_SIZE_MAX) {
-		hns3_err(hw, "the size of hash lookup table configured (%u)"
-			      " exceeds the maximum(%u)", hw->rss_ind_tbl_size,
-			      HNS3_RSS_IND_TBL_SIZE_MAX);
+		hns3_err(hw, "the size of hash lookup table configured (%u) exceeds the maximum(%u)",
+			 hw->rss_ind_tbl_size, HNS3_RSS_IND_TBL_SIZE_MAX);
 		return -EINVAL;
 	}
 
@@ -3916,7 +3915,7 @@ hns3_dev_promiscuous_enable(struct rte_eth_dev *dev)
 		ret = hns3_enable_vlan_filter(hns, false);
 		if (ret) {
 			hns3_err(hw, "failed to enable promiscuous mode due to "
-				     "failure to disable vlan filter, ret = %d",
+				 "failure to disable vlan filter, ret = %d",
 				 ret);
 			err = hns3_set_promisc_mode(hw, false, allmulti);
 			if (err)
@@ -5993,8 +5992,7 @@ hns3_reset_service(void *param)
 		timersub(&tv, &tv_start, &tv_delta);
 		msec = hns3_clock_calctime_ms(&tv_delta);
 		if (msec > HNS3_RESET_PROCESS_MS)
-			hns3_err(hw, "%d handle long time delta %" PRIu64
-				     " ms time=%ld.%.6ld",
+			hns3_err(hw, "%d handle long time delta %" PRIu64 " ms time=%ld.%.6ld",
 				 hw->reset.level, msec,
 				 tv.tv_sec, tv.tv_usec);
 		if (ret == -EAGAIN)
diff --git a/drivers/net/hns3/hns3_ethdev_vf.c b/drivers/net/hns3/hns3_ethdev_vf.c
index 0c170797f4..7da6e21b0f 100644
--- a/drivers/net/hns3/hns3_ethdev_vf.c
+++ b/drivers/net/hns3/hns3_ethdev_vf.c
@@ -142,7 +142,7 @@ hns3vf_enable_msix(const struct rte_pci_device *device, bool op)
 	pos = hns3vf_find_pci_capability(device, PCI_CAP_ID_MSIX);
 	if (pos) {
 		ret = rte_pci_read_config(device, &control, sizeof(control),
-				    (pos + PCI_MSIX_FLAGS));
+					  (pos + PCI_MSIX_FLAGS));
 		if (ret < 0) {
 			PMD_INIT_LOG(ERR, "Failed to read PCI offset 0x%x",
 				     (pos + PCI_MSIX_FLAGS));
@@ -154,10 +154,10 @@ hns3vf_enable_msix(const struct rte_pci_device *device, bool op)
 		else
 			control &= ~PCI_MSIX_FLAGS_ENABLE;
 		ret = rte_pci_write_config(device, &control, sizeof(control),
-					  (pos + PCI_MSIX_FLAGS));
+					   (pos + PCI_MSIX_FLAGS));
 		if (ret < 0) {
 			PMD_INIT_LOG(ERR, "failed to write PCI offset 0x%x",
-				    (pos + PCI_MSIX_FLAGS));
+				     (pos + PCI_MSIX_FLAGS));
 			return -ENXIO;
 		}
 
@@ -199,7 +199,7 @@ hns3vf_remove_uc_mac_addr(struct hns3_hw *hw, struct rte_ether_addr *mac_addr)
 				false, NULL, 0);
 	if (ret) {
 		hns3_ether_format_addr(mac_str, RTE_ETHER_ADDR_FMT_SIZE,
-				      mac_addr);
+				       mac_addr);
 		hns3_err(hw, "failed to add uc mac addr(%s), ret = %d",
 			 mac_str, ret);
 	}
@@ -241,12 +241,12 @@ hns3vf_set_default_mac_addr(struct rte_eth_dev *dev,
 		 */
 		if (ret == -EPERM) {
 			hns3_ether_format_addr(mac_str, RTE_ETHER_ADDR_FMT_SIZE,
-					      old_addr);
+					       old_addr);
 			hns3_warn(hw, "Has permanet mac addr(%s) for vf",
 				  mac_str);
 		} else {
 			hns3_ether_format_addr(mac_str, RTE_ETHER_ADDR_FMT_SIZE,
-					      mac_addr);
+					       mac_addr);
 			hns3_err(hw, "Failed to set mac addr(%s) for vf: %d",
 				 mac_str, ret);
 		}
@@ -293,7 +293,7 @@ hns3vf_remove_mc_mac_addr(struct hns3_hw *hw,
 				NULL, 0);
 	if (ret) {
 		hns3_ether_format_addr(mac_str, RTE_ETHER_ADDR_FMT_SIZE,
-				      mac_addr);
+				       mac_addr);
 		hns3_err(hw, "Failed to remove mc mac addr(%s) for vf: %d",
 			 mac_str, ret);
 	}
@@ -715,9 +715,8 @@ hns3vf_check_dev_specifications(struct hns3_hw *hw)
 {
 	if (hw->rss_ind_tbl_size == 0 ||
 	    hw->rss_ind_tbl_size > HNS3_RSS_IND_TBL_SIZE_MAX) {
-		hns3_warn(hw, "the size of hash lookup table configured (%u)"
-			      " exceeds the maximum(%u)", hw->rss_ind_tbl_size,
-			      HNS3_RSS_IND_TBL_SIZE_MAX);
+		hns3_warn(hw, "the size of hash lookup table configured (%u) exceeds the maximum(%u)",
+			  hw->rss_ind_tbl_size, HNS3_RSS_IND_TBL_SIZE_MAX);
 		return -EINVAL;
 	}
 
@@ -1168,8 +1167,8 @@ hns3vf_vlan_offload_set(struct rte_eth_dev *dev, int mask)
 	int ret = 0;
 
 	if (__atomic_load_n(&hw->reset.resetting, __ATOMIC_RELAXED)) {
-		hns3_err(hw, "vf set vlan offload failed during resetting, "
-			     "mask = 0x%x", mask);
+		hns3_err(hw, "vf set vlan offload failed during resetting, mask = 0x%x",
+			 mask);
 		return -EIO;
 	}
 
diff --git a/drivers/net/hns3/hns3_fdir.c b/drivers/net/hns3/hns3_fdir.c
index 762b89a51e..30e5e66772 100644
--- a/drivers/net/hns3/hns3_fdir.c
+++ b/drivers/net/hns3/hns3_fdir.c
@@ -321,7 +321,7 @@ int hns3_init_fd_config(struct hns3_adapter *hns)
 		break;
 	default:
 		hns3_err(hw, "Unsupported flow director mode %u",
-			    pf->fdir.fd_cfg.fd_mode);
+			 pf->fdir.fd_cfg.fd_mode);
 		return -EOPNOTSUPP;
 	}
 
@@ -337,7 +337,7 @@ int hns3_init_fd_config(struct hns3_adapter *hns)
 	    BIT(INNER_SRC_IP) | BIT(INNER_DST_IP) |
 	    BIT(INNER_SRC_PORT) | BIT(INNER_DST_PORT);
 	hns3_dbg(hw, "fdir tuple: inner<vlan_tag1 eth_type ip_src ip_dst "
-		  "ip_proto ip_tos l4_src_port l4_dst_port>");
+		 "ip_proto ip_tos l4_src_port l4_dst_port>");
 
 	/* If use max 400bit key, we can support tuples for ether type */
 	if (pf->fdir.fd_cfg.max_key_length == MAX_KEY_LENGTH) {
@@ -348,8 +348,8 @@ int hns3_init_fd_config(struct hns3_adapter *hns)
 		    BIT(OUTER_TUN_VNI) | BIT(OUTER_TUN_FLOW_ID) |
 		    BIT(OUTER_ETH_TYPE) | BIT(OUTER_IP_PROTO);
 		hns3_dbg(hw, "fdir tuple more: inner<dst_mac src_mac "
-			  "vlan_tag2 sctp_tag> outer<eth_type ip_proto "
-			  "l4_src_port l4_dst_port tun_vni tun_flow_id>");
+			 "vlan_tag2 sctp_tag> outer<eth_type ip_proto "
+			 "l4_src_port l4_dst_port tun_vni tun_flow_id>");
 	}
 
 	/* roce_type is used to filter roce frames
@@ -367,12 +367,11 @@ int hns3_init_fd_config(struct hns3_adapter *hns)
 	if (ret)
 		return ret;
 
-	hns3_dbg(hw, "fdir: stage1<rules-%u counters-%u> stage2<rules-%u "
-		  "counters=%u>",
-		  pf->fdir.fd_cfg.rule_num[HNS3_FD_STAGE_1],
-		  pf->fdir.fd_cfg.cnt_num[HNS3_FD_STAGE_1],
-		  pf->fdir.fd_cfg.rule_num[HNS3_FD_STAGE_2],
-		  pf->fdir.fd_cfg.cnt_num[HNS3_FD_STAGE_2]);
+	hns3_dbg(hw, "fdir: stage1<rules-%u counters-%u> stage2<rules-%u counters=%u>",
+		 pf->fdir.fd_cfg.rule_num[HNS3_FD_STAGE_1],
+		 pf->fdir.fd_cfg.cnt_num[HNS3_FD_STAGE_1],
+		 pf->fdir.fd_cfg.rule_num[HNS3_FD_STAGE_2],
+		 pf->fdir.fd_cfg.cnt_num[HNS3_FD_STAGE_2]);
 
 	return hns3_set_fd_key_config(hns);
 }
@@ -420,7 +419,7 @@ static int hns3_fd_tcam_config(struct hns3_hw *hw, bool sel_x, int loc,
 	ret = hns3_cmd_send(hw, desc, FD_TCAM_CMD_NUM);
 	if (ret)
 		hns3_err(hw, "Config tcam key fail, ret=%d loc=%d add=%d",
-			    ret, loc, is_add);
+			 ret, loc, is_add);
 	return ret;
 }
 
@@ -673,6 +672,7 @@ static void hns3_fd_convert_meta_data(struct hns3_fd_key_cfg *cfg,
 		} else if (i == VLAN_NUMBER) {
 			uint32_t vlan_tag;
 			uint8_t vlan_num;
+
 			if (rule->key_conf.spec.tunnel_type == 0)
 				vlan_num = rule->key_conf.vlan_num;
 			else
@@ -758,14 +758,14 @@ static int hns3_config_key(struct hns3_adapter *hns,
 	ret = hns3_fd_tcam_config(hw, false, rule->location, key_y, true);
 	if (ret) {
 		hns3_err(hw, "Config fd key_y fail, loc=%u, ret=%d",
-			    rule->queue_id, ret);
+			 rule->queue_id, ret);
 		return ret;
 	}
 
 	ret = hns3_fd_tcam_config(hw, true, rule->location, key_x, true);
 	if (ret)
 		hns3_err(hw, "Config fd key_x fail, loc=%u, ret=%d",
-			    rule->queue_id, ret);
+			 rule->queue_id, ret);
 	return ret;
 }
 
diff --git a/drivers/net/hns3/hns3_flow.c b/drivers/net/hns3/hns3_flow.c
index b60ad596dc..5e0a9bc93f 100644
--- a/drivers/net/hns3/hns3_flow.c
+++ b/drivers/net/hns3/hns3_flow.c
@@ -285,9 +285,8 @@ hns3_handle_action_queue(struct rte_eth_dev *dev,
 
 	queue = (const struct rte_flow_action_queue *)action->conf;
 	if (queue->index >= hw->data->nb_rx_queues) {
-		hns3_err(hw, "queue ID(%u) is greater than number of "
-			  "available queue (%u) in driver.",
-			  queue->index, hw->data->nb_rx_queues);
+		hns3_err(hw, "queue ID(%u) is greater than number of available queue (%u) in driver.",
+			 queue->index, hw->data->nb_rx_queues);
 		return rte_flow_error_set(error, EINVAL,
 					  RTE_FLOW_ERROR_TYPE_ACTION_CONF,
 					  action, "Invalid queue ID in PF");
@@ -1656,9 +1655,8 @@ hns3_clear_rss_filter(struct rte_eth_dev *dev)
 	}
 
 	if (rss_rule_fail_cnt) {
-		hns3_err(hw, "fail to delete all RSS filters, success num = %d "
-			     "fail num = %d", rss_rule_succ_cnt,
-			     rss_rule_fail_cnt);
+		hns3_err(hw, "fail to delete all RSS filters, success num = %d fail num = %d",
+			 rss_rule_succ_cnt, rss_rule_fail_cnt);
 		ret = -EIO;
 	}
 
diff --git a/drivers/net/hns3/hns3_rxtx.c b/drivers/net/hns3/hns3_rxtx.c
index 5a2cfe5a54..3f576fbf4b 100644
--- a/drivers/net/hns3/hns3_rxtx.c
+++ b/drivers/net/hns3/hns3_rxtx.c
@@ -606,8 +606,8 @@ hns3_send_reset_tqp_cmd(struct hns3_hw *hw, uint16_t queue_id, bool enable)
 	hns3_set_bit(req->reset_req, HNS3_TQP_RESET_B, enable ? 1 : 0);
 	ret = hns3_cmd_send(hw, &desc, 1);
 	if (ret)
-		hns3_err(hw, "send tqp reset cmd error, queue_id = %u, "
-			     "ret = %d", queue_id, ret);
+		hns3_err(hw, "send tqp reset cmd error, queue_id = %u, ret = %d",
+			 queue_id, ret);
 
 	return ret;
 }
@@ -627,8 +627,8 @@ hns3_get_tqp_reset_status(struct hns3_hw *hw, uint16_t queue_id,
 
 	ret = hns3_cmd_send(hw, &desc, 1);
 	if (ret) {
-		hns3_err(hw, "get tqp reset status error, queue_id = %u, "
-			     "ret = %d.", queue_id, ret);
+		hns3_err(hw, "get tqp reset status error, queue_id = %u, ret = %d.",
+			 queue_id, ret);
 		return ret;
 	}
 	*reset_status = hns3_get_bit(req->ready_to_reset, HNS3_TQP_RESET_B);
@@ -669,7 +669,7 @@ hns3pf_reset_tqp(struct hns3_hw *hw, uint16_t queue_id)
 	if (!reset_status) {
 		ret = -ETIMEDOUT;
 		hns3_err(hw, "reset tqp timeout, queue_id = %u, ret = %d",
-			     queue_id, ret);
+			 queue_id, ret);
 		goto tqp_reset_fail;
 	}
 
@@ -752,15 +752,14 @@ hns3pf_reset_all_tqps(struct hns3_hw *hw)
 		for (i = 0; i < hw->cfg_max_queues; i++) {
 			ret = hns3pf_reset_tqp(hw, i);
 			if (ret) {
-				hns3_err(hw,
-				  "fail to reset tqp, queue_id = %d, ret = %d.",
-				  i, ret);
+				hns3_err(hw, "fail to reset tqp, queue_id = %d, ret = %d.",
+					 i, ret);
 				return ret;
 			}
 		}
 	} else if (reset_status != HNS3_RESET_ALL_TQP_SUCCESS) {
 		hns3_err(hw, "fail to reset all tqps, reset_status = %u.",
-				reset_status);
+			 reset_status);
 		return -EIO;
 	}
 
@@ -813,9 +812,8 @@ hns3_reset_all_tqps(struct hns3_adapter *hns)
 	for (i = 0; i < hw->cfg_max_queues; i++) {
 		ret = hns3_tqp_enable(hw, i, false);
 		if (ret) {
-			hns3_err(hw,
-			    "fail to disable tqps before tqps reset, ret = %d.",
-			    ret);
+			hns3_err(hw, "fail to disable tqps before tqps reset, ret = %d.",
+				 ret);
 			return ret;
 		}
 	}
@@ -922,9 +920,9 @@ hns3_reset_queue(struct hns3_hw *hw, uint16_t queue_id,
 	}
 
 	if (!reset_status) {
-		hns3_err(hw, "reset queue timeout, queue_id = %u, "
-			     "queue_type = %s", queue_id,
-			     queue_type == HNS3_RING_TYPE_TX ? "Tx" : "Rx");
+		hns3_err(hw, "reset queue timeout, queue_id = %u, queue_type = %s",
+			 queue_id,
+			 queue_type == HNS3_RING_TYPE_TX ? "Tx" : "Rx");
 		ret = -ETIMEDOUT;
 		goto queue_reset_fail;
 	}
diff --git a/drivers/net/hns3/hns3_stats.c b/drivers/net/hns3/hns3_stats.c
index 9b7ad067aa..83725ecf20 100644
--- a/drivers/net/hns3/hns3_stats.c
+++ b/drivers/net/hns3/hns3_stats.c
@@ -507,8 +507,8 @@ hns3_update_port_rx_ssu_drop_stats(struct hns3_hw *hw)
 
 	req = (struct hns3_query_ssu_cmd *)desc[0].data;
 	cnt = rte_le_to_cpu_32(req->oq_drop_cnt) +
-		rte_le_to_cpu_32(req->full_drop_cnt) +
-		rte_le_to_cpu_32(req->part_drop_cnt);
+	      rte_le_to_cpu_32(req->full_drop_cnt) +
+	      rte_le_to_cpu_32(req->part_drop_cnt);
 
 	stats->ssu_rx_drop_cnt += cnt;
 
@@ -532,8 +532,8 @@ hns3_update_port_tx_ssu_drop_stats(struct hns3_hw *hw)
 
 	req = (struct hns3_query_ssu_cmd *)desc[0].data;
 	cnt = rte_le_to_cpu_32(req->oq_drop_cnt) +
-		rte_le_to_cpu_32(req->full_drop_cnt) +
-		rte_le_to_cpu_32(req->part_drop_cnt);
+	      rte_le_to_cpu_32(req->full_drop_cnt) +
+	      rte_le_to_cpu_32(req->part_drop_cnt);
 
 	hw->oerror_stats += cnt;
 
@@ -1336,8 +1336,8 @@ hns3_dev_xstats_get_by_id(struct rte_eth_dev *dev, const uint64_t *ids,
 	len = cnt_stats * sizeof(struct rte_eth_xstat);
 	values_copy = rte_zmalloc("hns3_xstats_values", len, 0);
 	if (values_copy == NULL) {
-		hns3_err(hw, "Failed to allocate 0x%" PRIx64 " bytes needed "
-			     "to store statistics values", len);
+		hns3_err(hw, "Failed to allocate 0x%" PRIx64 " bytes needed to store statistics values",
+			 len);
 		return -ENOMEM;
 	}
 
@@ -1358,8 +1358,8 @@ hns3_dev_xstats_get_by_id(struct rte_eth_dev *dev, const uint64_t *ids,
 
 	for (i = 0; i < size; i++) {
 		if (ids[i] >= cnt_stats) {
-			hns3_err(hw, "ids[%u] (%" PRIu64 ") is invalid, "
-				     "should < %u", i, ids[i], cnt_stats);
+			hns3_err(hw, "ids[%u] (%" PRIu64 ") is invalid, should < %u",
+				 i, ids[i], cnt_stats);
 			rte_free(values_copy);
 			return -EINVAL;
 		}
@@ -1418,8 +1418,8 @@ hns3_dev_xstats_get_names_by_id(struct rte_eth_dev *dev,
 	len = cnt_stats * sizeof(struct rte_eth_xstat_name);
 	names_copy = rte_zmalloc("hns3_xstats_names", len, 0);
 	if (names_copy == NULL) {
-		hns3_err(hw, "Failed to allocate 0x%" PRIx64 " bytes needed "
-			     "to store statistics names", len);
+		hns3_err(hw, "Failed to allocate 0x%" PRIx64 " bytes needed to store statistics names",
+			 len);
 		return -ENOMEM;
 	}
 
@@ -1427,8 +1427,8 @@ hns3_dev_xstats_get_names_by_id(struct rte_eth_dev *dev,
 
 	for (i = 0; i < size; i++) {
 		if (ids[i] >= cnt_stats) {
-			hns3_err(hw, "ids[%u] (%" PRIu64 ") is invalid, "
-				     "should < %u", i, ids[i], cnt_stats);
+			hns3_err(hw, "ids[%u] (%" PRIu64 ") is invalid, should < %u",
+				 i, ids[i], cnt_stats);
 			rte_free(names_copy);
 			return -EINVAL;
 		}
@@ -1500,14 +1500,14 @@ hns3_tqp_stats_init(struct hns3_hw *hw)
 	struct hns3_tqp_stats *tqp_stats = &hw->tqp_stats;
 
 	tqp_stats->rcb_rx_ring_pktnum = rte_zmalloc("hns3_rx_ring_pkt_num",
-					 sizeof(uint64_t) * hw->tqps_num, 0);
+					sizeof(uint64_t) * hw->tqps_num, 0);
 	if (tqp_stats->rcb_rx_ring_pktnum == NULL) {
 		hns3_err(hw, "failed to allocate rx_ring pkt_num.");
 		return -ENOMEM;
 	}
 
 	tqp_stats->rcb_tx_ring_pktnum = rte_zmalloc("hns3_tx_ring_pkt_num",
-					 sizeof(uint64_t) * hw->tqps_num, 0);
+					sizeof(uint64_t) * hw->tqps_num, 0);
 	if (tqp_stats->rcb_tx_ring_pktnum == NULL) {
 		hns3_err(hw, "failed to allocate tx_ring pkt_num.");
 		rte_free(tqp_stats->rcb_rx_ring_pktnum);
-- 
2.33.0


^ permalink raw reply	[flat|nested] 38+ messages in thread

* [PATCH 11/12] net/hns3: fix a segfault from secondary process
  2022-05-19 12:29 [PATCH 00/12] bugfix for hns3 PMD Min Hu (Connor)
                   ` (9 preceding siblings ...)
  2022-05-19 12:29 ` [PATCH 10/12] net/hns3: unify the code wrap style Min Hu (Connor)
@ 2022-05-19 12:29 ` Min Hu (Connor)
  2022-05-19 12:29 ` [PATCH 12/12] net/hns3: fix TM capability incorrectly defined Min Hu (Connor)
                   ` (2 subsequent siblings)
  13 siblings, 0 replies; 38+ messages in thread
From: Min Hu (Connor) @ 2022-05-19 12:29 UTC (permalink / raw)
  To: dev; +Cc: ferruh.yigit, thomas

From: Huisong Li <lihuisong@huawei.com>

If a hns3 device in the secondary process is attached to do probing
operation, 'rx_queues' and 'tx_queues' in dev->data are null in
eth_dev_fp_ops_setup when calling rte_eth_dev_probing_finish. The primary
process calls dev_start to re-setup their fp_ops. But the secondary process
can't call dev_start and has no chance to do it. If the application sends
and receives packets at this time, a segfault will occur. So this patch
uses the MP communication of the PMD to update the fp_ops of the device in
the secondary process.

Fixes: 9e311d8f93b9 ("net/hns3: fix Rx/Tx when fast path operation introduced")
Cc: stable@dpdk.org

Signed-off-by: Huisong Li <lihuisong@huawei.com>
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
---
 drivers/net/hns3/hns3_rxtx.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/net/hns3/hns3_rxtx.c b/drivers/net/hns3/hns3_rxtx.c
index 3f576fbf4b..0dc1d8cb60 100644
--- a/drivers/net/hns3/hns3_rxtx.c
+++ b/drivers/net/hns3/hns3_rxtx.c
@@ -4420,6 +4420,8 @@ hns3_eth_dev_fp_ops_config(const struct rte_eth_dev *dev)
 	fpo[port_id].tx_pkt_prepare = dev->tx_pkt_prepare;
 	fpo[port_id].rx_descriptor_status = dev->rx_descriptor_status;
 	fpo[port_id].tx_descriptor_status = dev->tx_descriptor_status;
+	fpo[port_id].rxq.data = dev->data->rx_queues;
+	fpo[port_id].txq.data = dev->data->tx_queues;
 }
 
 void
-- 
2.33.0


^ permalink raw reply	[flat|nested] 38+ messages in thread

* [PATCH 12/12] net/hns3: fix TM capability incorrectly defined
  2022-05-19 12:29 [PATCH 00/12] bugfix for hns3 PMD Min Hu (Connor)
                   ` (10 preceding siblings ...)
  2022-05-19 12:29 ` [PATCH 11/12] net/hns3: fix a segfault from secondary process Min Hu (Connor)
@ 2022-05-19 12:29 ` Min Hu (Connor)
  2022-05-31 14:55 ` [PATCH 00/12] bugfix for hns3 PMD Andrew Rybchenko
  2022-06-01  3:52 ` [PATCH v2 00/11] " Min Hu (Connor)
  13 siblings, 0 replies; 38+ messages in thread
From: Min Hu (Connor) @ 2022-05-19 12:29 UTC (permalink / raw)
  To: dev; +Cc: ferruh.yigit, thomas

From: Chengwen Feng <fengchengwen@huawei.com>

The TM capability should be bit-19 according to the user manual of
firmware. This patch fixes it.

Fixes: fc18d1b4b85f ("net/hns3: fix traffic management")
Cc: stable@dpdk.org

Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
---
 drivers/net/hns3/hns3_cmd.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/hns3/hns3_cmd.h b/drivers/net/hns3/hns3_cmd.h
index f9addc6069..82c999061d 100644
--- a/drivers/net/hns3/hns3_cmd.h
+++ b/drivers/net/hns3/hns3_cmd.h
@@ -323,7 +323,7 @@ enum HNS3_CAPS_BITS {
 	HNS3_CAPS_UDP_TUNNEL_CSUM_B,
 	HNS3_CAPS_RAS_IMP_B,
 	HNS3_CAPS_RXD_ADV_LAYOUT_B = 15,
-	HNS3_CAPS_TM_B = 17,
+	HNS3_CAPS_TM_B = 19,
 };
 
 /* Capabilities of VF dependent on the PF */
-- 
2.33.0


^ permalink raw reply	[flat|nested] 38+ messages in thread

* Re: [PATCH 05/12] net/hns3: fix an unreasonable memset
  2022-05-19 12:29 ` [PATCH 05/12] net/hns3: fix an unreasonable memset Min Hu (Connor)
@ 2022-05-20  7:58   ` Andrew Rybchenko
  2022-05-20  8:37     ` Min Hu (Connor)
  0 siblings, 1 reply; 38+ messages in thread
From: Andrew Rybchenko @ 2022-05-20  7:58 UTC (permalink / raw)
  To: Min Hu (Connor), dev; +Cc: ferruh.yigit, thomas

On 5/19/22 15:29, Min Hu (Connor) wrote:
> From: Huisong Li <lihuisong@huawei.com>
> 
> This patch fixes an unreasonable memset.
> 
> Fixes: bba636698316 ("net/hns3: support Rx/Tx and related operations")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Huisong Li <lihuisong@huawei.com>
> Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
> ---
>   drivers/net/hns3/hns3_rxtx.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/net/hns3/hns3_rxtx.c b/drivers/net/hns3/hns3_rxtx.c
> index 510802be05..5a2cfe5a54 100644
> --- a/drivers/net/hns3/hns3_rxtx.c
> +++ b/drivers/net/hns3/hns3_rxtx.c
> @@ -776,7 +776,7 @@ hns3vf_reset_all_tqps(struct hns3_hw *hw)
>   	int ret;
>   	uint16_t i;
>   
> -	memset(msg_data, 0, sizeof(uint16_t));
> +	memset(msg_data, 0, sizeof(msg_data));

It looks a bit suspicious. May be it is better to do:
     memset(&msg_data, 0, sizeof(msg_data));
It is pretty common mistake to do:
     memset(p, 0, sizeof(p));
instead of
     memset(p, 0, sizeof(*p));
when p is a pointer.
I realize that msg_data is an array in this case, but
I think it is better to avoid bad pattern in the code.

>   	ret = hns3_send_mbx_msg(hw, HNS3_MBX_QUEUE_RESET, 0, msg_data,
>   				sizeof(msg_data), true, &reset_status,
>   				sizeof(reset_status));


^ permalink raw reply	[flat|nested] 38+ messages in thread

* Re: [PATCH 05/12] net/hns3: fix an unreasonable memset
  2022-05-20  7:58   ` Andrew Rybchenko
@ 2022-05-20  8:37     ` Min Hu (Connor)
  2022-05-20  8:59       ` Andrew Rybchenko
  0 siblings, 1 reply; 38+ messages in thread
From: Min Hu (Connor) @ 2022-05-20  8:37 UTC (permalink / raw)
  To: Andrew Rybchenko, dev; +Cc: ferruh.yigit, thomas

Hi, Andrew ,

在 2022/5/20 15:58, Andrew Rybchenko 写道:
> On 5/19/22 15:29, Min Hu (Connor) wrote:
>> From: Huisong Li <lihuisong@huawei.com>
>>
>> This patch fixes an unreasonable memset.
>>
>> Fixes: bba636698316 ("net/hns3: support Rx/Tx and related operations")
>> Cc: stable@dpdk.org
>>
>> Signed-off-by: Huisong Li <lihuisong@huawei.com>
>> Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
>> ---
>>   drivers/net/hns3/hns3_rxtx.c | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/net/hns3/hns3_rxtx.c b/drivers/net/hns3/hns3_rxtx.c
>> index 510802be05..5a2cfe5a54 100644
>> --- a/drivers/net/hns3/hns3_rxtx.c
>> +++ b/drivers/net/hns3/hns3_rxtx.c
>> @@ -776,7 +776,7 @@ hns3vf_reset_all_tqps(struct hns3_hw *hw)
>>       int ret;
>>       uint16_t i;
>> -    memset(msg_data, 0, sizeof(uint16_t));
>> +    memset(msg_data, 0, sizeof(msg_data));
> 
> It looks a bit suspicious. May be it is better to do:
>      memset(&msg_data, 0, sizeof(msg_data));
I think this is too hard to understand for &msg_data is **p.
maybe it confuse others when use memset to operate level-2 pointer.


> It is pretty common mistake to do:
>      memset(p, 0, sizeof(p));
> instead of
>      memset(p, 0, sizeof(*p));
> when p is a pointer.
> I realize that msg_data is an array in this case, but
> I think it is better to avoid bad pattern in the code.
> 
>>       ret = hns3_send_mbx_msg(hw, HNS3_MBX_QUEUE_RESET, 0, msg_data,
>>                   sizeof(msg_data), true, &reset_status,
>>                   sizeof(reset_status));
> 
> .

^ permalink raw reply	[flat|nested] 38+ messages in thread

* Re: [PATCH 05/12] net/hns3: fix an unreasonable memset
  2022-05-20  8:37     ` Min Hu (Connor)
@ 2022-05-20  8:59       ` Andrew Rybchenko
  2022-05-20  9:14         ` Min Hu (Connor)
  0 siblings, 1 reply; 38+ messages in thread
From: Andrew Rybchenko @ 2022-05-20  8:59 UTC (permalink / raw)
  To: Min Hu (Connor), dev; +Cc: ferruh.yigit, thomas

On 5/20/22 11:37, Min Hu (Connor) wrote:
> Hi, Andrew ,
> 
> 在 2022/5/20 15:58, Andrew Rybchenko 写道:
>> On 5/19/22 15:29, Min Hu (Connor) wrote:
>>> From: Huisong Li <lihuisong@huawei.com>
>>>
>>> This patch fixes an unreasonable memset.
>>>
>>> Fixes: bba636698316 ("net/hns3: support Rx/Tx and related operations")
>>> Cc: stable@dpdk.org
>>>
>>> Signed-off-by: Huisong Li <lihuisong@huawei.com>
>>> Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
>>> ---
>>>   drivers/net/hns3/hns3_rxtx.c | 2 +-
>>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/drivers/net/hns3/hns3_rxtx.c b/drivers/net/hns3/hns3_rxtx.c
>>> index 510802be05..5a2cfe5a54 100644
>>> --- a/drivers/net/hns3/hns3_rxtx.c
>>> +++ b/drivers/net/hns3/hns3_rxtx.c
>>> @@ -776,7 +776,7 @@ hns3vf_reset_all_tqps(struct hns3_hw *hw)
>>>       int ret;
>>>       uint16_t i;
>>> -    memset(msg_data, 0, sizeof(uint16_t));
>>> +    memset(msg_data, 0, sizeof(msg_data));
>>
>> It looks a bit suspicious. May be it is better to do:
>>      memset(&msg_data, 0, sizeof(msg_data));
> I think this is too hard to understand for &msg_data is **p.
> maybe it confuse others when use memset to operate level-2 pointer.

msg_data == &amsg_data
since it is an array

> 
> 
>> It is pretty common mistake to do:
>>      memset(p, 0, sizeof(p));
>> instead of
>>      memset(p, 0, sizeof(*p));
>> when p is a pointer.
>> I realize that msg_data is an array in this case, but
>> I think it is better to avoid bad pattern in the code.
>>
>>>       ret = hns3_send_mbx_msg(hw, HNS3_MBX_QUEUE_RESET, 0, msg_data,
>>>                   sizeof(msg_data), true, &reset_status,
>>>                   sizeof(reset_status));
>>
>> .


^ permalink raw reply	[flat|nested] 38+ messages in thread

* Re: [PATCH 05/12] net/hns3: fix an unreasonable memset
  2022-05-20  8:59       ` Andrew Rybchenko
@ 2022-05-20  9:14         ` Min Hu (Connor)
  2022-05-20 10:43           ` Ferruh Yigit
  0 siblings, 1 reply; 38+ messages in thread
From: Min Hu (Connor) @ 2022-05-20  9:14 UTC (permalink / raw)
  To: Andrew Rybchenko, dev; +Cc: ferruh.yigit, thomas

Hi,Andrew,

在 2022/5/20 16:59, Andrew Rybchenko 写道:
> On 5/20/22 11:37, Min Hu (Connor) wrote:
>> Hi, Andrew ,
>>
>> 在 2022/5/20 15:58, Andrew Rybchenko 写道:
>>> On 5/19/22 15:29, Min Hu (Connor) wrote:
>>>> From: Huisong Li <lihuisong@huawei.com>
>>>>
>>>> This patch fixes an unreasonable memset.
>>>>
>>>> Fixes: bba636698316 ("net/hns3: support Rx/Tx and related operations")
>>>> Cc: stable@dpdk.org
>>>>
>>>> Signed-off-by: Huisong Li <lihuisong@huawei.com>
>>>> Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
>>>> ---
>>>>   drivers/net/hns3/hns3_rxtx.c | 2 +-
>>>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>>>
>>>> diff --git a/drivers/net/hns3/hns3_rxtx.c 
>>>> b/drivers/net/hns3/hns3_rxtx.c
>>>> index 510802be05..5a2cfe5a54 100644
>>>> --- a/drivers/net/hns3/hns3_rxtx.c
>>>> +++ b/drivers/net/hns3/hns3_rxtx.c
>>>> @@ -776,7 +776,7 @@ hns3vf_reset_all_tqps(struct hns3_hw *hw)
>>>>       int ret;
>>>>       uint16_t i;
>>>> -    memset(msg_data, 0, sizeof(uint16_t));
>>>> +    memset(msg_data, 0, sizeof(msg_data));
>>>
>>> It looks a bit suspicious. May be it is better to do:
>>>      memset(&msg_data, 0, sizeof(msg_data));
>> I think this is too hard to understand for &msg_data is **p.
>> maybe it confuse others when use memset to operate level-2 pointer.
> 
> msg_data == &amsg_data
> since it is an array
Yes, you are right, the address of 'msg_data ' is the same
as the address of '&amsg_data'.

But I still think this usage is not common.
like the current code in DPDK:
*****
static int
app_parse_flow_conf(const char *conf_str)
{
	int ret;
	uint32_t vals[5];
	struct flow_conf *pconf;
	uint64_t mask;

	memset(vals, 0, sizeof(vals));
...
*****

how about others's opinion? @Ferruh, @Thomas.

> 
>>
>>
>>> It is pretty common mistake to do:
>>>      memset(p, 0, sizeof(p));
>>> instead of
>>>      memset(p, 0, sizeof(*p));
>>> when p is a pointer.
>>> I realize that msg_data is an array in this case, but
>>> I think it is better to avoid bad pattern in the code.
>>>
>>>>       ret = hns3_send_mbx_msg(hw, HNS3_MBX_QUEUE_RESET, 0, msg_data,
>>>>                   sizeof(msg_data), true, &reset_status,
>>>>                   sizeof(reset_status));
>>>
>>> .
> 
> .

^ permalink raw reply	[flat|nested] 38+ messages in thread

* Re: [PATCH 05/12] net/hns3: fix an unreasonable memset
  2022-05-20  9:14         ` Min Hu (Connor)
@ 2022-05-20 10:43           ` Ferruh Yigit
  2022-05-20 11:00             ` Min Hu (Connor)
  0 siblings, 1 reply; 38+ messages in thread
From: Ferruh Yigit @ 2022-05-20 10:43 UTC (permalink / raw)
  To: Min Hu (Connor), Andrew Rybchenko, dev; +Cc: thomas

On 5/20/2022 10:14 AM, Min Hu (Connor) wrote:
> [CAUTION: External Email]
> 
> Hi,Andrew,
> 
> 在 2022/5/20 16:59, Andrew Rybchenko 写道:
>> On 5/20/22 11:37, Min Hu (Connor) wrote:
>>> Hi, Andrew ,
>>>
>>> 在 2022/5/20 15:58, Andrew Rybchenko 写道:
>>>> On 5/19/22 15:29, Min Hu (Connor) wrote:
>>>>> From: Huisong Li <lihuisong@huawei.com>
>>>>>
>>>>> This patch fixes an unreasonable memset.
>>>>>
>>>>> Fixes: bba636698316 ("net/hns3: support Rx/Tx and related operations")
>>>>> Cc: stable@dpdk.org
>>>>>
>>>>> Signed-off-by: Huisong Li <lihuisong@huawei.com>
>>>>> Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
>>>>> ---
>>>>>   drivers/net/hns3/hns3_rxtx.c | 2 +-
>>>>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>
>>>>> diff --git a/drivers/net/hns3/hns3_rxtx.c
>>>>> b/drivers/net/hns3/hns3_rxtx.c
>>>>> index 510802be05..5a2cfe5a54 100644
>>>>> --- a/drivers/net/hns3/hns3_rxtx.c
>>>>> +++ b/drivers/net/hns3/hns3_rxtx.c
>>>>> @@ -776,7 +776,7 @@ hns3vf_reset_all_tqps(struct hns3_hw *hw)
>>>>>       int ret;
>>>>>       uint16_t i;
>>>>> -    memset(msg_data, 0, sizeof(uint16_t));
>>>>> +    memset(msg_data, 0, sizeof(msg_data));
>>>>
>>>> It looks a bit suspicious. May be it is better to do:
>>>>      memset(&msg_data, 0, sizeof(msg_data));
>>> I think this is too hard to understand for &msg_data is **p.
>>> maybe it confuse others when use memset to operate level-2 pointer.
>>
>> msg_data == &amsg_data
>> since it is an array
> Yes, you are right, the address of 'msg_data ' is the same
> as the address of '&amsg_data'.
> 
> But I still think this usage is not common.
> like the current code in DPDK:
> *****
> static int
> app_parse_flow_conf(const char *conf_str)
> {
>         int ret;
>         uint32_t vals[5];
>         struct flow_conf *pconf;
>         uint64_t mask;
> 
>         memset(vals, 0, sizeof(vals));
> ...
> *****
> 
> how about others's opinion? @Ferruh, @Thomas.
> 

I would use array without address operator, so original patch lgtm.

+1 to main purpose of the patch (to replace 'sizeof(uint16_t)').

^ permalink raw reply	[flat|nested] 38+ messages in thread

* Re: [PATCH 05/12] net/hns3: fix an unreasonable memset
  2022-05-20 10:43           ` Ferruh Yigit
@ 2022-05-20 11:00             ` Min Hu (Connor)
  0 siblings, 0 replies; 38+ messages in thread
From: Min Hu (Connor) @ 2022-05-20 11:00 UTC (permalink / raw)
  To: Ferruh Yigit, Andrew Rybchenko, dev; +Cc: thomas

Hi,

在 2022/5/20 18:43, Ferruh Yigit 写道:
> On 5/20/2022 10:14 AM, Min Hu (Connor) wrote:
>> [CAUTION: External Email]
>>
>> Hi,Andrew,
>>
>> 在 2022/5/20 16:59, Andrew Rybchenko 写道:
>>> On 5/20/22 11:37, Min Hu (Connor) wrote:
>>>> Hi, Andrew ,
>>>>
>>>> 在 2022/5/20 15:58, Andrew Rybchenko 写道:
>>>>> On 5/19/22 15:29, Min Hu (Connor) wrote:
>>>>>> From: Huisong Li <lihuisong@huawei.com>
>>>>>>
>>>>>> This patch fixes an unreasonable memset.
>>>>>>
>>>>>> Fixes: bba636698316 ("net/hns3: support Rx/Tx and related 
>>>>>> operations")
>>>>>> Cc: stable@dpdk.org
>>>>>>
>>>>>> Signed-off-by: Huisong Li <lihuisong@huawei.com>
>>>>>> Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
>>>>>> ---
>>>>>>   drivers/net/hns3/hns3_rxtx.c | 2 +-
>>>>>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>>
>>>>>> diff --git a/drivers/net/hns3/hns3_rxtx.c
>>>>>> b/drivers/net/hns3/hns3_rxtx.c
>>>>>> index 510802be05..5a2cfe5a54 100644
>>>>>> --- a/drivers/net/hns3/hns3_rxtx.c
>>>>>> +++ b/drivers/net/hns3/hns3_rxtx.c
>>>>>> @@ -776,7 +776,7 @@ hns3vf_reset_all_tqps(struct hns3_hw *hw)
>>>>>>       int ret;
>>>>>>       uint16_t i;
>>>>>> -    memset(msg_data, 0, sizeof(uint16_t));
>>>>>> +    memset(msg_data, 0, sizeof(msg_data));
>>>>>
>>>>> It looks a bit suspicious. May be it is better to do:
>>>>>      memset(&msg_data, 0, sizeof(msg_data));
>>>> I think this is too hard to understand for &msg_data is **p.
>>>> maybe it confuse others when use memset to operate level-2 pointer.
>>>
>>> msg_data == &amsg_data
>>> since it is an array
>> Yes, you are right, the address of 'msg_data ' is the same
>> as the address of '&amsg_data'.
>>
>> But I still think this usage is not common.
>> like the current code in DPDK:
>> *****
>> static int
>> app_parse_flow_conf(const char *conf_str)
>> {
>>         int ret;
>>         uint32_t vals[5];
>>         struct flow_conf *pconf;
>>         uint64_t mask;
>>
>>         memset(vals, 0, sizeof(vals));
>> ...
>> *****
>>
>> how about others's opinion? @Ferruh, @Thomas.
>>
> 
> I would use array without address operator, so original patch lgtm.
thanks Ferruh.
> 
> +1 to main purpose of the patch (to replace 'sizeof(uint16_t)').
> .

^ permalink raw reply	[flat|nested] 38+ messages in thread

* Re: [PATCH 00/12] bugfix for hns3 PMD
  2022-05-19 12:29 [PATCH 00/12] bugfix for hns3 PMD Min Hu (Connor)
                   ` (11 preceding siblings ...)
  2022-05-19 12:29 ` [PATCH 12/12] net/hns3: fix TM capability incorrectly defined Min Hu (Connor)
@ 2022-05-31 14:55 ` Andrew Rybchenko
  2022-06-01  3:54   ` Min Hu (Connor)
  2022-06-01  3:52 ` [PATCH v2 00/11] " Min Hu (Connor)
  13 siblings, 1 reply; 38+ messages in thread
From: Andrew Rybchenko @ 2022-05-31 14:55 UTC (permalink / raw)
  To: Min Hu (Connor), dev; +Cc: ferruh.yigit, thomas

On 5/19/22 15:29, Min Hu (Connor) wrote:
> This patch set contains 12 bugfix for hns3 PMD.

The patch series fails to apply to dpdk-next-net/main.
Please, rebase and send v2.

^ permalink raw reply	[flat|nested] 38+ messages in thread

* [PATCH v2 00/11] bugfix for hns3 PMD
  2022-05-19 12:29 [PATCH 00/12] bugfix for hns3 PMD Min Hu (Connor)
                   ` (12 preceding siblings ...)
  2022-05-31 14:55 ` [PATCH 00/12] bugfix for hns3 PMD Andrew Rybchenko
@ 2022-06-01  3:52 ` Min Hu (Connor)
  2022-06-01  3:52   ` [PATCH v2 01/11] net/hns3: add check for deferred start queue when rollback Min Hu (Connor)
                     ` (11 more replies)
  13 siblings, 12 replies; 38+ messages in thread
From: Min Hu (Connor) @ 2022-06-01  3:52 UTC (permalink / raw)
  To: dev

This patch set contains 11 bugfix for hns3 PMD.

Chengwen Feng (1):
  net/hns3: fix TM capability incorrectly defined

Huisong Li (9):
  net/hns3: add check for deferred start queue when rollback
  net/hns3: remove redundant parentheses
  net/hns3: adjust the data type of some variables
  net/hns3: fix an unreasonable memset
  net/hns3: remove duplicate definition
  net/hns3: fix return value for unsupported tuple
  net/hns3: modify a function name
  net/hns3: unify the code wrap style
  net/hns3: fix a segfault from secondary process

Min Hu (Connor) (1):
  net/hns3: fix coverity codecheck

 drivers/net/hns3/hns3_cmd.c       |  2 +-
 drivers/net/hns3/hns3_cmd.h       |  2 +-
 drivers/net/hns3/hns3_common.c    | 14 +++----
 drivers/net/hns3/hns3_dcb.c       |  7 ++--
 drivers/net/hns3/hns3_ethdev.c    | 20 +++++-----
 drivers/net/hns3/hns3_ethdev_vf.c | 23 ++++++------
 drivers/net/hns3/hns3_fdir.c      | 30 +++++++--------
 drivers/net/hns3/hns3_fdir.h      |  2 +-
 drivers/net/hns3/hns3_flow.c      | 25 ++++---------
 drivers/net/hns3/hns3_ptp.c       |  2 +-
 drivers/net/hns3/hns3_regs.c      |  2 +-
 drivers/net/hns3/hns3_rss.c       |  8 ++--
 drivers/net/hns3/hns3_rss.h       |  2 +
 drivers/net/hns3/hns3_rxtx.c      | 62 ++++++++++++++++---------------
 drivers/net/hns3/hns3_rxtx_vec.h  |  4 +-
 drivers/net/hns3/hns3_stats.c     | 28 +++++++-------
 16 files changed, 111 insertions(+), 122 deletions(-)
---
v2:
* delete one patch which is fixed by others.
refer to:
https://patches.dpdk.org/project/dpdk/cover/20220112072808.59713-1-jsoref@gmail.com/
-- 
2.33.0


^ permalink raw reply	[flat|nested] 38+ messages in thread

* [PATCH v2 01/11] net/hns3: add check for deferred start queue when rollback
  2022-06-01  3:52 ` [PATCH v2 00/11] " Min Hu (Connor)
@ 2022-06-01  3:52   ` Min Hu (Connor)
  2022-06-01  3:52   ` [PATCH v2 02/11] net/hns3: remove redundant parentheses Min Hu (Connor)
                     ` (10 subsequent siblings)
  11 siblings, 0 replies; 38+ messages in thread
From: Min Hu (Connor) @ 2022-06-01  3:52 UTC (permalink / raw)
  To: dev

From: Huisong Li <lihuisong@huawei.com>

Driver doesn't allocate mbufs for the deferred start queues, so no need to
free it when rollback.

Signed-off-by: Huisong Li <lihuisong@huawei.com>
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
---
 drivers/net/hns3/hns3_rxtx.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/net/hns3/hns3_rxtx.c b/drivers/net/hns3/hns3_rxtx.c
index 0c91e4721e..1c9648bd52 100644
--- a/drivers/net/hns3/hns3_rxtx.c
+++ b/drivers/net/hns3/hns3_rxtx.c
@@ -1199,6 +1199,9 @@ hns3_init_rx_queues(struct hns3_adapter *hns)
 out:
 	for (j = 0; j < i; j++) {
 		rxq = (struct hns3_rx_queue *)hw->data->rx_queues[j];
+		if (rxq->rx_deferred_start)
+			continue;
+
 		hns3_rx_queue_release_mbufs(rxq);
 	}
 
-- 
2.33.0


^ permalink raw reply	[flat|nested] 38+ messages in thread

* [PATCH v2 02/11] net/hns3: remove redundant parentheses
  2022-06-01  3:52 ` [PATCH v2 00/11] " Min Hu (Connor)
  2022-06-01  3:52   ` [PATCH v2 01/11] net/hns3: add check for deferred start queue when rollback Min Hu (Connor)
@ 2022-06-01  3:52   ` Min Hu (Connor)
  2022-06-01  3:52   ` [PATCH v2 03/11] net/hns3: adjust the data type of some variables Min Hu (Connor)
                     ` (9 subsequent siblings)
  11 siblings, 0 replies; 38+ messages in thread
From: Min Hu (Connor) @ 2022-06-01  3:52 UTC (permalink / raw)
  To: dev

From: Huisong Li <lihuisong@huawei.com>

Remove redundant parentheses.

Signed-off-by: Huisong Li <lihuisong@huawei.com>
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
---
 drivers/net/hns3/hns3_rxtx.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/hns3/hns3_rxtx.c b/drivers/net/hns3/hns3_rxtx.c
index 1c9648bd52..4cba4fd13e 100644
--- a/drivers/net/hns3/hns3_rxtx.c
+++ b/drivers/net/hns3/hns3_rxtx.c
@@ -167,7 +167,7 @@ hns3_fake_rx_queue_release(struct hns3_rx_queue *queue)
 	}
 
 	/* free fake rx queue arrays */
-	if (idx == (hw->fkq_data.nb_fake_rx_queues - 1)) {
+	if (idx == hw->fkq_data.nb_fake_rx_queues - 1) {
 		hw->fkq_data.nb_fake_rx_queues = 0;
 		rte_free(hw->fkq_data.rx_queues);
 		hw->fkq_data.rx_queues = NULL;
@@ -194,7 +194,7 @@ hns3_fake_tx_queue_release(struct hns3_tx_queue *queue)
 	}
 
 	/* free fake tx queue arrays */
-	if (idx == (hw->fkq_data.nb_fake_tx_queues - 1)) {
+	if (idx == hw->fkq_data.nb_fake_tx_queues - 1) {
 		hw->fkq_data.nb_fake_tx_queues = 0;
 		rte_free(hw->fkq_data.tx_queues);
 		hw->fkq_data.tx_queues = NULL;
-- 
2.33.0


^ permalink raw reply	[flat|nested] 38+ messages in thread

* [PATCH v2 03/11] net/hns3: adjust the data type of some variables
  2022-06-01  3:52 ` [PATCH v2 00/11] " Min Hu (Connor)
  2022-06-01  3:52   ` [PATCH v2 01/11] net/hns3: add check for deferred start queue when rollback Min Hu (Connor)
  2022-06-01  3:52   ` [PATCH v2 02/11] net/hns3: remove redundant parentheses Min Hu (Connor)
@ 2022-06-01  3:52   ` Min Hu (Connor)
  2022-06-01  3:52   ` [PATCH v2 04/11] net/hns3: fix an unreasonable memset Min Hu (Connor)
                     ` (8 subsequent siblings)
  11 siblings, 0 replies; 38+ messages in thread
From: Min Hu (Connor) @ 2022-06-01  3:52 UTC (permalink / raw)
  To: dev

From: Huisong Li <lihuisong@huawei.com>

Using the 'int' type and 'uint16_t' type to compare is insecure. This patch
makes them consistent.

Signed-off-by: Huisong Li <lihuisong@huawei.com>
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
---
 drivers/net/hns3/hns3_common.c   |  4 ++--
 drivers/net/hns3/hns3_dcb.c      |  2 +-
 drivers/net/hns3/hns3_ethdev.c   |  2 +-
 drivers/net/hns3/hns3_regs.c     |  2 +-
 drivers/net/hns3/hns3_rss.c      |  2 +-
 drivers/net/hns3/hns3_rxtx.c     | 23 ++++++++++++-----------
 drivers/net/hns3/hns3_rxtx_vec.h |  4 ++--
 7 files changed, 20 insertions(+), 19 deletions(-)

diff --git a/drivers/net/hns3/hns3_common.c b/drivers/net/hns3/hns3_common.c
index dcdc609654..221d4ccec3 100644
--- a/drivers/net/hns3/hns3_common.c
+++ b/drivers/net/hns3/hns3_common.c
@@ -475,7 +475,7 @@ hns3_configure_all_mac_addr(struct hns3_adapter *hns, bool del)
 	struct rte_ether_addr *addr;
 	uint16_t mac_addrs_capa;
 	int ret = 0;
-	int i;
+	uint16_t i;
 
 	mac_addrs_capa =
 		hns->is_vf ? HNS3_VF_UC_MACADDR_NUM : HNS3_UC_MACADDR_NUM;
@@ -645,8 +645,8 @@ int
 hns3_init_ring_with_vector(struct hns3_hw *hw)
 {
 	uint16_t vec;
+	uint16_t i;
 	int ret;
-	int i;
 
 	/*
 	 * In hns3 network engine, vector 0 is always the misc interrupt of this
diff --git a/drivers/net/hns3/hns3_dcb.c b/drivers/net/hns3/hns3_dcb.c
index 73693786d1..04d7f530ef 100644
--- a/drivers/net/hns3/hns3_dcb.c
+++ b/drivers/net/hns3/hns3_dcb.c
@@ -628,7 +628,7 @@ hns3_set_rss_size(struct hns3_hw *hw, uint16_t nb_rx_q)
 	struct hns3_rss_conf *rss_cfg = &hw->rss_info;
 	uint16_t rx_qnum_per_tc;
 	uint16_t used_rx_queues;
-	int i;
+	uint16_t i;
 
 	rx_qnum_per_tc = nb_rx_q / hw->num_tc;
 	if (rx_qnum_per_tc > hw->rss_size_max) {
diff --git a/drivers/net/hns3/hns3_ethdev.c b/drivers/net/hns3/hns3_ethdev.c
index 0b565a5614..3cffacdd6a 100644
--- a/drivers/net/hns3/hns3_ethdev.c
+++ b/drivers/net/hns3/hns3_ethdev.c
@@ -2928,8 +2928,8 @@ hns3_map_tqps_to_func(struct hns3_hw *hw, uint16_t func_id, uint16_t tqp_pid,
 static int
 hns3_map_tqp(struct hns3_hw *hw)
 {
+	uint16_t i;
 	int ret;
-	int i;
 
 	/*
 	 * In current version, VF is not supported when PF is driven by DPDK
diff --git a/drivers/net/hns3/hns3_regs.c b/drivers/net/hns3/hns3_regs.c
index 86a4cf74d5..6778e4cfc2 100644
--- a/drivers/net/hns3/hns3_regs.c
+++ b/drivers/net/hns3/hns3_regs.c
@@ -294,8 +294,8 @@ hns3_direct_access_regs(struct hns3_hw *hw, uint32_t *data)
 	struct hns3_adapter *hns = HNS3_DEV_HW_TO_ADAPTER(hw);
 	uint32_t *origin_data_ptr = data;
 	uint32_t reg_offset;
+	uint16_t i, j;
 	int reg_num;
-	int i, j;
 
 	/* fetching per-PF registers values from PF PCIe register space */
 	reg_num = sizeof(cmdq_reg_addrs) / sizeof(uint32_t);
diff --git a/drivers/net/hns3/hns3_rss.c b/drivers/net/hns3/hns3_rss.c
index d376486a1d..4c546c9363 100644
--- a/drivers/net/hns3/hns3_rss.c
+++ b/drivers/net/hns3/hns3_rss.c
@@ -631,7 +631,7 @@ hns3_rss_set_default_args(struct hns3_hw *hw)
 {
 	struct hns3_rss_conf *rss_cfg = &hw->rss_info;
 	uint16_t queue_num = hw->alloc_rss_size;
-	int i;
+	uint16_t i;
 
 	/* Default hash algorithm */
 	rss_cfg->conf.func = RTE_ETH_HASH_FUNCTION_TOEPLITZ;
diff --git a/drivers/net/hns3/hns3_rxtx.c b/drivers/net/hns3/hns3_rxtx.c
index 4cba4fd13e..be4ab16dcc 100644
--- a/drivers/net/hns3/hns3_rxtx.c
+++ b/drivers/net/hns3/hns3_rxtx.c
@@ -387,7 +387,7 @@ hns3_enable_all_queues(struct hns3_hw *hw, bool en)
 	struct hns3_tx_queue *txq;
 	uint32_t rcb_reg;
 	void *tqp_base;
-	int i;
+	uint16_t i;
 
 	for (i = 0; i < hw->cfg_max_queues; i++) {
 		if (hns3_dev_get_support(hw, INDEP_TXRX)) {
@@ -733,8 +733,8 @@ hns3pf_reset_all_tqps(struct hns3_hw *hw)
 #define HNS3_RESET_RCB_NOT_SUPPORT	0U
 #define HNS3_RESET_ALL_TQP_SUCCESS	1U
 	uint8_t reset_status;
+	uint16_t i;
 	int ret;
-	int i;
 
 	ret = hns3_reset_rcb_cmd(hw, &reset_status);
 	if (ret)
@@ -771,7 +771,7 @@ hns3vf_reset_all_tqps(struct hns3_hw *hw)
 	uint8_t reset_status;
 	uint8_t msg_data[2];
 	int ret;
-	int i;
+	uint16_t i;
 
 	memset(msg_data, 0, sizeof(uint16_t));
 	ret = hns3_send_mbx_msg(hw, HNS3_MBX_QUEUE_RESET, 0, msg_data,
@@ -803,7 +803,8 @@ int
 hns3_reset_all_tqps(struct hns3_adapter *hns)
 {
 	struct hns3_hw *hw = &hns->hw;
-	int ret, i;
+	uint16_t i;
+	int ret;
 
 	/* Disable all queues before reset all queues */
 	for (i = 0; i < hw->cfg_max_queues; i++) {
@@ -1034,7 +1035,7 @@ hns3_dev_all_rx_queue_intr_enable(struct hns3_hw *hw, bool en)
 {
 	struct rte_eth_dev *dev = &rte_eth_devices[hw->data->port_id];
 	uint16_t nb_rx_q = hw->data->nb_rx_queues;
-	int i;
+	uint16_t i;
 
 	if (dev->data->dev_conf.intr_conf.rxq == 0)
 		return;
@@ -1118,7 +1119,7 @@ static void
 hns3_init_txq(struct hns3_tx_queue *txq)
 {
 	struct hns3_desc *desc;
-	int i;
+	uint16_t i;
 
 	/* Clear tx bd */
 	desc = txq->tx_ring;
@@ -1142,7 +1143,7 @@ hns3_init_tx_ring_tc(struct hns3_adapter *hns)
 
 	for (i = 0; i < HNS3_MAX_TC_NUM; i++) {
 		struct hns3_tc_queue_info *tc_queue = &hw->tc_queue[i];
-		int j;
+		uint16_t j;
 
 		if (!tc_queue->enable)
 			continue;
@@ -1439,7 +1440,7 @@ hns3_alloc_txq_and_dma_zone(struct rte_eth_dev *dev,
 	struct hns3_tx_queue *txq;
 	struct hns3_desc *desc;
 	unsigned int tx_desc;
-	int i;
+	uint16_t i;
 
 	txq = rte_zmalloc_socket(q_info->type, sizeof(struct hns3_tx_queue),
 				 RTE_CACHE_LINE_SIZE, q_info->socket_id);
@@ -1676,7 +1677,7 @@ hns3_dev_release_mbufs(struct hns3_adapter *hns)
 	struct rte_eth_dev_data *dev_data = hns->hw.data;
 	struct hns3_rx_queue *rxq;
 	struct hns3_tx_queue *txq;
-	int i;
+	uint16_t i;
 
 	if (dev_data->rx_queues)
 		for (i = 0; i < dev_data->nb_rx_queues; i++) {
@@ -3083,7 +3084,7 @@ hns3_tx_free_useless_buffer(struct hns3_tx_queue *txq)
 	uint16_t tx_next_use = txq->next_to_use;
 	struct hns3_entry *tx_entry = &txq->sw_ring[tx_next_clean];
 	struct hns3_desc *desc = &txq->tx_ring[tx_next_clean];
-	int i;
+	uint16_t i;
 
 	if (tx_next_use >= tx_next_clean &&
 	    tx_next_use < tx_next_clean + txq->tx_rs_thresh)
@@ -3981,7 +3982,7 @@ hns3_tx_free_buffer_simple(struct hns3_tx_queue *txq)
 	struct hns3_entry *tx_entry;
 	struct hns3_desc *desc;
 	uint16_t tx_next_clean;
-	int i;
+	uint16_t i;
 
 	while (1) {
 		if (HNS3_GET_TX_QUEUE_PEND_BD_NUM(txq) < txq->tx_rs_thresh)
diff --git a/drivers/net/hns3/hns3_rxtx_vec.h b/drivers/net/hns3/hns3_rxtx_vec.h
index 4985a7cae8..d13f18627d 100644
--- a/drivers/net/hns3/hns3_rxtx_vec.h
+++ b/drivers/net/hns3/hns3_rxtx_vec.h
@@ -15,7 +15,7 @@ hns3_tx_bulk_free_buffers(struct hns3_tx_queue *txq)
 	struct hns3_entry *tx_entry;
 	struct rte_mbuf *m;
 	int nb_free = 0;
-	int i;
+	uint16_t i;
 
 	tx_entry = &txq->sw_ring[txq->next_to_clean];
 	if (txq->mbuf_fast_free_en) {
@@ -56,7 +56,7 @@ static inline void
 hns3_tx_free_buffers(struct hns3_tx_queue *txq)
 {
 	struct hns3_desc *tx_desc;
-	int i;
+	uint16_t i;
 
 	/*
 	 * All mbufs can be released only when the VLD bits of all
-- 
2.33.0


^ permalink raw reply	[flat|nested] 38+ messages in thread

* [PATCH v2 04/11] net/hns3: fix an unreasonable memset
  2022-06-01  3:52 ` [PATCH v2 00/11] " Min Hu (Connor)
                     ` (2 preceding siblings ...)
  2022-06-01  3:52   ` [PATCH v2 03/11] net/hns3: adjust the data type of some variables Min Hu (Connor)
@ 2022-06-01  3:52   ` Min Hu (Connor)
  2022-06-01  3:52   ` [PATCH v2 05/11] net/hns3: remove duplicate definition Min Hu (Connor)
                     ` (7 subsequent siblings)
  11 siblings, 0 replies; 38+ messages in thread
From: Min Hu (Connor) @ 2022-06-01  3:52 UTC (permalink / raw)
  To: dev

From: Huisong Li <lihuisong@huawei.com>

This patch fixes an unreasonable memset.

Fixes: bba636698316 ("net/hns3: support Rx/Tx and related operations")
Cc: stable@dpdk.org

Signed-off-by: Huisong Li <lihuisong@huawei.com>
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
---
 drivers/net/hns3/hns3_rxtx.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/hns3/hns3_rxtx.c b/drivers/net/hns3/hns3_rxtx.c
index be4ab16dcc..dcb1cdf168 100644
--- a/drivers/net/hns3/hns3_rxtx.c
+++ b/drivers/net/hns3/hns3_rxtx.c
@@ -773,7 +773,7 @@ hns3vf_reset_all_tqps(struct hns3_hw *hw)
 	int ret;
 	uint16_t i;
 
-	memset(msg_data, 0, sizeof(uint16_t));
+	memset(msg_data, 0, sizeof(msg_data));
 	ret = hns3_send_mbx_msg(hw, HNS3_MBX_QUEUE_RESET, 0, msg_data,
 				sizeof(msg_data), true, &reset_status,
 				sizeof(reset_status));
-- 
2.33.0


^ permalink raw reply	[flat|nested] 38+ messages in thread

* [PATCH v2 05/11] net/hns3: remove duplicate definition
  2022-06-01  3:52 ` [PATCH v2 00/11] " Min Hu (Connor)
                     ` (3 preceding siblings ...)
  2022-06-01  3:52   ` [PATCH v2 04/11] net/hns3: fix an unreasonable memset Min Hu (Connor)
@ 2022-06-01  3:52   ` Min Hu (Connor)
  2022-06-01  3:52   ` [PATCH v2 06/11] net/hns3: fix coverity codecheck Min Hu (Connor)
                     ` (6 subsequent siblings)
  11 siblings, 0 replies; 38+ messages in thread
From: Min Hu (Connor) @ 2022-06-01  3:52 UTC (permalink / raw)
  To: dev

From: Huisong Li <lihuisong@huawei.com>

The default hash key array is defined twice. Let's remove the extra one.

Fixes: c37ca66f2b27 ("net/hns3: support RSS")
Cc: stable@dpdk.org

Signed-off-by: Huisong Li <lihuisong@huawei.com>
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
---
 drivers/net/hns3/hns3_flow.c | 9 ---------
 drivers/net/hns3/hns3_rss.c  | 6 ++----
 drivers/net/hns3/hns3_rss.h  | 2 ++
 3 files changed, 4 insertions(+), 13 deletions(-)

diff --git a/drivers/net/hns3/hns3_flow.c b/drivers/net/hns3/hns3_flow.c
index 86ebbf69b6..ca9edc5244 100644
--- a/drivers/net/hns3/hns3_flow.c
+++ b/drivers/net/hns3/hns3_flow.c
@@ -10,15 +10,6 @@
 #include "hns3_logs.h"
 #include "hns3_flow.h"
 
-/* Default default keys */
-static uint8_t hns3_hash_key[] = {
-	0x6D, 0x5A, 0x56, 0xDA, 0x25, 0x5B, 0x0E, 0xC2,
-	0x41, 0x67, 0x25, 0x3D, 0x43, 0xA3, 0x8F, 0xB0,
-	0xD0, 0xCA, 0x2B, 0xCB, 0xAE, 0x7B, 0x30, 0xB4,
-	0x77, 0xCB, 0x2D, 0xA3, 0x80, 0x30, 0xF2, 0x0C,
-	0x6A, 0x42, 0xB7, 0x3B, 0xBE, 0xAC, 0x01, 0xFA
-};
-
 static const uint8_t full_mask[VNI_OR_TNI_LEN] = { 0xFF, 0xFF, 0xFF };
 static const uint8_t zero_mask[VNI_OR_TNI_LEN] = { 0x00, 0x00, 0x00 };
 
diff --git a/drivers/net/hns3/hns3_rss.c b/drivers/net/hns3/hns3_rss.c
index 4c546c9363..1003daf03e 100644
--- a/drivers/net/hns3/hns3_rss.c
+++ b/drivers/net/hns3/hns3_rss.c
@@ -9,10 +9,8 @@
 #include "hns3_ethdev.h"
 #include "hns3_logs.h"
 
-/*
- * The hash key used for rss initialization.
- */
-static const uint8_t hns3_hash_key[] = {
+/* Default hash keys */
+const uint8_t hns3_hash_key[] = {
 	0x6D, 0x5A, 0x56, 0xDA, 0x25, 0x5B, 0x0E, 0xC2,
 	0x41, 0x67, 0x25, 0x3D, 0x43, 0xA3, 0x8F, 0xB0,
 	0xD0, 0xCA, 0x2B, 0xCB, 0xAE, 0x7B, 0x30, 0xB4,
diff --git a/drivers/net/hns3/hns3_rss.h b/drivers/net/hns3/hns3_rss.h
index 55d5718ffc..56627cbd4c 100644
--- a/drivers/net/hns3/hns3_rss.h
+++ b/drivers/net/hns3/hns3_rss.h
@@ -88,6 +88,8 @@ static inline uint32_t roundup_pow_of_two(uint32_t x)
 	return 1UL << fls(x - 1);
 }
 
+extern const uint8_t hns3_hash_key[];
+
 struct hns3_adapter;
 
 int hns3_dev_rss_hash_update(struct rte_eth_dev *dev,
-- 
2.33.0


^ permalink raw reply	[flat|nested] 38+ messages in thread

* [PATCH v2 06/11] net/hns3: fix coverity codecheck
  2022-06-01  3:52 ` [PATCH v2 00/11] " Min Hu (Connor)
                     ` (4 preceding siblings ...)
  2022-06-01  3:52   ` [PATCH v2 05/11] net/hns3: remove duplicate definition Min Hu (Connor)
@ 2022-06-01  3:52   ` Min Hu (Connor)
  2022-06-01  8:32     ` Andrew Rybchenko
  2022-06-01  3:52   ` [PATCH v2 07/11] net/hns3: fix return value for unsupported tuple Min Hu (Connor)
                     ` (5 subsequent siblings)
  11 siblings, 1 reply; 38+ messages in thread
From: Min Hu (Connor) @ 2022-06-01  3:52 UTC (permalink / raw)
  To: dev

In bitwise operation, "val" should be an unsigned type. This patch
fixed it.

Fixes: 38b539d96eb6 ("net/hns3: support IEEE 1588 PTP")
Cc: stable@dpdk.org

Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
---
 drivers/net/hns3/hns3_ptp.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/hns3/hns3_ptp.c b/drivers/net/hns3/hns3_ptp.c
index 1442241a4e..0b0061bba5 100644
--- a/drivers/net/hns3/hns3_ptp.c
+++ b/drivers/net/hns3/hns3_ptp.c
@@ -81,7 +81,7 @@ hns3_timesync_configure(struct hns3_adapter *hns, bool en)
 	struct hns3_hw *hw = &hns->hw;
 	struct hns3_pf *pf = &hns->pf;
 	struct hns3_cmd_desc desc;
-	int val;
+	uint32_t val;
 	int ret;
 
 	hns3_cmd_setup_basic_desc(&desc, HNS3_OPC_CFG_PTP_MODE, false);
-- 
2.33.0


^ permalink raw reply	[flat|nested] 38+ messages in thread

* [PATCH v2 07/11] net/hns3: fix return value for unsupported tuple
  2022-06-01  3:52 ` [PATCH v2 00/11] " Min Hu (Connor)
                     ` (5 preceding siblings ...)
  2022-06-01  3:52   ` [PATCH v2 06/11] net/hns3: fix coverity codecheck Min Hu (Connor)
@ 2022-06-01  3:52   ` Min Hu (Connor)
  2022-06-01  3:52   ` [PATCH v2 08/11] net/hns3: modify a function name Min Hu (Connor)
                     ` (4 subsequent siblings)
  11 siblings, 0 replies; 38+ messages in thread
From: Min Hu (Connor) @ 2022-06-01  3:52 UTC (permalink / raw)
  To: dev

From: Huisong Li <lihuisong@huawei.com>

Driver should return false for unsupported tuple. This patch fixes it.

Fixes: 18a4b4c3fa80 ("net/hns3: add default to switch when parsing fd tuple")
Cc: stable@dpdk.org

Signed-off-by: Huisong Li <lihuisong@huawei.com>
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
---
 drivers/net/hns3/hns3_fdir.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/hns3/hns3_fdir.c b/drivers/net/hns3/hns3_fdir.c
index 2a7978ac07..a0d6598e57 100644
--- a/drivers/net/hns3/hns3_fdir.c
+++ b/drivers/net/hns3/hns3_fdir.c
@@ -631,7 +631,7 @@ static bool hns3_fd_convert_tuple(struct hns3_hw *hw,
 		break;
 	default:
 		hns3_warn(hw, "not support tuple of (%u)", tuple);
-		break;
+		return false;
 	}
 	return true;
 }
-- 
2.33.0


^ permalink raw reply	[flat|nested] 38+ messages in thread

* [PATCH v2 08/11] net/hns3: modify a function name
  2022-06-01  3:52 ` [PATCH v2 00/11] " Min Hu (Connor)
                     ` (6 preceding siblings ...)
  2022-06-01  3:52   ` [PATCH v2 07/11] net/hns3: fix return value for unsupported tuple Min Hu (Connor)
@ 2022-06-01  3:52   ` Min Hu (Connor)
  2022-06-01  3:52   ` [PATCH v2 09/11] net/hns3: unify the code wrap style Min Hu (Connor)
                     ` (3 subsequent siblings)
  11 siblings, 0 replies; 38+ messages in thread
From: Min Hu (Connor) @ 2022-06-01  3:52 UTC (permalink / raw)
  To: dev

From: Huisong Li <lihuisong@huawei.com>

The meaning of the "hns3_get_count" function is not precise enough. This
patch changes from "hns3_get_count" to "hns3_fd_get_count".

Signed-off-by: Huisong Li <lihuisong@huawei.com>
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
---
 drivers/net/hns3/hns3_fdir.c | 2 +-
 drivers/net/hns3/hns3_fdir.h | 2 +-
 drivers/net/hns3/hns3_flow.c | 6 +++---
 3 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/net/hns3/hns3_fdir.c b/drivers/net/hns3/hns3_fdir.c
index a0d6598e57..762b89a51e 100644
--- a/drivers/net/hns3/hns3_fdir.c
+++ b/drivers/net/hns3/hns3_fdir.c
@@ -1099,7 +1099,7 @@ int hns3_restore_all_fdir_filter(struct hns3_adapter *hns)
 	return 0;
 }
 
-int hns3_get_count(struct hns3_hw *hw, uint32_t id, uint64_t *value)
+int hns3_fd_get_count(struct hns3_hw *hw, uint32_t id, uint64_t *value)
 {
 	struct hns3_fd_get_cnt_cmd *req;
 	struct hns3_cmd_desc desc;
diff --git a/drivers/net/hns3/hns3_fdir.h b/drivers/net/hns3/hns3_fdir.h
index 8d588ffef3..d81f04a3f3 100644
--- a/drivers/net/hns3/hns3_fdir.h
+++ b/drivers/net/hns3/hns3_fdir.h
@@ -184,7 +184,7 @@ void hns3_fdir_filter_uninit(struct hns3_adapter *hns);
 int hns3_fdir_filter_program(struct hns3_adapter *hns,
 			     struct hns3_fdir_rule *rule, bool del);
 int hns3_clear_all_fdir_filter(struct hns3_adapter *hns);
-int hns3_get_count(struct hns3_hw *hw, uint32_t id, uint64_t *value);
+int hns3_fd_get_count(struct hns3_hw *hw, uint32_t id, uint64_t *value);
 int hns3_restore_all_fdir_filter(struct hns3_adapter *hns);
 
 #endif /* _HNS3_FDIR_H_ */
diff --git a/drivers/net/hns3/hns3_flow.c b/drivers/net/hns3/hns3_flow.c
index ca9edc5244..1bd4ac160d 100644
--- a/drivers/net/hns3/hns3_flow.c
+++ b/drivers/net/hns3/hns3_flow.c
@@ -164,13 +164,13 @@ hns3_counter_new(struct rte_eth_dev *dev, uint32_t indirect, uint32_t id,
 				"Counter id is used, indirect flag not match");
 		/* Clear the indirect counter on first use. */
 		if (cnt->indirect && cnt->ref_cnt == 1)
-			(void)hns3_get_count(hw, id, &value);
+			(void)hns3_fd_get_count(hw, id, &value);
 		cnt->ref_cnt++;
 		return 0;
 	}
 
 	/* Clear the counter by read ops because the counter is read-clear */
-	ret = hns3_get_count(hw, id, &value);
+	ret = hns3_fd_get_count(hw, id, &value);
 	if (ret)
 		return rte_flow_error_set(error, EIO,
 					  RTE_FLOW_ERROR_TYPE_HANDLE, NULL,
@@ -210,7 +210,7 @@ hns3_counter_query(struct rte_eth_dev *dev, struct rte_flow *flow,
 					  RTE_FLOW_ERROR_TYPE_HANDLE, NULL,
 					  "Can't find counter id");
 
-	ret = hns3_get_count(&hns->hw, flow->counter_id, &value);
+	ret = hns3_fd_get_count(&hns->hw, flow->counter_id, &value);
 	if (ret) {
 		rte_flow_error_set(error, -ret, RTE_FLOW_ERROR_TYPE_HANDLE,
 				   NULL, "Read counter fail.");
-- 
2.33.0


^ permalink raw reply	[flat|nested] 38+ messages in thread

* [PATCH v2 09/11] net/hns3: unify the code wrap style
  2022-06-01  3:52 ` [PATCH v2 00/11] " Min Hu (Connor)
                     ` (7 preceding siblings ...)
  2022-06-01  3:52   ` [PATCH v2 08/11] net/hns3: modify a function name Min Hu (Connor)
@ 2022-06-01  3:52   ` Min Hu (Connor)
  2022-06-01  3:52   ` [PATCH v2 10/11] net/hns3: fix a segfault from secondary process Min Hu (Connor)
                     ` (2 subsequent siblings)
  11 siblings, 0 replies; 38+ messages in thread
From: Min Hu (Connor) @ 2022-06-01  3:52 UTC (permalink / raw)
  To: dev

From: Huisong Li <lihuisong@huawei.com>

This patch unifies the code wrap style.

Signed-off-by: Huisong Li <lihuisong@huawei.com>
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
---
 drivers/net/hns3/hns3_cmd.c       |  2 +-
 drivers/net/hns3/hns3_common.c    | 10 +++++-----
 drivers/net/hns3/hns3_dcb.c       |  5 ++---
 drivers/net/hns3/hns3_ethdev.c    | 18 ++++++++----------
 drivers/net/hns3/hns3_ethdev_vf.c | 23 +++++++++++------------
 drivers/net/hns3/hns3_fdir.c      | 26 +++++++++++++-------------
 drivers/net/hns3/hns3_flow.c      | 10 ++++------
 drivers/net/hns3/hns3_rxtx.c      | 28 +++++++++++++---------------
 drivers/net/hns3/hns3_stats.c     | 28 ++++++++++++++--------------
 9 files changed, 71 insertions(+), 79 deletions(-)

diff --git a/drivers/net/hns3/hns3_cmd.c b/drivers/net/hns3/hns3_cmd.c
index 5dc874fd7a..eadc15093f 100644
--- a/drivers/net/hns3/hns3_cmd.c
+++ b/drivers/net/hns3/hns3_cmd.c
@@ -108,7 +108,7 @@ hns3_alloc_cmd_queue(struct hns3_hw *hw, int ring_type)
 	ret = hns3_alloc_cmd_desc(hw, ring);
 	if (ret)
 		hns3_err(hw, "descriptor %s alloc error %d",
-			    (ring_type == HNS3_TYPE_CSQ) ? "CSQ" : "CRQ", ret);
+			 (ring_type == HNS3_TYPE_CSQ) ? "CSQ" : "CRQ", ret);
 
 	return ret;
 }
diff --git a/drivers/net/hns3/hns3_common.c b/drivers/net/hns3/hns3_common.c
index 221d4ccec3..424205356e 100644
--- a/drivers/net/hns3/hns3_common.c
+++ b/drivers/net/hns3/hns3_common.c
@@ -604,7 +604,7 @@ hns3_init_mac_addrs(struct rte_eth_dev *dev)
 				0);
 	if (dev->data->mac_addrs == NULL) {
 		hns3_err(hw, "failed to allocate %zx bytes needed to store MAC addresses",
-			     sizeof(struct rte_ether_addr) * mac_addrs_capa);
+			 sizeof(struct rte_ether_addr) * mac_addrs_capa);
 		return -ENOMEM;
 	}
 
@@ -680,16 +680,16 @@ hns3_init_ring_with_vector(struct hns3_hw *hw)
 		ret = hw->ops.bind_ring_with_vector(hw, vec, false,
 						    HNS3_RING_TYPE_TX, i);
 		if (ret) {
-			PMD_INIT_LOG(ERR, "fail to unbind TX ring(%d) with "
-					  "vector: %u, ret=%d", i, vec, ret);
+			PMD_INIT_LOG(ERR, "fail to unbind TX ring(%d) with vector: %u, ret=%d",
+				     i, vec, ret);
 			return ret;
 		}
 
 		ret = hw->ops.bind_ring_with_vector(hw, vec, false,
 						    HNS3_RING_TYPE_RX, i);
 		if (ret) {
-			PMD_INIT_LOG(ERR, "fail to unbind RX ring(%d) with "
-					  "vector: %u, ret=%d", i, vec, ret);
+			PMD_INIT_LOG(ERR, "fail to unbind RX ring(%d) with vector: %u, ret=%d",
+				     i, vec, ret);
 			return ret;
 		}
 	}
diff --git a/drivers/net/hns3/hns3_dcb.c b/drivers/net/hns3/hns3_dcb.c
index 04d7f530ef..af045b22f7 100644
--- a/drivers/net/hns3/hns3_dcb.c
+++ b/drivers/net/hns3/hns3_dcb.c
@@ -876,9 +876,8 @@ hns3_dcb_pri_tc_base_dwrr_cfg(struct hns3_hw *hw)
 
 		ret = hns3_dcb_pri_weight_cfg(hw, i, dwrr);
 		if (ret) {
-			hns3_err(hw,
-			       "fail to send priority weight cmd: %d, ret = %d",
-			       i, ret);
+			hns3_err(hw, "fail to send priority weight cmd: %d, ret = %d",
+				 i, ret);
 			return ret;
 		}
 
diff --git a/drivers/net/hns3/hns3_ethdev.c b/drivers/net/hns3/hns3_ethdev.c
index 3cffacdd6a..6c77c8b964 100644
--- a/drivers/net/hns3/hns3_ethdev.c
+++ b/drivers/net/hns3/hns3_ethdev.c
@@ -1626,7 +1626,7 @@ hns3_set_default_mac_addr(struct rte_eth_dev *dev,
 	ret = hw->ops.del_uc_mac_addr(hw, oaddr);
 	if (ret) {
 		hns3_ether_format_addr(mac_str, RTE_ETHER_ADDR_FMT_SIZE,
-				      oaddr);
+				       oaddr);
 		hns3_warn(hw, "Remove old uc mac address(%s) fail: %d",
 			  mac_str, ret);
 
@@ -1658,7 +1658,7 @@ hns3_set_default_mac_addr(struct rte_eth_dev *dev,
 	ret_val = hw->ops.del_uc_mac_addr(hw, mac_addr);
 	if (ret_val) {
 		hns3_ether_format_addr(mac_str, RTE_ETHER_ADDR_FMT_SIZE,
-				      mac_addr);
+				       mac_addr);
 		hns3_warn(hw,
 			  "Failed to roll back to del setted mac addr(%s): %d",
 			  mac_str, ret_val);
@@ -1669,7 +1669,7 @@ hns3_set_default_mac_addr(struct rte_eth_dev *dev,
 	if (ret_val) {
 		hns3_ether_format_addr(mac_str, RTE_ETHER_ADDR_FMT_SIZE, oaddr);
 		hns3_warn(hw, "Failed to restore old uc mac addr(%s): %d",
-				  mac_str, ret_val);
+			  mac_str, ret_val);
 	}
 	rte_spinlock_unlock(&hw->lock);
 
@@ -1746,7 +1746,7 @@ hns3_add_mc_mac_addr(struct hns3_hw *hw, struct rte_ether_addr *mac_addr)
 		if (ret == -ENOSPC)
 			hns3_err(hw, "mc mac vlan table is full");
 		hns3_ether_format_addr(mac_str, RTE_ETHER_ADDR_FMT_SIZE,
-				      mac_addr);
+				       mac_addr);
 		hns3_err(hw, "failed to add mc mac addr(%s): %d", mac_str, ret);
 	}
 
@@ -2675,9 +2675,8 @@ hns3_check_dev_specifications(struct hns3_hw *hw)
 {
 	if (hw->rss_ind_tbl_size == 0 ||
 	    hw->rss_ind_tbl_size > HNS3_RSS_IND_TBL_SIZE_MAX) {
-		hns3_err(hw, "the size of hash lookup table configured (%u)"
-			      " exceeds the maximum(%u)", hw->rss_ind_tbl_size,
-			      HNS3_RSS_IND_TBL_SIZE_MAX);
+		hns3_err(hw, "the size of hash lookup table configured (%u) exceeds the maximum(%u)",
+			 hw->rss_ind_tbl_size, HNS3_RSS_IND_TBL_SIZE_MAX);
 		return -EINVAL;
 	}
 
@@ -3915,7 +3914,7 @@ hns3_dev_promiscuous_enable(struct rte_eth_dev *dev)
 		ret = hns3_enable_vlan_filter(hns, false);
 		if (ret) {
 			hns3_err(hw, "failed to enable promiscuous mode due to "
-				     "failure to disable vlan filter, ret = %d",
+				 "failure to disable vlan filter, ret = %d",
 				 ret);
 			err = hns3_set_promisc_mode(hw, false, allmulti);
 			if (err)
@@ -5992,8 +5991,7 @@ hns3_reset_service(void *param)
 		timersub(&tv, &tv_start, &tv_delta);
 		msec = hns3_clock_calctime_ms(&tv_delta);
 		if (msec > HNS3_RESET_PROCESS_MS)
-			hns3_err(hw, "%d handle long time delta %" PRIu64
-				     " ms time=%ld.%.6ld",
+			hns3_err(hw, "%d handle long time delta %" PRIu64 " ms time=%ld.%.6ld",
 				 hw->reset.level, msec,
 				 tv.tv_sec, tv.tv_usec);
 		if (ret == -EAGAIN)
diff --git a/drivers/net/hns3/hns3_ethdev_vf.c b/drivers/net/hns3/hns3_ethdev_vf.c
index 589de0ab3a..bebfaa6417 100644
--- a/drivers/net/hns3/hns3_ethdev_vf.c
+++ b/drivers/net/hns3/hns3_ethdev_vf.c
@@ -141,7 +141,7 @@ hns3vf_enable_msix(const struct rte_pci_device *device, bool op)
 	pos = hns3vf_find_pci_capability(device, PCI_CAP_ID_MSIX);
 	if (pos) {
 		ret = rte_pci_read_config(device, &control, sizeof(control),
-				    (pos + PCI_MSIX_FLAGS));
+					  (pos + PCI_MSIX_FLAGS));
 		if (ret < 0) {
 			PMD_INIT_LOG(ERR, "Failed to read PCI offset 0x%x",
 				     (pos + PCI_MSIX_FLAGS));
@@ -153,10 +153,10 @@ hns3vf_enable_msix(const struct rte_pci_device *device, bool op)
 		else
 			control &= ~PCI_MSIX_FLAGS_ENABLE;
 		ret = rte_pci_write_config(device, &control, sizeof(control),
-					  (pos + PCI_MSIX_FLAGS));
+					   (pos + PCI_MSIX_FLAGS));
 		if (ret < 0) {
 			PMD_INIT_LOG(ERR, "failed to write PCI offset 0x%x",
-				    (pos + PCI_MSIX_FLAGS));
+				     (pos + PCI_MSIX_FLAGS));
 			return -ENXIO;
 		}
 
@@ -198,7 +198,7 @@ hns3vf_remove_uc_mac_addr(struct hns3_hw *hw, struct rte_ether_addr *mac_addr)
 				false, NULL, 0);
 	if (ret) {
 		hns3_ether_format_addr(mac_str, RTE_ETHER_ADDR_FMT_SIZE,
-				      mac_addr);
+				       mac_addr);
 		hns3_err(hw, "failed to add uc mac addr(%s), ret = %d",
 			 mac_str, ret);
 	}
@@ -240,12 +240,12 @@ hns3vf_set_default_mac_addr(struct rte_eth_dev *dev,
 		 */
 		if (ret == -EPERM) {
 			hns3_ether_format_addr(mac_str, RTE_ETHER_ADDR_FMT_SIZE,
-					      old_addr);
+					       old_addr);
 			hns3_warn(hw, "Has permanent mac addr(%s) for vf",
 				  mac_str);
 		} else {
 			hns3_ether_format_addr(mac_str, RTE_ETHER_ADDR_FMT_SIZE,
-					      mac_addr);
+					       mac_addr);
 			hns3_err(hw, "Failed to set mac addr(%s) for vf: %d",
 				 mac_str, ret);
 		}
@@ -292,7 +292,7 @@ hns3vf_remove_mc_mac_addr(struct hns3_hw *hw,
 				NULL, 0);
 	if (ret) {
 		hns3_ether_format_addr(mac_str, RTE_ETHER_ADDR_FMT_SIZE,
-				      mac_addr);
+				       mac_addr);
 		hns3_err(hw, "Failed to remove mc mac addr(%s) for vf: %d",
 			 mac_str, ret);
 	}
@@ -714,9 +714,8 @@ hns3vf_check_dev_specifications(struct hns3_hw *hw)
 {
 	if (hw->rss_ind_tbl_size == 0 ||
 	    hw->rss_ind_tbl_size > HNS3_RSS_IND_TBL_SIZE_MAX) {
-		hns3_warn(hw, "the size of hash lookup table configured (%u)"
-			      " exceeds the maximum(%u)", hw->rss_ind_tbl_size,
-			      HNS3_RSS_IND_TBL_SIZE_MAX);
+		hns3_warn(hw, "the size of hash lookup table configured (%u) exceeds the maximum(%u)",
+			  hw->rss_ind_tbl_size, HNS3_RSS_IND_TBL_SIZE_MAX);
 		return -EINVAL;
 	}
 
@@ -1167,8 +1166,8 @@ hns3vf_vlan_offload_set(struct rte_eth_dev *dev, int mask)
 	int ret = 0;
 
 	if (__atomic_load_n(&hw->reset.resetting, __ATOMIC_RELAXED)) {
-		hns3_err(hw, "vf set vlan offload failed during resetting, "
-			     "mask = 0x%x", mask);
+		hns3_err(hw, "vf set vlan offload failed during resetting, mask = 0x%x",
+			 mask);
 		return -EIO;
 	}
 
diff --git a/drivers/net/hns3/hns3_fdir.c b/drivers/net/hns3/hns3_fdir.c
index 762b89a51e..30e5e66772 100644
--- a/drivers/net/hns3/hns3_fdir.c
+++ b/drivers/net/hns3/hns3_fdir.c
@@ -321,7 +321,7 @@ int hns3_init_fd_config(struct hns3_adapter *hns)
 		break;
 	default:
 		hns3_err(hw, "Unsupported flow director mode %u",
-			    pf->fdir.fd_cfg.fd_mode);
+			 pf->fdir.fd_cfg.fd_mode);
 		return -EOPNOTSUPP;
 	}
 
@@ -337,7 +337,7 @@ int hns3_init_fd_config(struct hns3_adapter *hns)
 	    BIT(INNER_SRC_IP) | BIT(INNER_DST_IP) |
 	    BIT(INNER_SRC_PORT) | BIT(INNER_DST_PORT);
 	hns3_dbg(hw, "fdir tuple: inner<vlan_tag1 eth_type ip_src ip_dst "
-		  "ip_proto ip_tos l4_src_port l4_dst_port>");
+		 "ip_proto ip_tos l4_src_port l4_dst_port>");
 
 	/* If use max 400bit key, we can support tuples for ether type */
 	if (pf->fdir.fd_cfg.max_key_length == MAX_KEY_LENGTH) {
@@ -348,8 +348,8 @@ int hns3_init_fd_config(struct hns3_adapter *hns)
 		    BIT(OUTER_TUN_VNI) | BIT(OUTER_TUN_FLOW_ID) |
 		    BIT(OUTER_ETH_TYPE) | BIT(OUTER_IP_PROTO);
 		hns3_dbg(hw, "fdir tuple more: inner<dst_mac src_mac "
-			  "vlan_tag2 sctp_tag> outer<eth_type ip_proto "
-			  "l4_src_port l4_dst_port tun_vni tun_flow_id>");
+			 "vlan_tag2 sctp_tag> outer<eth_type ip_proto "
+			 "l4_src_port l4_dst_port tun_vni tun_flow_id>");
 	}
 
 	/* roce_type is used to filter roce frames
@@ -367,12 +367,11 @@ int hns3_init_fd_config(struct hns3_adapter *hns)
 	if (ret)
 		return ret;
 
-	hns3_dbg(hw, "fdir: stage1<rules-%u counters-%u> stage2<rules-%u "
-		  "counters=%u>",
-		  pf->fdir.fd_cfg.rule_num[HNS3_FD_STAGE_1],
-		  pf->fdir.fd_cfg.cnt_num[HNS3_FD_STAGE_1],
-		  pf->fdir.fd_cfg.rule_num[HNS3_FD_STAGE_2],
-		  pf->fdir.fd_cfg.cnt_num[HNS3_FD_STAGE_2]);
+	hns3_dbg(hw, "fdir: stage1<rules-%u counters-%u> stage2<rules-%u counters=%u>",
+		 pf->fdir.fd_cfg.rule_num[HNS3_FD_STAGE_1],
+		 pf->fdir.fd_cfg.cnt_num[HNS3_FD_STAGE_1],
+		 pf->fdir.fd_cfg.rule_num[HNS3_FD_STAGE_2],
+		 pf->fdir.fd_cfg.cnt_num[HNS3_FD_STAGE_2]);
 
 	return hns3_set_fd_key_config(hns);
 }
@@ -420,7 +419,7 @@ static int hns3_fd_tcam_config(struct hns3_hw *hw, bool sel_x, int loc,
 	ret = hns3_cmd_send(hw, desc, FD_TCAM_CMD_NUM);
 	if (ret)
 		hns3_err(hw, "Config tcam key fail, ret=%d loc=%d add=%d",
-			    ret, loc, is_add);
+			 ret, loc, is_add);
 	return ret;
 }
 
@@ -673,6 +672,7 @@ static void hns3_fd_convert_meta_data(struct hns3_fd_key_cfg *cfg,
 		} else if (i == VLAN_NUMBER) {
 			uint32_t vlan_tag;
 			uint8_t vlan_num;
+
 			if (rule->key_conf.spec.tunnel_type == 0)
 				vlan_num = rule->key_conf.vlan_num;
 			else
@@ -758,14 +758,14 @@ static int hns3_config_key(struct hns3_adapter *hns,
 	ret = hns3_fd_tcam_config(hw, false, rule->location, key_y, true);
 	if (ret) {
 		hns3_err(hw, "Config fd key_y fail, loc=%u, ret=%d",
-			    rule->queue_id, ret);
+			 rule->queue_id, ret);
 		return ret;
 	}
 
 	ret = hns3_fd_tcam_config(hw, true, rule->location, key_x, true);
 	if (ret)
 		hns3_err(hw, "Config fd key_x fail, loc=%u, ret=%d",
-			    rule->queue_id, ret);
+			 rule->queue_id, ret);
 	return ret;
 }
 
diff --git a/drivers/net/hns3/hns3_flow.c b/drivers/net/hns3/hns3_flow.c
index 1bd4ac160d..fb9354fe7f 100644
--- a/drivers/net/hns3/hns3_flow.c
+++ b/drivers/net/hns3/hns3_flow.c
@@ -285,9 +285,8 @@ hns3_handle_action_queue(struct rte_eth_dev *dev,
 
 	queue = (const struct rte_flow_action_queue *)action->conf;
 	if (queue->index >= hw->data->nb_rx_queues) {
-		hns3_err(hw, "queue ID(%u) is greater than number of "
-			  "available queue (%u) in driver.",
-			  queue->index, hw->data->nb_rx_queues);
+		hns3_err(hw, "queue ID(%u) is greater than number of available queue (%u) in driver.",
+			 queue->index, hw->data->nb_rx_queues);
 		return rte_flow_error_set(error, EINVAL,
 					  RTE_FLOW_ERROR_TYPE_ACTION_CONF,
 					  action, "Invalid queue ID in PF");
@@ -1656,9 +1655,8 @@ hns3_clear_rss_filter(struct rte_eth_dev *dev)
 	}
 
 	if (rss_rule_fail_cnt) {
-		hns3_err(hw, "fail to delete all RSS filters, success num = %d "
-			     "fail num = %d", rss_rule_succ_cnt,
-			     rss_rule_fail_cnt);
+		hns3_err(hw, "fail to delete all RSS filters, success num = %d fail num = %d",
+			 rss_rule_succ_cnt, rss_rule_fail_cnt);
 		ret = -EIO;
 	}
 
diff --git a/drivers/net/hns3/hns3_rxtx.c b/drivers/net/hns3/hns3_rxtx.c
index dcb1cdf168..bbf98fc90e 100644
--- a/drivers/net/hns3/hns3_rxtx.c
+++ b/drivers/net/hns3/hns3_rxtx.c
@@ -603,8 +603,8 @@ hns3_send_reset_tqp_cmd(struct hns3_hw *hw, uint16_t queue_id, bool enable)
 	hns3_set_bit(req->reset_req, HNS3_TQP_RESET_B, enable ? 1 : 0);
 	ret = hns3_cmd_send(hw, &desc, 1);
 	if (ret)
-		hns3_err(hw, "send tqp reset cmd error, queue_id = %u, "
-			     "ret = %d", queue_id, ret);
+		hns3_err(hw, "send tqp reset cmd error, queue_id = %u, ret = %d",
+			 queue_id, ret);
 
 	return ret;
 }
@@ -624,8 +624,8 @@ hns3_get_tqp_reset_status(struct hns3_hw *hw, uint16_t queue_id,
 
 	ret = hns3_cmd_send(hw, &desc, 1);
 	if (ret) {
-		hns3_err(hw, "get tqp reset status error, queue_id = %u, "
-			     "ret = %d.", queue_id, ret);
+		hns3_err(hw, "get tqp reset status error, queue_id = %u, ret = %d.",
+			 queue_id, ret);
 		return ret;
 	}
 	*reset_status = hns3_get_bit(req->ready_to_reset, HNS3_TQP_RESET_B);
@@ -666,7 +666,7 @@ hns3pf_reset_tqp(struct hns3_hw *hw, uint16_t queue_id)
 	if (!reset_status) {
 		ret = -ETIMEDOUT;
 		hns3_err(hw, "reset tqp timeout, queue_id = %u, ret = %d",
-			     queue_id, ret);
+			 queue_id, ret);
 		goto tqp_reset_fail;
 	}
 
@@ -749,15 +749,14 @@ hns3pf_reset_all_tqps(struct hns3_hw *hw)
 		for (i = 0; i < hw->cfg_max_queues; i++) {
 			ret = hns3pf_reset_tqp(hw, i);
 			if (ret) {
-				hns3_err(hw,
-				  "fail to reset tqp, queue_id = %d, ret = %d.",
-				  i, ret);
+				hns3_err(hw, "fail to reset tqp, queue_id = %d, ret = %d.",
+					 i, ret);
 				return ret;
 			}
 		}
 	} else if (reset_status != HNS3_RESET_ALL_TQP_SUCCESS) {
 		hns3_err(hw, "fail to reset all tqps, reset_status = %u.",
-				reset_status);
+			 reset_status);
 		return -EIO;
 	}
 
@@ -810,9 +809,8 @@ hns3_reset_all_tqps(struct hns3_adapter *hns)
 	for (i = 0; i < hw->cfg_max_queues; i++) {
 		ret = hns3_tqp_enable(hw, i, false);
 		if (ret) {
-			hns3_err(hw,
-			    "fail to disable tqps before tqps reset, ret = %d.",
-			    ret);
+			hns3_err(hw, "fail to disable tqps before tqps reset, ret = %d.",
+				 ret);
 			return ret;
 		}
 	}
@@ -919,9 +917,9 @@ hns3_reset_queue(struct hns3_hw *hw, uint16_t queue_id,
 	}
 
 	if (!reset_status) {
-		hns3_err(hw, "reset queue timeout, queue_id = %u, "
-			     "queue_type = %s", queue_id,
-			     queue_type == HNS3_RING_TYPE_TX ? "Tx" : "Rx");
+		hns3_err(hw, "reset queue timeout, queue_id = %u, queue_type = %s",
+			 queue_id,
+			 queue_type == HNS3_RING_TYPE_TX ? "Tx" : "Rx");
 		ret = -ETIMEDOUT;
 		goto queue_reset_fail;
 	}
diff --git a/drivers/net/hns3/hns3_stats.c b/drivers/net/hns3/hns3_stats.c
index 07fad03485..a71356934a 100644
--- a/drivers/net/hns3/hns3_stats.c
+++ b/drivers/net/hns3/hns3_stats.c
@@ -507,8 +507,8 @@ hns3_update_port_rx_ssu_drop_stats(struct hns3_hw *hw)
 
 	req = (struct hns3_query_ssu_cmd *)desc[0].data;
 	cnt = rte_le_to_cpu_32(req->oq_drop_cnt) +
-		rte_le_to_cpu_32(req->full_drop_cnt) +
-		rte_le_to_cpu_32(req->part_drop_cnt);
+	      rte_le_to_cpu_32(req->full_drop_cnt) +
+	      rte_le_to_cpu_32(req->part_drop_cnt);
 
 	stats->ssu_rx_drop_cnt += cnt;
 
@@ -532,8 +532,8 @@ hns3_update_port_tx_ssu_drop_stats(struct hns3_hw *hw)
 
 	req = (struct hns3_query_ssu_cmd *)desc[0].data;
 	cnt = rte_le_to_cpu_32(req->oq_drop_cnt) +
-		rte_le_to_cpu_32(req->full_drop_cnt) +
-		rte_le_to_cpu_32(req->part_drop_cnt);
+	      rte_le_to_cpu_32(req->full_drop_cnt) +
+	      rte_le_to_cpu_32(req->part_drop_cnt);
 
 	hw->oerror_stats += cnt;
 
@@ -1337,8 +1337,8 @@ hns3_dev_xstats_get_by_id(struct rte_eth_dev *dev, const uint64_t *ids,
 	len = cnt_stats * sizeof(struct rte_eth_xstat);
 	values_copy = rte_zmalloc("hns3_xstats_values", len, 0);
 	if (values_copy == NULL) {
-		hns3_err(hw, "Failed to allocate 0x%" PRIx64 " bytes needed "
-			     "to store statistics values", len);
+		hns3_err(hw, "Failed to allocate 0x%" PRIx64 " bytes needed to store statistics values",
+			 len);
 		return -ENOMEM;
 	}
 
@@ -1359,8 +1359,8 @@ hns3_dev_xstats_get_by_id(struct rte_eth_dev *dev, const uint64_t *ids,
 
 	for (i = 0; i < size; i++) {
 		if (ids[i] >= cnt_stats) {
-			hns3_err(hw, "ids[%u] (%" PRIu64 ") is invalid, "
-				     "should < %u", i, ids[i], cnt_stats);
+			hns3_err(hw, "ids[%u] (%" PRIu64 ") is invalid, should < %u",
+				 i, ids[i], cnt_stats);
 			rte_free(values_copy);
 			return -EINVAL;
 		}
@@ -1419,8 +1419,8 @@ hns3_dev_xstats_get_names_by_id(struct rte_eth_dev *dev,
 	len = cnt_stats * sizeof(struct rte_eth_xstat_name);
 	names_copy = rte_zmalloc("hns3_xstats_names", len, 0);
 	if (names_copy == NULL) {
-		hns3_err(hw, "Failed to allocate 0x%" PRIx64 " bytes needed "
-			     "to store statistics names", len);
+		hns3_err(hw, "Failed to allocate 0x%" PRIx64 " bytes needed to store statistics names",
+			 len);
 		return -ENOMEM;
 	}
 
@@ -1428,8 +1428,8 @@ hns3_dev_xstats_get_names_by_id(struct rte_eth_dev *dev,
 
 	for (i = 0; i < size; i++) {
 		if (ids[i] >= cnt_stats) {
-			hns3_err(hw, "ids[%u] (%" PRIu64 ") is invalid, "
-				     "should < %u", i, ids[i], cnt_stats);
+			hns3_err(hw, "ids[%u] (%" PRIu64 ") is invalid, should < %u",
+				 i, ids[i], cnt_stats);
 			rte_free(names_copy);
 			return -EINVAL;
 		}
@@ -1501,14 +1501,14 @@ hns3_tqp_stats_init(struct hns3_hw *hw)
 	struct hns3_tqp_stats *tqp_stats = &hw->tqp_stats;
 
 	tqp_stats->rcb_rx_ring_pktnum = rte_zmalloc("hns3_rx_ring_pkt_num",
-					 sizeof(uint64_t) * hw->tqps_num, 0);
+					sizeof(uint64_t) * hw->tqps_num, 0);
 	if (tqp_stats->rcb_rx_ring_pktnum == NULL) {
 		hns3_err(hw, "failed to allocate rx_ring pkt_num.");
 		return -ENOMEM;
 	}
 
 	tqp_stats->rcb_tx_ring_pktnum = rte_zmalloc("hns3_tx_ring_pkt_num",
-					 sizeof(uint64_t) * hw->tqps_num, 0);
+					sizeof(uint64_t) * hw->tqps_num, 0);
 	if (tqp_stats->rcb_tx_ring_pktnum == NULL) {
 		hns3_err(hw, "failed to allocate tx_ring pkt_num.");
 		rte_free(tqp_stats->rcb_rx_ring_pktnum);
-- 
2.33.0


^ permalink raw reply	[flat|nested] 38+ messages in thread

* [PATCH v2 10/11] net/hns3: fix a segfault from secondary process
  2022-06-01  3:52 ` [PATCH v2 00/11] " Min Hu (Connor)
                     ` (8 preceding siblings ...)
  2022-06-01  3:52   ` [PATCH v2 09/11] net/hns3: unify the code wrap style Min Hu (Connor)
@ 2022-06-01  3:52   ` Min Hu (Connor)
  2022-06-01  3:52   ` [PATCH v2 11/11] net/hns3: fix TM capability incorrectly defined Min Hu (Connor)
  2022-06-09 10:57   ` [PATCH v2 00/11] bugfix for hns3 PMD Andrew Rybchenko
  11 siblings, 0 replies; 38+ messages in thread
From: Min Hu (Connor) @ 2022-06-01  3:52 UTC (permalink / raw)
  To: dev

From: Huisong Li <lihuisong@huawei.com>

If a hns3 device in the secondary process is attached to do probing
operation, 'rx_queues' and 'tx_queues' in dev->data are null in
eth_dev_fp_ops_setup when calling rte_eth_dev_probing_finish. The primary
process calls dev_start to re-setup their fp_ops. But the secondary process
can't call dev_start and has no chance to do it. If the application sends
and receives packets at this time, a segfault will occur. So this patch
uses the MP communication of the PMD to update the fp_ops of the device in
the secondary process.

Fixes: 96c33cfb06cf ("net/hns3: fix Rx/Tx functions update")
Cc: stable@dpdk.org

Signed-off-by: Huisong Li <lihuisong@huawei.com>
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
---
 drivers/net/hns3/hns3_rxtx.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/net/hns3/hns3_rxtx.c b/drivers/net/hns3/hns3_rxtx.c
index bbf98fc90e..e25a91becf 100644
--- a/drivers/net/hns3/hns3_rxtx.c
+++ b/drivers/net/hns3/hns3_rxtx.c
@@ -4409,6 +4409,8 @@ hns3_eth_dev_fp_ops_config(const struct rte_eth_dev *dev)
 	fpo[port_id].tx_pkt_prepare = dev->tx_pkt_prepare;
 	fpo[port_id].rx_descriptor_status = dev->rx_descriptor_status;
 	fpo[port_id].tx_descriptor_status = dev->tx_descriptor_status;
+	fpo[port_id].rxq.data = dev->data->rx_queues;
+	fpo[port_id].txq.data = dev->data->tx_queues;
 }
 
 void
-- 
2.33.0


^ permalink raw reply	[flat|nested] 38+ messages in thread

* [PATCH v2 11/11] net/hns3: fix TM capability incorrectly defined
  2022-06-01  3:52 ` [PATCH v2 00/11] " Min Hu (Connor)
                     ` (9 preceding siblings ...)
  2022-06-01  3:52   ` [PATCH v2 10/11] net/hns3: fix a segfault from secondary process Min Hu (Connor)
@ 2022-06-01  3:52   ` Min Hu (Connor)
  2022-06-09 10:57   ` [PATCH v2 00/11] bugfix for hns3 PMD Andrew Rybchenko
  11 siblings, 0 replies; 38+ messages in thread
From: Min Hu (Connor) @ 2022-06-01  3:52 UTC (permalink / raw)
  To: dev

From: Chengwen Feng <fengchengwen@huawei.com>

The TM capability should be bit-19 according to the user manual of
firmware. This patch fixes it.

Fixes: fc18d1b4b85f ("net/hns3: fix traffic management")
Cc: stable@dpdk.org

Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
---
 drivers/net/hns3/hns3_cmd.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/hns3/hns3_cmd.h b/drivers/net/hns3/hns3_cmd.h
index f9addc6069..82c999061d 100644
--- a/drivers/net/hns3/hns3_cmd.h
+++ b/drivers/net/hns3/hns3_cmd.h
@@ -323,7 +323,7 @@ enum HNS3_CAPS_BITS {
 	HNS3_CAPS_UDP_TUNNEL_CSUM_B,
 	HNS3_CAPS_RAS_IMP_B,
 	HNS3_CAPS_RXD_ADV_LAYOUT_B = 15,
-	HNS3_CAPS_TM_B = 17,
+	HNS3_CAPS_TM_B = 19,
 };
 
 /* Capabilities of VF dependent on the PF */
-- 
2.33.0


^ permalink raw reply	[flat|nested] 38+ messages in thread

* Re: [PATCH 00/12] bugfix for hns3 PMD
  2022-05-31 14:55 ` [PATCH 00/12] bugfix for hns3 PMD Andrew Rybchenko
@ 2022-06-01  3:54   ` Min Hu (Connor)
  0 siblings, 0 replies; 38+ messages in thread
From: Min Hu (Connor) @ 2022-06-01  3:54 UTC (permalink / raw)
  To: Andrew Rybchenko, dev; +Cc: ferruh.yigit, thomas

Hi, Andrew ,
  v2 has been sent, thanks.

在 2022/5/31 22:55, Andrew Rybchenko 写道:
> On 5/19/22 15:29, Min Hu (Connor) wrote:
>> This patch set contains 12 bugfix for hns3 PMD.
> 
> The patch series fails to apply to dpdk-next-net/main.
> Please, rebase and send v2.
> .

^ permalink raw reply	[flat|nested] 38+ messages in thread

* Re: [PATCH v2 06/11] net/hns3: fix coverity codecheck
  2022-06-01  3:52   ` [PATCH v2 06/11] net/hns3: fix coverity codecheck Min Hu (Connor)
@ 2022-06-01  8:32     ` Andrew Rybchenko
  2022-06-06  7:48       ` Dongdong Liu
  0 siblings, 1 reply; 38+ messages in thread
From: Andrew Rybchenko @ 2022-06-01  8:32 UTC (permalink / raw)
  To: Min Hu (Connor), dev

On 6/1/22 06:52, Min Hu (Connor) wrote:
> In bitwise operation, "val" should be an unsigned type. This patch
> fixed it.
> 
> Fixes: 38b539d96eb6 ("net/hns3: support IEEE 1588 PTP")
> Cc: stable@dpdk.org

Please, let me know coverity ID. No necessity to resend.
I'll add it on applying.

> 
> Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
> ---
>   drivers/net/hns3/hns3_ptp.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/net/hns3/hns3_ptp.c b/drivers/net/hns3/hns3_ptp.c
> index 1442241a4e..0b0061bba5 100644
> --- a/drivers/net/hns3/hns3_ptp.c
> +++ b/drivers/net/hns3/hns3_ptp.c
> @@ -81,7 +81,7 @@ hns3_timesync_configure(struct hns3_adapter *hns, bool en)
>   	struct hns3_hw *hw = &hns->hw;
>   	struct hns3_pf *pf = &hns->pf;
>   	struct hns3_cmd_desc desc;
> -	int val;
> +	uint32_t val;
>   	int ret;
>   
>   	hns3_cmd_setup_basic_desc(&desc, HNS3_OPC_CFG_PTP_MODE, false);


^ permalink raw reply	[flat|nested] 38+ messages in thread

* Re: [PATCH v2 06/11] net/hns3: fix coverity codecheck
  2022-06-01  8:32     ` Andrew Rybchenko
@ 2022-06-06  7:48       ` Dongdong Liu
  2022-06-08 11:19         ` Andrew Rybchenko
  0 siblings, 1 reply; 38+ messages in thread
From: Dongdong Liu @ 2022-06-06  7:48 UTC (permalink / raw)
  To: Andrew Rybchenko, Min Hu (Connor), dev

Hi Andrew

Many thanks for your review.

I will take over Hu Min's current work and continue to do the upstream work.

On 2022/6/1 16:32, Andrew Rybchenko wrote:
> On 6/1/22 06:52, Min Hu (Connor) wrote:
>> In bitwise operation, "val" should be an unsigned type. This patch
>> fixed it.
>>
>> Fixes: 38b539d96eb6 ("net/hns3: support IEEE 1588 PTP")
>> Cc: stable@dpdk.org
>
> Please, let me know coverity ID. No necessity to resend.
> I'll add it on applying.

The code warning is checked by our internal code check tool,
does not have the coverity ID.

Thanks,
Dongdong
>
>>
>> Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
>> ---
>>   drivers/net/hns3/hns3_ptp.c | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/net/hns3/hns3_ptp.c b/drivers/net/hns3/hns3_ptp.c
>> index 1442241a4e..0b0061bba5 100644
>> --- a/drivers/net/hns3/hns3_ptp.c
>> +++ b/drivers/net/hns3/hns3_ptp.c
>> @@ -81,7 +81,7 @@ hns3_timesync_configure(struct hns3_adapter *hns,
>> bool en)
>>       struct hns3_hw *hw = &hns->hw;
>>       struct hns3_pf *pf = &hns->pf;
>>       struct hns3_cmd_desc desc;
>> -    int val;
>> +    uint32_t val;
>>       int ret;
>>         hns3_cmd_setup_basic_desc(&desc, HNS3_OPC_CFG_PTP_MODE, false);
>
> .
>

^ permalink raw reply	[flat|nested] 38+ messages in thread

* Re: [PATCH v2 06/11] net/hns3: fix coverity codecheck
  2022-06-06  7:48       ` Dongdong Liu
@ 2022-06-08 11:19         ` Andrew Rybchenko
  2022-06-08 12:04           ` Dongdong Liu
  0 siblings, 1 reply; 38+ messages in thread
From: Andrew Rybchenko @ 2022-06-08 11:19 UTC (permalink / raw)
  To: Dongdong Liu, Min Hu (Connor), dev

Hi Dongdong,

On 6/6/22 10:48, Dongdong Liu wrote:
> Hi Andrew
> 
> Many thanks for your review.
> 
> I will take over Hu Min's current work and continue to do the upstream 
> work.
> 
> On 2022/6/1 16:32, Andrew Rybchenko wrote:
>> On 6/1/22 06:52, Min Hu (Connor) wrote:
>>> In bitwise operation, "val" should be an unsigned type. This patch
>>> fixed it.
>>>
>>> Fixes: 38b539d96eb6 ("net/hns3: support IEEE 1588 PTP")
>>> Cc: stable@dpdk.org
>>
>> Please, let me know coverity ID. No necessity to resend.
>> I'll add it on applying.
> 
> The code warning is checked by our internal code check tool,
> does not have the coverity ID.

Hm, the summary says coverity. Could you suggest how to rephrase it.

Thanks,
Andrew.


^ permalink raw reply	[flat|nested] 38+ messages in thread

* Re: [PATCH v2 06/11] net/hns3: fix coverity codecheck
  2022-06-08 11:19         ` Andrew Rybchenko
@ 2022-06-08 12:04           ` Dongdong Liu
  0 siblings, 0 replies; 38+ messages in thread
From: Dongdong Liu @ 2022-06-08 12:04 UTC (permalink / raw)
  To: Andrew Rybchenko, Min Hu (Connor), dev

Hi Andrew
On 2022/6/8 19:19, Andrew Rybchenko wrote:
> Hi Dongdong,
>
> On 6/6/22 10:48, Dongdong Liu wrote:
>> Hi Andrew
>>
>> Many thanks for your review.
>>
>> I will take over Hu Min's current work and continue to do the upstream
>> work.
>>
>> On 2022/6/1 16:32, Andrew Rybchenko wrote:
>>> On 6/1/22 06:52, Min Hu (Connor) wrote:
>>>> In bitwise operation, "val" should be an unsigned type. This patch
>>>> fixed it.
>>>>
>>>> Fixes: 38b539d96eb6 ("net/hns3: support IEEE 1588 PTP")
>>>> Cc: stable@dpdk.org
>>>
>>> Please, let me know coverity ID. No necessity to resend.
>>> I'll add it on applying.
>>
>> The code warning is checked by our internal code check tool,
>> does not have the coverity ID.
>
> Hm, the summary says coverity. Could you suggest how to rephrase it.
Aha, the title is inaccurate.
How about change to "net/hns3: fix code check warning".

Thanks,
Dongdong
>
> Thanks,
> Andrew.
>
> .
>

^ permalink raw reply	[flat|nested] 38+ messages in thread

* Re: [PATCH v2 00/11] bugfix for hns3 PMD
  2022-06-01  3:52 ` [PATCH v2 00/11] " Min Hu (Connor)
                     ` (10 preceding siblings ...)
  2022-06-01  3:52   ` [PATCH v2 11/11] net/hns3: fix TM capability incorrectly defined Min Hu (Connor)
@ 2022-06-09 10:57   ` Andrew Rybchenko
  11 siblings, 0 replies; 38+ messages in thread
From: Andrew Rybchenko @ 2022-06-09 10:57 UTC (permalink / raw)
  To: Min Hu (Connor), dev

On 6/1/22 06:52, Min Hu (Connor) wrote:
> This patch set contains 11 bugfix for hns3 PMD.
> 
> Chengwen Feng (1):
>    net/hns3: fix TM capability incorrectly defined
> 
> Huisong Li (9):
>    net/hns3: add check for deferred start queue when rollback
>    net/hns3: remove redundant parentheses
>    net/hns3: adjust the data type of some variables
>    net/hns3: fix an unreasonable memset
>    net/hns3: remove duplicate definition
>    net/hns3: fix return value for unsupported tuple
>    net/hns3: modify a function name
>    net/hns3: unify the code wrap style
>    net/hns3: fix a segfault from secondary process
> 
> Min Hu (Connor) (1):
>    net/hns3: fix coverity codecheck
> 
>   drivers/net/hns3/hns3_cmd.c       |  2 +-
>   drivers/net/hns3/hns3_cmd.h       |  2 +-
>   drivers/net/hns3/hns3_common.c    | 14 +++----
>   drivers/net/hns3/hns3_dcb.c       |  7 ++--
>   drivers/net/hns3/hns3_ethdev.c    | 20 +++++-----
>   drivers/net/hns3/hns3_ethdev_vf.c | 23 ++++++------
>   drivers/net/hns3/hns3_fdir.c      | 30 +++++++--------
>   drivers/net/hns3/hns3_fdir.h      |  2 +-
>   drivers/net/hns3/hns3_flow.c      | 25 ++++---------
>   drivers/net/hns3/hns3_ptp.c       |  2 +-
>   drivers/net/hns3/hns3_regs.c      |  2 +-
>   drivers/net/hns3/hns3_rss.c       |  8 ++--
>   drivers/net/hns3/hns3_rss.h       |  2 +
>   drivers/net/hns3/hns3_rxtx.c      | 62 ++++++++++++++++---------------
>   drivers/net/hns3/hns3_rxtx_vec.h  |  4 +-
>   drivers/net/hns3/hns3_stats.c     | 28 +++++++-------
>   16 files changed, 111 insertions(+), 122 deletions(-)
> ---
> v2:
> * delete one patch which is fixed by others.
> refer to:
> https://patches.dpdk.org/project/dpdk/cover/20220112072808.59713-1-jsoref@gmail.com/

Applied to dpdk-next-net/main, thanks.

^ permalink raw reply	[flat|nested] 38+ messages in thread

end of thread, other threads:[~2022-06-09 10:57 UTC | newest]

Thread overview: 38+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-05-19 12:29 [PATCH 00/12] bugfix for hns3 PMD Min Hu (Connor)
2022-05-19 12:29 ` [PATCH 01/12] net/hns3: fix spelling errors Min Hu (Connor)
2022-05-19 12:29 ` [PATCH 02/12] net/hns3: add check for deferred start queue when rollback Min Hu (Connor)
2022-05-19 12:29 ` [PATCH 03/12] net/hns3: remove redundant parentheses Min Hu (Connor)
2022-05-19 12:29 ` [PATCH 04/12] net/hns3: adjust the data type of some variables Min Hu (Connor)
2022-05-19 12:29 ` [PATCH 05/12] net/hns3: fix an unreasonable memset Min Hu (Connor)
2022-05-20  7:58   ` Andrew Rybchenko
2022-05-20  8:37     ` Min Hu (Connor)
2022-05-20  8:59       ` Andrew Rybchenko
2022-05-20  9:14         ` Min Hu (Connor)
2022-05-20 10:43           ` Ferruh Yigit
2022-05-20 11:00             ` Min Hu (Connor)
2022-05-19 12:29 ` [PATCH 06/12] net/hns3: remove duplicate definition Min Hu (Connor)
2022-05-19 12:29 ` [PATCH 07/12] net/hns3: fix coverity codecheck Min Hu (Connor)
2022-05-19 12:29 ` [PATCH 08/12] net/hns3: fix return value for unsupported tuple Min Hu (Connor)
2022-05-19 12:29 ` [PATCH 09/12] net/hns3: modify a function name Min Hu (Connor)
2022-05-19 12:29 ` [PATCH 10/12] net/hns3: unify the code wrap style Min Hu (Connor)
2022-05-19 12:29 ` [PATCH 11/12] net/hns3: fix a segfault from secondary process Min Hu (Connor)
2022-05-19 12:29 ` [PATCH 12/12] net/hns3: fix TM capability incorrectly defined Min Hu (Connor)
2022-05-31 14:55 ` [PATCH 00/12] bugfix for hns3 PMD Andrew Rybchenko
2022-06-01  3:54   ` Min Hu (Connor)
2022-06-01  3:52 ` [PATCH v2 00/11] " Min Hu (Connor)
2022-06-01  3:52   ` [PATCH v2 01/11] net/hns3: add check for deferred start queue when rollback Min Hu (Connor)
2022-06-01  3:52   ` [PATCH v2 02/11] net/hns3: remove redundant parentheses Min Hu (Connor)
2022-06-01  3:52   ` [PATCH v2 03/11] net/hns3: adjust the data type of some variables Min Hu (Connor)
2022-06-01  3:52   ` [PATCH v2 04/11] net/hns3: fix an unreasonable memset Min Hu (Connor)
2022-06-01  3:52   ` [PATCH v2 05/11] net/hns3: remove duplicate definition Min Hu (Connor)
2022-06-01  3:52   ` [PATCH v2 06/11] net/hns3: fix coverity codecheck Min Hu (Connor)
2022-06-01  8:32     ` Andrew Rybchenko
2022-06-06  7:48       ` Dongdong Liu
2022-06-08 11:19         ` Andrew Rybchenko
2022-06-08 12:04           ` Dongdong Liu
2022-06-01  3:52   ` [PATCH v2 07/11] net/hns3: fix return value for unsupported tuple Min Hu (Connor)
2022-06-01  3:52   ` [PATCH v2 08/11] net/hns3: modify a function name Min Hu (Connor)
2022-06-01  3:52   ` [PATCH v2 09/11] net/hns3: unify the code wrap style Min Hu (Connor)
2022-06-01  3:52   ` [PATCH v2 10/11] net/hns3: fix a segfault from secondary process Min Hu (Connor)
2022-06-01  3:52   ` [PATCH v2 11/11] net/hns3: fix TM capability incorrectly defined Min Hu (Connor)
2022-06-09 10:57   ` [PATCH v2 00/11] bugfix for hns3 PMD Andrew Rybchenko

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).