linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net 0/6] net: hns3: add some fixes for -net
@ 2022-04-24 12:57 Guangbin Huang
  2022-04-24 12:57 ` [PATCH net 1/6] net: hns3: clear inited state and stop client after failed to register netdev Guangbin Huang
                   ` (6 more replies)
  0 siblings, 7 replies; 14+ messages in thread
From: Guangbin Huang @ 2022-04-24 12:57 UTC (permalink / raw)
  To: davem, kuba; +Cc: netdev, linux-kernel, lipeng321, huangguangbin2, chenhao288

This series adds some fixes for the HNS3 ethernet driver.

Hao Chen (1):
  net: hns3: align the debugfs output to the left

Jian Shen (3):
  net: hns3: clear inited state and stop client after failed to register
    netdev
  net: hns3: add validity check for message data length
  net: hns3: add return value for mailbox handling in PF

Jie Wang (1):
  net: hns3: modify the return code of hclge_get_ring_chain_from_mbx

Peng Li (1):
  net: hns3: fix error log of tx/rx tqps stats

 .../hns3/hns3_common/hclge_comm_tqp_stats.c   |  4 +-
 .../ethernet/hisilicon/hns3/hns3_debugfs.c    | 84 +++++++++----------
 .../net/ethernet/hisilicon/hns3/hns3_enet.c   |  9 ++
 .../hisilicon/hns3/hns3pf/hclge_mbx.c         | 31 ++++---
 4 files changed, 73 insertions(+), 55 deletions(-)

-- 
2.33.0


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

* [PATCH net 1/6] net: hns3: clear inited state and stop client after failed to register netdev
  2022-04-24 12:57 [PATCH net 0/6] net: hns3: add some fixes for -net Guangbin Huang
@ 2022-04-24 12:57 ` Guangbin Huang
  2022-04-24 12:57 ` [PATCH net 2/6] net: hns3: align the debugfs output to the left Guangbin Huang
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 14+ messages in thread
From: Guangbin Huang @ 2022-04-24 12:57 UTC (permalink / raw)
  To: davem, kuba; +Cc: netdev, linux-kernel, lipeng321, huangguangbin2, chenhao288

From: Jian Shen <shenjian15@huawei.com>

If failed to register netdev, it needs to clear INITED state and stop
client in case of cause problem when concurrency with uninitialized
process of driver.

Fixes: a289a7e5c1d4 ("net: hns3: put off calling register_netdev() until client initialize complete")
Signed-off-by: Jian Shen <shenjian15@huawei.com>
Signed-off-by: Guangbin Huang <huangguangbin2@huawei.com>
---
 drivers/net/ethernet/hisilicon/hns3/hns3_enet.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c b/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c
index 14dc12c2155d..a3ee7875d6a7 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c
@@ -5203,6 +5203,13 @@ static void hns3_state_init(struct hnae3_handle *handle)
 		set_bit(HNS3_NIC_STATE_RXD_ADV_LAYOUT_ENABLE, &priv->state);
 }
 
+static void hns3_state_uninit(struct hnae3_handle *handle)
+{
+	struct hns3_nic_priv *priv  = handle->priv;
+
+	clear_bit(HNS3_NIC_STATE_INITED, &priv->state);
+}
+
 static int hns3_client_init(struct hnae3_handle *handle)
 {
 	struct pci_dev *pdev = handle->pdev;
@@ -5320,7 +5327,9 @@ static int hns3_client_init(struct hnae3_handle *handle)
 	return ret;
 
 out_reg_netdev_fail:
+	hns3_state_uninit(handle);
 	hns3_dbg_uninit(handle);
+	hns3_client_stop(handle);
 out_client_start:
 	hns3_free_rx_cpu_rmap(netdev);
 	hns3_nic_uninit_irq(priv);
-- 
2.33.0


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

* [PATCH net 2/6] net: hns3: align the debugfs output to the left
  2022-04-24 12:57 [PATCH net 0/6] net: hns3: add some fixes for -net Guangbin Huang
  2022-04-24 12:57 ` [PATCH net 1/6] net: hns3: clear inited state and stop client after failed to register netdev Guangbin Huang
@ 2022-04-24 12:57 ` Guangbin Huang
  2022-04-24 12:57 ` [PATCH net 3/6] net: hns3: fix error log of tx/rx tqps stats Guangbin Huang
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 14+ messages in thread
From: Guangbin Huang @ 2022-04-24 12:57 UTC (permalink / raw)
  To: davem, kuba; +Cc: netdev, linux-kernel, lipeng321, huangguangbin2, chenhao288

From: Hao Chen <chenhao288@hisilicon.com>

For debugfs node rx/tx_queue_info and rx/tx_bd_info, their output info is
aligned to the right, it's not aligned with output of other debugfs node,
so uniform their output info.

Fixes: 907676b13071 ("net: hns3: use tx bounce buffer for small packets")
Fixes: e44c495d95e0 ("net: hns3: refactor queue info of debugfs")
Fixes: 77e9184869c9 ("net: hns3: refactor dump bd info of debugfs")
Signed-off-by: Hao Chen <chenhao288@hisilicon.com>
Signed-off-by: Guangbin Huang <huangguangbin2@huawei.com>
---
 .../ethernet/hisilicon/hns3/hns3_debugfs.c    | 84 +++++++++----------
 1 file changed, 42 insertions(+), 42 deletions(-)

diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3_debugfs.c b/drivers/net/ethernet/hisilicon/hns3/hns3_debugfs.c
index 44d9b560b337..93aeb615191d 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3_debugfs.c
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3_debugfs.c
@@ -562,12 +562,12 @@ static void hns3_dbg_tx_spare_info(struct hns3_enet_ring *ring, char *buf,
 
 	for (i = 0; i < ring_num; i++) {
 		j = 0;
-		sprintf(result[j++], "%8u", i);
-		sprintf(result[j++], "%9u", ring->tx_copybreak);
-		sprintf(result[j++], "%3u", tx_spare->len);
-		sprintf(result[j++], "%3u", tx_spare->next_to_use);
-		sprintf(result[j++], "%3u", tx_spare->next_to_clean);
-		sprintf(result[j++], "%3u", tx_spare->last_to_clean);
+		sprintf(result[j++], "%u", i);
+		sprintf(result[j++], "%u", ring->tx_copybreak);
+		sprintf(result[j++], "%u", tx_spare->len);
+		sprintf(result[j++], "%u", tx_spare->next_to_use);
+		sprintf(result[j++], "%u", tx_spare->next_to_clean);
+		sprintf(result[j++], "%u", tx_spare->last_to_clean);
 		sprintf(result[j++], "%pad", &tx_spare->dma);
 		hns3_dbg_fill_content(content, sizeof(content),
 				      tx_spare_info_items,
@@ -598,35 +598,35 @@ static void hns3_dump_rx_queue_info(struct hns3_enet_ring *ring,
 	u32 base_add_l, base_add_h;
 	u32 j = 0;
 
-	sprintf(result[j++], "%8u", index);
+	sprintf(result[j++], "%u", index);
 
-	sprintf(result[j++], "%6u", readl_relaxed(ring->tqp->io_base +
+	sprintf(result[j++], "%u", readl_relaxed(ring->tqp->io_base +
 		HNS3_RING_RX_RING_BD_NUM_REG));
 
-	sprintf(result[j++], "%6u", readl_relaxed(ring->tqp->io_base +
+	sprintf(result[j++], "%u", readl_relaxed(ring->tqp->io_base +
 		HNS3_RING_RX_RING_BD_LEN_REG));
 
-	sprintf(result[j++], "%4u", readl_relaxed(ring->tqp->io_base +
+	sprintf(result[j++], "%u", readl_relaxed(ring->tqp->io_base +
 		HNS3_RING_RX_RING_TAIL_REG));
 
-	sprintf(result[j++], "%4u", readl_relaxed(ring->tqp->io_base +
+	sprintf(result[j++], "%u", readl_relaxed(ring->tqp->io_base +
 		HNS3_RING_RX_RING_HEAD_REG));
 
-	sprintf(result[j++], "%6u", readl_relaxed(ring->tqp->io_base +
+	sprintf(result[j++], "%u", readl_relaxed(ring->tqp->io_base +
 		HNS3_RING_RX_RING_FBDNUM_REG));
 
-	sprintf(result[j++], "%6u", readl_relaxed(ring->tqp->io_base +
+	sprintf(result[j++], "%u", readl_relaxed(ring->tqp->io_base +
 		HNS3_RING_RX_RING_PKTNUM_RECORD_REG));
-	sprintf(result[j++], "%9u", ring->rx_copybreak);
+	sprintf(result[j++], "%u", ring->rx_copybreak);
 
-	sprintf(result[j++], "%7s", readl_relaxed(ring->tqp->io_base +
+	sprintf(result[j++], "%s", readl_relaxed(ring->tqp->io_base +
 		HNS3_RING_EN_REG) ? "on" : "off");
 
 	if (hnae3_ae_dev_tqp_txrx_indep_supported(ae_dev))
-		sprintf(result[j++], "%10s", readl_relaxed(ring->tqp->io_base +
+		sprintf(result[j++], "%s", readl_relaxed(ring->tqp->io_base +
 			HNS3_RING_RX_EN_REG) ? "on" : "off");
 	else
-		sprintf(result[j++], "%10s", "NA");
+		sprintf(result[j++], "%s", "NA");
 
 	base_add_h = readl_relaxed(ring->tqp->io_base +
 					HNS3_RING_RX_RING_BASEADDR_H_REG);
@@ -700,36 +700,36 @@ static void hns3_dump_tx_queue_info(struct hns3_enet_ring *ring,
 	u32 base_add_l, base_add_h;
 	u32 j = 0;
 
-	sprintf(result[j++], "%8u", index);
-	sprintf(result[j++], "%6u", readl_relaxed(ring->tqp->io_base +
+	sprintf(result[j++], "%u", index);
+	sprintf(result[j++], "%u", readl_relaxed(ring->tqp->io_base +
 		HNS3_RING_TX_RING_BD_NUM_REG));
 
-	sprintf(result[j++], "%2u", readl_relaxed(ring->tqp->io_base +
+	sprintf(result[j++], "%u", readl_relaxed(ring->tqp->io_base +
 		HNS3_RING_TX_RING_TC_REG));
 
-	sprintf(result[j++], "%4u", readl_relaxed(ring->tqp->io_base +
+	sprintf(result[j++], "%u", readl_relaxed(ring->tqp->io_base +
 		HNS3_RING_TX_RING_TAIL_REG));
 
-	sprintf(result[j++], "%4u", readl_relaxed(ring->tqp->io_base +
+	sprintf(result[j++], "%u", readl_relaxed(ring->tqp->io_base +
 		HNS3_RING_TX_RING_HEAD_REG));
 
-	sprintf(result[j++], "%6u", readl_relaxed(ring->tqp->io_base +
+	sprintf(result[j++], "%u", readl_relaxed(ring->tqp->io_base +
 		HNS3_RING_TX_RING_FBDNUM_REG));
 
-	sprintf(result[j++], "%6u", readl_relaxed(ring->tqp->io_base +
+	sprintf(result[j++], "%u", readl_relaxed(ring->tqp->io_base +
 		HNS3_RING_TX_RING_OFFSET_REG));
 
-	sprintf(result[j++], "%6u", readl_relaxed(ring->tqp->io_base +
+	sprintf(result[j++], "%u", readl_relaxed(ring->tqp->io_base +
 		HNS3_RING_TX_RING_PKTNUM_RECORD_REG));
 
-	sprintf(result[j++], "%7s", readl_relaxed(ring->tqp->io_base +
+	sprintf(result[j++], "%s", readl_relaxed(ring->tqp->io_base +
 		HNS3_RING_EN_REG) ? "on" : "off");
 
 	if (hnae3_ae_dev_tqp_txrx_indep_supported(ae_dev))
-		sprintf(result[j++], "%10s", readl_relaxed(ring->tqp->io_base +
+		sprintf(result[j++], "%s", readl_relaxed(ring->tqp->io_base +
 			HNS3_RING_TX_EN_REG) ? "on" : "off");
 	else
-		sprintf(result[j++], "%10s", "NA");
+		sprintf(result[j++], "%s", "NA");
 
 	base_add_h = readl_relaxed(ring->tqp->io_base +
 					HNS3_RING_TX_RING_BASEADDR_H_REG);
@@ -848,15 +848,15 @@ static void hns3_dump_rx_bd_info(struct hns3_nic_priv *priv,
 {
 	unsigned int j = 0;
 
-	sprintf(result[j++], "%5d", idx);
+	sprintf(result[j++], "%d", idx);
 	sprintf(result[j++], "%#x", le32_to_cpu(desc->rx.l234_info));
-	sprintf(result[j++], "%7u", le16_to_cpu(desc->rx.pkt_len));
-	sprintf(result[j++], "%4u", le16_to_cpu(desc->rx.size));
+	sprintf(result[j++], "%u", le16_to_cpu(desc->rx.pkt_len));
+	sprintf(result[j++], "%u", le16_to_cpu(desc->rx.size));
 	sprintf(result[j++], "%#x", le32_to_cpu(desc->rx.rss_hash));
-	sprintf(result[j++], "%5u", le16_to_cpu(desc->rx.fd_id));
-	sprintf(result[j++], "%8u", le16_to_cpu(desc->rx.vlan_tag));
-	sprintf(result[j++], "%15u", le16_to_cpu(desc->rx.o_dm_vlan_id_fb));
-	sprintf(result[j++], "%11u", le16_to_cpu(desc->rx.ot_vlan_tag));
+	sprintf(result[j++], "%u", le16_to_cpu(desc->rx.fd_id));
+	sprintf(result[j++], "%u", le16_to_cpu(desc->rx.vlan_tag));
+	sprintf(result[j++], "%u", le16_to_cpu(desc->rx.o_dm_vlan_id_fb));
+	sprintf(result[j++], "%u", le16_to_cpu(desc->rx.ot_vlan_tag));
 	sprintf(result[j++], "%#x", le32_to_cpu(desc->rx.bd_base_info));
 	if (test_bit(HNS3_NIC_STATE_RXD_ADV_LAYOUT_ENABLE, &priv->state)) {
 		u32 ol_info = le32_to_cpu(desc->rx.ol_info);
@@ -930,19 +930,19 @@ static void hns3_dump_tx_bd_info(struct hns3_nic_priv *priv,
 {
 	unsigned int j = 0;
 
-	sprintf(result[j++], "%6d", idx);
+	sprintf(result[j++], "%d", idx);
 	sprintf(result[j++], "%#llx", le64_to_cpu(desc->addr));
-	sprintf(result[j++], "%5u", le16_to_cpu(desc->tx.vlan_tag));
-	sprintf(result[j++], "%5u", le16_to_cpu(desc->tx.send_size));
+	sprintf(result[j++], "%u", le16_to_cpu(desc->tx.vlan_tag));
+	sprintf(result[j++], "%u", le16_to_cpu(desc->tx.send_size));
 	sprintf(result[j++], "%#x",
 		le32_to_cpu(desc->tx.type_cs_vlan_tso_len));
-	sprintf(result[j++], "%5u", le16_to_cpu(desc->tx.outer_vlan_tag));
-	sprintf(result[j++], "%5u", le16_to_cpu(desc->tx.tv));
-	sprintf(result[j++], "%10u",
+	sprintf(result[j++], "%u", le16_to_cpu(desc->tx.outer_vlan_tag));
+	sprintf(result[j++], "%u", le16_to_cpu(desc->tx.tv));
+	sprintf(result[j++], "%u",
 		le32_to_cpu(desc->tx.ol_type_vlan_len_msec));
 	sprintf(result[j++], "%#x", le32_to_cpu(desc->tx.paylen_ol4cs));
 	sprintf(result[j++], "%#x", le16_to_cpu(desc->tx.bdtp_fe_sc_vld_ra_ri));
-	sprintf(result[j++], "%5u", le16_to_cpu(desc->tx.mss_hw_csum));
+	sprintf(result[j++], "%u", le16_to_cpu(desc->tx.mss_hw_csum));
 }
 
 static int hns3_dbg_tx_bd_info(struct hns3_dbg_data *d, char *buf, int len)
-- 
2.33.0


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

* [PATCH net 3/6] net: hns3: fix error log of tx/rx tqps stats
  2022-04-24 12:57 [PATCH net 0/6] net: hns3: add some fixes for -net Guangbin Huang
  2022-04-24 12:57 ` [PATCH net 1/6] net: hns3: clear inited state and stop client after failed to register netdev Guangbin Huang
  2022-04-24 12:57 ` [PATCH net 2/6] net: hns3: align the debugfs output to the left Guangbin Huang
@ 2022-04-24 12:57 ` Guangbin Huang
  2022-04-24 12:57 ` [PATCH net 4/6] net: hns3: modify the return code of hclge_get_ring_chain_from_mbx Guangbin Huang
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 14+ messages in thread
From: Guangbin Huang @ 2022-04-24 12:57 UTC (permalink / raw)
  To: davem, kuba; +Cc: netdev, linux-kernel, lipeng321, huangguangbin2, chenhao288

From: Peng Li <lipeng321@huawei.com>

The comments in function hclge_comm_tqps_update_stats is not right,
so fix it.

Fixes: 287db5c40d15 ("net: hns3: create new set of common tqp stats APIs for PF and VF reuse")
Signed-off-by: Peng Li <lipeng321@huawei.com>
Signed-off-by: Guangbin Huang <huangguangbin2@huawei.com>
---
 .../hisilicon/hns3/hns3_common/hclge_comm_tqp_stats.c         | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3_common/hclge_comm_tqp_stats.c b/drivers/net/ethernet/hisilicon/hns3/hns3_common/hclge_comm_tqp_stats.c
index 0c60f41fca8a..f3c9395d8351 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3_common/hclge_comm_tqp_stats.c
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3_common/hclge_comm_tqp_stats.c
@@ -75,7 +75,7 @@ int hclge_comm_tqps_update_stats(struct hnae3_handle *handle,
 		ret = hclge_comm_cmd_send(hw, &desc, 1);
 		if (ret) {
 			dev_err(&hw->cmq.csq.pdev->dev,
-				"failed to get tqp stat, ret = %d, tx = %u.\n",
+				"failed to get tqp stat, ret = %d, rx = %u.\n",
 				ret, i);
 			return ret;
 		}
@@ -89,7 +89,7 @@ int hclge_comm_tqps_update_stats(struct hnae3_handle *handle,
 		ret = hclge_comm_cmd_send(hw, &desc, 1);
 		if (ret) {
 			dev_err(&hw->cmq.csq.pdev->dev,
-				"failed to get tqp stat, ret = %d, rx = %u.\n",
+				"failed to get tqp stat, ret = %d, tx = %u.\n",
 				ret, i);
 			return ret;
 		}
-- 
2.33.0


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

* [PATCH net 4/6] net: hns3: modify the return code of hclge_get_ring_chain_from_mbx
  2022-04-24 12:57 [PATCH net 0/6] net: hns3: add some fixes for -net Guangbin Huang
                   ` (2 preceding siblings ...)
  2022-04-24 12:57 ` [PATCH net 3/6] net: hns3: fix error log of tx/rx tqps stats Guangbin Huang
@ 2022-04-24 12:57 ` Guangbin Huang
  2022-04-24 12:57 ` [PATCH net 5/6] net: hns3: add validity check for message data length Guangbin Huang
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 14+ messages in thread
From: Guangbin Huang @ 2022-04-24 12:57 UTC (permalink / raw)
  To: davem, kuba; +Cc: netdev, linux-kernel, lipeng321, huangguangbin2, chenhao288

From: Jie Wang <wangjie125@huawei.com>

Currently, function hclge_get_ring_chain_from_mbx will return -ENOMEM if
ring_num is bigger than HCLGE_MBX_MAX_RING_CHAIN_PARAM_NUM. It is better to
return -EINVAL for the invalid parameter case.

So this patch fixes it by return -EINVAL in this abnormal branch.

Fixes: 5d02a58dae60 ("net: hns3: fix for buffer overflow smatch warning")
Signed-off-by: Jie Wang <wangjie125@huawei.com>
Signed-off-by: Guangbin Huang <huangguangbin2@huawei.com>
---
 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c
index 6799d16de34b..36cbafc5f944 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c
@@ -176,7 +176,7 @@ static int hclge_get_ring_chain_from_mbx(
 	ring_num = req->msg.ring_num;
 
 	if (ring_num > HCLGE_MBX_MAX_RING_CHAIN_PARAM_NUM)
-		return -ENOMEM;
+		return -EINVAL;
 
 	for (i = 0; i < ring_num; i++) {
 		if (req->msg.param[i].tqp_index >= vport->nic.kinfo.rss_size) {
-- 
2.33.0


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

* [PATCH net 5/6] net: hns3: add validity check for message data length
  2022-04-24 12:57 [PATCH net 0/6] net: hns3: add some fixes for -net Guangbin Huang
                   ` (3 preceding siblings ...)
  2022-04-24 12:57 ` [PATCH net 4/6] net: hns3: modify the return code of hclge_get_ring_chain_from_mbx Guangbin Huang
@ 2022-04-24 12:57 ` Guangbin Huang
  2022-04-24 12:57 ` [PATCH net 6/6] net: hns3: add return value for mailbox handling in PF Guangbin Huang
  2022-04-25  9:50 ` [PATCH net 0/6] net: hns3: add some fixes for -net patchwork-bot+netdevbpf
  6 siblings, 0 replies; 14+ messages in thread
From: Guangbin Huang @ 2022-04-24 12:57 UTC (permalink / raw)
  To: davem, kuba; +Cc: netdev, linux-kernel, lipeng321, huangguangbin2, chenhao288

From: Jian Shen <shenjian15@huawei.com>

Add validity check for message data length in function
hclge_send_mbx_msg(), avoid unexpected overflow.

Fixes: dde1a86e93ca ("net: hns3: Add mailbox support to PF driver")
Signed-off-by: Jian Shen <shenjian15@huawei.com>
Signed-off-by: Guangbin Huang <huangguangbin2@huawei.com>
---
 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c
index 36cbafc5f944..53f939923c28 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c
@@ -94,6 +94,13 @@ static int hclge_send_mbx_msg(struct hclge_vport *vport, u8 *msg, u16 msg_len,
 	enum hclge_comm_cmd_status status;
 	struct hclge_desc desc;
 
+	if (msg_len > HCLGE_MBX_MAX_MSG_SIZE) {
+		dev_err(&hdev->pdev->dev,
+			"msg data length(=%u) exceeds maximum(=%u)\n",
+			msg_len, HCLGE_MBX_MAX_MSG_SIZE);
+		return -EMSGSIZE;
+	}
+
 	resp_pf_to_vf = (struct hclge_mbx_pf_to_vf_cmd *)desc.data;
 
 	hclge_cmd_setup_basic_desc(&desc, HCLGEVF_OPC_MBX_PF_TO_VF, false);
-- 
2.33.0


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

* [PATCH net 6/6] net: hns3: add return value for mailbox handling in PF
  2022-04-24 12:57 [PATCH net 0/6] net: hns3: add some fixes for -net Guangbin Huang
                   ` (4 preceding siblings ...)
  2022-04-24 12:57 ` [PATCH net 5/6] net: hns3: add validity check for message data length Guangbin Huang
@ 2022-04-24 12:57 ` Guangbin Huang
  2022-04-25  9:50 ` [PATCH net 0/6] net: hns3: add some fixes for -net patchwork-bot+netdevbpf
  6 siblings, 0 replies; 14+ messages in thread
From: Guangbin Huang @ 2022-04-24 12:57 UTC (permalink / raw)
  To: davem, kuba; +Cc: netdev, linux-kernel, lipeng321, huangguangbin2, chenhao288

From: Jian Shen <shenjian15@huawei.com>

Currently, there are some querying mailboxes sent from VF to PF,
and VF will wait the PF's handling result. For mailbox
HCLGE_MBX_GET_QID_IN_PF and HCLGE_MBX_GET_RSS_KEY, it may fail
when the input parameter is invalid, but the prototype of their
handler function is void. In this case, PF always return success
to VF, which may cause the VF get incorrect result.

Fixes it by adding return value for these function.

Fixes: 63b1279d9905 ("net: hns3: check queue id range before using")
Fixes: 532cfc0df1e4 ("net: hns3: add a check for index in hclge_get_rss_key()")
Signed-off-by: Jian Shen <shenjian15@huawei.com>
Signed-off-by: Guangbin Huang <huangguangbin2@huawei.com>
---
 .../hisilicon/hns3/hns3pf/hclge_mbx.c         | 22 ++++++++++---------
 1 file changed, 12 insertions(+), 10 deletions(-)

diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c
index 53f939923c28..7998ca617a92 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c
@@ -594,9 +594,9 @@ static int hclge_set_vf_mtu(struct hclge_vport *vport,
 	return hclge_set_vport_mtu(vport, mtu);
 }
 
-static void hclge_get_queue_id_in_pf(struct hclge_vport *vport,
-				     struct hclge_mbx_vf_to_pf_cmd *mbx_req,
-				     struct hclge_respond_to_vf_msg *resp_msg)
+static int hclge_get_queue_id_in_pf(struct hclge_vport *vport,
+				    struct hclge_mbx_vf_to_pf_cmd *mbx_req,
+				    struct hclge_respond_to_vf_msg *resp_msg)
 {
 	struct hnae3_handle *handle = &vport->nic;
 	struct hclge_dev *hdev = vport->back;
@@ -606,17 +606,18 @@ static void hclge_get_queue_id_in_pf(struct hclge_vport *vport,
 	if (queue_id >= handle->kinfo.num_tqps) {
 		dev_err(&hdev->pdev->dev, "Invalid queue id(%u) from VF %u\n",
 			queue_id, mbx_req->mbx_src_vfid);
-		return;
+		return -EINVAL;
 	}
 
 	qid_in_pf = hclge_covert_handle_qid_global(&vport->nic, queue_id);
 	memcpy(resp_msg->data, &qid_in_pf, sizeof(qid_in_pf));
 	resp_msg->len = sizeof(qid_in_pf);
+	return 0;
 }
 
-static void hclge_get_rss_key(struct hclge_vport *vport,
-			      struct hclge_mbx_vf_to_pf_cmd *mbx_req,
-			      struct hclge_respond_to_vf_msg *resp_msg)
+static int hclge_get_rss_key(struct hclge_vport *vport,
+			     struct hclge_mbx_vf_to_pf_cmd *mbx_req,
+			     struct hclge_respond_to_vf_msg *resp_msg)
 {
 #define HCLGE_RSS_MBX_RESP_LEN	8
 	struct hclge_dev *hdev = vport->back;
@@ -634,13 +635,14 @@ static void hclge_get_rss_key(struct hclge_vport *vport,
 		dev_warn(&hdev->pdev->dev,
 			 "failed to get the rss hash key, the index(%u) invalid !\n",
 			 index);
-		return;
+		return -EINVAL;
 	}
 
 	memcpy(resp_msg->data,
 	       &rss_cfg->rss_hash_key[index * HCLGE_RSS_MBX_RESP_LEN],
 	       HCLGE_RSS_MBX_RESP_LEN);
 	resp_msg->len = HCLGE_RSS_MBX_RESP_LEN;
+	return 0;
 }
 
 static void hclge_link_fail_parse(struct hclge_dev *hdev, u8 link_fail_code)
@@ -816,10 +818,10 @@ void hclge_mbx_handler(struct hclge_dev *hdev)
 					"VF fail(%d) to set mtu\n", ret);
 			break;
 		case HCLGE_MBX_GET_QID_IN_PF:
-			hclge_get_queue_id_in_pf(vport, req, &resp_msg);
+			ret = hclge_get_queue_id_in_pf(vport, req, &resp_msg);
 			break;
 		case HCLGE_MBX_GET_RSS_KEY:
-			hclge_get_rss_key(vport, req, &resp_msg);
+			ret = hclge_get_rss_key(vport, req, &resp_msg);
 			break;
 		case HCLGE_MBX_GET_LINK_MODE:
 			hclge_get_link_mode(vport, req);
-- 
2.33.0


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

* Re: [PATCH net 0/6] net: hns3: add some fixes for -net
  2022-04-24 12:57 [PATCH net 0/6] net: hns3: add some fixes for -net Guangbin Huang
                   ` (5 preceding siblings ...)
  2022-04-24 12:57 ` [PATCH net 6/6] net: hns3: add return value for mailbox handling in PF Guangbin Huang
@ 2022-04-25  9:50 ` patchwork-bot+netdevbpf
  6 siblings, 0 replies; 14+ messages in thread
From: patchwork-bot+netdevbpf @ 2022-04-25  9:50 UTC (permalink / raw)
  To: Guangbin Huang; +Cc: davem, kuba, netdev, linux-kernel, lipeng321, chenhao288

Hello:

This series was applied to netdev/net.git (master)
by David S. Miller <davem@davemloft.net>:

On Sun, 24 Apr 2022 20:57:19 +0800 you wrote:
> This series adds some fixes for the HNS3 ethernet driver.
> 
> Hao Chen (1):
>   net: hns3: align the debugfs output to the left
> 
> Jian Shen (3):
>   net: hns3: clear inited state and stop client after failed to register
>     netdev
>   net: hns3: add validity check for message data length
>   net: hns3: add return value for mailbox handling in PF
> 
> [...]

Here is the summary with links:
  - [net,1/6] net: hns3: clear inited state and stop client after failed to register netdev
    https://git.kernel.org/netdev/net/c/e98365afc1e9
  - [net,2/6] net: hns3: align the debugfs output to the left
    https://git.kernel.org/netdev/net/c/1ec1968e4e43
  - [net,3/6] net: hns3: fix error log of tx/rx tqps stats
    https://git.kernel.org/netdev/net/c/123521b6b260
  - [net,4/6] net: hns3: modify the return code of hclge_get_ring_chain_from_mbx
    https://git.kernel.org/netdev/net/c/48009e997297
  - [net,5/6] net: hns3: add validity check for message data length
    https://git.kernel.org/netdev/net/c/7d413735cb18
  - [net,6/6] net: hns3: add return value for mailbox handling in PF
    https://git.kernel.org/netdev/net/c/c59d60629684

You are awesome, thank you!
-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



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

* Re: [PATCH net 0/6] net: hns3: add some fixes for -net
  2022-06-11 12:25 Guangbin Huang
@ 2022-06-13 11:00 ` patchwork-bot+netdevbpf
  0 siblings, 0 replies; 14+ messages in thread
From: patchwork-bot+netdevbpf @ 2022-06-13 11:00 UTC (permalink / raw)
  To: Guangbin Huang; +Cc: davem, kuba, netdev, linux-kernel, lipeng321, chenhao288

Hello:

This series was applied to netdev/net.git (master)
by David S. Miller <davem@davemloft.net>:

On Sat, 11 Jun 2022 20:25:23 +0800 you wrote:
> This series adds some fixes for the HNS3 ethernet driver.
> 
> Guangbin Huang (3):
>   net: hns3: set port base vlan tbl_sta to false before removing old
>     vlan
>   net: hns3: restore tm priority/qset to default settings when tc
>     disabled
>   net: hns3: fix tm port shapping of fibre port is incorrect after
>     driver initialization
> 
> [...]

Here is the summary with links:
  - [net,1/6] net: hns3: set port base vlan tbl_sta to false before removing old vlan
    https://git.kernel.org/netdev/net/c/9eda7d8bcbdb
  - [net,2/6] net: hns3: don't push link state to VF if unalive
    https://git.kernel.org/netdev/net/c/283847e3ef6d
  - [net,3/6] net: hns3: modify the ring param print info
    https://git.kernel.org/netdev/net/c/cfd80687a538
  - [net,4/6] net: hns3: restore tm priority/qset to default settings when tc disabled
    https://git.kernel.org/netdev/net/c/e93530ae0e5d
  - [net,5/6] net: hns3: fix PF rss size initialization bug
    https://git.kernel.org/netdev/net/c/71b215f36dca
  - [net,6/6] net: hns3: fix tm port shapping of fibre port is incorrect after driver initialization
    https://git.kernel.org/netdev/net/c/12a367088772

You are awesome, thank you!
-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



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

* [PATCH net 0/6] net: hns3: add some fixes for -net
@ 2022-06-11 12:25 Guangbin Huang
  2022-06-13 11:00 ` patchwork-bot+netdevbpf
  0 siblings, 1 reply; 14+ messages in thread
From: Guangbin Huang @ 2022-06-11 12:25 UTC (permalink / raw)
  To: davem, kuba; +Cc: netdev, linux-kernel, lipeng321, huangguangbin2, chenhao288

This series adds some fixes for the HNS3 ethernet driver.

Guangbin Huang (3):
  net: hns3: set port base vlan tbl_sta to false before removing old
    vlan
  net: hns3: restore tm priority/qset to default settings when tc
    disabled
  net: hns3: fix tm port shapping of fibre port is incorrect after
    driver initialization

Jian Shen (1):
  net: hns3: don't push link state to VF if unalive

Jie Wang (2):
  net: hns3: modify the ring param print info
  net: hns3: fix PF rss size initialization bug

 drivers/net/ethernet/hisilicon/hns3/hnae3.h   |   1 +
 .../ethernet/hisilicon/hns3/hns3_ethtool.c    |   2 +-
 .../hisilicon/hns3/hns3pf/hclge_main.c        |  18 +++-
 .../ethernet/hisilicon/hns3/hns3pf/hclge_tm.c | 101 ++++++++++++------
 .../ethernet/hisilicon/hns3/hns3pf/hclge_tm.h |   1 +
 5 files changed, 86 insertions(+), 37 deletions(-)

-- 
2.33.0


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

* Re: [PATCH net 0/6] net: hns3: add some fixes for -net
  2022-03-26  9:50 Guangbin Huang
@ 2022-03-26 16:20 ` patchwork-bot+netdevbpf
  0 siblings, 0 replies; 14+ messages in thread
From: patchwork-bot+netdevbpf @ 2022-03-26 16:20 UTC (permalink / raw)
  To: Guangbin Huang; +Cc: davem, kuba, netdev, linux-kernel, lipeng321, chenhao288

Hello:

This series was applied to netdev/net.git (master)
by David S. Miller <davem@davemloft.net>:

On Sat, 26 Mar 2022 17:50:59 +0800 you wrote:
> This series adds some fixes for the HNS3 ethernet driver.
> 
> Guangbin Huang (1):
>   net: hns3: fix phy can not link up when autoneg off and reset
> 
> Hao Chen (4):
>   net: hns3: fix ethtool tx copybreak buf size indicating not aligned
>     issue
>   net: hns3: add max order judgement for tx spare buffer
>   net: hns3: add netdev reset check for hns3_set_tunable()
>   net: hns3: add NULL pointer check for hns3_set/get_ringparam()
> 
> [...]

Here is the summary with links:
  - [net,1/6] net: hns3: fix ethtool tx copybreak buf size indicating not aligned issue
    https://git.kernel.org/netdev/net/c/877837211802
  - [net,2/6] net: hns3: add max order judgement for tx spare buffer
    https://git.kernel.org/netdev/net/c/a89cbb16995b
  - [net,3/6] net: hns3: clean residual vf config after disable sriov
    https://git.kernel.org/netdev/net/c/671cb8cbb9c9
  - [net,4/6] net: hns3: add netdev reset check for hns3_set_tunable()
    https://git.kernel.org/netdev/net/c/f5cd60169f98
  - [net,5/6] net: hns3: add NULL pointer check for hns3_set/get_ringparam()
    https://git.kernel.org/netdev/net/c/4d07c5936c25
  - [net,6/6] net: hns3: fix phy can not link up when autoneg off and reset
    https://git.kernel.org/netdev/net/c/ad0ecaef6a2c

You are awesome, thank you!
-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



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

* [PATCH net 0/6] net: hns3: add some fixes for -net
@ 2022-03-26  9:50 Guangbin Huang
  2022-03-26 16:20 ` patchwork-bot+netdevbpf
  0 siblings, 1 reply; 14+ messages in thread
From: Guangbin Huang @ 2022-03-26  9:50 UTC (permalink / raw)
  To: davem, kuba; +Cc: netdev, linux-kernel, lipeng321, huangguangbin2, chenhao288

This series adds some fixes for the HNS3 ethernet driver.

Guangbin Huang (1):
  net: hns3: fix phy can not link up when autoneg off and reset

Hao Chen (4):
  net: hns3: fix ethtool tx copybreak buf size indicating not aligned
    issue
  net: hns3: add max order judgement for tx spare buffer
  net: hns3: add netdev reset check for hns3_set_tunable()
  net: hns3: add NULL pointer check for hns3_set/get_ringparam()

Peng Li (1):
  net: hns3: clean residual vf config after disable sriov

 drivers/net/ethernet/hisilicon/hns3/hnae3.h   |  3 ++
 .../net/ethernet/hisilicon/hns3/hns3_enet.c   | 44 +++++++++++++---
 .../ethernet/hisilicon/hns3/hns3_ethtool.c    | 23 ++++++---
 .../hisilicon/hns3/hns3pf/hclge_main.c        | 50 +++++++++++++++++++
 .../hisilicon/hns3/hns3pf/hclge_mdio.c        |  4 +-
 5 files changed, 107 insertions(+), 17 deletions(-)

-- 
2.33.0


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

* [PATCH net 0/6] net: hns3: add some fixes for -net
@ 2021-09-15 13:52 Guangbin Huang
  0 siblings, 0 replies; 14+ messages in thread
From: Guangbin Huang @ 2021-09-15 13:52 UTC (permalink / raw)
  To: davem, kuba; +Cc: netdev, linux-kernel, lipeng321, huangguangbin2

This series adds some fixes for the HNS3 ethernet driver.

Jian Shen (2):
  net: hns3: fix change RSS 'hfunc' ineffective issue
  net: hns3: fix inconsistent vf id print

Jiaran Zhang (1):
  net: hns3: fix misuse vf id and vport id in some logs

Yufeng Mo (2):
  net: hns3: check queue id range before using
  net: hns3: fix a return value error in hclge_get_reset_status()

liaoguojia (1):
  net: hns3: check vlan id before using it

 .../hisilicon/hns3/hns3pf/hclge_err.c         |  8 +-
 .../hisilicon/hns3/hns3pf/hclge_main.c        | 80 +++++++++++++------
 .../hisilicon/hns3/hns3pf/hclge_mbx.c         | 10 ++-
 .../ethernet/hisilicon/hns3/hns3pf/hclge_tm.c |  2 +-
 .../hisilicon/hns3/hns3vf/hclgevf_main.c      | 52 +++++++-----
 5 files changed, 103 insertions(+), 49 deletions(-)

-- 
2.33.0


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

* [PATCH net 0/6]  net: hns3: add some fixes for -net
@ 2021-09-13 13:08 Guangbin Huang
  0 siblings, 0 replies; 14+ messages in thread
From: Guangbin Huang @ 2021-09-13 13:08 UTC (permalink / raw)
  To: davem, kuba; +Cc: netdev, linux-kernel, lipeng321, huangguangbin2

This series adds some fixes for the HNS3 ethernet driver.

Jiaran Zhang (2):
  net: hns3: fix the exception when query imp info
  net: hns3: fix the timing issue of VF clearing interrupt sources

Yufeng Mo (3):
  net: hns3: pad the short tunnel frame before sending to hardware
  net: hns3: change affinity_mask to numa node range
  net: hns3: disable mac in flr process

Yunsheng Lin (1):
  net: hns3: add option to turn off page pool feature

 .../net/ethernet/hisilicon/hns3/hns3_enet.c   | 14 +++++++++++---
 .../hisilicon/hns3/hns3pf/hclge_debugfs.c     |  4 ++++
 .../hisilicon/hns3/hns3pf/hclge_main.c        | 19 +++++++++++--------
 .../hisilicon/hns3/hns3vf/hclgevf_main.c      |  6 +++---
 4 files changed, 29 insertions(+), 14 deletions(-)

-- 
2.33.0


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

end of thread, other threads:[~2022-06-13 12:12 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-04-24 12:57 [PATCH net 0/6] net: hns3: add some fixes for -net Guangbin Huang
2022-04-24 12:57 ` [PATCH net 1/6] net: hns3: clear inited state and stop client after failed to register netdev Guangbin Huang
2022-04-24 12:57 ` [PATCH net 2/6] net: hns3: align the debugfs output to the left Guangbin Huang
2022-04-24 12:57 ` [PATCH net 3/6] net: hns3: fix error log of tx/rx tqps stats Guangbin Huang
2022-04-24 12:57 ` [PATCH net 4/6] net: hns3: modify the return code of hclge_get_ring_chain_from_mbx Guangbin Huang
2022-04-24 12:57 ` [PATCH net 5/6] net: hns3: add validity check for message data length Guangbin Huang
2022-04-24 12:57 ` [PATCH net 6/6] net: hns3: add return value for mailbox handling in PF Guangbin Huang
2022-04-25  9:50 ` [PATCH net 0/6] net: hns3: add some fixes for -net patchwork-bot+netdevbpf
  -- strict thread matches above, loose matches on Subject: below --
2022-06-11 12:25 Guangbin Huang
2022-06-13 11:00 ` patchwork-bot+netdevbpf
2022-03-26  9:50 Guangbin Huang
2022-03-26 16:20 ` patchwork-bot+netdevbpf
2021-09-15 13:52 Guangbin Huang
2021-09-13 13:08 Guangbin Huang

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).