forked from ~ljy/RK356X_SDK_RELEASE

hc
2023-12-09 95099d4622f8cb224d94e314c7a8e0df60b13f87
kernel/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_tm.h
....@@ -1,4 +1,4 @@
1
-// SPDX-License-Identifier: GPL-2.0+
1
+/* SPDX-License-Identifier: GPL-2.0+ */
22 // Copyright (c) 2016-2017 Hisilicon Limited.
33
44 #ifndef __HCLGE_TM_H
....@@ -12,12 +12,14 @@
1212
1313 #define HCLGE_TM_PORT_BASE_MODE_MSK BIT(0)
1414
15
-#define HCLGE_DEFAULT_PAUSE_TRANS_GAP 0xFF
15
+#define HCLGE_DEFAULT_PAUSE_TRANS_GAP 0x7F
1616 #define HCLGE_DEFAULT_PAUSE_TRANS_TIME 0xFFFF
1717
1818 /* SP or DWRR */
1919 #define HCLGE_TM_TX_SCHD_DWRR_MSK BIT(0)
2020 #define HCLGE_TM_TX_SCHD_SP_MSK (0xFE)
21
+
22
+#define HCLGE_ETHER_MAX_RATE 100000
2123
2224 struct hclge_pg_to_pri_link_cmd {
2325 u8 pg_id;
....@@ -40,6 +42,13 @@
4042 __le16 qset_id;
4143 };
4244
45
+struct hclge_tqp_tx_queue_tc_cmd {
46
+ __le16 queue_id;
47
+ __le16 rsvd;
48
+ u8 tc_id;
49
+ u8 rev[3];
50
+};
51
+
4352 struct hclge_pg_weight_cmd {
4453 u8 pg_id;
4554 u8 dwrr;
....@@ -53,6 +62,12 @@
5362 struct hclge_qs_weight_cmd {
5463 __le16 qs_id;
5564 u8 dwrr;
65
+};
66
+
67
+struct hclge_ets_tc_weight_cmd {
68
+ u8 tc_weight[HNAE3_MAX_TC];
69
+ u8 weight_offset;
70
+ u8 rsvd[15];
5671 };
5772
5873 #define HCLGE_TM_SHAP_IR_B_MSK GENMASK(7, 0)
....@@ -83,6 +98,12 @@
8398 __le32 pg_shapping_para;
8499 };
85100
101
+struct hclge_qs_shapping_cmd {
102
+ __le16 qs_id;
103
+ u8 rsvd[2];
104
+ __le32 qs_shapping_para;
105
+};
106
+
86107 #define HCLGE_BP_GRP_NUM 32
87108 #define HCLGE_BP_SUB_GRP_ID_S 0
88109 #define HCLGE_BP_SUB_GRP_ID_M GENMASK(4, 0)
....@@ -106,6 +127,10 @@
106127 u8 pause_trans_gap;
107128 u8 rsvd;
108129 __le16 pause_trans_time;
130
+ u8 rsvd1[6];
131
+ /* extra mac address to do double check for pause frame */
132
+ u8 mac_addr_extra[ETH_ALEN];
133
+ u16 rsvd2;
109134 };
110135
111136 struct hclge_pfc_stats_cmd {
....@@ -114,6 +139,12 @@
114139
115140 struct hclge_port_shapping_cmd {
116141 __le32 port_shapping_para;
142
+};
143
+
144
+struct hclge_shaper_ir_para {
145
+ u8 ir_b; /* IR_B parameter of IR shaper */
146
+ u8 ir_u; /* IR_U parameter of IR shaper */
147
+ u8 ir_s; /* IR_S parameter of IR shaper */
117148 };
118149
119150 #define hclge_tm_set_field(dest, string, val) \
....@@ -125,15 +156,18 @@
125156 (HCLGE_TM_SHAP_##string##_LSH))
126157
127158 int hclge_tm_schd_init(struct hclge_dev *hdev);
128
-int hclge_pause_setup_hw(struct hclge_dev *hdev);
129
-int hclge_tm_schd_mode_hw(struct hclge_dev *hdev);
130
-int hclge_tm_prio_tc_info_update(struct hclge_dev *hdev, u8 *prio_tc);
159
+int hclge_tm_vport_map_update(struct hclge_dev *hdev);
160
+int hclge_pause_setup_hw(struct hclge_dev *hdev, bool init);
161
+int hclge_tm_schd_setup_hw(struct hclge_dev *hdev);
162
+void hclge_tm_prio_tc_info_update(struct hclge_dev *hdev, u8 *prio_tc);
131163 void hclge_tm_schd_info_update(struct hclge_dev *hdev, u8 num_tc);
164
+void hclge_tm_pfc_info_update(struct hclge_dev *hdev);
132165 int hclge_tm_dwrr_cfg(struct hclge_dev *hdev);
133
-int hclge_tm_map_cfg(struct hclge_dev *hdev);
134
-int hclge_tm_init_hw(struct hclge_dev *hdev);
166
+int hclge_tm_init_hw(struct hclge_dev *hdev, bool init);
135167 int hclge_mac_pause_en_cfg(struct hclge_dev *hdev, bool tx, bool rx);
136168 int hclge_pause_addr_cfg(struct hclge_dev *hdev, const u8 *mac_addr);
137169 int hclge_pfc_rx_stats_get(struct hclge_dev *hdev, u64 *stats);
138170 int hclge_pfc_tx_stats_get(struct hclge_dev *hdev, u64 *stats);
171
+int hclge_tm_qs_shaper_cfg(struct hclge_vport *vport, int max_tx_rate);
172
+
139173 #endif