Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge branch 'net-hns3-add-some-fixes-for-net'

Guangbin Huang says:

====================
net: hns3: add some fixes for -net

This series adds some fixes for the HNS3 ethernet driver.
====================

Link: https://lore.kernel.org/r/20211126120318.33921-1-huangguangbin2@huawei.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>

+13 -3
+7 -1
drivers/net/ethernet/hisilicon/hns3/hns3_debugfs.c
··· 1081 1081 u32 j = 0; 1082 1082 1083 1083 sprintf(result[j++], "%u", index); 1084 - sprintf(result[j++], "%u", ring->page_pool->pages_state_hold_cnt); 1084 + sprintf(result[j++], "%u", 1085 + READ_ONCE(ring->page_pool->pages_state_hold_cnt)); 1085 1086 sprintf(result[j++], "%u", 1086 1087 atomic_read(&ring->page_pool->pages_state_release_cnt)); 1087 1088 sprintf(result[j++], "%u", ring->page_pool->p.pool_size); ··· 1104 1103 1105 1104 if (!priv->ring) { 1106 1105 dev_err(&h->pdev->dev, "priv->ring is NULL\n"); 1106 + return -EFAULT; 1107 + } 1108 + 1109 + if (!priv->ring[h->kinfo.num_tqps].page_pool) { 1110 + dev_err(&h->pdev->dev, "page pool is not initialized\n"); 1107 1111 return -EFAULT; 1108 1112 } 1109 1113
+4
drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c
··· 987 987 struct hnae3_ae_dev *ae_dev = pci_get_drvdata(h->pdev); 988 988 const struct hnae3_ae_ops *ops = h->ae_algo->ops; 989 989 const struct hns3_reset_type_map *rst_type_map; 990 + enum ethtool_reset_flags rst_flags; 990 991 u32 i, size; 991 992 992 993 if (ops->ae_dev_resetting && ops->ae_dev_resetting(h)) ··· 1007 1006 for (i = 0; i < size; i++) { 1008 1007 if (rst_type_map[i].rst_flags == *flags) { 1009 1008 rst_type = rst_type_map[i].rst_type; 1009 + rst_flags = rst_type_map[i].rst_flags; 1010 1010 break; 1011 1011 } 1012 1012 } ··· 1022 1020 ops->set_default_reset_request(ae_dev, rst_type); 1023 1021 1024 1022 ops->reset_event(h->pdev, h); 1023 + 1024 + *flags &= ~rst_flags; 1025 1025 1026 1026 return 0; 1027 1027 }
+2 -2
drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c
··· 703 703 roundup_size = ilog2(roundup_size); 704 704 705 705 for (i = 0; i < HCLGEVF_MAX_TC_NUM; i++) { 706 - tc_valid[i] = !!(hdev->hw_tc_map & BIT(i)); 706 + tc_valid[i] = 1; 707 707 tc_size[i] = roundup_size; 708 - tc_offset[i] = rss_size * i; 708 + tc_offset[i] = (hdev->hw_tc_map & BIT(i)) ? rss_size * i : 0; 709 709 } 710 710 711 711 hclgevf_cmd_setup_basic_desc(&desc, HCLGEVF_OPC_RSS_TC_MODE, false);