#ifndef __MLXBF_GIGE_H__
#define __MLXBF_GIGE_H__
#include <linux/io-64-nonatomic-lo-hi.h>
#include <linux/irqreturn.h>
#include <linux/netdevice.h>
#include <linux/irq.h>
#include <linux/phy.h>
#define MLXBF_GIGE_MIN_RXQ_SZ …
#define MLXBF_GIGE_MAX_RXQ_SZ …
#define MLXBF_GIGE_DEFAULT_RXQ_SZ …
#define MLXBF_GIGE_MIN_TXQ_SZ …
#define MLXBF_GIGE_MAX_TXQ_SZ …
#define MLXBF_GIGE_DEFAULT_TXQ_SZ …
#define MLXBF_GIGE_DEFAULT_BUF_SZ …
#define MLXBF_GIGE_DMA_PAGE_SZ …
#define MLXBF_GIGE_DMA_PAGE_SHIFT …
#define MLXBF_GIGE_BCAST_MAC_FILTER_IDX …
#define MLXBF_GIGE_LOCAL_MAC_FILTER_IDX …
#define BCAST_MAC_ADDR …
#define MLXBF_GIGE_ERROR_INTR_IDX …
#define MLXBF_GIGE_RECEIVE_PKT_INTR_IDX …
#define MLXBF_GIGE_LLU_PLU_INTR_IDX …
struct mlxbf_gige_stats { … };
struct mlxbf_gige_reg_param { … };
struct mlxbf_gige_mdio_gw { … };
struct mlxbf_gige_link_cfg { … };
struct mlxbf_gige { … };
#define MLXBF_GIGE_RX_WQE_SZ …
#define MLXBF_GIGE_RX_CQE_SZ …
#define MLXBF_GIGE_RX_CQE_PKT_LEN_MASK …
#define MLXBF_GIGE_RX_CQE_VALID_MASK …
#define MLXBF_GIGE_RX_CQE_PKT_STATUS_MASK …
#define MLXBF_GIGE_RX_CQE_PKT_STATUS_MAC_ERR …
#define MLXBF_GIGE_RX_CQE_PKT_STATUS_TRUNCATED …
#define MLXBF_GIGE_RX_CQE_CHKSUM_MASK …
#define MLXBF_GIGE_TX_WQE_SZ_QWORDS …
#define MLXBF_GIGE_TX_WQE_SZ …
#define MLXBF_GIGE_TX_WQE_PKT_LEN_MASK …
#define MLXBF_GIGE_TX_WQE_UPDATE_MASK …
#define MLXBF_GIGE_TX_WQE_CHKSUM_LEN_MASK …
#define MLXBF_GIGE_TX_WQE_CHKSUM_START_MASK …
#define MLXBF_GIGE_TX_WQE_CHKSUM_OFFSET_MASK …
#define MLXBF_GIGE_TX_WQE_PKT_LEN(tx_wqe_addr) …
#define MLXBF_GIGE_TX_CC_SZ …
enum mlxbf_gige_res { … };
#define MLXBF_GIGE_REGS_VERSION …
int mlxbf_gige_mdio_probe(struct platform_device *pdev,
struct mlxbf_gige *priv);
void mlxbf_gige_mdio_remove(struct mlxbf_gige *priv);
void mlxbf_gige_set_mac_rx_filter(struct mlxbf_gige *priv,
unsigned int index, u64 dmac);
void mlxbf_gige_get_mac_rx_filter(struct mlxbf_gige *priv,
unsigned int index, u64 *dmac);
void mlxbf_gige_enable_promisc(struct mlxbf_gige *priv);
void mlxbf_gige_disable_promisc(struct mlxbf_gige *priv);
int mlxbf_gige_rx_init(struct mlxbf_gige *priv);
void mlxbf_gige_rx_deinit(struct mlxbf_gige *priv);
int mlxbf_gige_tx_init(struct mlxbf_gige *priv);
void mlxbf_gige_tx_deinit(struct mlxbf_gige *priv);
bool mlxbf_gige_handle_tx_complete(struct mlxbf_gige *priv);
netdev_tx_t mlxbf_gige_start_xmit(struct sk_buff *skb,
struct net_device *netdev);
struct sk_buff *mlxbf_gige_alloc_skb(struct mlxbf_gige *priv,
unsigned int map_len,
dma_addr_t *buf_dma,
enum dma_data_direction dir);
int mlxbf_gige_request_irqs(struct mlxbf_gige *priv);
void mlxbf_gige_free_irqs(struct mlxbf_gige *priv);
int mlxbf_gige_poll(struct napi_struct *napi, int budget);
extern const struct ethtool_ops mlxbf_gige_ethtool_ops;
void mlxbf_gige_update_tx_wqe_next(struct mlxbf_gige *priv);
#endif