This source file includes following definitions.
- skb_add_pseudo_hdr
- ipoib_priv
- ipoib_neigh_put
- ipoib_put_ah
- ipoib_build_sge
- ipoib_cm_admin_enabled
- ipoib_cm_enabled
- ipoib_cm_up
- ipoib_cm_get
- ipoib_cm_set
- ipoib_cm_has_srq
- ipoib_cm_max_mtu
- ipoib_cm_admin_enabled
- ipoib_cm_enabled
- ipoib_cm_up
- ipoib_cm_get
- ipoib_cm_set
- ipoib_cm_has_srq
- ipoib_cm_max_mtu
- ipoib_cm_send
- ipoib_cm_dev_open
- ipoib_cm_dev_stop
- ipoib_cm_dev_init
- ipoib_cm_dev_cleanup
- ipoib_cm_create_tx
- ipoib_cm_destroy_tx
- ipoib_cm_add_mode_attr
- ipoib_cm_skb_too_long
- ipoib_cm_handle_rx_wc
- ipoib_cm_handle_tx_wc
- ipoib_create_debug_files
- ipoib_delete_debug_files
- ipoib_register_debugfs
- ipoib_unregister_debugfs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 #ifndef _IPOIB_H
36 #define _IPOIB_H
37
38 #include <linux/list.h>
39 #include <linux/skbuff.h>
40 #include <linux/netdevice.h>
41 #include <linux/workqueue.h>
42 #include <linux/kref.h>
43 #include <linux/if_infiniband.h>
44 #include <linux/mutex.h>
45
46 #include <net/neighbour.h>
47 #include <net/sch_generic.h>
48
49 #include <linux/atomic.h>
50
51 #include <rdma/ib_verbs.h>
52 #include <rdma/ib_pack.h>
53 #include <rdma/ib_sa.h>
54 #include <linux/sched.h>
55
56
57 enum ipoib_flush_level {
58 IPOIB_FLUSH_LIGHT,
59 IPOIB_FLUSH_NORMAL,
60 IPOIB_FLUSH_HEAVY
61 };
62
63 enum {
64 IPOIB_ENCAP_LEN = 4,
65 IPOIB_PSEUDO_LEN = 20,
66 IPOIB_HARD_LEN = IPOIB_ENCAP_LEN + IPOIB_PSEUDO_LEN,
67
68 IPOIB_UD_HEAD_SIZE = IB_GRH_BYTES + IPOIB_ENCAP_LEN,
69 IPOIB_UD_RX_SG = 2,
70
71 IPOIB_CM_MTU = 0x10000 - 0x10,
72 IPOIB_CM_BUF_SIZE = IPOIB_CM_MTU + IPOIB_ENCAP_LEN,
73 IPOIB_CM_HEAD_SIZE = IPOIB_CM_BUF_SIZE % PAGE_SIZE,
74 IPOIB_CM_RX_SG = ALIGN(IPOIB_CM_BUF_SIZE, PAGE_SIZE) / PAGE_SIZE,
75 IPOIB_RX_RING_SIZE = 256,
76 IPOIB_TX_RING_SIZE = 128,
77 IPOIB_MAX_QUEUE_SIZE = 8192,
78 IPOIB_MIN_QUEUE_SIZE = 2,
79 IPOIB_CM_MAX_CONN_QP = 4096,
80
81 IPOIB_NUM_WC = 4,
82
83 IPOIB_MAX_PATH_REC_QUEUE = 3,
84 IPOIB_MAX_MCAST_QUEUE = 64,
85
86 IPOIB_FLAG_OPER_UP = 0,
87 IPOIB_FLAG_INITIALIZED = 1,
88 IPOIB_FLAG_ADMIN_UP = 2,
89 IPOIB_PKEY_ASSIGNED = 3,
90 IPOIB_FLAG_SUBINTERFACE = 5,
91 IPOIB_STOP_REAPER = 7,
92 IPOIB_FLAG_ADMIN_CM = 9,
93 IPOIB_FLAG_UMCAST = 10,
94 IPOIB_NEIGH_TBL_FLUSH = 12,
95 IPOIB_FLAG_DEV_ADDR_SET = 13,
96 IPOIB_FLAG_DEV_ADDR_CTRL = 14,
97
98 IPOIB_MAX_BACKOFF_SECONDS = 16,
99
100 IPOIB_MCAST_FLAG_FOUND = 0,
101 IPOIB_MCAST_FLAG_SENDONLY = 1,
102
103
104
105
106
107
108
109 IPOIB_MCAST_FLAG_BUSY = 2,
110 IPOIB_MCAST_FLAG_ATTACHED = 3,
111
112 MAX_SEND_CQE = 64,
113 IPOIB_CM_COPYBREAK = 256,
114
115 IPOIB_NON_CHILD = 0,
116 IPOIB_LEGACY_CHILD = 1,
117 IPOIB_RTNL_CHILD = 2,
118 };
119
120 #define IPOIB_OP_RECV (1ul << 31)
121 #ifdef CONFIG_INFINIBAND_IPOIB_CM
122 #define IPOIB_OP_CM (1ul << 30)
123 #else
124 #define IPOIB_OP_CM (0)
125 #endif
126
127 #define IPOIB_QPN_MASK ((__force u32) cpu_to_be32(0xFFFFFF))
128
129
130
131 struct ipoib_header {
132 __be16 proto;
133 u16 reserved;
134 };
135
136 struct ipoib_pseudo_header {
137 u8 hwaddr[INFINIBAND_ALEN];
138 };
139
140 static inline void skb_add_pseudo_hdr(struct sk_buff *skb)
141 {
142 char *data = skb_push(skb, IPOIB_PSEUDO_LEN);
143
144
145
146
147
148 memset(data, 0, IPOIB_PSEUDO_LEN);
149 skb_reset_mac_header(skb);
150 skb_pull(skb, IPOIB_HARD_LEN);
151 }
152
153 static inline struct ipoib_dev_priv *ipoib_priv(const struct net_device *dev)
154 {
155 struct rdma_netdev *rn = netdev_priv(dev);
156
157 return rn->clnt_priv;
158 }
159
160
161 struct ipoib_mcast {
162 struct ib_sa_mcmember_rec mcmember;
163 struct ib_sa_multicast *mc;
164 struct ipoib_ah *ah;
165
166 struct rb_node rb_node;
167 struct list_head list;
168
169 unsigned long created;
170 unsigned long backoff;
171 unsigned long delay_until;
172
173 unsigned long flags;
174 unsigned char logcount;
175
176 struct list_head neigh_list;
177
178 struct sk_buff_head pkt_queue;
179
180 struct net_device *dev;
181 struct completion done;
182 };
183
184 struct ipoib_rx_buf {
185 struct sk_buff *skb;
186 u64 mapping[IPOIB_UD_RX_SG];
187 };
188
189 struct ipoib_tx_buf {
190 struct sk_buff *skb;
191 u64 mapping[MAX_SKB_FRAGS + 1];
192 };
193
194 struct ib_cm_id;
195
196 struct ipoib_cm_data {
197 __be32 qpn;
198 __be32 mtu;
199 };
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228 enum ipoib_cm_state {
229 IPOIB_CM_RX_LIVE,
230 IPOIB_CM_RX_ERROR,
231 IPOIB_CM_RX_FLUSH
232 };
233
234 struct ipoib_cm_rx {
235 struct ib_cm_id *id;
236 struct ib_qp *qp;
237 struct ipoib_cm_rx_buf *rx_ring;
238 struct list_head list;
239 struct net_device *dev;
240 unsigned long jiffies;
241 enum ipoib_cm_state state;
242 int recv_count;
243 };
244
245 struct ipoib_cm_tx {
246 struct ib_cm_id *id;
247 struct ib_qp *qp;
248 struct list_head list;
249 struct net_device *dev;
250 struct ipoib_neigh *neigh;
251 struct ipoib_tx_buf *tx_ring;
252 unsigned int tx_head;
253 unsigned int tx_tail;
254 unsigned long flags;
255 u32 mtu;
256 unsigned int max_send_sge;
257 };
258
259 struct ipoib_cm_rx_buf {
260 struct sk_buff *skb;
261 u64 mapping[IPOIB_CM_RX_SG];
262 };
263
264 struct ipoib_cm_dev_priv {
265 struct ib_srq *srq;
266 struct ipoib_cm_rx_buf *srq_ring;
267 struct ib_cm_id *id;
268 struct list_head passive_ids;
269 struct list_head rx_error_list;
270 struct list_head rx_flush_list;
271 struct list_head rx_drain_list;
272 struct list_head rx_reap_list;
273 struct work_struct start_task;
274 struct work_struct reap_task;
275 struct work_struct skb_task;
276 struct work_struct rx_reap_task;
277 struct delayed_work stale_task;
278 struct sk_buff_head skb_queue;
279 struct list_head start_list;
280 struct list_head reap_list;
281 struct ib_wc ibwc[IPOIB_NUM_WC];
282 struct ib_sge rx_sge[IPOIB_CM_RX_SG];
283 struct ib_recv_wr rx_wr;
284 int nonsrq_conn_qp;
285 int max_cm_mtu;
286 int num_frags;
287 };
288
289 struct ipoib_ethtool_st {
290 u16 coalesce_usecs;
291 u16 max_coalesced_frames;
292 };
293
294 struct ipoib_neigh_table;
295
296 struct ipoib_neigh_hash {
297 struct ipoib_neigh_table *ntbl;
298 struct ipoib_neigh __rcu **buckets;
299 struct rcu_head rcu;
300 u32 mask;
301 u32 size;
302 };
303
304 struct ipoib_neigh_table {
305 struct ipoib_neigh_hash __rcu *htbl;
306 atomic_t entries;
307 struct completion flushed;
308 struct completion deleted;
309 };
310
311 struct ipoib_qp_state_validate {
312 struct work_struct work;
313 struct ipoib_dev_priv *priv;
314 };
315
316
317
318
319
320
321 struct ipoib_dev_priv {
322 spinlock_t lock;
323
324 struct net_device *dev;
325 void (*next_priv_destructor)(struct net_device *dev);
326
327 struct napi_struct send_napi;
328 struct napi_struct recv_napi;
329
330 unsigned long flags;
331
332
333
334
335
336
337
338
339 struct rw_semaphore vlan_rwsem;
340 struct mutex mcast_mutex;
341
342 struct rb_root path_tree;
343 struct list_head path_list;
344
345 struct ipoib_neigh_table ntbl;
346
347 struct ipoib_mcast *broadcast;
348 struct list_head multicast_list;
349 struct rb_root multicast_tree;
350
351 struct workqueue_struct *wq;
352 struct delayed_work mcast_task;
353 struct work_struct carrier_on_task;
354 struct work_struct flush_light;
355 struct work_struct flush_normal;
356 struct work_struct flush_heavy;
357 struct work_struct restart_task;
358 struct delayed_work ah_reap_task;
359 struct delayed_work neigh_reap_task;
360 struct ib_device *ca;
361 u8 port;
362 u16 pkey;
363 u16 pkey_index;
364 struct ib_pd *pd;
365 struct ib_cq *recv_cq;
366 struct ib_cq *send_cq;
367 struct ib_qp *qp;
368 u32 qkey;
369
370 union ib_gid local_gid;
371 u32 local_lid;
372
373 unsigned int admin_mtu;
374 unsigned int mcast_mtu;
375 unsigned int max_ib_mtu;
376
377 struct ipoib_rx_buf *rx_ring;
378
379 struct ipoib_tx_buf *tx_ring;
380
381 unsigned int tx_head;
382 unsigned int tx_tail;
383
384 unsigned int global_tx_head;
385 unsigned int global_tx_tail;
386 struct ib_sge tx_sge[MAX_SKB_FRAGS + 1];
387 struct ib_ud_wr tx_wr;
388 struct ib_wc send_wc[MAX_SEND_CQE];
389
390 struct ib_recv_wr rx_wr;
391 struct ib_sge rx_sge[IPOIB_UD_RX_SG];
392
393 struct ib_wc ibwc[IPOIB_NUM_WC];
394
395 struct list_head dead_ahs;
396
397 struct ib_event_handler event_handler;
398
399 struct net_device *parent;
400 struct list_head child_intfs;
401 struct list_head list;
402 int child_type;
403
404 #ifdef CONFIG_INFINIBAND_IPOIB_CM
405 struct ipoib_cm_dev_priv cm;
406 #endif
407
408 #ifdef CONFIG_INFINIBAND_IPOIB_DEBUG
409 struct list_head fs_list;
410 struct dentry *mcg_dentry;
411 struct dentry *path_dentry;
412 #endif
413 u64 hca_caps;
414 struct ipoib_ethtool_st ethtool;
415 unsigned int max_send_sge;
416 bool sm_fullmember_sendonly_support;
417 const struct net_device_ops *rn_ops;
418 };
419
420 struct ipoib_ah {
421 struct net_device *dev;
422 struct ib_ah *ah;
423 struct list_head list;
424 struct kref ref;
425 unsigned int last_send;
426 int valid;
427 };
428
429 struct ipoib_path {
430 struct net_device *dev;
431 struct sa_path_rec pathrec;
432 struct ipoib_ah *ah;
433 struct sk_buff_head queue;
434
435 struct list_head neigh_list;
436
437 int query_id;
438 struct ib_sa_query *query;
439 struct completion done;
440
441 struct rb_node rb_node;
442 struct list_head list;
443 };
444
445 struct ipoib_neigh {
446 struct ipoib_ah *ah;
447 #ifdef CONFIG_INFINIBAND_IPOIB_CM
448 struct ipoib_cm_tx *cm;
449 #endif
450 u8 daddr[INFINIBAND_ALEN];
451 struct sk_buff_head queue;
452
453 struct net_device *dev;
454
455 struct list_head list;
456 struct ipoib_neigh __rcu *hnext;
457 struct rcu_head rcu;
458 atomic_t refcnt;
459 unsigned long alive;
460 };
461
462 #define IPOIB_UD_MTU(ib_mtu) (ib_mtu - IPOIB_ENCAP_LEN)
463 #define IPOIB_UD_BUF_SIZE(ib_mtu) (ib_mtu + IB_GRH_BYTES)
464
465 void ipoib_neigh_dtor(struct ipoib_neigh *neigh);
466 static inline void ipoib_neigh_put(struct ipoib_neigh *neigh)
467 {
468 if (atomic_dec_and_test(&neigh->refcnt))
469 ipoib_neigh_dtor(neigh);
470 }
471 struct ipoib_neigh *ipoib_neigh_get(struct net_device *dev, u8 *daddr);
472 struct ipoib_neigh *ipoib_neigh_alloc(u8 *daddr,
473 struct net_device *dev);
474 void ipoib_neigh_free(struct ipoib_neigh *neigh);
475 void ipoib_del_neighs_by_gid(struct net_device *dev, u8 *gid);
476
477 extern struct workqueue_struct *ipoib_workqueue;
478
479
480
481 int ipoib_rx_poll(struct napi_struct *napi, int budget);
482 int ipoib_tx_poll(struct napi_struct *napi, int budget);
483 void ipoib_ib_rx_completion(struct ib_cq *cq, void *ctx_ptr);
484 void ipoib_ib_tx_completion(struct ib_cq *cq, void *ctx_ptr);
485
486 struct ipoib_ah *ipoib_create_ah(struct net_device *dev,
487 struct ib_pd *pd, struct rdma_ah_attr *attr);
488 void ipoib_free_ah(struct kref *kref);
489 static inline void ipoib_put_ah(struct ipoib_ah *ah)
490 {
491 kref_put(&ah->ref, ipoib_free_ah);
492 }
493 int ipoib_open(struct net_device *dev);
494 void ipoib_intf_free(struct net_device *dev);
495 int ipoib_add_pkey_attr(struct net_device *dev);
496 int ipoib_add_umcast_attr(struct net_device *dev);
497
498 int ipoib_send(struct net_device *dev, struct sk_buff *skb,
499 struct ib_ah *address, u32 dqpn);
500 void ipoib_reap_ah(struct work_struct *work);
501
502 struct ipoib_path *__path_find(struct net_device *dev, void *gid);
503 void ipoib_mark_paths_invalid(struct net_device *dev);
504 void ipoib_flush_paths(struct net_device *dev);
505 struct net_device *ipoib_intf_alloc(struct ib_device *hca, u8 port,
506 const char *format);
507 int ipoib_intf_init(struct ib_device *hca, u8 port, const char *format,
508 struct net_device *dev);
509 void ipoib_ib_tx_timer_func(struct timer_list *t);
510 void ipoib_ib_dev_flush_light(struct work_struct *work);
511 void ipoib_ib_dev_flush_normal(struct work_struct *work);
512 void ipoib_ib_dev_flush_heavy(struct work_struct *work);
513 void ipoib_pkey_event(struct work_struct *work);
514 void ipoib_ib_dev_cleanup(struct net_device *dev);
515
516 int ipoib_ib_dev_open_default(struct net_device *dev);
517 int ipoib_ib_dev_open(struct net_device *dev);
518 int ipoib_ib_dev_stop(struct net_device *dev);
519 void ipoib_ib_dev_up(struct net_device *dev);
520 void ipoib_ib_dev_down(struct net_device *dev);
521 int ipoib_ib_dev_stop_default(struct net_device *dev);
522 void ipoib_pkey_dev_check_presence(struct net_device *dev);
523
524 void ipoib_mcast_join_task(struct work_struct *work);
525 void ipoib_mcast_carrier_on_task(struct work_struct *work);
526 void ipoib_mcast_send(struct net_device *dev, u8 *daddr, struct sk_buff *skb);
527
528 void ipoib_mcast_restart_task(struct work_struct *work);
529 void ipoib_mcast_start_thread(struct net_device *dev);
530 int ipoib_mcast_stop_thread(struct net_device *dev);
531
532 void ipoib_mcast_dev_down(struct net_device *dev);
533 void ipoib_mcast_dev_flush(struct net_device *dev);
534
535 int ipoib_dma_map_tx(struct ib_device *ca, struct ipoib_tx_buf *tx_req);
536 void ipoib_dma_unmap_tx(struct ipoib_dev_priv *priv,
537 struct ipoib_tx_buf *tx_req);
538
539 struct rtnl_link_ops *ipoib_get_link_ops(void);
540
541 static inline void ipoib_build_sge(struct ipoib_dev_priv *priv,
542 struct ipoib_tx_buf *tx_req)
543 {
544 int i, off;
545 struct sk_buff *skb = tx_req->skb;
546 skb_frag_t *frags = skb_shinfo(skb)->frags;
547 int nr_frags = skb_shinfo(skb)->nr_frags;
548 u64 *mapping = tx_req->mapping;
549
550 if (skb_headlen(skb)) {
551 priv->tx_sge[0].addr = mapping[0];
552 priv->tx_sge[0].length = skb_headlen(skb);
553 off = 1;
554 } else
555 off = 0;
556
557 for (i = 0; i < nr_frags; ++i) {
558 priv->tx_sge[i + off].addr = mapping[i + off];
559 priv->tx_sge[i + off].length = skb_frag_size(&frags[i]);
560 }
561 priv->tx_wr.wr.num_sge = nr_frags + off;
562 }
563
564 #ifdef CONFIG_INFINIBAND_IPOIB_DEBUG
565 struct ipoib_mcast_iter *ipoib_mcast_iter_init(struct net_device *dev);
566 int ipoib_mcast_iter_next(struct ipoib_mcast_iter *iter);
567 void ipoib_mcast_iter_read(struct ipoib_mcast_iter *iter,
568 union ib_gid *gid,
569 unsigned long *created,
570 unsigned int *queuelen,
571 unsigned int *complete,
572 unsigned int *send_only);
573
574 struct ipoib_path_iter *ipoib_path_iter_init(struct net_device *dev);
575 int ipoib_path_iter_next(struct ipoib_path_iter *iter);
576 void ipoib_path_iter_read(struct ipoib_path_iter *iter,
577 struct ipoib_path *path);
578 #endif
579
580 int ipoib_mcast_attach(struct net_device *dev, struct ib_device *hca,
581 union ib_gid *mgid, u16 mlid, int set_qkey, u32 qkey);
582 int ipoib_mcast_detach(struct net_device *dev, struct ib_device *hca,
583 union ib_gid *mgid, u16 mlid);
584 void ipoib_mcast_remove_list(struct list_head *remove_list);
585 void ipoib_check_and_add_mcast_sendonly(struct ipoib_dev_priv *priv, u8 *mgid,
586 struct list_head *remove_list);
587
588 int ipoib_init_qp(struct net_device *dev);
589 int ipoib_transport_dev_init(struct net_device *dev, struct ib_device *ca);
590 void ipoib_transport_dev_cleanup(struct net_device *dev);
591
592 void ipoib_event(struct ib_event_handler *handler,
593 struct ib_event *record);
594
595 int ipoib_vlan_add(struct net_device *pdev, unsigned short pkey);
596 int ipoib_vlan_delete(struct net_device *pdev, unsigned short pkey);
597
598 int __ipoib_vlan_add(struct ipoib_dev_priv *ppriv, struct ipoib_dev_priv *priv,
599 u16 pkey, int child_type);
600
601 int __init ipoib_netlink_init(void);
602 void __exit ipoib_netlink_fini(void);
603
604 void ipoib_set_umcast(struct net_device *ndev, int umcast_val);
605 int ipoib_set_mode(struct net_device *dev, const char *buf);
606
607 void ipoib_setup_common(struct net_device *dev);
608
609 void ipoib_pkey_open(struct ipoib_dev_priv *priv);
610 void ipoib_drain_cq(struct net_device *dev);
611
612 void ipoib_set_ethtool_ops(struct net_device *dev);
613
614 #define IPOIB_FLAGS_RC 0x80
615 #define IPOIB_FLAGS_UC 0x40
616
617
618 #define IPOIB_CM_SUPPORTED(ha) (ha[0] & (IPOIB_FLAGS_RC))
619
620 #ifdef CONFIG_INFINIBAND_IPOIB_CM
621
622 extern int ipoib_max_conn_qp;
623
624 static inline int ipoib_cm_admin_enabled(struct net_device *dev)
625 {
626 struct ipoib_dev_priv *priv = ipoib_priv(dev);
627 return IPOIB_CM_SUPPORTED(dev->dev_addr) &&
628 test_bit(IPOIB_FLAG_ADMIN_CM, &priv->flags);
629 }
630
631 static inline int ipoib_cm_enabled(struct net_device *dev, u8 *hwaddr)
632 {
633 struct ipoib_dev_priv *priv = ipoib_priv(dev);
634 return IPOIB_CM_SUPPORTED(hwaddr) &&
635 test_bit(IPOIB_FLAG_ADMIN_CM, &priv->flags);
636 }
637
638 static inline int ipoib_cm_up(struct ipoib_neigh *neigh)
639
640 {
641 return test_bit(IPOIB_FLAG_OPER_UP, &neigh->cm->flags);
642 }
643
644 static inline struct ipoib_cm_tx *ipoib_cm_get(struct ipoib_neigh *neigh)
645 {
646 return neigh->cm;
647 }
648
649 static inline void ipoib_cm_set(struct ipoib_neigh *neigh, struct ipoib_cm_tx *tx)
650 {
651 neigh->cm = tx;
652 }
653
654 static inline int ipoib_cm_has_srq(struct net_device *dev)
655 {
656 struct ipoib_dev_priv *priv = ipoib_priv(dev);
657 return !!priv->cm.srq;
658 }
659
660 static inline unsigned int ipoib_cm_max_mtu(struct net_device *dev)
661 {
662 struct ipoib_dev_priv *priv = ipoib_priv(dev);
663 return priv->cm.max_cm_mtu;
664 }
665
666 void ipoib_cm_send(struct net_device *dev, struct sk_buff *skb, struct ipoib_cm_tx *tx);
667 int ipoib_cm_dev_open(struct net_device *dev);
668 void ipoib_cm_dev_stop(struct net_device *dev);
669 int ipoib_cm_dev_init(struct net_device *dev);
670 int ipoib_cm_add_mode_attr(struct net_device *dev);
671 void ipoib_cm_dev_cleanup(struct net_device *dev);
672 struct ipoib_cm_tx *ipoib_cm_create_tx(struct net_device *dev, struct ipoib_path *path,
673 struct ipoib_neigh *neigh);
674 void ipoib_cm_destroy_tx(struct ipoib_cm_tx *tx);
675 void ipoib_cm_skb_too_long(struct net_device *dev, struct sk_buff *skb,
676 unsigned int mtu);
677 void ipoib_cm_handle_rx_wc(struct net_device *dev, struct ib_wc *wc);
678 void ipoib_cm_handle_tx_wc(struct net_device *dev, struct ib_wc *wc);
679 #else
680
681 struct ipoib_cm_tx;
682
683 #define ipoib_max_conn_qp 0
684
685 static inline int ipoib_cm_admin_enabled(struct net_device *dev)
686 {
687 return 0;
688 }
689 static inline int ipoib_cm_enabled(struct net_device *dev, u8 *hwaddr)
690
691 {
692 return 0;
693 }
694
695 static inline int ipoib_cm_up(struct ipoib_neigh *neigh)
696
697 {
698 return 0;
699 }
700
701 static inline struct ipoib_cm_tx *ipoib_cm_get(struct ipoib_neigh *neigh)
702 {
703 return NULL;
704 }
705
706 static inline void ipoib_cm_set(struct ipoib_neigh *neigh, struct ipoib_cm_tx *tx)
707 {
708 }
709
710 static inline int ipoib_cm_has_srq(struct net_device *dev)
711 {
712 return 0;
713 }
714
715 static inline unsigned int ipoib_cm_max_mtu(struct net_device *dev)
716 {
717 return 0;
718 }
719
720 static inline
721 void ipoib_cm_send(struct net_device *dev, struct sk_buff *skb, struct ipoib_cm_tx *tx)
722 {
723 return;
724 }
725
726 static inline
727 int ipoib_cm_dev_open(struct net_device *dev)
728 {
729 return 0;
730 }
731
732 static inline
733 void ipoib_cm_dev_stop(struct net_device *dev)
734 {
735 return;
736 }
737
738 static inline
739 int ipoib_cm_dev_init(struct net_device *dev)
740 {
741 return -EOPNOTSUPP;
742 }
743
744 static inline
745 void ipoib_cm_dev_cleanup(struct net_device *dev)
746 {
747 return;
748 }
749
750 static inline
751 struct ipoib_cm_tx *ipoib_cm_create_tx(struct net_device *dev, struct ipoib_path *path,
752 struct ipoib_neigh *neigh)
753 {
754 return NULL;
755 }
756
757 static inline
758 void ipoib_cm_destroy_tx(struct ipoib_cm_tx *tx)
759 {
760 return;
761 }
762
763 static inline
764 int ipoib_cm_add_mode_attr(struct net_device *dev)
765 {
766 return 0;
767 }
768
769 static inline void ipoib_cm_skb_too_long(struct net_device *dev, struct sk_buff *skb,
770 unsigned int mtu)
771 {
772 dev_kfree_skb_any(skb);
773 }
774
775 static inline void ipoib_cm_handle_rx_wc(struct net_device *dev, struct ib_wc *wc)
776 {
777 }
778
779 static inline void ipoib_cm_handle_tx_wc(struct net_device *dev, struct ib_wc *wc)
780 {
781 }
782 #endif
783
784 #ifdef CONFIG_INFINIBAND_IPOIB_DEBUG
785 void ipoib_create_debug_files(struct net_device *dev);
786 void ipoib_delete_debug_files(struct net_device *dev);
787 void ipoib_register_debugfs(void);
788 void ipoib_unregister_debugfs(void);
789 #else
790 static inline void ipoib_create_debug_files(struct net_device *dev) { }
791 static inline void ipoib_delete_debug_files(struct net_device *dev) { }
792 static inline void ipoib_register_debugfs(void) { }
793 static inline void ipoib_unregister_debugfs(void) { }
794 #endif
795
796 #define ipoib_printk(level, priv, format, arg...) \
797 printk(level "%s: " format, ((struct ipoib_dev_priv *) priv)->dev->name , ## arg)
798 #define ipoib_warn(priv, format, arg...) \
799 do { \
800 static DEFINE_RATELIMIT_STATE(_rs, \
801 10 * HZ , \
802 100); \
803 if (__ratelimit(&_rs)) \
804 ipoib_printk(KERN_WARNING, priv, format , ## arg);\
805 } while (0)
806
807 extern int ipoib_sendq_size;
808 extern int ipoib_recvq_size;
809
810 extern struct ib_sa_client ipoib_sa_client;
811
812 #ifdef CONFIG_INFINIBAND_IPOIB_DEBUG
813 extern int ipoib_debug_level;
814
815 #define ipoib_dbg(priv, format, arg...) \
816 do { \
817 if (ipoib_debug_level > 0) \
818 ipoib_printk(KERN_DEBUG, priv, format , ## arg); \
819 } while (0)
820 #define ipoib_dbg_mcast(priv, format, arg...) \
821 do { \
822 if (mcast_debug_level > 0) \
823 ipoib_printk(KERN_DEBUG, priv, format , ## arg); \
824 } while (0)
825 #else
826 #define ipoib_dbg(priv, format, arg...) \
827 do { (void) (priv); } while (0)
828 #define ipoib_dbg_mcast(priv, format, arg...) \
829 do { (void) (priv); } while (0)
830 #endif
831
832 #ifdef CONFIG_INFINIBAND_IPOIB_DEBUG_DATA
833 #define ipoib_dbg_data(priv, format, arg...) \
834 do { \
835 if (data_debug_level > 0) \
836 ipoib_printk(KERN_DEBUG, priv, format , ## arg); \
837 } while (0)
838 #else
839 #define ipoib_dbg_data(priv, format, arg...) \
840 do { (void) (priv); } while (0)
841 #endif
842
843 #define IPOIB_QPN(ha) (be32_to_cpup((__be32 *) ha) & 0xffffff)
844
845 extern const char ipoib_driver_version[];
846
847 #endif