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 Izumistatic inline void fjes_dbg_adapter_init(struct fjes_adapter *adapter) {} fjes_dbg_adapter_exit(struct fjes_adapter * adapter)73c753119eSTaku Izumistatic inline void fjes_dbg_adapter_exit(struct fjes_adapter *adapter) {} fjes_dbg_init(void)74c753119eSTaku Izumistatic inline void fjes_dbg_init(void) {} fjes_dbg_exit(void)75c753119eSTaku Izumistatic inline void fjes_dbg_exit(void) {} 76c753119eSTaku Izumi #endif /* CONFIG_DEBUG_FS */ 77c753119eSTaku Izumi 78658d439bSTaku Izumi #endif /* FJES_H_ */ 79