* [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 [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 [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 [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 [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 [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 [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
* [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-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-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* 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 @ 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
Powered by JetHome