* [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 +-
| 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);
--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 ---------
| 6 ++----
| 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 };
--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,
--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 +-
| 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);
--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 ---------
| 6 ++----
| 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 };
--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,
--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).