提交 2337f809 编写于 作者: R Roland Dreier

IPoIB: Trivial formatting cleanups

Fix whitespace blunders, convert "foo* bar" to "foo *bar", etc.
Signed-off-by: NRoland Dreier <rolandd@cisco.com>
上级 657c2f2c
...@@ -56,42 +56,42 @@ ...@@ -56,42 +56,42 @@
/* constants */ /* constants */
enum { enum {
IPOIB_PACKET_SIZE = 2048, IPOIB_PACKET_SIZE = 2048,
IPOIB_BUF_SIZE = IPOIB_PACKET_SIZE + IB_GRH_BYTES, IPOIB_BUF_SIZE = IPOIB_PACKET_SIZE + IB_GRH_BYTES,
IPOIB_ENCAP_LEN = 4, IPOIB_ENCAP_LEN = 4,
IPOIB_CM_MTU = 0x10000 - 0x10, /* padding to align header to 16 */ IPOIB_CM_MTU = 0x10000 - 0x10, /* padding to align header to 16 */
IPOIB_CM_BUF_SIZE = IPOIB_CM_MTU + IPOIB_ENCAP_LEN, IPOIB_CM_BUF_SIZE = IPOIB_CM_MTU + IPOIB_ENCAP_LEN,
IPOIB_CM_HEAD_SIZE = IPOIB_CM_BUF_SIZE % PAGE_SIZE, IPOIB_CM_HEAD_SIZE = IPOIB_CM_BUF_SIZE % PAGE_SIZE,
IPOIB_CM_RX_SG = ALIGN(IPOIB_CM_BUF_SIZE, PAGE_SIZE) / PAGE_SIZE, IPOIB_CM_RX_SG = ALIGN(IPOIB_CM_BUF_SIZE, PAGE_SIZE) / PAGE_SIZE,
IPOIB_RX_RING_SIZE = 128, IPOIB_RX_RING_SIZE = 128,
IPOIB_TX_RING_SIZE = 64, IPOIB_TX_RING_SIZE = 64,
IPOIB_MAX_QUEUE_SIZE = 8192, IPOIB_MAX_QUEUE_SIZE = 8192,
IPOIB_MIN_QUEUE_SIZE = 2, IPOIB_MIN_QUEUE_SIZE = 2,
IPOIB_NUM_WC = 4, IPOIB_NUM_WC = 4,
IPOIB_MAX_PATH_REC_QUEUE = 3, IPOIB_MAX_PATH_REC_QUEUE = 3,
IPOIB_MAX_MCAST_QUEUE = 3, IPOIB_MAX_MCAST_QUEUE = 3,
IPOIB_FLAG_OPER_UP = 0, IPOIB_FLAG_OPER_UP = 0,
IPOIB_FLAG_INITIALIZED = 1, IPOIB_FLAG_INITIALIZED = 1,
IPOIB_FLAG_ADMIN_UP = 2, IPOIB_FLAG_ADMIN_UP = 2,
IPOIB_PKEY_ASSIGNED = 3, IPOIB_PKEY_ASSIGNED = 3,
IPOIB_PKEY_STOP = 4, IPOIB_PKEY_STOP = 4,
IPOIB_FLAG_SUBINTERFACE = 5, IPOIB_FLAG_SUBINTERFACE = 5,
IPOIB_MCAST_RUN = 6, IPOIB_MCAST_RUN = 6,
IPOIB_STOP_REAPER = 7, IPOIB_STOP_REAPER = 7,
IPOIB_MCAST_STARTED = 8, IPOIB_MCAST_STARTED = 8,
IPOIB_FLAG_ADMIN_CM = 9, IPOIB_FLAG_ADMIN_CM = 9,
IPOIB_FLAG_UMCAST = 10, IPOIB_FLAG_UMCAST = 10,
IPOIB_MAX_BACKOFF_SECONDS = 16, IPOIB_MAX_BACKOFF_SECONDS = 16,
IPOIB_MCAST_FLAG_FOUND = 0, /* used in set_multicast_list */ IPOIB_MCAST_FLAG_FOUND = 0, /* used in set_multicast_list */
IPOIB_MCAST_FLAG_SENDONLY = 1, IPOIB_MCAST_FLAG_SENDONLY = 1,
IPOIB_MCAST_FLAG_BUSY = 2, /* joining or already joined */ IPOIB_MCAST_FLAG_BUSY = 2, /* joining or already joined */
IPOIB_MCAST_FLAG_ATTACHED = 3, IPOIB_MCAST_FLAG_ATTACHED = 3,
}; };
...@@ -117,7 +117,7 @@ struct ipoib_pseudoheader { ...@@ -117,7 +117,7 @@ struct ipoib_pseudoheader {
struct ipoib_mcast { struct ipoib_mcast {
struct ib_sa_mcmember_rec mcmember; struct ib_sa_mcmember_rec mcmember;
struct ib_sa_multicast *mc; struct ib_sa_multicast *mc;
struct ipoib_ah *ah; struct ipoib_ah *ah;
struct rb_node rb_node; struct rb_node rb_node;
struct list_head list; struct list_head list;
...@@ -186,27 +186,27 @@ enum ipoib_cm_state { ...@@ -186,27 +186,27 @@ enum ipoib_cm_state {
}; };
struct ipoib_cm_rx { struct ipoib_cm_rx {
struct ib_cm_id *id; struct ib_cm_id *id;
struct ib_qp *qp; struct ib_qp *qp;
struct list_head list; struct list_head list;
struct net_device *dev; struct net_device *dev;
unsigned long jiffies; unsigned long jiffies;
enum ipoib_cm_state state; enum ipoib_cm_state state;
}; };
struct ipoib_cm_tx { struct ipoib_cm_tx {
struct ib_cm_id *id; struct ib_cm_id *id;
struct ib_qp *qp; struct ib_qp *qp;
struct list_head list; struct list_head list;
struct net_device *dev; struct net_device *dev;
struct ipoib_neigh *neigh; struct ipoib_neigh *neigh;
struct ipoib_path *path; struct ipoib_path *path;
struct ipoib_tx_buf *tx_ring; struct ipoib_tx_buf *tx_ring;
unsigned tx_head; unsigned tx_head;
unsigned tx_tail; unsigned tx_tail;
unsigned long flags; unsigned long flags;
u32 mtu; u32 mtu;
struct ib_wc ibwc[IPOIB_NUM_WC]; struct ib_wc ibwc[IPOIB_NUM_WC];
}; };
struct ipoib_cm_rx_buf { struct ipoib_cm_rx_buf {
...@@ -215,24 +215,24 @@ struct ipoib_cm_rx_buf { ...@@ -215,24 +215,24 @@ struct ipoib_cm_rx_buf {
}; };
struct ipoib_cm_dev_priv { struct ipoib_cm_dev_priv {
struct ib_srq *srq; struct ib_srq *srq;
struct ipoib_cm_rx_buf *srq_ring; struct ipoib_cm_rx_buf *srq_ring;
struct ib_cm_id *id; struct ib_cm_id *id;
struct list_head passive_ids; /* state: LIVE */ struct list_head passive_ids; /* state: LIVE */
struct list_head rx_error_list; /* state: ERROR */ struct list_head rx_error_list; /* state: ERROR */
struct list_head rx_flush_list; /* state: FLUSH, drain not started */ struct list_head rx_flush_list; /* state: FLUSH, drain not started */
struct list_head rx_drain_list; /* state: FLUSH, drain started */ struct list_head rx_drain_list; /* state: FLUSH, drain started */
struct list_head rx_reap_list; /* state: FLUSH, drain done */ struct list_head rx_reap_list; /* state: FLUSH, drain done */
struct work_struct start_task; struct work_struct start_task;
struct work_struct reap_task; struct work_struct reap_task;
struct work_struct skb_task; struct work_struct skb_task;
struct work_struct rx_reap_task; struct work_struct rx_reap_task;
struct delayed_work stale_task; struct delayed_work stale_task;
struct sk_buff_head skb_queue; struct sk_buff_head skb_queue;
struct list_head start_list; struct list_head start_list;
struct list_head reap_list; struct list_head reap_list;
struct ib_wc ibwc[IPOIB_NUM_WC]; struct ib_wc ibwc[IPOIB_NUM_WC];
struct ib_sge rx_sge[IPOIB_CM_RX_SG]; struct ib_sge rx_sge[IPOIB_CM_RX_SG];
struct ib_recv_wr rx_wr; struct ib_recv_wr rx_wr;
}; };
...@@ -269,30 +269,30 @@ struct ipoib_dev_priv { ...@@ -269,30 +269,30 @@ struct ipoib_dev_priv {
struct work_struct pkey_event_task; struct work_struct pkey_event_task;
struct ib_device *ca; struct ib_device *ca;
u8 port; u8 port;
u16 pkey; u16 pkey;
u16 pkey_index; u16 pkey_index;
struct ib_pd *pd; struct ib_pd *pd;
struct ib_mr *mr; struct ib_mr *mr;
struct ib_cq *cq; struct ib_cq *cq;
struct ib_qp *qp; struct ib_qp *qp;
u32 qkey; u32 qkey;
union ib_gid local_gid; union ib_gid local_gid;
u16 local_lid; u16 local_lid;
unsigned int admin_mtu; unsigned int admin_mtu;
unsigned int mcast_mtu; unsigned int mcast_mtu;
struct ipoib_rx_buf *rx_ring; struct ipoib_rx_buf *rx_ring;
spinlock_t tx_lock; spinlock_t tx_lock;
struct ipoib_tx_buf *tx_ring; struct ipoib_tx_buf *tx_ring;
unsigned tx_head; unsigned tx_head;
unsigned tx_tail; unsigned tx_tail;
struct ib_sge tx_sge; struct ib_sge tx_sge;
struct ib_send_wr tx_wr; struct ib_send_wr tx_wr;
unsigned tx_outstanding; unsigned tx_outstanding;
struct ib_wc ibwc[IPOIB_NUM_WC]; struct ib_wc ibwc[IPOIB_NUM_WC];
...@@ -317,10 +317,10 @@ struct ipoib_dev_priv { ...@@ -317,10 +317,10 @@ struct ipoib_dev_priv {
struct ipoib_ah { struct ipoib_ah {
struct net_device *dev; struct net_device *dev;
struct ib_ah *ah; struct ib_ah *ah;
struct list_head list; struct list_head list;
struct kref ref; struct kref ref;
unsigned last_send; unsigned last_send;
}; };
struct ipoib_path { struct ipoib_path {
...@@ -331,11 +331,11 @@ struct ipoib_path { ...@@ -331,11 +331,11 @@ struct ipoib_path {
struct list_head neigh_list; struct list_head neigh_list;
int query_id; int query_id;
struct ib_sa_query *query; struct ib_sa_query *query;
struct completion done; struct completion done;
struct rb_node rb_node; struct rb_node rb_node;
struct list_head list; struct list_head list;
}; };
...@@ -344,7 +344,7 @@ struct ipoib_neigh { ...@@ -344,7 +344,7 @@ struct ipoib_neigh {
#ifdef CONFIG_INFINIBAND_IPOIB_CM #ifdef CONFIG_INFINIBAND_IPOIB_CM
struct ipoib_cm_tx *cm; struct ipoib_cm_tx *cm;
#endif #endif
union ib_gid dgid; union ib_gid dgid;
struct sk_buff_head queue; struct sk_buff_head queue;
struct neighbour *neighbour; struct neighbour *neighbour;
...@@ -455,8 +455,8 @@ void ipoib_drain_cq(struct net_device *dev); ...@@ -455,8 +455,8 @@ void ipoib_drain_cq(struct net_device *dev);
#ifdef CONFIG_INFINIBAND_IPOIB_CM #ifdef CONFIG_INFINIBAND_IPOIB_CM
#define IPOIB_FLAGS_RC 0x80 #define IPOIB_FLAGS_RC 0x80
#define IPOIB_FLAGS_UC 0x40 #define IPOIB_FLAGS_UC 0x40
/* We don't support UC connections at the moment */ /* We don't support UC connections at the moment */
#define IPOIB_CM_SUPPORTED(ha) (ha[0] & (IPOIB_FLAGS_RC)) #define IPOIB_CM_SUPPORTED(ha) (ha[0] & (IPOIB_FLAGS_RC))
...@@ -500,7 +500,7 @@ void ipoib_cm_dev_cleanup(struct net_device *dev); ...@@ -500,7 +500,7 @@ void ipoib_cm_dev_cleanup(struct net_device *dev);
struct ipoib_cm_tx *ipoib_cm_create_tx(struct net_device *dev, struct ipoib_path *path, struct ipoib_cm_tx *ipoib_cm_create_tx(struct net_device *dev, struct ipoib_path *path,
struct ipoib_neigh *neigh); struct ipoib_neigh *neigh);
void ipoib_cm_destroy_tx(struct ipoib_cm_tx *tx); void ipoib_cm_destroy_tx(struct ipoib_cm_tx *tx);
void ipoib_cm_skb_too_long(struct net_device* dev, struct sk_buff *skb, void ipoib_cm_skb_too_long(struct net_device *dev, struct sk_buff *skb,
unsigned int mtu); unsigned int mtu);
void ipoib_cm_handle_rx_wc(struct net_device *dev, struct ib_wc *wc); void ipoib_cm_handle_rx_wc(struct net_device *dev, struct ib_wc *wc);
void ipoib_cm_handle_tx_wc(struct net_device *dev, struct ib_wc *wc); void ipoib_cm_handle_tx_wc(struct net_device *dev, struct ib_wc *wc);
...@@ -582,7 +582,7 @@ int ipoib_cm_add_mode_attr(struct net_device *dev) ...@@ -582,7 +582,7 @@ int ipoib_cm_add_mode_attr(struct net_device *dev)
return 0; return 0;
} }
static inline void ipoib_cm_skb_too_long(struct net_device* dev, struct sk_buff *skb, static inline void ipoib_cm_skb_too_long(struct net_device *dev, struct sk_buff *skb,
unsigned int mtu) unsigned int mtu)
{ {
dev_kfree_skb_any(skb); dev_kfree_skb_any(skb);
...@@ -624,12 +624,12 @@ extern struct ib_sa_client ipoib_sa_client; ...@@ -624,12 +624,12 @@ extern struct ib_sa_client ipoib_sa_client;
extern int ipoib_debug_level; extern int ipoib_debug_level;
#define ipoib_dbg(priv, format, arg...) \ #define ipoib_dbg(priv, format, arg...) \
do { \ do { \
if (ipoib_debug_level > 0) \ if (ipoib_debug_level > 0) \
ipoib_printk(KERN_DEBUG, priv, format , ## arg); \ ipoib_printk(KERN_DEBUG, priv, format , ## arg); \
} while (0) } while (0)
#define ipoib_dbg_mcast(priv, format, arg...) \ #define ipoib_dbg_mcast(priv, format, arg...) \
do { \ do { \
if (mcast_debug_level > 0) \ if (mcast_debug_level > 0) \
ipoib_printk(KERN_DEBUG, priv, format , ## arg); \ ipoib_printk(KERN_DEBUG, priv, format , ## arg); \
} while (0) } while (0)
...@@ -642,7 +642,7 @@ extern int ipoib_debug_level; ...@@ -642,7 +642,7 @@ extern int ipoib_debug_level;
#ifdef CONFIG_INFINIBAND_IPOIB_DEBUG_DATA #ifdef CONFIG_INFINIBAND_IPOIB_DEBUG_DATA
#define ipoib_dbg_data(priv, format, arg...) \ #define ipoib_dbg_data(priv, format, arg...) \
do { \ do { \
if (data_debug_level > 0) \ if (data_debug_level > 0) \
ipoib_printk(KERN_DEBUG, priv, format , ## arg); \ ipoib_printk(KERN_DEBUG, priv, format , ## arg); \
} while (0) } while (0)
......
...@@ -155,7 +155,7 @@ static struct sk_buff *ipoib_cm_alloc_rx_skb(struct net_device *dev, int id, int ...@@ -155,7 +155,7 @@ static struct sk_buff *ipoib_cm_alloc_rx_skb(struct net_device *dev, int id, int
return NULL; return NULL;
} }
static void ipoib_cm_start_rx_drain(struct ipoib_dev_priv* priv) static void ipoib_cm_start_rx_drain(struct ipoib_dev_priv *priv)
{ {
struct ib_send_wr *bad_wr; struct ib_send_wr *bad_wr;
struct ipoib_cm_rx *p; struct ipoib_cm_rx *p;
...@@ -495,10 +495,10 @@ static inline int post_send(struct ipoib_dev_priv *priv, ...@@ -495,10 +495,10 @@ static inline int post_send(struct ipoib_dev_priv *priv,
{ {
struct ib_send_wr *bad_wr; struct ib_send_wr *bad_wr;
priv->tx_sge.addr = addr; priv->tx_sge.addr = addr;
priv->tx_sge.length = len; priv->tx_sge.length = len;
priv->tx_wr.wr_id = wr_id | IPOIB_OP_CM; priv->tx_wr.wr_id = wr_id | IPOIB_OP_CM;
return ib_post_send(tx->qp, &priv->tx_wr, &bad_wr); return ib_post_send(tx->qp, &priv->tx_wr, &bad_wr);
} }
...@@ -540,7 +540,7 @@ void ipoib_cm_send(struct net_device *dev, struct sk_buff *skb, struct ipoib_cm_ ...@@ -540,7 +540,7 @@ void ipoib_cm_send(struct net_device *dev, struct sk_buff *skb, struct ipoib_cm_
tx_req->mapping = addr; tx_req->mapping = addr;
if (unlikely(post_send(priv, tx, tx->tx_head & (ipoib_sendq_size - 1), if (unlikely(post_send(priv, tx, tx->tx_head & (ipoib_sendq_size - 1),
addr, skb->len))) { addr, skb->len))) {
ipoib_warn(priv, "post_send failed\n"); ipoib_warn(priv, "post_send failed\n");
++dev->stats.tx_errors; ++dev->stats.tx_errors;
ib_dma_unmap_single(priv->ca, addr, skb->len, DMA_TO_DEVICE); ib_dma_unmap_single(priv->ca, addr, skb->len, DMA_TO_DEVICE);
...@@ -799,7 +799,7 @@ static struct ib_qp *ipoib_cm_create_tx_qp(struct net_device *dev, struct ipoib_ ...@@ -799,7 +799,7 @@ static struct ib_qp *ipoib_cm_create_tx_qp(struct net_device *dev, struct ipoib_
.sq_sig_type = IB_SIGNAL_ALL_WR, .sq_sig_type = IB_SIGNAL_ALL_WR,
.qp_type = IB_QPT_RC, .qp_type = IB_QPT_RC,
.qp_context = tx .qp_context = tx
}; };
return ib_create_qp(priv->pd, &attr); return ib_create_qp(priv->pd, &attr);
} }
...@@ -816,28 +816,28 @@ static int ipoib_cm_send_req(struct net_device *dev, ...@@ -816,28 +816,28 @@ static int ipoib_cm_send_req(struct net_device *dev,
data.qpn = cpu_to_be32(priv->qp->qp_num); data.qpn = cpu_to_be32(priv->qp->qp_num);
data.mtu = cpu_to_be32(IPOIB_CM_BUF_SIZE); data.mtu = cpu_to_be32(IPOIB_CM_BUF_SIZE);
req.primary_path = pathrec; req.primary_path = pathrec;
req.alternate_path = NULL; req.alternate_path = NULL;
req.service_id = cpu_to_be64(IPOIB_CM_IETF_ID | qpn); req.service_id = cpu_to_be64(IPOIB_CM_IETF_ID | qpn);
req.qp_num = qp->qp_num; req.qp_num = qp->qp_num;
req.qp_type = qp->qp_type; req.qp_type = qp->qp_type;
req.private_data = &data; req.private_data = &data;
req.private_data_len = sizeof data; req.private_data_len = sizeof data;
req.flow_control = 0; req.flow_control = 0;
req.starting_psn = 0; /* FIXME */ req.starting_psn = 0; /* FIXME */
/* /*
* Pick some arbitrary defaults here; we could make these * Pick some arbitrary defaults here; we could make these
* module parameters if anyone cared about setting them. * module parameters if anyone cared about setting them.
*/ */
req.responder_resources = 4; req.responder_resources = 4;
req.remote_cm_response_timeout = 20; req.remote_cm_response_timeout = 20;
req.local_cm_response_timeout = 20; req.local_cm_response_timeout = 20;
req.retry_count = 0; /* RFC draft warns against retries */ req.retry_count = 0; /* RFC draft warns against retries */
req.rnr_retry_count = 0; /* RFC draft warns against retries */ req.rnr_retry_count = 0; /* RFC draft warns against retries */
req.max_cm_retries = 15; req.max_cm_retries = 15;
req.srq = 1; req.srq = 1;
return ib_send_cm_req(id, &req); return ib_send_cm_req(id, &req);
} }
...@@ -1150,7 +1150,7 @@ static void ipoib_cm_skb_reap(struct work_struct *work) ...@@ -1150,7 +1150,7 @@ static void ipoib_cm_skb_reap(struct work_struct *work)
spin_unlock_irq(&priv->tx_lock); spin_unlock_irq(&priv->tx_lock);
} }
void ipoib_cm_skb_too_long(struct net_device* dev, struct sk_buff *skb, void ipoib_cm_skb_too_long(struct net_device *dev, struct sk_buff *skb,
unsigned int mtu) unsigned int mtu)
{ {
struct ipoib_dev_priv *priv = netdev_priv(dev); struct ipoib_dev_priv *priv = netdev_priv(dev);
...@@ -1212,7 +1212,7 @@ static void ipoib_cm_stale_task(struct work_struct *work) ...@@ -1212,7 +1212,7 @@ static void ipoib_cm_stale_task(struct work_struct *work)
} }
static ssize_t show_mode(struct device *d, struct device_attribute *attr, static ssize_t show_mode(struct device *d, struct device_attribute *attr,
char *buf) char *buf)
{ {
struct ipoib_dev_priv *priv = netdev_priv(to_net_dev(d)); struct ipoib_dev_priv *priv = netdev_priv(to_net_dev(d));
......
...@@ -345,12 +345,12 @@ static inline int post_send(struct ipoib_dev_priv *priv, ...@@ -345,12 +345,12 @@ static inline int post_send(struct ipoib_dev_priv *priv,
{ {
struct ib_send_wr *bad_wr; struct ib_send_wr *bad_wr;
priv->tx_sge.addr = addr; priv->tx_sge.addr = addr;
priv->tx_sge.length = len; priv->tx_sge.length = len;
priv->tx_wr.wr_id = wr_id; priv->tx_wr.wr_id = wr_id;
priv->tx_wr.wr.ud.remote_qpn = qpn; priv->tx_wr.wr.ud.remote_qpn = qpn;
priv->tx_wr.wr.ud.ah = address; priv->tx_wr.wr.ud.ah = address;
return ib_post_send(priv->qp, &priv->tx_wr, &bad_wr); return ib_post_send(priv->qp, &priv->tx_wr, &bad_wr);
} }
......
...@@ -474,8 +474,8 @@ static struct ipoib_path *path_rec_create(struct net_device *dev, void *gid) ...@@ -474,8 +474,8 @@ static struct ipoib_path *path_rec_create(struct net_device *dev, void *gid)
INIT_LIST_HEAD(&path->neigh_list); INIT_LIST_HEAD(&path->neigh_list);
memcpy(path->pathrec.dgid.raw, gid, sizeof (union ib_gid)); memcpy(path->pathrec.dgid.raw, gid, sizeof (union ib_gid));
path->pathrec.sgid = priv->local_gid; path->pathrec.sgid = priv->local_gid;
path->pathrec.pkey = cpu_to_be16(priv->pkey); path->pathrec.pkey = cpu_to_be16(priv->pkey);
path->pathrec.numb_path = 1; path->pathrec.numb_path = 1;
path->pathrec.traffic_class = priv->broadcast->mcmember.traffic_class; path->pathrec.traffic_class = priv->broadcast->mcmember.traffic_class;
...@@ -950,34 +950,34 @@ static void ipoib_setup(struct net_device *dev) ...@@ -950,34 +950,34 @@ static void ipoib_setup(struct net_device *dev)
{ {
struct ipoib_dev_priv *priv = netdev_priv(dev); struct ipoib_dev_priv *priv = netdev_priv(dev);
dev->open = ipoib_open; dev->open = ipoib_open;
dev->stop = ipoib_stop; dev->stop = ipoib_stop;
dev->change_mtu = ipoib_change_mtu; dev->change_mtu = ipoib_change_mtu;
dev->hard_start_xmit = ipoib_start_xmit; dev->hard_start_xmit = ipoib_start_xmit;
dev->tx_timeout = ipoib_timeout; dev->tx_timeout = ipoib_timeout;
dev->header_ops = &ipoib_header_ops; dev->header_ops = &ipoib_header_ops;
dev->set_multicast_list = ipoib_set_mcast_list; dev->set_multicast_list = ipoib_set_mcast_list;
dev->neigh_setup = ipoib_neigh_setup_dev; dev->neigh_setup = ipoib_neigh_setup_dev;
netif_napi_add(dev, &priv->napi, ipoib_poll, 100); netif_napi_add(dev, &priv->napi, ipoib_poll, 100);
dev->watchdog_timeo = HZ; dev->watchdog_timeo = HZ;
dev->flags |= IFF_BROADCAST | IFF_MULTICAST; dev->flags |= IFF_BROADCAST | IFF_MULTICAST;
/* /*
* We add in INFINIBAND_ALEN to allow for the destination * We add in INFINIBAND_ALEN to allow for the destination
* address "pseudoheader" for skbs without neighbour struct. * address "pseudoheader" for skbs without neighbour struct.
*/ */
dev->hard_header_len = IPOIB_ENCAP_LEN + INFINIBAND_ALEN; dev->hard_header_len = IPOIB_ENCAP_LEN + INFINIBAND_ALEN;
dev->addr_len = INFINIBAND_ALEN; dev->addr_len = INFINIBAND_ALEN;
dev->type = ARPHRD_INFINIBAND; dev->type = ARPHRD_INFINIBAND;
dev->tx_queue_len = ipoib_sendq_size * 2; dev->tx_queue_len = ipoib_sendq_size * 2;
dev->features = NETIF_F_VLAN_CHALLENGED | NETIF_F_LLTX; dev->features = NETIF_F_VLAN_CHALLENGED | NETIF_F_LLTX;
/* MTU will be reset when mcast join happens */ /* MTU will be reset when mcast join happens */
dev->mtu = IPOIB_PACKET_SIZE - IPOIB_ENCAP_LEN; dev->mtu = IPOIB_PACKET_SIZE - IPOIB_ENCAP_LEN;
priv->mcast_mtu = priv->admin_mtu = dev->mtu; priv->mcast_mtu = priv->admin_mtu = dev->mtu;
memcpy(dev->broadcast, ipv4_bcast_addr, INFINIBAND_ALEN); memcpy(dev->broadcast, ipv4_bcast_addr, INFINIBAND_ALEN);
......
...@@ -702,7 +702,7 @@ void ipoib_mcast_send(struct net_device *dev, void *mgid, struct sk_buff *skb) ...@@ -702,7 +702,7 @@ void ipoib_mcast_send(struct net_device *dev, void *mgid, struct sk_buff *skb)
out: out:
if (mcast && mcast->ah) { if (mcast && mcast->ah) {
if (skb->dst && if (skb->dst &&
skb->dst->neighbour && skb->dst->neighbour &&
!*to_ipoib_neigh(skb->dst->neighbour)) { !*to_ipoib_neigh(skb->dst->neighbour)) {
struct ipoib_neigh *neigh = ipoib_neigh_alloc(skb->dst->neighbour, struct ipoib_neigh *neigh = ipoib_neigh_alloc(skb->dst->neighbour,
...@@ -710,7 +710,7 @@ void ipoib_mcast_send(struct net_device *dev, void *mgid, struct sk_buff *skb) ...@@ -710,7 +710,7 @@ void ipoib_mcast_send(struct net_device *dev, void *mgid, struct sk_buff *skb)
if (neigh) { if (neigh) {
kref_get(&mcast->ah->ref); kref_get(&mcast->ah->ref);
neigh->ah = mcast->ah; neigh->ah = mcast->ah;
list_add_tail(&neigh->list, &mcast->neigh_list); list_add_tail(&neigh->list, &mcast->neigh_list);
} }
} }
......
...@@ -197,12 +197,12 @@ int ipoib_transport_dev_init(struct net_device *dev, struct ib_device *ca) ...@@ -197,12 +197,12 @@ int ipoib_transport_dev_init(struct net_device *dev, struct ib_device *ca)
priv->dev->dev_addr[2] = (priv->qp->qp_num >> 8) & 0xff; priv->dev->dev_addr[2] = (priv->qp->qp_num >> 8) & 0xff;
priv->dev->dev_addr[3] = (priv->qp->qp_num ) & 0xff; priv->dev->dev_addr[3] = (priv->qp->qp_num ) & 0xff;
priv->tx_sge.lkey = priv->mr->lkey; priv->tx_sge.lkey = priv->mr->lkey;
priv->tx_wr.opcode = IB_WR_SEND; priv->tx_wr.opcode = IB_WR_SEND;
priv->tx_wr.sg_list = &priv->tx_sge; priv->tx_wr.sg_list = &priv->tx_sge;
priv->tx_wr.num_sge = 1; priv->tx_wr.num_sge = 1;
priv->tx_wr.send_flags = IB_SEND_SIGNALED; priv->tx_wr.send_flags = IB_SEND_SIGNALED;
return 0; return 0;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册