Linux-libre 5.3.12-gnu
[librecmc/linux-libre.git] / drivers / net / fjes / fjes.h
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /*
3  *  FUJITSU Extended Socket Network Device driver
4  *  Copyright (c) 2015 FUJITSU LIMITED
5  */
6
7 #ifndef FJES_H_
8 #define FJES_H_
9
10 #include <linux/acpi.h>
11
12 #include "fjes_hw.h"
13
14 #define FJES_ACPI_SYMBOL        "Extended Socket"
15 #define FJES_MAX_QUEUES         1
16 #define FJES_TX_RETRY_INTERVAL  (20 * HZ)
17 #define FJES_TX_RETRY_TIMEOUT   (100)
18 #define FJES_TX_TX_STALL_TIMEOUT        (FJES_TX_RETRY_INTERVAL / 2)
19 #define FJES_OPEN_ZONE_UPDATE_WAIT      (300) /* msec */
20 #define FJES_IRQ_WATCH_DELAY    (HZ)
21
22 /* board specific private data structure */
23 struct fjes_adapter {
24         struct net_device *netdev;
25         struct platform_device *plat_dev;
26
27         struct napi_struct napi;
28         struct rtnl_link_stats64 stats64;
29
30         unsigned int tx_retry_count;
31         unsigned long tx_start_jiffies;
32         unsigned long rx_last_jiffies;
33         bool unset_rx_last;
34
35         struct work_struct force_close_task;
36         bool force_reset;
37         bool open_guard;
38
39         bool irq_registered;
40
41         struct workqueue_struct *txrx_wq;
42         struct workqueue_struct *control_wq;
43
44         struct work_struct tx_stall_task;
45         struct work_struct raise_intr_rxdata_task;
46
47         struct work_struct unshare_watch_task;
48         unsigned long unshare_watch_bitmask;
49
50         struct delayed_work interrupt_watch_task;
51         bool interrupt_watch_enable;
52
53         struct fjes_hw hw;
54
55 #ifdef CONFIG_DEBUG_FS
56         struct dentry *dbg_adapter;
57 #endif
58 };
59
60 extern char fjes_driver_name[];
61 extern char fjes_driver_version[];
62 extern const u32 fjes_support_mtu[];
63
64 void fjes_set_ethtool_ops(struct net_device *);
65
66 #ifdef CONFIG_DEBUG_FS
67 void fjes_dbg_adapter_init(struct fjes_adapter *adapter);
68 void fjes_dbg_adapter_exit(struct fjes_adapter *adapter);
69 void fjes_dbg_init(void);
70 void fjes_dbg_exit(void);
71 #else
72 static inline void fjes_dbg_adapter_init(struct fjes_adapter *adapter) {}
73 static inline void fjes_dbg_adapter_exit(struct fjes_adapter *adapter) {}
74 static inline void fjes_dbg_init(void) {}
75 static inline void fjes_dbg_exit(void) {}
76 #endif /* CONFIG_DEBUG_FS */
77
78 #endif /* FJES_H_ */