#ifndef HFI1_IPOIB_H
#define HFI1_IPOIB_H
#include <linux/types.h>
#include <linux/stddef.h>
#include <linux/atomic.h>
#include <linux/netdevice.h>
#include <linux/slab.h>
#include <linux/skbuff.h>
#include <linux/list.h>
#include <linux/if_infiniband.h>
#include "hfi.h"
#include "iowait.h"
#include "netdev.h"
#include <rdma/ib_verbs.h>
#define HFI1_IPOIB_ENTROPY_SHIFT …
#define HFI1_IPOIB_TXREQ_NAME_LEN …
#define HFI1_IPOIB_PSEUDO_LEN …
#define HFI1_IPOIB_ENCAP_LEN …
struct hfi1_ipoib_dev_priv;
hfi1_ipoib_flow;
struct ipoib_txreq { … };
struct hfi1_ipoib_circ_buf { … };
struct hfi1_ipoib_txq { … };
struct hfi1_ipoib_dev_priv { … };
struct hfi1_ipoib_rdma_netdev { … };
static inline struct hfi1_ipoib_dev_priv *
hfi1_ipoib_priv(const struct net_device *dev)
{ … }
int hfi1_ipoib_send(struct net_device *dev,
struct sk_buff *skb,
struct ib_ah *address,
u32 dqpn);
int hfi1_ipoib_txreq_init(struct hfi1_ipoib_dev_priv *priv);
void hfi1_ipoib_txreq_deinit(struct hfi1_ipoib_dev_priv *priv);
int hfi1_ipoib_rxq_init(struct net_device *dev);
void hfi1_ipoib_rxq_deinit(struct net_device *dev);
void hfi1_ipoib_napi_tx_enable(struct net_device *dev);
void hfi1_ipoib_napi_tx_disable(struct net_device *dev);
struct sk_buff *hfi1_ipoib_prepare_skb(struct hfi1_netdev_rxq *rxq,
int size, void *data);
int hfi1_ipoib_rn_get_params(struct ib_device *device,
u32 port_num,
enum rdma_netdev_t type,
struct rdma_netdev_alloc_params *params);
void hfi1_ipoib_tx_timeout(struct net_device *dev, unsigned int q);
#endif