#include <linux/io-64-nonatomic-lo-hi.h>
#ifndef _S2IO_H
#define _S2IO_H
#define TBD …
#define s2BIT(loc) …
#define vBIT(val, loc, sz) …
#define INV(d) …
#undef SUCCESS
#define SUCCESS …
#define FAILURE …
#define S2IO_MINUS_ONE …
#define S2IO_DISABLE_MAC_ENTRY …
#define S2IO_MAX_PCI_CONFIG_SPACE_REINIT …
#define S2IO_BIT_RESET …
#define S2IO_BIT_SET …
#define CHECKBIT(value, nbit) …
#define MAX_FLICKER_TIME …
enum { … };
#define XENA_MAX_OUTSTANDING_SPLITS(n) …
#define WATCH_DOG_TIMEOUT …
#define EFILL …
#define ALIGN_SIZE …
#define PCIX_COMMAND_REGISTER …
#define ERR_DBG …
#define INIT_DBG …
#define INFO_DBG …
#define TX_DBG …
#define INTR_DBG …
static int debug_level = …;
#define DBG_PRINT(dbg_level, fmt, args...) …
#define L3_CKSUM_OK …
#define L4_CKSUM_OK …
#define S2IO_JUMBO_SIZE …
struct swStat { … };
struct xpakStat { … };
struct stat_block { … };
#define NO_STRIP_IN_PROMISC …
#define MAX_TX_FIFOS …
#define MAX_RX_RINGS …
#define FIFO_DEFAULT_NUM …
#define FIFO_UDP_MAX_NUM …
#define FIFO_OTHER_MAX_NUM …
#define MAX_RX_DESC_1 …
#define MAX_RX_DESC_2 …
#define MAX_TX_DESC …
static const int fifo_map[][MAX_TX_FIFOS] = …;
static const u16 fifo_selector[MAX_TX_FIFOS] = …;
struct tx_fifo_config { … };
struct rx_ring_config { … };
struct config_param { … };
struct mac_addr { … };
struct TxFIFO_element { … };
struct TxD { … };
struct list_info_hold { … };
struct RxD_t { … };
struct RxD1 { … };
struct RxD3 { … };
struct RxD_block { … };
#define SIZE_OF_BLOCK …
#define RXD_MODE_1 …
#define RXD_MODE_3B …
struct buffAdd { … };
struct rx_curr_get_info { … };
struct rx_curr_put_info { … };
struct tx_curr_get_info { … };
struct tx_curr_put_info { … };
struct rxd_info { … };
struct rx_block_info { … };
struct lro { … } ____cacheline_aligned;
struct ring_info { … } ____cacheline_aligned;
struct fifo_info { … } ____cacheline_aligned;
struct mac_info { … };
#define DEFAULT_FIFO_0_LEN …
#define DEFAULT_FIFO_1_7_LEN …
#define SMALL_BLK_CNT …
#define LARGE_BLK_CNT …
#define MAX_REQUESTED_MSI_X …
struct s2io_msix_entry
{ … };
struct msix_info_st { … };
enum s2io_device_state_t
{ … };
struct s2io_nic { … };
#define RESET_ERROR …
#define CMD_ERROR …
#define UF …
#define LF …
static inline void SPECIAL_REG_WRITE(u64 val, void __iomem *addr, int order)
{ … }
#define ENABLE_INTRS …
#define DISABLE_INTRS …
#define TX_PIC_INTR …
#define TX_DMA_INTR …
#define TX_MAC_INTR …
#define TX_XGXS_INTR …
#define TX_TRAFFIC_INTR …
#define RX_PIC_INTR …
#define RX_DMA_INTR …
#define RX_MAC_INTR …
#define RX_XGXS_INTR …
#define RX_TRAFFIC_INTR …
#define MC_INTR …
#define ENA_ALL_INTRS …
#define DISABLE_ALL_INTRS …
#define TXPIC_INT_M …
#define TXDMA_INT_M …
#define TXMAC_INT_M …
#define TXXGXS_INT_M …
#define TXTRAFFIC_INT_M …
#define PIC_RX_INT_M …
#define RXDMA_INT_M …
#define RXMAC_INT_M …
#define MC_INT_M …
#define RXXGXS_INT_M …
#define RXTRAFFIC_INT_M …
#define TXDMA_PFC_INT_M …
#define TXDMA_PCC_INT_M …
#define PFC_MISC_ERR_1 …
#define PCC_FB_ECC_ERR …
#define RXD_GET_VLAN_TAG(Control_2) …
static int s2io_init_nic(struct pci_dev *pdev, const struct pci_device_id *pre);
static void s2io_rem_nic(struct pci_dev *pdev);
static int init_shared_mem(struct s2io_nic *sp);
static void free_shared_mem(struct s2io_nic *sp);
static int init_nic(struct s2io_nic *nic);
static int rx_intr_handler(struct ring_info *ring_data, int budget);
static void s2io_txpic_intr_handle(struct s2io_nic *sp);
static void tx_intr_handler(struct fifo_info *fifo_data);
static void s2io_handle_errors(void * dev_id);
static void s2io_tx_watchdog(struct net_device *dev, unsigned int txqueue);
static void s2io_set_multicast(struct net_device *dev, bool may_sleep);
static int rx_osm_handler(struct ring_info *ring_data, struct RxD_t * rxdp);
static void s2io_link(struct s2io_nic * sp, int link);
static void s2io_reset(struct s2io_nic * sp);
static int s2io_poll_msix(struct napi_struct *napi, int budget);
static int s2io_poll_inta(struct napi_struct *napi, int budget);
static void s2io_init_pci(struct s2io_nic * sp);
static int do_s2io_prog_unicast(struct net_device *dev, const u8 *addr);
static void s2io_alarm_handle(struct timer_list *t);
static irqreturn_t
s2io_msix_ring_handle(int irq, void *dev_id);
static irqreturn_t
s2io_msix_fifo_handle(int irq, void *dev_id);
static irqreturn_t s2io_isr(int irq, void *dev_id);
static int verify_xena_quiescence(struct s2io_nic *sp);
static const struct ethtool_ops netdev_ethtool_ops;
static void s2io_set_link(struct work_struct *work);
static int s2io_set_swapper(struct s2io_nic * sp);
static void s2io_card_down(struct s2io_nic *nic);
static int s2io_card_up(struct s2io_nic *nic);
static int wait_for_cmd_complete(void __iomem *addr, u64 busy_bit,
int bit_state, bool may_sleep);
static int s2io_add_isr(struct s2io_nic * sp);
static void s2io_rem_isr(struct s2io_nic * sp);
static void restore_xmsi_data(struct s2io_nic *nic);
static void do_s2io_store_unicast_mc(struct s2io_nic *sp);
static void do_s2io_restore_unicast_mc(struct s2io_nic *sp);
static u64 do_s2io_read_unicast_mc(struct s2io_nic *sp, int offset);
static int do_s2io_add_mc(struct s2io_nic *sp, u8 *addr);
static int do_s2io_add_mac(struct s2io_nic *sp, u64 addr, int offset);
static int do_s2io_delete_unicast_mc(struct s2io_nic *sp, u64 addr);
static int s2io_club_tcp_session(struct ring_info *ring_data, u8 *buffer,
u8 **tcp, u32 *tcp_len, struct lro **lro, struct RxD_t *rxdp,
struct s2io_nic *sp);
static void clear_lro_session(struct lro *lro);
static void queue_rx_frame(struct sk_buff *skb, u16 vlan_tag);
static void update_L3L4_header(struct s2io_nic *sp, struct lro *lro);
static void lro_append_pkt(struct s2io_nic *sp, struct lro *lro,
struct sk_buff *skb, u32 tcp_len);
static int rts_ds_steer(struct s2io_nic *nic, u8 ds_codepoint, u8 ring);
static pci_ers_result_t s2io_io_error_detected(struct pci_dev *pdev,
pci_channel_state_t state);
static pci_ers_result_t s2io_io_slot_reset(struct pci_dev *pdev);
static void s2io_io_resume(struct pci_dev *pdev);
#define s2io_tcp_mss(skb) …
#define s2io_udp_mss(skb) …
#define s2io_offload_type(skb) …
#define S2IO_PARM_INT(X, def_val) …
#endif