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

Merge branch 'hns3-cleanups'

Guangbin Huang says:

====================
net: hns3: some cleanups for -next

To improve code readability and simplicity, this series add some cleanup
patches for the HNS3 ethernet driver.
====================

Signed-off-by: David S. Miller <davem@davemloft.net>

+106 -54
+1 -1
drivers/net/ethernet/hisilicon/hns3/hns3_debugfs.c
··· 1083 1083 sprintf(result[j++], "%u", index); 1084 1084 sprintf(result[j++], "%u", 1085 1085 READ_ONCE(ring->page_pool->pages_state_hold_cnt)); 1086 - sprintf(result[j++], "%u", 1086 + sprintf(result[j++], "%d", 1087 1087 atomic_read(&ring->page_pool->pages_state_release_cnt)); 1088 1088 sprintf(result[j++], "%u", ring->page_pool->p.pool_size); 1089 1089 sprintf(result[j++], "%u", ring->page_pool->p.order);
+2
drivers/net/ethernet/hisilicon/hns3/hns3_debugfs.h
··· 4 4 #ifndef __HNS3_DEBUGFS_H 5 5 #define __HNS3_DEBUGFS_H 6 6 7 + #include "hnae3.h" 8 + 7 9 #define HNS3_DBG_READ_LEN 65536 8 10 #define HNS3_DBG_READ_LEN_128KB 0x20000 9 11 #define HNS3_DBG_READ_LEN_1MB 0x100000
+3
drivers/net/ethernet/hisilicon/hns3/hns3_enet.h
··· 10 10 11 11 #include "hnae3.h" 12 12 13 + struct iphdr; 14 + struct ipv6hdr; 15 + 13 16 enum hns3_nic_state { 14 17 HNS3_NIC_STATE_TESTING, 15 18 HNS3_NIC_STATE_RESETTING,
+8 -5
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_debugfs.c
··· 77 77 .cmd = HCLGE_OPC_DFX_TQP_REG } }, 78 78 }; 79 79 80 + /* make sure: len(name) + interval >= maxlen(item data) + 2, 81 + * for example, name = "pkt_num"(len: 7), the prototype of item data is u32, 82 + * and print as "%u"(maxlen: 10), so the interval should be at least 5. 83 + */ 80 84 static void hclge_dbg_fill_content(char *content, u16 len, 81 85 const struct hclge_dbg_item *items, 82 86 const char **result, u16 size) ··· 103 99 static char *hclge_dbg_get_func_id_str(char *buf, u8 id) 104 100 { 105 101 if (id) 106 - sprintf(buf, "vf%u", id - 1); 102 + sprintf(buf, "vf%u", id - 1U); 107 103 else 108 104 sprintf(buf, "pf"); 109 105 ··· 782 778 783 779 data_str = kcalloc(ARRAY_SIZE(tm_pg_items), 784 780 HCLGE_DBG_DATA_STR_LEN, GFP_KERNEL); 785 - 786 781 if (!data_str) 787 782 return -ENOMEM; 788 783 ··· 1767 1764 #define HCLGE_MAX_NCL_CONFIG_LENGTH 16384 1768 1765 1769 1766 static void hclge_ncl_config_data_print(struct hclge_desc *desc, int *index, 1770 - char *buf, int *len, int *pos) 1767 + char *buf, int len, int *pos) 1771 1768 { 1772 1769 #define HCLGE_CMD_DATA_NUM 6 1773 1770 ··· 1779 1776 if (i == 0 && j == 0) 1780 1777 continue; 1781 1778 1782 - *pos += scnprintf(buf + *pos, *len - *pos, 1779 + *pos += scnprintf(buf + *pos, len - *pos, 1783 1780 "0x%04x | 0x%08x\n", offset, 1784 1781 le32_to_cpu(desc[i].data[j])); 1785 1782 ··· 1817 1814 if (ret) 1818 1815 return ret; 1819 1816 1820 - hclge_ncl_config_data_print(desc, &index, buf, &len, &pos); 1817 + hclge_ncl_config_data_print(desc, &index, buf, len, &pos); 1821 1818 } 1822 1819 1823 1820 return 0;
+1 -1
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_devlink.c
··· 120 120 hdev->devlink = devlink; 121 121 122 122 devlink_set_features(devlink, DEVLINK_F_RELOAD); 123 - devlink_register(devlink); 123 + (void)devlink_register(devlink); 124 124 return 0; 125 125 } 126 126
+76 -45
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
··· 1890 1890 u16 i, num_vport; 1891 1891 1892 1892 num_vport = hdev->num_req_vfs + 1; 1893 - for (i = 0; i < num_vport; i++) { 1893 + for (i = 0; i < num_vport; i++) { 1894 1894 int ret; 1895 1895 1896 1896 ret = hclge_map_tqp_to_vport(hdev, vport); ··· 6806 6806 if (vf > hdev->num_req_vfs) { 6807 6807 dev_err(&hdev->pdev->dev, 6808 6808 "Error: vf id (%u) should be less than %u\n", 6809 - vf - 1, hdev->num_req_vfs); 6809 + vf - 1U, hdev->num_req_vfs); 6810 6810 return -EINVAL; 6811 6811 } 6812 6812 ··· 6816 6816 if (ring >= tqps) { 6817 6817 dev_err(&hdev->pdev->dev, 6818 6818 "Error: queue id (%u) > max tqp num (%u)\n", 6819 - ring, tqps - 1); 6819 + ring, tqps - 1U); 6820 6820 return -EINVAL; 6821 6821 } 6822 6822 ··· 8000 8000 return ret; 8001 8001 } 8002 8002 8003 - static int hclge_cfg_common_loopback(struct hclge_dev *hdev, bool en, 8004 - enum hnae3_loop loop_mode) 8003 + static int hclge_cfg_common_loopback_cmd_send(struct hclge_dev *hdev, bool en, 8004 + enum hnae3_loop loop_mode) 8005 8005 { 8006 - #define HCLGE_COMMON_LB_RETRY_MS 10 8007 - #define HCLGE_COMMON_LB_RETRY_NUM 100 8008 - 8009 8006 struct hclge_common_lb_cmd *req; 8010 8007 struct hclge_desc desc; 8011 - int ret, i = 0; 8012 8008 u8 loop_mode_b; 8009 + int ret; 8013 8010 8014 8011 req = (struct hclge_common_lb_cmd *)desc.data; 8015 8012 hclge_cmd_setup_basic_desc(&desc, HCLGE_OPC_COMMON_LOOPBACK, false); ··· 8023 8026 break; 8024 8027 default: 8025 8028 dev_err(&hdev->pdev->dev, 8026 - "unsupported common loopback mode %d\n", loop_mode); 8029 + "unsupported loopback mode %d\n", loop_mode); 8027 8030 return -ENOTSUPP; 8028 8031 } 8029 8032 8030 - if (en) { 8033 + req->mask = loop_mode_b; 8034 + if (en) 8031 8035 req->enable = loop_mode_b; 8032 - req->mask = loop_mode_b; 8033 - } else { 8034 - req->mask = loop_mode_b; 8035 - } 8036 8036 8037 8037 ret = hclge_cmd_send(&hdev->hw, &desc, 1); 8038 - if (ret) { 8038 + if (ret) 8039 8039 dev_err(&hdev->pdev->dev, 8040 - "common loopback set fail, ret = %d\n", ret); 8041 - return ret; 8042 - } 8040 + "failed to send loopback cmd, loop_mode = %d, ret = %d\n", 8041 + loop_mode, ret); 8042 + 8043 + return ret; 8044 + } 8045 + 8046 + static int hclge_cfg_common_loopback_wait(struct hclge_dev *hdev) 8047 + { 8048 + #define HCLGE_COMMON_LB_RETRY_MS 10 8049 + #define HCLGE_COMMON_LB_RETRY_NUM 100 8050 + 8051 + struct hclge_common_lb_cmd *req; 8052 + struct hclge_desc desc; 8053 + u32 i = 0; 8054 + int ret; 8055 + 8056 + req = (struct hclge_common_lb_cmd *)desc.data; 8043 8057 8044 8058 do { 8045 8059 msleep(HCLGE_COMMON_LB_RETRY_MS); ··· 8059 8051 ret = hclge_cmd_send(&hdev->hw, &desc, 1); 8060 8052 if (ret) { 8061 8053 dev_err(&hdev->pdev->dev, 8062 - "common loopback get, ret = %d\n", ret); 8054 + "failed to get loopback done status, ret = %d\n", 8055 + ret); 8063 8056 return ret; 8064 8057 } 8065 8058 } while (++i < HCLGE_COMMON_LB_RETRY_NUM && 8066 8059 !(req->result & HCLGE_CMD_COMMON_LB_DONE_B)); 8067 8060 8068 8061 if (!(req->result & HCLGE_CMD_COMMON_LB_DONE_B)) { 8069 - dev_err(&hdev->pdev->dev, "common loopback set timeout\n"); 8062 + dev_err(&hdev->pdev->dev, "wait loopback timeout\n"); 8070 8063 return -EBUSY; 8071 8064 } else if (!(req->result & HCLGE_CMD_COMMON_LB_SUCCESS_B)) { 8072 - dev_err(&hdev->pdev->dev, "common loopback set failed in fw\n"); 8065 + dev_err(&hdev->pdev->dev, "faile to do loopback test\n"); 8073 8066 return -EIO; 8074 8067 } 8075 - return ret; 8068 + 8069 + return 0; 8070 + } 8071 + 8072 + static int hclge_cfg_common_loopback(struct hclge_dev *hdev, bool en, 8073 + enum hnae3_loop loop_mode) 8074 + { 8075 + int ret; 8076 + 8077 + ret = hclge_cfg_common_loopback_cmd_send(hdev, en, loop_mode); 8078 + if (ret) 8079 + return ret; 8080 + 8081 + return hclge_cfg_common_loopback_wait(hdev); 8076 8082 } 8077 8083 8078 8084 static int hclge_set_common_loopback(struct hclge_dev *hdev, bool en, ··· 9746 9724 9747 9725 ret = hclge_cmd_send(&hdev->hw, &desc, 1); 9748 9726 if (ret) { 9749 - dev_err(&hdev->pdev->dev, 9750 - "failed to get vlan filter config, ret = %d.\n", ret); 9727 + dev_err(&hdev->pdev->dev, "failed to get vport%u vlan filter config, ret = %d.\n", 9728 + vf_id, ret); 9751 9729 return ret; 9752 9730 } 9753 9731 ··· 9758 9736 9759 9737 ret = hclge_cmd_send(&hdev->hw, &desc, 1); 9760 9738 if (ret) 9761 - dev_err(&hdev->pdev->dev, "failed to set vlan filter, ret = %d.\n", 9762 - ret); 9739 + dev_err(&hdev->pdev->dev, "failed to set vport%u vlan filter, ret = %d.\n", 9740 + vf_id, ret); 9763 9741 9764 9742 return ret; 9765 9743 } ··· 10005 9983 return ret; 10006 9984 } 10007 9985 9986 + static bool hclge_need_update_port_vlan(struct hclge_dev *hdev, u16 vport_id, 9987 + u16 vlan_id, bool is_kill) 9988 + { 9989 + /* vlan 0 may be added twice when 8021q module is enabled */ 9990 + if (!is_kill && !vlan_id && 9991 + test_bit(vport_id, hdev->vlan_table[vlan_id])) 9992 + return false; 9993 + 9994 + if (!is_kill && test_and_set_bit(vport_id, hdev->vlan_table[vlan_id])) { 9995 + dev_warn(&hdev->pdev->dev, 9996 + "Add port vlan failed, vport %u is already in vlan %u\n", 9997 + vport_id, vlan_id); 9998 + return false; 9999 + } 10000 + 10001 + if (is_kill && 10002 + !test_and_clear_bit(vport_id, hdev->vlan_table[vlan_id])) { 10003 + dev_warn(&hdev->pdev->dev, 10004 + "Delete port vlan failed, vport %u is not in vlan %u\n", 10005 + vport_id, vlan_id); 10006 + return false; 10007 + } 10008 + 10009 + return true; 10010 + } 10011 + 10008 10012 static int hclge_set_vlan_filter_hw(struct hclge_dev *hdev, __be16 proto, 10009 10013 u16 vport_id, u16 vlan_id, 10010 10014 bool is_kill) ··· 10052 10004 return ret; 10053 10005 } 10054 10006 10055 - /* vlan 0 may be added twice when 8021q module is enabled */ 10056 - if (!is_kill && !vlan_id && 10057 - test_bit(vport_id, hdev->vlan_table[vlan_id])) 10007 + if (!hclge_need_update_port_vlan(hdev, vport_id, vlan_id, is_kill)) 10058 10008 return 0; 10059 - 10060 - if (!is_kill && test_and_set_bit(vport_id, hdev->vlan_table[vlan_id])) { 10061 - dev_err(&hdev->pdev->dev, 10062 - "Add port vlan failed, vport %u is already in vlan %u\n", 10063 - vport_id, vlan_id); 10064 - return -EINVAL; 10065 - } 10066 - 10067 - if (is_kill && 10068 - !test_and_clear_bit(vport_id, hdev->vlan_table[vlan_id])) { 10069 - dev_err(&hdev->pdev->dev, 10070 - "Delete port vlan failed, vport %u is not in vlan %u\n", 10071 - vport_id, vlan_id); 10072 - return -EINVAL; 10073 - } 10074 10009 10075 10010 for_each_set_bit(vport_idx, hdev->vlan_table[vlan_id], HCLGE_VPORT_NUM) 10076 10011 vport_num++;
+1 -1
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c
··· 181 181 if (req->msg.param[i].tqp_index >= vport->nic.kinfo.rss_size) { 182 182 dev_err(&hdev->pdev->dev, "tqp index(%u) is out of range(0-%u)\n", 183 183 req->msg.param[i].tqp_index, 184 - vport->nic.kinfo.rss_size - 1); 184 + vport->nic.kinfo.rss_size - 1U); 185 185 return -EINVAL; 186 186 } 187 187 }
+4
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mdio.h
··· 4 4 #ifndef __HCLGE_MDIO_H 5 5 #define __HCLGE_MDIO_H 6 6 7 + #include "hnae3.h" 8 + 9 + struct hclge_dev; 10 + 7 11 int hclge_mac_mdio_config(struct hclge_dev *hdev); 8 12 int hclge_mac_connect_phy(struct hnae3_handle *handle); 9 13 void hclge_mac_disconnect_phy(struct hnae3_handle *handle);
+3
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_ptp.h
··· 8 8 #include <linux/net_tstamp.h> 9 9 #include <linux/types.h> 10 10 11 + struct hclge_dev; 12 + struct ifreq; 13 + 11 14 #define HCLGE_PTP_REG_OFFSET 0x29000 12 15 13 16 #define HCLGE_PTP_TX_TS_SEQID_REG 0x0
+6
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_tm.h
··· 6 6 7 7 #include <linux/types.h> 8 8 9 + #include "hnae3.h" 10 + 11 + struct hclge_dev; 12 + struct hclge_vport; 13 + enum hclge_opcode_type; 14 + 9 15 /* MAC Pause */ 10 16 #define HCLGE_TX_MAC_PAUSE_EN_MSK BIT(0) 11 17 #define HCLGE_RX_MAC_PAUSE_EN_MSK BIT(1)
+1 -1
drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_devlink.c
··· 122 122 hdev->devlink = devlink; 123 123 124 124 devlink_set_features(devlink, DEVLINK_F_RELOAD); 125 - devlink_register(devlink); 125 + (void)devlink_register(devlink); 126 126 return 0; 127 127 } 128 128