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