xref: /openbmc/linux/drivers/net/fjes/fjes.h (revision 75bf465f0bc33e9b776a46d6a1b9b990f5fb7c37)
1*dcc4086dSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */
2658d439bSTaku Izumi /*
3658d439bSTaku Izumi  *  FUJITSU Extended Socket Network Device driver
4658d439bSTaku Izumi  *  Copyright (c) 2015 FUJITSU LIMITED
5658d439bSTaku Izumi  */
6658d439bSTaku Izumi 
7658d439bSTaku Izumi #ifndef FJES_H_
8658d439bSTaku Izumi #define FJES_H_
9658d439bSTaku Izumi 
10658d439bSTaku Izumi #include <linux/acpi.h>
11658d439bSTaku Izumi 
122fcbca68STaku Izumi #include "fjes_hw.h"
132fcbca68STaku Izumi 
14658d439bSTaku Izumi #define FJES_ACPI_SYMBOL	"Extended Socket"
152fcbca68STaku Izumi #define FJES_MAX_QUEUES		1
162fcbca68STaku Izumi #define FJES_TX_RETRY_INTERVAL	(20 * HZ)
179acf51cbSTaku Izumi #define FJES_TX_RETRY_TIMEOUT	(100)
18ac63b947STaku Izumi #define FJES_TX_TX_STALL_TIMEOUT	(FJES_TX_RETRY_INTERVAL / 2)
19e5d486dcSTaku Izumi #define FJES_OPEN_ZONE_UPDATE_WAIT	(300) /* msec */
208edb62a8STaku Izumi #define FJES_IRQ_WATCH_DELAY	(HZ)
212fcbca68STaku Izumi 
222fcbca68STaku Izumi /* board specific private data structure */
232fcbca68STaku Izumi struct fjes_adapter {
242fcbca68STaku Izumi 	struct net_device *netdev;
252fcbca68STaku Izumi 	struct platform_device *plat_dev;
262fcbca68STaku Izumi 
272fcbca68STaku Izumi 	struct napi_struct napi;
282fcbca68STaku Izumi 	struct rtnl_link_stats64 stats64;
292fcbca68STaku Izumi 
302fcbca68STaku Izumi 	unsigned int tx_retry_count;
312fcbca68STaku Izumi 	unsigned long tx_start_jiffies;
322fcbca68STaku Izumi 	unsigned long rx_last_jiffies;
332fcbca68STaku Izumi 	bool unset_rx_last;
342fcbca68STaku Izumi 
35ff5b4210STaku Izumi 	struct work_struct force_close_task;
362fcbca68STaku Izumi 	bool force_reset;
372fcbca68STaku Izumi 	bool open_guard;
382fcbca68STaku Izumi 
392fcbca68STaku Izumi 	bool irq_registered;
402fcbca68STaku Izumi 
41b772b9dcSTaku Izumi 	struct workqueue_struct *txrx_wq;
428edb62a8STaku Izumi 	struct workqueue_struct *control_wq;
43b772b9dcSTaku Izumi 
44ac63b947STaku Izumi 	struct work_struct tx_stall_task;
45b772b9dcSTaku Izumi 	struct work_struct raise_intr_rxdata_task;
46b772b9dcSTaku Izumi 
478fc4cadbSTaku Izumi 	struct work_struct unshare_watch_task;
488fc4cadbSTaku Izumi 	unsigned long unshare_watch_bitmask;
498fc4cadbSTaku Izumi 
508edb62a8STaku Izumi 	struct delayed_work interrupt_watch_task;
518edb62a8STaku Izumi 	bool interrupt_watch_enable;
528edb62a8STaku Izumi 
532fcbca68STaku Izumi 	struct fjes_hw hw;
54c753119eSTaku Izumi 
55c753119eSTaku Izumi #ifdef CONFIG_DEBUG_FS
56c753119eSTaku Izumi 	struct dentry *dbg_adapter;
57c753119eSTaku Izumi #endif
582fcbca68STaku Izumi };
59658d439bSTaku Izumi 
60658d439bSTaku Izumi extern char fjes_driver_name[];
61658d439bSTaku Izumi extern char fjes_driver_version[];
628cdc3f6cSTaku Izumi extern const u32 fjes_support_mtu[];
63658d439bSTaku Izumi 
64786eec27STaku Izumi void fjes_set_ethtool_ops(struct net_device *);
65786eec27STaku Izumi 
66c753119eSTaku Izumi #ifdef CONFIG_DEBUG_FS
67c753119eSTaku Izumi void fjes_dbg_adapter_init(struct fjes_adapter *adapter);
68c753119eSTaku Izumi void fjes_dbg_adapter_exit(struct fjes_adapter *adapter);
69c753119eSTaku Izumi void fjes_dbg_init(void);
70c753119eSTaku Izumi void fjes_dbg_exit(void);
71c753119eSTaku Izumi #else
fjes_dbg_adapter_init(struct fjes_adapter * adapter)72c753119eSTaku Izumi static inline void fjes_dbg_adapter_init(struct fjes_adapter *adapter) {}
fjes_dbg_adapter_exit(struct fjes_adapter * adapter)73c753119eSTaku Izumi static inline void fjes_dbg_adapter_exit(struct fjes_adapter *adapter) {}
fjes_dbg_init(void)74c753119eSTaku Izumi static inline void fjes_dbg_init(void) {}
fjes_dbg_exit(void)75c753119eSTaku Izumi static inline void fjes_dbg_exit(void) {}
76c753119eSTaku Izumi #endif /* CONFIG_DEBUG_FS */
77c753119eSTaku Izumi 
78658d439bSTaku Izumi #endif /* FJES_H_ */
79