forked from ~ljy/RK356X_SDK_RELEASE

hc
2023-12-11 6778948f9de86c3cfaf36725a7c87dcff9ba247f
kernel/drivers/net/ethernet/huawei/hinic/hinic_dev.h
....@@ -1,16 +1,7 @@
1
+/* SPDX-License-Identifier: GPL-2.0-only */
12 /*
23 * Huawei HiNIC PCI Express Linux driver
34 * Copyright(c) 2017 Huawei Technologies Co., Ltd
4
- *
5
- * This program is free software; you can redistribute it and/or modify it
6
- * under the terms and conditions of the GNU General Public License,
7
- * version 2, as published by the Free Software Foundation.
8
- *
9
- * This program is distributed in the hope it will be useful, but WITHOUT
10
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12
- * for more details.
13
- *
145 */
156
167 #ifndef HINIC_DEV_H
....@@ -25,17 +16,60 @@
2516 #include "hinic_hw_dev.h"
2617 #include "hinic_tx.h"
2718 #include "hinic_rx.h"
19
+#include "hinic_sriov.h"
2820
2921 #define HINIC_DRV_NAME "hinic"
22
+
23
+#define LP_PKT_CNT 64
3024
3125 enum hinic_flags {
3226 HINIC_LINK_UP = BIT(0),
3327 HINIC_INTF_UP = BIT(1),
28
+ HINIC_RSS_ENABLE = BIT(2),
29
+ HINIC_LINK_DOWN = BIT(3),
30
+ HINIC_LP_TEST = BIT(4),
3431 };
3532
3633 struct hinic_rx_mode_work {
3734 struct work_struct work;
3835 u32 rx_mode;
36
+};
37
+
38
+struct hinic_rss_type {
39
+ u8 tcp_ipv6_ext;
40
+ u8 ipv6_ext;
41
+ u8 tcp_ipv6;
42
+ u8 ipv6;
43
+ u8 tcp_ipv4;
44
+ u8 ipv4;
45
+ u8 udp_ipv6;
46
+ u8 udp_ipv4;
47
+};
48
+
49
+enum hinic_rss_hash_type {
50
+ HINIC_RSS_HASH_ENGINE_TYPE_XOR,
51
+ HINIC_RSS_HASH_ENGINE_TYPE_TOEP,
52
+ HINIC_RSS_HASH_ENGINE_TYPE_MAX,
53
+};
54
+
55
+struct hinic_intr_coal_info {
56
+ u8 pending_limt;
57
+ u8 coalesce_timer_cfg;
58
+ u8 resend_timer_cfg;
59
+};
60
+
61
+enum hinic_dbg_type {
62
+ HINIC_DBG_SQ_INFO,
63
+ HINIC_DBG_RQ_INFO,
64
+ HINIC_DBG_FUNC_TABLE,
65
+};
66
+
67
+struct hinic_debug_priv {
68
+ struct hinic_dev *dev;
69
+ void *object;
70
+ enum hinic_dbg_type type;
71
+ struct dentry *root;
72
+ int field_id[64];
3973 };
4074
4175 struct hinic_dev {
....@@ -45,6 +79,8 @@
4579 u32 msg_enable;
4680 unsigned int tx_weight;
4781 unsigned int rx_weight;
82
+ u16 num_qps;
83
+ u16 max_qps;
4884
4985 unsigned int flags;
5086
....@@ -56,9 +92,37 @@
5692
5793 struct hinic_txq *txqs;
5894 struct hinic_rxq *rxqs;
95
+ u16 sq_depth;
96
+ u16 rq_depth;
5997
60
- struct hinic_txq_stats tx_stats;
61
- struct hinic_rxq_stats rx_stats;
98
+ u8 rss_tmpl_idx;
99
+ u8 rss_hash_engine;
100
+ u16 num_rss;
101
+ u16 rss_limit;
102
+ struct hinic_rss_type rss_type;
103
+ u8 *rss_hkey_user;
104
+ s32 *rss_indir_user;
105
+ struct hinic_intr_coal_info *rx_intr_coalesce;
106
+ struct hinic_intr_coal_info *tx_intr_coalesce;
107
+ struct hinic_sriov_info sriov_info;
108
+ int lb_test_rx_idx;
109
+ int lb_pkt_len;
110
+ u8 *lb_test_rx_buf;
111
+
112
+ struct dentry *dbgfs_root;
113
+ struct dentry *sq_dbgfs;
114
+ struct dentry *rq_dbgfs;
115
+ struct dentry *func_tbl_dbgfs;
116
+ struct hinic_debug_priv *dbg;
117
+ struct devlink *devlink;
118
+ bool cable_unplugged;
119
+ bool module_unrecognized;
120
+};
121
+
122
+struct hinic_devlink_priv {
123
+ struct hinic_hwdev *hwdev;
124
+ struct devlink_health_reporter *hw_fault_reporter;
125
+ struct devlink_health_reporter *fw_fault_reporter;
62126 };
63127
64128 #endif