forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-01-05 071106ecf68c401173c58808b1cf5f68cc50d390
kernel/drivers/net/ethernet/cavium/liquidio/octeon_network.h
....@@ -35,12 +35,6 @@
3535 #define LIO_IFSTATE_RX_TIMESTAMP_ENABLED 0x08
3636 #define LIO_IFSTATE_RESETTING 0x10
3737
38
-struct liquidio_if_cfg_context {
39
- u32 octeon_id;
40
- wait_queue_head_t wc;
41
- int cond;
42
-};
43
-
4438 struct liquidio_if_cfg_resp {
4539 u64 rh;
4640 struct liquidio_if_cfg_info cfg_info;
....@@ -48,6 +42,7 @@
4842 };
4943
5044 #define LIO_IFCFG_WAIT_TIME 3000 /* In milli seconds */
45
+#define LIQUIDIO_NDEV_STATS_POLL_TIME_MS 200
5146
5247 /* Structure of a node in list of gather components maintained by
5348 * NIC driver for each network device.
....@@ -76,6 +71,12 @@
7671 u64 status;
7772 };
7873
74
+struct oct_nic_vf_stats_resp {
75
+ u64 rh;
76
+ u64 spoofmac_cnt;
77
+ u64 status;
78
+};
79
+
7980 struct oct_nic_stats_ctrl {
8081 struct completion complete;
8182 struct net_device *netdev;
....@@ -83,14 +84,11 @@
8384
8485 struct oct_nic_seapi_resp {
8586 u64 rh;
86
- u32 speed;
87
+ union {
88
+ u32 fec_setting;
89
+ u32 speed;
90
+ };
8791 u64 status;
88
-};
89
-
90
-struct liquidio_nic_seapi_ctl_context {
91
- int octeon_id;
92
- u32 status;
93
- struct completion complete;
9492 };
9593
9694 /** LiquidIO per-interface network private data */
....@@ -178,7 +176,7 @@
178176 struct cavium_wq txq_status_wq;
179177
180178 /* work queue for rxq oom status */
181
- struct cavium_wq rxq_status_wq;
179
+ struct cavium_wq rxq_status_wq[MAX_POSSIBLE_OCTEON_OUTPUT_QUEUES];
182180
183181 /* work queue for link status */
184182 struct cavium_wq link_status_wq;
....@@ -187,6 +185,7 @@
187185 struct cavium_wq sync_octeon_time_wq;
188186
189187 int netdev_uc_count;
188
+ struct cavium_wk stats_wk;
190189 };
191190
192191 #define LIO_SIZE (sizeof(struct lio))
....@@ -225,7 +224,7 @@
225224
226225 int octeon_setup_interrupt(struct octeon_device *oct, u32 num_ioqs);
227226
228
-int octnet_get_link_stats(struct net_device *netdev);
227
+void lio_fetch_stats(struct work_struct *work);
229228
230229 int lio_wait_for_clean_oq(struct octeon_device *oct);
231230 /**
....@@ -234,16 +233,14 @@
234233 */
235234 void liquidio_set_ethtool_ops(struct net_device *netdev);
236235
237
-void lio_if_cfg_callback(struct octeon_device *oct,
238
- u32 status __attribute__((unused)),
239
- void *buf);
240
-
241236 void lio_delete_glists(struct lio *lio);
242237
243238 int lio_setup_glists(struct octeon_device *oct, struct lio *lio, int num_qs);
244239
245240 int liquidio_get_speed(struct lio *lio);
246241 int liquidio_set_speed(struct lio *lio, int speed);
242
+int liquidio_get_fec(struct lio *lio);
243
+int liquidio_set_fec(struct lio *lio, int on_off);
247244
248245 /**
249246 * \brief Net device change_mtu
....@@ -615,7 +612,7 @@
615612 {
616613 struct list_head *node;
617614
618
- if (root->prev == root && root->next == root)
615
+ if (list_empty_careful(root))
619616 node = NULL;
620617 else
621618 node = root->next;