Use HAVE_PCIE_LINK_WIDTH
[compat-rdma/compat.git] / config / rdma.m4
1 dnl Checks for the in-box ib_core
2 AC_DEFUN([RDMA_CONFIG_COMPAT],
3 [
4         AC_MSG_CHECKING([if ib_verbs has ib_dma_map_single])
5         LB_LINUX_TRY_COMPILE([
6                 #include <linux/version.h>
7                 #include <linux/pci.h>
8                 #include <linux/gfp.h>
9                 #include <rdma/ib_verbs.h>
10         ],[
11                 ib_dma_map_single(NULL, NULL, 0, 0);
12                 return 0;
13         ],[
14                 AC_MSG_RESULT(yes)
15                 AC_DEFINE(HAVE_INBOX_IB_DMA_MAP, 1,
16                           [ib_dma_map_single defined])
17         ],[
18                 AC_MSG_RESULT(no)
19         ])
20
21         AC_MSG_CHECKING([if ib_create_cq wants comp_vector])
22         LB_LINUX_TRY_COMPILE([
23                 #include <linux/version.h>
24                 #include <linux/pci.h>
25                 #include <linux/gfp.h>
26                 #include <rdma/ib_verbs.h>
27         ],[
28                 ib_create_cq(NULL, NULL, NULL, NULL, 0, 0);
29                 return 0;
30         ],[
31                 AC_MSG_RESULT(yes)
32                 AC_DEFINE(HAVE_INBOX_IB_COMP_VECTOR, 1,
33                           [has completion vector])
34         ],[
35                 AC_MSG_RESULT(no)
36         ])
37
38         AC_MSG_CHECKING([if rdma_cm has RDMA_CM_EVENT_ADDR_CHANGE])
39         LB_LINUX_TRY_COMPILE([
40                 #include <linux/version.h>
41                 #include <linux/pci.h>
42                 #include <linux/gfp.h>
43                 #include <rdma/rdma_cm.h>
44         ],[
45                 return (RDMA_CM_EVENT_ADDR_CHANGE == 0);
46         ],[
47                 AC_MSG_RESULT(yes)
48                 AC_DEFINE(HAVE_INBOX_RDMA_CMEV_ADDRCHANGE, 1,
49                           [has completion vector])
50         ],[
51                 AC_MSG_RESULT(no)
52         ])
53
54         AC_MSG_CHECKING([if rdma_cm has RDMA_CM_EVENT_TIMEWAIT_EXIT])
55         LB_LINUX_TRY_COMPILE([
56                 #include <linux/version.h>
57                 #include <linux/pci.h>
58                 #include <linux/gfp.h>
59                 #include <rdma/rdma_cm.h>
60         ],[
61                 return (RDMA_CM_EVENT_TIMEWAIT_EXIT == 0);
62         ],[
63                 AC_MSG_RESULT(yes)
64                 AC_DEFINE(HAVE_INBOX_RDMA_CMEV_TIMEWAIT_EXIT, 1,
65                           [has completion vector])
66         ],[
67                 AC_MSG_RESULT(no)
68         ])
69
70         AC_MSG_CHECKING([if rdma_cm has rdma_set_reuseaddr])
71         LB_LINUX_TRY_COMPILE([
72                 #include <linux/version.h>
73                 #include <linux/pci.h>
74                 #include <linux/gfp.h>
75                 #include <rdma/rdma_cm.h>
76         ],[
77                 rdma_set_reuseaddr(NULL, 1);
78                 return 0;
79         ],[
80                 AC_MSG_RESULT(yes)
81                 AC_DEFINE(HAVE_INBOX_RDMA_SET_REUSEADDR, 1,
82                           [rdma_set_reuse defined])
83         ],[
84                 AC_MSG_RESULT(no)
85         ])
86
87         AC_MSG_CHECKING([if struct ib_wc has member named ts])
88         LB_LINUX_TRY_COMPILE([
89                 #include <linux/version.h>
90                 #include <rdma/ib_verbs.h>
91         ],[
92         struct ib_wc wc;
93         wc->ts.timestamp = 0;
94
95                 return 0;
96         ],[
97                 AC_MSG_RESULT(yes)
98                 AC_DEFINE(HAVE_INBOX_IB_WC_TS, 1,
99                           [ib_wc has member named ts])
100         ],[
101                 AC_MSG_RESULT(no)
102         ])
103
104         AC_MSG_CHECKING([if struct ib_ah_attr has member named dmac])
105         LB_LINUX_TRY_COMPILE([
106                 #include <linux/version.h>
107                 #include <rdma/ib_verbs.h>
108         ],[
109         struct ib_ah_attr *ah_attr;
110         memset(ah_attr->dmac, 0, 6);
111
112                 return 0;
113         ],[
114                 AC_MSG_RESULT(yes)
115                 AC_DEFINE(HAVE_INBOX_IB_AH_ATTR_DMAC, 1,
116                           [ah_attr has member named dmac])
117         ],[
118                 AC_MSG_RESULT(no)
119         ])
120
121         AC_MSG_CHECKING([if struct ib_ah_attr has member named vlan_id])
122         LB_LINUX_TRY_COMPILE([
123                 #include <linux/version.h>
124                 #include <rdma/ib_verbs.h>
125         ],[
126         struct ib_ah_attr *ah_attr;
127         ah_attr->vlan_id = 0;
128
129                 return 0;
130         ],[
131                 AC_MSG_RESULT(yes)
132                 AC_DEFINE(HAVE_INBOX_IB_AH_ATTR_VLAN_ID, 1,
133                           [ah_attr has member named vlan_id])
134         ],[
135                 AC_MSG_RESULT(no)
136         ])
137 ])
138
139 dnl Examine kernel functionality
140 AC_DEFUN([LINUX_CONFIG_COMPAT],
141 [
142         AC_MSG_CHECKING([if kernel has ktime_get_ns])
143         LB_LINUX_TRY_COMPILE([
144                 #include <linux/ktime.h>
145         ],[
146                 unsigned long long ns;
147
148                 ns = ktime_get_ns();
149                 return 0;
150         ],[
151                 AC_MSG_RESULT(yes)
152                 AC_DEFINE(HAVE_KTIME_GET_NS, 1,
153                           [ktime_get_ns defined])
154         ],[
155                 AC_MSG_RESULT(no)
156         ])
157
158         AC_MSG_CHECKING([if svc_xprt_class has xcl_ident])
159         LB_LINUX_TRY_COMPILE([
160                 #include <linux/sunrpc/xprt.h>
161                 #include <linux/sunrpc/svc_xprt.h>
162         ],[
163                 struct svc_xprt_class svc_rdma_class = {
164                         .xcl_ident = XPRT_TRANSPORT_RDMA,
165                 };
166                 return 0;
167         ],[
168                 AC_MSG_RESULT(yes)
169                 AC_DEFINE(HAVE_XCL_IDENT, 1,
170                           [xcl_ident defined])
171         ],[
172                 AC_MSG_RESULT(no)
173         ])
174
175         AC_MSG_CHECKING([if struct ifla_vf_info has max_tx_rate])
176         LB_LINUX_TRY_COMPILE([
177                 #include <linux/if_link.h>
178         ],[
179                 struct ifla_vf_info *ivf;
180
181                 ivf->max_tx_rate = 0;
182                 ivf->min_tx_rate = 0;
183
184                 return 0;
185         ],[
186                 AC_MSG_RESULT(yes)
187                 AC_DEFINE(HAVE_TX_RATE_LIMIT, 1,
188                           [max_tx_rate is defined])
189         ],[
190                 AC_MSG_RESULT(no)
191         ])
192
193         AC_MSG_CHECKING([if struct ethtool_ops has get/set_rxfh])
194         LB_LINUX_TRY_COMPILE([
195                 #include <linux/ethtool.h>
196         ],[
197                 const struct ethtool_ops en_ethtool_ops = {
198                         .get_rxfh_indir_size = NULL,
199                         .get_rxfh = NULL,
200                         .set_rxfh = NULL,
201                 };
202
203                 return 0;
204         ],[
205                 AC_MSG_RESULT(yes)
206                 AC_DEFINE(HAVE_GET_SET_RXFH, 1,
207                           [get/set_rxfh is defined])
208         ],[
209                 AC_MSG_RESULT(no)
210         ])
211
212
213         AC_MSG_CHECKING([if struct ethtool_ops has get/set_tunable])
214         LB_LINUX_TRY_COMPILE([
215                 #include <linux/ethtool.h>
216         ],[
217                 const struct ethtool_ops en_ethtool_ops = {
218                         .get_tunable = NULL,
219                         .set_tunable = NULL,
220                 };
221
222                 return 0;
223         ],[
224                 AC_MSG_RESULT(yes)
225                 AC_DEFINE(HAVE_GET_SET_TUNABLE, 1,
226                           [get/set_tunable is defined])
227         ],[
228                 AC_MSG_RESULT(no)
229         ])
230         AC_MSG_CHECKING([if struct net_device has dev_port])
231         LB_LINUX_TRY_COMPILE([
232                 #include <linux/netdevice.h>
233         ],[
234                 struct net_device *dev;
235
236                 dev->dev_port = 0;
237
238                 return 0;
239         ],[
240                 AC_MSG_RESULT(yes)
241                 AC_DEFINE(HAVE_NET_DEVICE_DEV_PORT, 1,
242                           [dev_port is defined])
243         ],[
244                 AC_MSG_RESULT(no)
245         ])
246
247         AC_MSG_CHECKING([if struct ptp_clock_info has n_pins])
248         LB_LINUX_TRY_COMPILE([
249                 #include <linux/ptp_clock_kernel.h>
250         ],[
251                 struct ptp_clock_info *info;
252                 info->n_pins = 0;
253
254                 return 0;
255         ],[
256                 AC_MSG_RESULT(yes)
257                 AC_DEFINE(HAVE_PTP_CLOCK_INFO_N_PINS, 1,
258                           [n_pins is defined])
259         ],[
260                 AC_MSG_RESULT(no)
261         ])
262
263         AC_MSG_CHECKING([if pci.h pci_enable_msi_exact])
264         LB_LINUX_TRY_COMPILE([
265                 #include <linux/pci.h>
266         ],[
267                 int x = pci_enable_msi_exact(NULL, 0);
268
269                 return 0;
270         ],[
271                 AC_MSG_RESULT(yes)
272                 AC_DEFINE(HAVE_PCI_ENABLE_MSI_EXACT, 1,
273                           [pci_enable_msi_exact is defined])
274         ],[
275                 AC_MSG_RESULT(no)
276         ])
277
278         AC_MSG_CHECKING([if pci.h pci_enable_msix_range])
279         LB_LINUX_TRY_COMPILE([
280                 #include <linux/pci.h>
281         ],[
282                 int x = pci_enable_msix_range(NULL, 0, 0, 0);
283
284                 return 0;
285         ],[
286                 AC_MSG_RESULT(yes)
287                 AC_DEFINE(HAVE_PCI_ENABLE_MSIX_RANGE, 1,
288                           [pci_enable_msix_range is defined])
289         ],[
290                 AC_MSG_RESULT(no)
291         ])
292
293         AC_MSG_CHECKING([if struct iscsi_transport has check_protection])
294         LB_LINUX_TRY_COMPILE([
295                 #include <scsi/scsi_transport_iscsi.h>
296         ],[
297                 static struct iscsi_transport iscsi_iser_transport = {
298                         .check_protection = NULL,
299                 };
300
301                 return 0;
302         ],[
303                 AC_MSG_RESULT(yes)
304                 AC_DEFINE(HAVE_ISCSI_CHECK_PROTECTION, 1,
305                           [check_protection is defined])
306         ],[
307                 AC_MSG_RESULT(no)
308         ])
309
310         AC_MSG_CHECKING([if netdevice.h has select_queue_fallback_t])
311         LB_LINUX_TRY_COMPILE([
312                 #include <linux/netdevice.h>
313         ],[
314                 select_queue_fallback_t fallback;
315
316                 return 0;
317         ],[
318                 AC_MSG_RESULT(yes)
319                 AC_DEFINE(HAVE_SELECT_QUEUE_FALLBACK_T, 1,
320                           [select_queue_fallback_t is defined])
321         ],[
322                 AC_MSG_RESULT(no)
323         ])
324
325         AC_MSG_CHECKING([if skbuff.h has skb_set_hash])
326         LB_LINUX_TRY_COMPILE([
327                 #include <linux/netdevice.h>
328         ],[
329                 skb_set_hash(NULL, 0, PKT_HASH_TYPE_L3);
330
331                 return 0;
332         ],[
333                 AC_MSG_RESULT(yes)
334                 AC_DEFINE(HAVE_SKB_SET_HASH, 1,
335                           [skb_set_hash is defined])
336         ],[
337                 AC_MSG_RESULT(no)
338         ])
339
340         AC_MSG_CHECKING([if sockios.h has SIOCGHWTSTAMP])
341         LB_LINUX_TRY_COMPILE([
342                 #include <linux/sockios.h>
343         ],[
344                 int x = SIOCGHWTSTAMP;
345
346                 return 0;
347         ],[
348                 AC_MSG_RESULT(yes)
349                 AC_DEFINE(HAVE_SIOCGHWTSTAMP, 1,
350                           [SIOCGHWTSTAMP is defined])
351         ],[
352                 AC_MSG_RESULT(no)
353         ])
354
355         AC_MSG_CHECKING([if ip.h inet_get_local_port_range has 3 parameters])
356         LB_LINUX_TRY_COMPILE([
357                 #include <net/ip.h>
358         ],[
359                 inet_get_local_port_range(NULL, NULL, NULL);
360
361                 return 0;
362         ],[
363                 AC_MSG_RESULT(yes)
364                 AC_DEFINE(HAVE_INET_GET_LOCAL_PORT_RANGE_3_PARAMS, 1,
365                           [inet_get_local_port_range has 3 parameters])
366         ],[
367                 AC_MSG_RESULT(no)
368         ])
369
370         AC_MSG_CHECKING([if net.h has net_get_random_once])
371         LB_LINUX_TRY_COMPILE([
372                 #include <linux/net.h>
373         ],[
374                 net_get_random_once(NULL, 0);
375
376                 return 0;
377         ],[
378                 AC_MSG_RESULT(yes)
379                 AC_DEFINE(HAVE_NET_GET_RANDOM_ONCE, 1,
380                           [net_get_random_once is defined])
381         ],[
382                 AC_MSG_RESULT(no)
383         ])
384
385         AC_MSG_CHECKING([if inet_sock.h has __inet_ehashfn])
386         LB_LINUX_TRY_COMPILE([
387                 #include <net/inet_sock.h>
388         ],[
389                 __inet_ehashfn(0, 0, 0, 0, 0);
390
391                 return 0;
392         ],[
393                 AC_MSG_RESULT(yes)
394                 AC_DEFINE(HAVE_INET_EHASHFN, 1,
395                           [__inet_ehashfn is defined])
396         ],[
397                 AC_MSG_RESULT(no)
398         ])
399
400         AC_MSG_CHECKING([if err.h has PTR_ERR_OR_ZERO])
401         LB_LINUX_TRY_COMPILE([
402                 #include <linux/err.h>
403         ],[
404                 int x = PTR_ERR_OR_ZERO(NULL);
405
406                 return 0;
407         ],[
408                 AC_MSG_RESULT(yes)
409                 AC_DEFINE(HAVE_PTR_ERR_OR_ZERO, 1,
410                           [PTR_ERR_OR_ZERO is defined])
411         ],[
412                 AC_MSG_RESULT(no)
413         ])
414
415         AC_MSG_CHECKING([if struct iscsi_session has discovery_sess])
416         LB_LINUX_TRY_COMPILE([
417                 #include <scsi/libiscsi.h>
418         ],[
419                 struct iscsi_session session;
420                 session.discovery_sess = 0;
421
422                 return 0;
423         ],[
424                 AC_MSG_RESULT(yes)
425                 AC_DEFINE(HAVE_ISCSI_DISCOVERY_SESS, 1,
426                           [discovery_sess is defined])
427         ],[
428                 AC_MSG_RESULT(no)
429         ])
430
431         AC_MSG_CHECKING([if enum iscsi_param has ISCSI_PARAM_DISCOVERY_SESS])
432         LB_LINUX_TRY_COMPILE([
433                 #include <scsi/iscsi_if.h>
434         ],[
435                 int x = ISCSI_PARAM_DISCOVERY_SESS;
436
437                 return 0;
438         ],[
439                 AC_MSG_RESULT(yes)
440                 AC_DEFINE(HAVE_ISCSI_PARAM_DISCOVERY_SESS, 1,
441                           [ISCSI_PARAM_DISCOVERY_SESS is defined])
442         ],[
443                 AC_MSG_RESULT(no)
444         ])
445
446         AC_MSG_CHECKING([if pci.h has enum pcie_link_width])
447         LB_LINUX_TRY_COMPILE([
448                 #include <linux/pci.h>
449         ],[
450                 enum pcie_link_width width = PCIE_LNK_WIDTH_UNKNOWN;
451
452                 return 0;
453         ],[
454                 AC_MSG_RESULT(yes)
455                 AC_DEFINE(HAVE_PCIE_LINK_WIDTH, 1,
456                           [pcie_link_width is defined])
457         ],[
458                 AC_MSG_RESULT(no)
459         ])
460
461         AC_MSG_CHECKING([if pci.h has enum pci_bus_speed])
462         LB_LINUX_TRY_COMPILE([
463                 #include <linux/pci.h>
464         ],[
465                 enum pci_bus_speed speed = PCI_SPEED_UNKNOWN;
466
467                 return 0;
468         ],[
469                 AC_MSG_RESULT(yes)
470                 AC_DEFINE(HAVE_PCI_BUS_SPEED, 1,
471                           [pci_bus_speed is defined])
472         ],[
473                 AC_MSG_RESULT(no)
474         ])
475
476         AC_MSG_CHECKING([if netdevice.h has struct netdev_phys_port_id])
477         LB_LINUX_TRY_COMPILE([
478                 #include <linux/netdevice.h>
479         ],[
480                 struct netdev_phys_port_id x;
481
482                 return 0;
483         ],[
484                 AC_MSG_RESULT(yes)
485                 AC_DEFINE(HAVE_NETDEV_PHYS_PORT_ID, 1,
486                           [netdev_phys_port_id is defined])
487         ],[
488                 AC_MSG_RESULT(no)
489         ])
490
491         AC_MSG_CHECKING([if struct ifla_vf_info has linkstate])
492         LB_LINUX_TRY_COMPILE([
493                 #include <linux/if_link.h>
494         ],[
495                 struct struct ifla_vf_info x;
496                 x->linkstate = 0;
497
498                 return 0;
499         ],[
500                 AC_MSG_RESULT(yes)
501                 AC_DEFINE(HAVE_LINKSTATE, 1,
502                           [linkstate is defined])
503         ],[
504                 AC_MSG_RESULT(no)
505         ])
506
507         AC_MSG_CHECKING([if busy_poll.h has skb_mark_napi_id])
508         LB_LINUX_TRY_COMPILE([
509                 #include <net/busy_poll.h>
510         ],[
511                 skb_mark_napi_id(NULL, NULL);
512
513                 return 0;
514         ],[
515                 AC_MSG_RESULT(yes)
516                 AC_DEFINE(HAVE_SKB_MARK_NAPI_ID, 1,
517                           [skb_mark_napi_id is defined])
518         ],[
519                 AC_MSG_RESULT(no)
520         ])
521
522         AC_MSG_CHECKING([if netdevice.h has napi_hash_add])
523         LB_LINUX_TRY_COMPILE([
524                 #include <linux/netdevice.h>
525         ],[
526                 napi_hash_add(NULL);
527
528                 return 0;
529         ],[
530                 AC_MSG_RESULT(yes)
531                 AC_DEFINE(HAVE_NAPI_HASH_ADD, 1,
532                           [napi_hash_add is defined])
533         ],[
534                 AC_MSG_RESULT(no)
535         ])
536
537         AC_MSG_CHECKING([if netdevice.h has netif_keep_dst])
538         LB_LINUX_TRY_COMPILE([
539                 #include <linux/netdevice.h>
540         ],[
541                 netif_keep_dst(NULL);
542
543                 return 0;
544         ],[
545                 AC_MSG_RESULT(yes)
546                 AC_DEFINE(HAVE_NETIF_KEEP_DST, 1,
547                           [netif_keep_dst is defined])
548         ],[
549                 AC_MSG_RESULT(no)
550         ])
551
552         AC_MSG_CHECKING([if mm.h has kvfree])
553         LB_LINUX_TRY_COMPILE([
554                 #include <linux/mm.h>
555         ],[
556                 kvfree(NULL);
557
558                 return 0;
559         ],[
560                 AC_MSG_RESULT(yes)
561                 AC_DEFINE(HAVE_KVFREE, 1,
562                           [kvfree is defined])
563         ],[
564                 AC_MSG_RESULT(no)
565         ])
566
567         AC_MSG_CHECKING([if netdevice.h has dev_consume_skb_any])
568         LB_LINUX_TRY_COMPILE([
569                 #include <linux/netdevice.h>
570         ],[
571                 dev_consume_skb_any(NULL);
572
573                 return 0;
574         ],[
575                 AC_MSG_RESULT(yes)
576                 AC_DEFINE(HAVE_DEV_CONSUME_SKB_ANY, 1,
577                           [dev_consume_skb_any is defined])
578         ],[
579                 AC_MSG_RESULT(no)
580         ])
581
582         AC_MSG_CHECKING([if netdevice.h has netdev_txq_bql_complete_prefetchw])
583         LB_LINUX_TRY_COMPILE([
584                 #include <linux/netdevice.h>
585         ],[
586                 netdev_txq_bql_complete_prefetchw(NULL);
587                 netdev_txq_bql_enqueue_prefetchw(NULL);
588
589                 return 0;
590         ],[
591                 AC_MSG_RESULT(yes)
592                 AC_DEFINE(HAVE_NETDEV_TXQ_BQL_PREFETCHW, 1,
593                           [netdev_txq_bql_complete_prefetchw is defined])
594         ],[
595                 AC_MSG_RESULT(no)
596         ])
597
598         AC_MSG_CHECKING([if struct sk_buff has xmit_more])
599         LB_LINUX_TRY_COMPILE([
600                 #include <linux/skbuff.h>
601         ],[
602                 struct sk_buff *skb;
603                 skb->xmit_more = 0;
604
605                 return 0;
606         ],[
607                 AC_MSG_RESULT(yes)
608                 AC_DEFINE(HAVE_SK_BUFF_XMIT_MORE, 1,
609                           [xmit_more is defined])
610         ],[
611                 AC_MSG_RESULT(no)
612         ])
613
614         AC_MSG_CHECKING([if etherdevice.h has eth_get_headlen])
615         LB_LINUX_TRY_COMPILE([
616                 #include <linux/etherdevice.h>
617         ],[
618                 eth_get_headlen(NULL, 0);
619
620                 return 0;
621         ],[
622                 AC_MSG_RESULT(yes)
623                 AC_DEFINE(HAVE_ETH_GET_HEADLEN, 1,
624                           [eth_get_headlen is defined])
625         ],[
626                 AC_MSG_RESULT(no)
627         ])
628
629         AC_MSG_CHECKING([if struct sk_buff has csum_level])
630         LB_LINUX_TRY_COMPILE([
631                 #include <linux/skbuff.h>
632         ],[
633                 struct sk_buff *skb;
634                 skb->csum_level = 0;
635
636                 return 0;
637         ],[
638                 AC_MSG_RESULT(yes)
639                 AC_DEFINE(HAVE_SK_BUFF_CSUM_LEVEL, 1,
640                           [csum_level is defined])
641         ],[
642                 AC_MSG_RESULT(no)
643         ])
644
645         AC_MSG_CHECKING([if if_vlan.h has vlan_dev_get_egress_qos_mask])
646         LB_LINUX_TRY_COMPILE([
647                 #include <linux/if_vlan.h>
648         ],[
649                 vlan_dev_get_egress_qos_mask(NULL, 0);
650
651                 return 0;
652         ],[
653                 AC_MSG_RESULT(yes)
654                 AC_DEFINE(HAVE_VLAN_DEV_GET_EGRESS_QOS_MASK, 1,
655                           [vlan_dev_get_egress_qos_mask is defined])
656         ],[
657                 AC_MSG_RESULT(no)
658         ])
659
660         AC_MSG_CHECKING([if netdevice.h has netdev_get_prio_tc_map])
661         LB_LINUX_TRY_COMPILE([
662                 #include <linux/netdevice.h>
663         ],[
664                 netdev_get_prio_tc_map(NULL, 0);
665
666                 return 0;
667         ],[
668                 AC_MSG_RESULT(yes)
669                 AC_DEFINE(HAVE_NETDEV_GET_PRIO_TC_MAP, 1,
670                           [netdev_get_prio_tc_map is defined])
671         ],[
672                 AC_MSG_RESULT(no)
673         ])
674 ])
675 #
676 # COMPAT_CONFIG_HEADERS
677 #
678 # add -include config.h
679 #
680 AC_DEFUN([COMPAT_CONFIG_HEADERS],[
681         AC_CONFIG_HEADERS([config.h])
682         EXTRA_KCFLAGS="-include $PWD/config.h $EXTRA_KCFLAGS"
683         AC_SUBST(EXTRA_KCFLAGS)
684 ])
685
686 AC_DEFUN([OFA_PROG_LINUX],
687 [
688
689 LB_LINUX_PATH
690 LB_LINUX_SYMVERFILE
691 LB_LINUX_CONFIG([MODULES],[],[
692     AC_MSG_ERROR([module support is required to build mlnx kernel modules.])
693 ])
694 LB_LINUX_CONFIG([MODVERSIONS])
695 LB_LINUX_CONFIG([KALLSYMS],[],[
696     AC_MSG_ERROR([compat_mlnx requires that CONFIG_KALLSYMS is enabled in your kernel.])
697 ])
698
699 LINUX_CONFIG_COMPAT
700 COMPAT_CONFIG_HEADERS
701
702 ])