blob: 8a499dbc5414115534fc10a4b2df165791c298bf [file] [log] [blame]
Ben Menchaca84f36632014-02-28 20:57:38 +00001##########################################################################
Murat Sezgin6d8361e2015-01-21 11:32:06 -08002# Copyright (c) 2014-2015, The Linux Foundation. All rights reserved.
Ben Menchaca84f36632014-02-28 20:57:38 +00003# Permission to use, copy, modify, and/or distribute this software for
4# any purpose with or without fee is hereby granted, provided that the
5# above copyright notice and this permission notice appear in all copies.
6# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
7# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
8# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
9# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
10# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
11# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
12# OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
13##########################################################################
14
15# ###################################################
16# Makefile for the QCA NSS ECM
17# ###################################################
18
Nicolas Costaf46c33b2014-05-15 10:02:00 -050019obj-m += ecm.o
20
Hai Shalom81f4e202014-06-04 09:30:27 -070021ecm-y := \
Nicolas Costaf46c33b2014-05-15 10:02:00 -050022 ecm_tracker_udp.o \
23 ecm_tracker_tcp.o \
24 ecm_tracker_datagram.o \
25 ecm_tracker.o \
Murat Sezgin3ab259d2015-06-11 14:15:35 -070026 frontends/ecm_front_end_ipv4.o \
27 frontends/ecm_front_end_ipv6.o \
Murat Sezgin5f138492015-06-11 15:18:27 -070028 frontends/ecm_front_end_common.o \
Nicolas Costaf46c33b2014-05-15 10:02:00 -050029 ecm_db.o \
30 ecm_classifier_default.o \
Nicolas Costaf46c33b2014-05-15 10:02:00 -050031 ecm_interface.o \
Nicolas Costaf46c33b2014-05-15 10:02:00 -050032 ecm_init.o
Ben Menchaca84f36632014-02-28 20:57:38 +000033
Gareth Williamsdbb2bfd2014-11-20 16:42:09 -080034# #############################################################################
Xiaoping Fanb9390542015-07-20 18:15:21 -070035# Define ECM_FRONT_END_NSS_ENABLE=y in order to select
36# nss as ECM's front end.
37# #############################################################################
38ifeq ($(ECM_FRONT_END_NSS_ENABLE),)
39ECM_FRONT_END_NSS_ENABLE=y
40endif
41ecm-$(ECM_FRONT_END_NSS_ENABLE) += frontends/nss/ecm_nss_ipv4.o
42ecm-$(ECM_FRONT_END_NSS_ENABLE) += frontends/nss/ecm_nss_ported_ipv4.o
43ecm-$(ECM_FRONT_END_NSS_ENABLE) += frontends/nss/ecm_nss_conntrack_notifier.o
44ccflags-$(ECM_FRONT_END_NSS_ENABLE) += -DECM_FRONT_END_NSS_ENABLE
45
46# #############################################################################
47# Define ECM_FRONT_END_SFE_ENABLE=y in order to select
48# sfe as ECM's front end.
49# #############################################################################
50ifeq ($(ECM_FRONT_END_SFE_ENABLE),)
51ECM_FRONT_END_SFE_ENABLE=y
52endif
53ecm-$(ECM_FRONT_END_SFE_ENABLE) += frontends/sfe/ecm_sfe_ipv4.o
54ecm-$(ECM_FRONT_END_SFE_ENABLE) += frontends/sfe/ecm_sfe_ported_ipv4.o
55ecm-$(ECM_FRONT_END_SFE_ENABLE) += frontends/sfe/ecm_sfe_conntrack_notifier.o
56ccflags-$(ECM_FRONT_END_SFE_ENABLE) += -DECM_FRONT_END_SFE_ENABLE
57
58# #############################################################################
Gareth Williamsdbb2bfd2014-11-20 16:42:09 -080059# Define ECM_INTERFACE_BOND_ENABLE=y in order to enable
60# Bonding / Link Aggregation support.
61# #############################################################################
Xiaoping Fanb9390542015-07-20 18:15:21 -070062ifeq ($(ECM_FRONT_END_NSS_ENABLE), y)
Gareth Williamsdbb2bfd2014-11-20 16:42:09 -080063ECM_INTERFACE_BOND_ENABLE=y
64endif
Murat Sezgin8e10a7c2015-06-11 15:49:24 -070065ecm-$(ECM_INTERFACE_BOND_ENABLE) += frontends/nss/ecm_nss_bond_notifier.o
Gareth Williamsdbb2bfd2014-11-20 16:42:09 -080066ccflags-$(ECM_INTERFACE_BOND_ENABLE) += -DECM_INTERFACE_BOND_ENABLE
Hai Shalom81f4e202014-06-04 09:30:27 -070067
Gareth Williamsdbb2bfd2014-11-20 16:42:09 -080068# #############################################################################
ratheesh kannotha32fdd12015-09-09 08:02:58 +053069# Define ECM_INTERFACE_PPPOE_ENABLE=y in order
70# to enable support for PPPoE acceleration.
71# #############################################################################
72ECM_INTERFACE_PPPOE_ENABLE=y
73ccflags-$(ECM_INTERFACE_PPPOE_ENABLE) += -DECM_INTERFACE_PPPOE_ENABLE
74
75# #############################################################################
76# Define ECM_INTERFACE_L2TPV2_ENABLE=y in order
77# to enable support for l2tpv2 acceleration.
78# #############################################################################
ratheesh kannotha32fdd12015-09-09 08:02:58 +053079ECM_INTERFACE_L2TPV2_ENABLE=y
ratheesh kannotha32fdd12015-09-09 08:02:58 +053080ccflags-$(ECM_INTERFACE_L2TPV2_ENABLE) += -DECM_INTERFACE_L2TPV2_ENABLE
81
82# #############################################################################
Shyam Sunder23f2e542015-09-28 14:56:49 +053083# Define ECM_INTERFACE_PPTP_ENABLE=y in order
84# to enable support for pptp acceleration.
85# #############################################################################
86ifneq ($(findstring 3.4, $(KERNELVERSION)),)
87ECM_INTERFACE_PPTP_ENABLE=y
88endif
89ccflags-$(ECM_INTERFACE_PPTP_ENABLE) += -DECM_INTERFACE_PPTP_ENABLE
90
91# #############################################################################
92# if pppoe, l2tpv2, pptp acceleration is enabled, ppp should
ratheesh kannotha32fdd12015-09-09 08:02:58 +053093# be enabled automatically
Gareth Williamsdbb2bfd2014-11-20 16:42:09 -080094# #############################################################################
Gareth Williamsdbb2bfd2014-11-20 16:42:09 -080095ECM_INTERFACE_PPP_ENABLE=y
ratheesh kannotha32fdd12015-09-09 08:02:58 +053096ifeq "$(ECM_INTERFACE_PPPOE_ENABLE)" "n"
97ifeq "$(ECM_INTERFACE_L2TPV2_ENABLE)" "n"
Shyam Sunder23f2e542015-09-28 14:56:49 +053098ifeq "$(ECM_INTERFACE_PPTP_ENABLE)" "n"
ratheesh kannotha32fdd12015-09-09 08:02:58 +053099ECM_INTERFACE_PPP_ENABLE=n
100endif
101endif
Shyam Sunder23f2e542015-09-28 14:56:49 +0530102endif
Gareth Williamsdbb2bfd2014-11-20 16:42:09 -0800103ccflags-$(ECM_INTERFACE_PPP_ENABLE) += -DECM_INTERFACE_PPP_ENABLE
104
105# #############################################################################
Murat Sezginb3731e82014-11-26 12:20:59 -0800106# Define ECM_INTERFACE_SIT_ENABLE=y in order
107# to enable support for SIT interface.
108# #############################################################################
Murat Sezginb3731e82014-11-26 12:20:59 -0800109ECM_INTERFACE_SIT_ENABLE=y
Murat Sezginb3731e82014-11-26 12:20:59 -0800110ccflags-$(ECM_INTERFACE_SIT_ENABLE) += -DECM_INTERFACE_SIT_ENABLE
111
112# #############################################################################
Murat Sezginc1402562015-03-12 12:32:20 -0700113# Define ECM_INTERFACE_TUNIPIP6_ENABLE=y in order
114# to enable support for TUNIPIP6 interface.
115# #############################################################################
Murat Sezginc1402562015-03-12 12:32:20 -0700116ECM_INTERFACE_TUNIPIP6_ENABLE=y
Murat Sezginc1402562015-03-12 12:32:20 -0700117ccflags-$(ECM_INTERFACE_TUNIPIP6_ENABLE) += -DECM_INTERFACE_TUNIPIP6_ENABLE
118
119# #############################################################################
Shyam Sunder1f037262015-05-18 20:04:13 +0530120# Define ECM_MULTICAST_ENABLE=y in order to enable support for ECM Multicast
121# #############################################################################
Xiaoping Fanb9390542015-07-20 18:15:21 -0700122ifeq ($(ECM_FRONT_END_NSS_ENABLE), y)
Shyam Sunderdd682692015-05-04 18:15:18 +0530123ecm-$(ECM_MULTICAST_ENABLE) += frontends/nss/ecm_nss_multicast_ipv4.o
Murat Sezgin3ab259d2015-06-11 14:15:35 -0700124ecm-$(ECM_MULTICAST_ENABLE) += frontends/nss/ecm_nss_multicast_ipv6.o
Shyam Sunder1f037262015-05-18 20:04:13 +0530125ccflags-$(ECM_MULTICAST_ENABLE) += -DECM_MULTICAST_ENABLE
Karthik Hariharan3e964a32015-09-22 21:40:52 +0530126endif
Shyam Sunder1f037262015-05-18 20:04:13 +0530127
128# #############################################################################
Gareth Williams141d2382014-11-25 11:35:19 -0800129# Define ECM_INTERFACE_VLAN_ENABLE=y in order to enable support for VLAN
130# #############################################################################
Gareth Williams141d2382014-11-25 11:35:19 -0800131ECM_INTERFACE_VLAN_ENABLE=y
Gareth Williams141d2382014-11-25 11:35:19 -0800132ccflags-$(ECM_INTERFACE_VLAN_ENABLE) += -DECM_INTERFACE_VLAN_ENABLE
133
134# #############################################################################
Murat Sezgin69a27532015-03-12 14:09:40 -0700135# Define ECM_INTERFACE_IPSEC_ENABLE=y in order to enable support for IPSEC
136# #############################################################################
137ECM_INTERFACE_IPSEC_ENABLE=y
138ccflags-$(ECM_INTERFACE_IPSEC_ENABLE) += -DECM_INTERFACE_IPSEC_ENABLE
139
140# #############################################################################
Gareth Williams8ac34292015-03-17 14:06:58 +0000141# Define ECM_IPV6_ENABLE=y in order to enable IPv6 support in the ECM.
Gareth Williamsdbb2bfd2014-11-20 16:42:09 -0800142# #############################################################################
Gareth Williams8ac34292015-03-17 14:06:58 +0000143ECM_IPV6_ENABLE=y
Xiaoping Fanb9390542015-07-20 18:15:21 -0700144ifeq ($(ECM_FRONT_END_NSS_ENABLE), y)
Murat Sezgin3ab259d2015-06-11 14:15:35 -0700145ecm-$(ECM_IPV6_ENABLE) += frontends/nss/ecm_nss_ipv6.o
146ecm-$(ECM_IPV6_ENABLE) += frontends/nss/ecm_nss_ported_ipv6.o
Xiaoping Fanb9390542015-07-20 18:15:21 -0700147endif
148ifeq ($(ECM_FRONT_END_SFE_ENABLE), y)
149ecm-$(ECM_IPV6_ENABLE) += frontends/sfe/ecm_sfe_ipv6.o
150ecm-$(ECM_IPV6_ENABLE) += frontends/sfe/ecm_sfe_ported_ipv6.o
151endif
Gareth Williams8ac34292015-03-17 14:06:58 +0000152ccflags-$(ECM_IPV6_ENABLE) += -DECM_IPV6_ENABLE
Gareth Williamsdbb2bfd2014-11-20 16:42:09 -0800153
154# #############################################################################
155# Define ECM_CLASSIFIER_NL_ENABLE=y in order to enable NL classifier.
156# #############################################################################
Murat Sezgin2a0b2432014-11-26 14:53:57 -0800157ifneq ($(findstring 3.4, $(KERNELVERSION)),)
Gareth Williamsdbb2bfd2014-11-20 16:42:09 -0800158ECM_CLASSIFIER_NL_ENABLE=y
159endif
160ecm-$(ECM_CLASSIFIER_NL_ENABLE) += ecm_classifier_nl.o
161ccflags-$(ECM_CLASSIFIER_NL_ENABLE) += -DECM_CLASSIFIER_NL_ENABLE
162
163# #############################################################################
164# Define ECM_CLASSIFIER_DSCP_ENABLE=y in order to enable DSCP classifier.
165# #############################################################################
Gareth Williamsdbb2bfd2014-11-20 16:42:09 -0800166ECM_CLASSIFIER_DSCP_ENABLE=y
Gareth Williamsdbb2bfd2014-11-20 16:42:09 -0800167ecm-$(ECM_CLASSIFIER_DSCP_ENABLE) += ecm_classifier_dscp.o
168ccflags-$(ECM_CLASSIFIER_DSCP_ENABLE) += -DECM_CLASSIFIER_DSCP_ENABLE
169
170# #############################################################################
171# Define ECM_CLASSIFIER_HYFI_ENABLE=y in order to enable
172# the Hy-Fi classifier in ECM. Currently disabled until the integration
173# with Hy-Fi is completed.
174# #############################################################################
175ecm-$(ECM_CLASSIFIER_HYFI_ENABLE) += ecm_classifier_hyfi.o
176ccflags-$(ECM_CLASSIFIER_HYFI_ENABLE) += -DECM_CLASSIFIER_HYFI_ENABLE
177
178# #############################################################################
Gareth Williamsdcda9b92015-05-13 10:08:15 +0100179# Define ECM_CLASSIFIER_PCC_ENABLE=y in order to enable
180# the Parental Controls subsystem classifier in ECM. Currently disabled until
181# customers require it / if they need to integrate their Parental Controls with it.
182# #############################################################################
183ECM_CLASSIFIER_PCC_ENABLE=y
184ecm-$(ECM_CLASSIFIER_PCC_ENABLE) += ecm_classifier_pcc.o
185ccflags-$(ECM_CLASSIFIER_PCC_ENABLE) += -DECM_CLASSIFIER_PCC_ENABLE
186
187# #############################################################################
Murat Sezgin8d916a12015-03-18 15:56:50 -0700188# Define ECM_NON_PORTED_SUPPORT_ENABLE=y in order to enable non-ported protocol.
189# #############################################################################
190ECM_NON_PORTED_SUPPORT_ENABLE=y
Xiaoping Fanb9390542015-07-20 18:15:21 -0700191ifeq ($(ECM_FRONT_END_NSS_ENABLE), y)
Murat Sezgin8d916a12015-03-18 15:56:50 -0700192ecm-$(ECM_NON_PORTED_SUPPORT_ENABLE) += frontends/nss/ecm_nss_non_ported_ipv4.o
Murat Sezgin3ab259d2015-06-11 14:15:35 -0700193ecm-$(ECM_NON_PORTED_SUPPORT_ENABLE) += frontends/nss/ecm_nss_non_ported_ipv6.o
Xiaoping Fanb9390542015-07-20 18:15:21 -0700194endif
195ifeq ($(ECM_FRONT_END_SFE_ENABLE), y)
196ecm-$(ECM_NON_PORTED_SUPPORT_ENABLE) += frontends/sfe/ecm_sfe_non_ported_ipv4.o
197ecm-$(ECM_NON_PORTED_SUPPORT_ENABLE) += frontends/sfe/ecm_sfe_non_ported_ipv6.o
198endif
Murat Sezgin8d916a12015-03-18 15:56:50 -0700199ccflags-$(ECM_NON_PORTED_SUPPORT_ENABLE) += -DECM_NON_PORTED_SUPPORT_ENABLE
200
Gareth Williamsf98d4192015-03-11 16:55:41 +0000201# #############################################################################
202# Define ECM_STATE_OUTPUT_ENABLE=y to support XML state output
203# #############################################################################
204ECM_STATE_OUTPUT_ENABLE=y
205ecm-$(ECM_STATE_OUTPUT_ENABLE) += ecm_state.o
206ccflags-$(ECM_STATE_OUTPUT_ENABLE) += -DECM_STATE_OUTPUT_ENABLE
Murat Sezgin8d916a12015-03-18 15:56:50 -0700207
208# #############################################################################
Gareth Williams85331c92015-03-11 20:39:18 +0000209# Define ECM_DB_ADVANCED_STATS_ENABLE to support XML state output
210# #############################################################################
211ECM_DB_ADVANCED_STATS_ENABLE=y
212ccflags-$(ECM_DB_ADVANCED_STATS_ENABLE) += -DECM_DB_ADVANCED_STATS_ENABLE
213
214# #############################################################################
Gareth Williamsb5903892015-03-20 15:13:07 +0000215# Define ECM_DB_CONNECTION_CROSS_REFERENCING_ENABLE=y in order to enable
216# the database to track relationships between objects.
217# #############################################################################
218ECM_DB_CONNECTION_CROSS_REFERENCING_ENABLE=y
219ccflags-$(ECM_DB_CONNECTION_CROSS_REFERENCING_ENABLE) += -DECM_DB_XREF_ENABLE
220
221# #############################################################################
Gareth Williams88be3722015-03-23 19:51:01 +0000222# Define ECM_TRACKER_DPI_SUPPORT_ENABLE=y in order to enable support for
223# deep packet inspection and tracking of data with the trackers.
224# #############################################################################
225ECM_TRACKER_DPI_SUPPORT_ENABLE=y
226ccflags-$(ECM_TRACKER_DPI_SUPPORT_ENABLE) += -DECM_TRACKER_DPI_SUPPORT_ENABLE
227
228# #############################################################################
Gareth Williamsb39e7c22015-03-25 10:15:33 +0000229# Define ECM_DB_CLASSIFIER_TYPE_ASSIGNMENTS_TRACK_ENABLE=y in order to enable
230# support for the database keeping lists of connections that are assigned
231# on a per TYPE of classifier basis.
232# #############################################################################
233ECM_DB_CLASSIFIER_TYPE_ASSIGNMENTS_TRACK_ENABLE=y
234ccflags-$(ECM_DB_CLASSIFIER_TYPE_ASSIGNMENTS_TRACK_ENABLE) += -DECM_DB_CTA_TRACK_ENABLE
235
236# #############################################################################
Murat Sezgin8c345822015-05-27 15:35:38 -0700237# Define ECM_BAND_STEERING_ENABLE=y in order to enable
238# band steering feature.
239# #############################################################################
240ECM_BAND_STEERING_ENABLE=y
241ccflags-$(ECM_BAND_STEERING_ENABLE) += -DECM_BAND_STEERING_ENABLE
242
243# #############################################################################
Gareth Williamsdbb2bfd2014-11-20 16:42:09 -0800244# Debug flags, set these to = 0 if you want to disable all debugging for that
245# file.
246# By turning off debugs you gain maximum ECM performance.
247# #############################################################################
Gareth Williams8932a912014-06-11 18:06:25 -0700248ccflags-y += -DECM_CLASSIFIER_DSCP_DEBUG_LEVEL=1
Ben Menchaca84f36632014-02-28 20:57:38 +0000249ccflags-y += -DECM_CLASSIFIER_HYFI_DEBUG_LEVEL=1
Gareth Williamsdcda9b92015-05-13 10:08:15 +0100250ccflags-y += -DECM_CLASSIFIER_PCC_DEBUG_LEVEL=1
Ben Menchaca84f36632014-02-28 20:57:38 +0000251ccflags-y += -DECM_CLASSIFIER_NL_DEBUG_LEVEL=1
252ccflags-y += -DECM_CLASSIFIER_DEFAULT_DEBUG_LEVEL=1
253ccflags-y += -DECM_DB_DEBUG_LEVEL=1
Murat Sezgin3ab259d2015-06-11 14:15:35 -0700254ccflags-y += -DECM_INIT_DEBUG_LEVEL=3
Ben Menchaca84f36632014-02-28 20:57:38 +0000255ccflags-y += -DECM_FRONT_END_IPV4_DEBUG_LEVEL=1
256ccflags-y += -DECM_FRONT_END_IPV6_DEBUG_LEVEL=1
Murat Sezgin5f138492015-06-11 15:18:27 -0700257ccflags-y += -DECM_FRONT_END_COMMON_DEBUG_LEVEL=1
Murat Sezgin3ab259d2015-06-11 14:15:35 -0700258ccflags-y += -DECM_NSS_IPV4_DEBUG_LEVEL=1
259ccflags-y += -DECM_NSS_PORTED_IPV4_DEBUG_LEVEL=1
260ccflags-y += -DECM_NSS_NON_PORTED_IPV4_DEBUG_LEVEL=1
261ccflags-y += -DECM_NSS_MULTICAST_IPV4_DEBUG_LEVEL=1
262ccflags-y += -DECM_NSS_IPV6_DEBUG_LEVEL=1
263ccflags-y += -DECM_NSS_PORTED_IPV6_DEBUG_LEVEL=1
264ccflags-y += -DECM_NSS_NON_PORTED_IPV6_DEBUG_LEVEL=1
265ccflags-y += -DECM_NSS_MULTICAST_IPV6_DEBUG_LEVEL=1
Xiaoping Fanb9390542015-07-20 18:15:21 -0700266ccflags-y += -DECM_SFE_IPV4_DEBUG_LEVEL=1
267ccflags-y += -DECM_SFE_PORTED_IPV4_DEBUG_LEVEL=1
268ccflags-y += -DECM_SFE_NON_PORTED_IPV4_DEBUG_LEVEL=1
269ccflags-y += -DECM_SFE_IPV6_DEBUG_LEVEL=1
270ccflags-y += -DECM_SFE_PORTED_IPV6_DEBUG_LEVEL=1
271ccflags-y += -DECM_SFE_NON_PORTED_IPV6_DEBUG_LEVEL=1
Ben Menchaca84f36632014-02-28 20:57:38 +0000272ccflags-y += -DECM_CONNTRACK_NOTIFIER_DEBUG_LEVEL=1
273ccflags-y += -DECM_TRACKER_DEBUG_LEVEL=1
274ccflags-y += -DECM_TRACKER_DATAGRAM_DEBUG_LEVEL=1
275ccflags-y += -DECM_TRACKER_TCP_DEBUG_LEVEL=1
276ccflags-y += -DECM_TRACKER_UDP_DEBUG_LEVEL=1
277ccflags-y += -DECM_BOND_NOTIFIER_DEBUG_LEVEL=1
278ccflags-y += -DECM_INTERFACE_DEBUG_LEVEL=1
Gareth Williamsf98d4192015-03-11 16:55:41 +0000279ccflags-y += -DECM_STATE_DEBUG_LEVEL=1
Stephen Wangaa7e5f72015-05-12 15:25:12 -0700280ccflags-y += -DECM_OPENWRT_SUPPORT=1
Ben Menchaca84f36632014-02-28 20:57:38 +0000281
Xiaoping Fanb9390542015-07-20 18:15:21 -0700282ccflags-y += -I$(obj)/ -I$(obj)/frontends/include -I$(obj)/frontends/nss -I$(obj)/frontends/sfe
Murat Sezgin7c12aba2015-03-16 12:01:57 -0700283
Ben Menchaca84f36632014-02-28 20:57:38 +0000284obj ?= .
285