forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
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)
....@@ -96,6 +117,9 @@
96117 u32 rsvd1;
97118 };
98119
120
+#define HCLGE_PFC_DISABLE 0
121
+#define HCLGE_PFC_TX_RX_DISABLE 0
122
+
99123 struct hclge_pfc_en_cmd {
100124 u8 tx_rx_en_bitmap;
101125 u8 pri_en_bitmap;
....@@ -106,6 +130,10 @@
106130 u8 pause_trans_gap;
107131 u8 rsvd;
108132 __le16 pause_trans_time;
133
+ u8 rsvd1[6];
134
+ /* extra mac address to do double check for pause frame */
135
+ u8 mac_addr_extra[ETH_ALEN];
136
+ u16 rsvd2;
109137 };
110138
111139 struct hclge_pfc_stats_cmd {
....@@ -114,6 +142,12 @@
114142
115143 struct hclge_port_shapping_cmd {
116144 __le32 port_shapping_para;
145
+};
146
+
147
+struct hclge_shaper_ir_para {
148
+ u8 ir_b; /* IR_B parameter of IR shaper */
149
+ u8 ir_u; /* IR_U parameter of IR shaper */
150
+ u8 ir_s; /* IR_S parameter of IR shaper */
117151 };
118152
119153 #define hclge_tm_set_field(dest, string, val) \
....@@ -125,15 +159,20 @@
125159 (HCLGE_TM_SHAP_##string##_LSH))
126160
127161 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);
162
+int hclge_tm_vport_map_update(struct hclge_dev *hdev);
163
+int hclge_pause_setup_hw(struct hclge_dev *hdev, bool init);
164
+int hclge_tm_schd_setup_hw(struct hclge_dev *hdev);
165
+void hclge_tm_prio_tc_info_update(struct hclge_dev *hdev, u8 *prio_tc);
131166 void hclge_tm_schd_info_update(struct hclge_dev *hdev, u8 num_tc);
167
+void hclge_tm_pfc_info_update(struct hclge_dev *hdev);
132168 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);
169
+int hclge_tm_init_hw(struct hclge_dev *hdev, bool init);
170
+int hclge_pfc_pause_en_cfg(struct hclge_dev *hdev, u8 tx_rx_bitmap,
171
+ u8 pfc_bitmap);
135172 int hclge_mac_pause_en_cfg(struct hclge_dev *hdev, bool tx, bool rx);
136173 int hclge_pause_addr_cfg(struct hclge_dev *hdev, const u8 *mac_addr);
137174 int hclge_pfc_rx_stats_get(struct hclge_dev *hdev, u64 *stats);
138175 int hclge_pfc_tx_stats_get(struct hclge_dev *hdev, u64 *stats);
176
+int hclge_tm_qs_shaper_cfg(struct hclge_vport *vport, int max_tx_rate);
177
+
139178 #endif