Skip to content

Commit 4f3483e

Browse files
committed
ipq50xx: NSS NAT support
1 parent 80b2e11 commit 4f3483e

File tree

8 files changed

+600
-0
lines changed

8 files changed

+600
-0
lines changed
Lines changed: 309 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,309 @@
1+
include $(TOPDIR)/rules.mk
2+
include $(INCLUDE_DIR)/kernel.mk
3+
4+
PKG_NAME:=qca-nss-ecm
5+
PKG_VERSION:=NSS_11.4.0.5
6+
PKG_RELEASE:=1
7+
8+
PKG_SOURCE_PROTO:=git
9+
PKG_SOURCE_URL:=https://git.codelinaro.org/clo/qsdk/oss/lklm/qca-nss-ecm
10+
PKG_SOURCE_VERSION:=5187b677a343154ca794d4d96f7c750e26e0a35c
11+
PKG_MIRROR_HASH:=skip
12+
13+
LOCAL_VARIANT=$(patsubst qca-nss-ecm-%,%,$(patsubst qca-nss-ecm-%,%,$(BUILD_VARIANT)))
14+
include $(INCLUDE_DIR)/package.mk
15+
16+
ifeq ($(CONFIG_QCA_NSS_ECM_EXAMPLES_PCC),y)
17+
FILES_EXAMPLES=$(PKG_BUILD_DIR)/examples/ecm_pcc_test.ko
18+
endif
19+
20+
ifeq ($(CONFIG_QCA_NSS_ECM_EXAMPLES_MARK),y)
21+
FILES_EXAMPLES+=$(PKG_BUILD_DIR)/examples/ecm_mark_test.ko
22+
endif
23+
24+
#Explicitly enable OVS external module, if ovsmgr is enabled.
25+
ifneq ($(CONFIG_PACKAGE_kmod-qca-ovsmgr),)
26+
CONFIG_QCA_NSS_ECM_OVS=y
27+
endif
28+
29+
ifeq ($(CONFIG_QCA_NSS_ECM_OVS),y)
30+
FILES_EXAMPLES+=$(PKG_BUILD_DIR)/examples/ecm_ovs.ko
31+
endif
32+
33+
define KernelPackage/qca-nss-ecm/Default
34+
SECTION:=kernel
35+
CATEGORY:=Kernel modules
36+
SUBMENU:=Network Support
37+
DEPENDS:=@(TARGET_ipq50xx||TARGET_ipq60xx||TARGET_ipq806x||TARGET_ipq807x) \
38+
+kmod-ipt-conntrack +iptables-mod-extra \
39+
+kmod-qca-nss-drv \
40+
+kmod-pppoe \
41+
+PACKAGE_kmod-qca-ovsmgr:kmod-qca-ovsmgr
42+
TITLE:=QCA NSS Enhanced Connection Manager (ECM)
43+
FILES:=$(PKG_BUILD_DIR)/*.ko $(FILES_EXAMPLES)
44+
KCONFIG:=CONFIG_BRIDGE_NETFILTER=y \
45+
CONFIG_NF_CONNTRACK_EVENTS=y \
46+
CONFIG_NF_CONNTRACK_CHAIN_EVENTS=y \
47+
CONFIG_NF_CONNTRACK_DSCPREMARK_EXT=y
48+
MENU:=1
49+
PROVIDES:=kmod-qca-nss-ecm
50+
endef
51+
52+
define KernelPackage/qca-nss-ecm/Description/Default
53+
This package contains the QCA NSS Enhanced Connection Manager
54+
endef
55+
56+
define KernelPackage/qca-nss-ecm/Default/install
57+
$(INSTALL_DIR) $(1)/etc/firewall.d $(1)/etc/init.d $(1)/usr/bin $(1)/lib/netifd/offload $(1)/etc/config $(1)/etc/uci-defaults $(1)/etc/sysctl.d
58+
$(INSTALL_DATA) ./files/qca-nss-ecm.firewall $(1)/etc/firewall.d/qca-nss-ecm
59+
$(INSTALL_BIN) ./files/qca-nss-ecm.init $(1)/etc/init.d/qca-nss-ecm
60+
$(INSTALL_BIN) ./files/ecm_dump.sh $(1)/usr/bin/
61+
$(INSTALL_BIN) ./files/on-demand-down $(1)/lib/netifd/offload/on-demand-down
62+
$(INSTALL_DATA) ./files/qca-nss-ecm.uci $(1)/etc/config/ecm
63+
$(INSTALL_DATA) ./files/qca-nss-ecm.defaults $(1)/etc/uci-defaults/99-qca-nss-ecm
64+
$(INSTALL_BIN) ./files/qca-nss-ecm.sysctl $(1)/etc/sysctl.d/qca-nss-ecm.conf
65+
# ifeq ($(CONFIG_KERNEL_IPQ_MEM_PROFILE),256)
66+
# echo 'net.netfilter.nf_conntrack_max=2048' >> $(1)/etc/sysctl.d/qca-nss-ecm.conf
67+
# else ifeq ($(CONFIG_LOWMEM_FLASH),y)
68+
# echo 'net.netfilter.nf_conntrack_max=2048' >> $(1)/etc/sysctl.d/qca-nss-ecm.conf
69+
# else ifeq ($(CONFIG_KERNEL_IPQ_MEM_PROFILE),512)
70+
# echo 'net.netfilter.nf_conntrack_max=8192' >> $(1)/etc/sysctl.d/qca-nss-ecm.conf
71+
# endif
72+
endef
73+
74+
# Variant with additional features enabled for standard profile
75+
define KernelPackage/qca-nss-ecm-standard
76+
$(call KernelPackage/qca-nss-ecm/Default)
77+
TITLE+= (with standard features)
78+
VARIANT:=standard
79+
DEPENDS+=+PACKAGE_kmod-qca-mcs:kmod-qca-mcs
80+
endef
81+
82+
define KernelPackage/qca-nss-ecm-standard/Description
83+
$(call KernelPackage/qca-nss-ecm/Description/Default)
84+
endef
85+
86+
define KernelPackage/qca-nss-ecm-standard/install
87+
$(call KernelPackage/qca-nss-ecm/Default/install, $(1))
88+
endef
89+
90+
# Variant with additional features enabled for premium profile
91+
define KernelPackage/qca-nss-ecm-premium/Default
92+
$(call KernelPackage/qca-nss-ecm/Default)
93+
TITLE+= (with premium features)
94+
VARIANT:=premium
95+
DEPENDS+= \
96+
+kmod-shortcut-fe-drv \
97+
+kmod-bonding \
98+
+kmod-nat46 +kmod-l2tp +kmod-pppol2tp +kmod-pptp \
99+
+PACKAGE_kmod-qca-mcs:kmod-qca-mcs \
100+
+PACKAGE_kmod-qca-hyfi-bridge:kmod-qca-hyfi-bridge \
101+
PACKAGE_kmod-emesh-sp:kmod-emesh-sp
102+
endef
103+
104+
define KernelPackage/qca-nss-ecm-premium/Description/Default
105+
$(call KernelPackage/qca-nss-ecm/Description/Default)
106+
with the premium features enabled
107+
endef
108+
109+
define KernelPackage/qca-nss-ecm-premium/Default/install
110+
$(call KernelPackage/qca-nss-ecm/install)
111+
endef
112+
113+
define KernelPackage/qca-nss-ecm-premium
114+
$(call KernelPackage/qca-nss-ecm-premium/Default)
115+
endef
116+
117+
define KernelPackage/qca-nss-ecm-premium/Description
118+
$(call KernelPackage/qca-nss-ecm-premium/Description/Default)
119+
endef
120+
121+
define KernelPackage/qca-nss-ecm-premium/install
122+
$(call KernelPackage/qca-nss-ecm-standard/install, $(1))
123+
endef
124+
125+
# Variant with additional features enabled for noload profile
126+
define KernelPackage/qca-nss-ecm-noload
127+
$(call KernelPackage/qca-nss-ecm/Default)
128+
TITLE+= (with noload features)
129+
PROVIDES:=kmod-qca-nss-ecm
130+
VARIANT:=noload
131+
DEPENDS+= \
132+
+kmod-shortcut-fe-drv \
133+
+kmod-bonding \
134+
+kmod-l2tp +kmod-pppol2tp +kmod-pptp \
135+
+PACKAGE_kmod-qca-mcs:kmod-qca-mcs
136+
endef
137+
138+
define KernelPackage/qca-nss-ecm-noload/Description
139+
$(call KernelPackage/qca-nss-ecm/Description/Default)
140+
When selected, this package installs the driver but does not load it at init.
141+
endef
142+
143+
define KernelPackage/qca-nss-ecm-noload/install
144+
$(call KernelPackage/qca-nss-ecm/Default/install, $(1))
145+
#
146+
# Remove the START line from the init script, so that the symlink
147+
# in the /etc/rc.d directory is not created.
148+
#
149+
sed -i '/START=/d' $(1)/etc/init.d/qca-nss-ecm
150+
endef
151+
152+
define KernelPackage/qca-nss-ecm-premium-noload
153+
$(call KernelPackage/qca-nss-ecm-premium/Default)
154+
PROVIDES:=kmod-qca-nss-ecm-premium
155+
endef
156+
157+
define KernelPackage/qca-nss-ecm-premium-noload/Description
158+
$(call KernelPackage/qca-nss-ecm-premium/Description/Default)
159+
When selected, this package installs the driver but does not load it at init.
160+
endef
161+
162+
define KernelPackage/qca-nss-ecm-premium-noload/install
163+
$(call KernelPackage/qca-nss-ecm-premium/Default/install, $(1))
164+
endef
165+
166+
define Build/InstallDev/qca-nss-ecm
167+
$(INSTALL_DIR) $(1)/usr/include/qca-nss-ecm
168+
$(CP) $(PKG_BUILD_DIR)/exports/* $(1)/usr/include/qca-nss-ecm/
169+
endef
170+
171+
define Build/InstallDev
172+
$(call Build/InstallDev/qca-nss-ecm,$(1))
173+
endef
174+
175+
EXTRA_CFLAGS+= \
176+
-I$(STAGING_DIR)/usr/include/hyfibr \
177+
-I$(STAGING_DIR)/usr/include/qca-mcs \
178+
-I$(STAGING_DIR)/usr/include/qca-nss-drv \
179+
-I$(STAGING_DIR)/usr/include/shortcut-fe \
180+
-I$(STAGING_DIR)/usr/include/nat46
181+
182+
ECM_MAKE_OPTS:=ECM_CLASSIFIER_HYFI_ENABLE=y
183+
ifneq ($(LOCAL_VARIANT),standard)
184+
ECM_MAKE_OPTS+=ECM_MULTICAST_ENABLE=y \
185+
ECM_INTERFACE_IPSEC_ENABLE=y \
186+
ECM_INTERFACE_PPTP_ENABLE=y \
187+
ECM_INTERFACE_L2TPV2_ENABLE=y \
188+
ECM_INTERFACE_GRE_TAP_ENABLE=y \
189+
ECM_INTERFACE_GRE_TUN_ENABLE=y \
190+
ECM_INTERFACE_SIT_ENABLE=y \
191+
ECM_INTERFACE_TUNIPIP6_ENABLE=y \
192+
ECM_INTERFACE_RAWIP_ENABLE=y
193+
194+
ifeq ($(CONFIG_TARGET_ipq_ipq40xx)$(CONFIG_TARGET_ipq40xx),)
195+
ECM_MAKE_OPTS+=ECM_INTERFACE_BOND_ENABLE=y
196+
endif
197+
endif
198+
199+
# ifneq ($(CONFIG_KERNEL_IPQ_MEM_PROFILE),256)
200+
# ifneq ($(CONFIG_LOWMEM_FLASH),y)
201+
ifneq ($(CONFIG_XFRM),)
202+
ECM_MAKE_OPTS+=ECM_XFRM_ENABLE=y
203+
endif
204+
# ECM_MAKE_OPTS+=ECM_FRONT_END_SFE_ENABLE=y
205+
ECM_MAKE_OPTS+=ECM_NON_PORTED_SUPPORT_ENABLE=y
206+
# endif
207+
# endif
208+
209+
# ifeq ($(CONFIG_KERNEL_IPQ_MEM_PROFILE),256)
210+
# ECM_MAKE_OPTS+=ECM_FRONT_END_CONN_LIMIT_ENABLE=y
211+
# else ifeq ($(CONFIG_LOWMEM_FLASH),y)
212+
# ECM_MAKE_OPTS+=ECM_FRONT_END_CONN_LIMIT_ENABLE=y
213+
# endif
214+
215+
ifneq ($(CONFIG_PACKAGE_kmod-nat46),)
216+
ECM_MAKE_OPTS+=ECM_INTERFACE_MAP_T_ENABLE=y
217+
endif
218+
219+
ifneq ($(CONFIG_PACKAGE_kmod-qca-nss-drv-ovpn-link),)
220+
ECM_MAKE_OPTS+=ECM_INTERFACE_OVPN_ENABLE=y
221+
endif
222+
223+
ifneq ($(CONFIG_PACKAGE_kmod-qca-nss-drv-vxlanmgr),)
224+
ECM_MAKE_OPTS+=ECM_INTERFACE_VXLAN_ENABLE=y
225+
endif
226+
227+
ifneq ($(CONFIG_PACKAGE_kmod-qca-ovsmgr),)
228+
ECM_MAKE_OPTS+=ECM_INTERFACE_OVS_BRIDGE_ENABLE=y \
229+
ECM_CLASSIFIER_OVS_ENABLE=y
230+
EXTRA_CFLAGS+= -I$(STAGING_DIR)/usr/include/qca-ovsmgr
231+
endif
232+
233+
ifneq ($(CONFIG_PACKAGE_kmod-qca-nss-drv-igs),)
234+
ECM_MAKE_OPTS+=ECM_CLASSIFIER_DSCP_IGS=y
235+
endif
236+
237+
ifneq ($(CONFIG_PACKAGE_kmod-emesh-sp),)
238+
ECM_MAKE_OPTS+=ECM_CLASSIFIER_EMESH_ENABLE=y
239+
EXTRA_CFLAGS+= -I$(STAGING_DIR)/usr/include/emesh-sp
240+
endif
241+
242+
ifneq ($(CONFIG_PACKAGE_kmod-qca-nss-drv-mscs),)
243+
ECM_MAKE_OPTS+=ECM_CLASSIFIER_MSCS_ENABLE=y
244+
endif
245+
246+
ifneq ($(CONFIG_PACKAGE_kmod-macvlan),)
247+
ECM_MAKE_OPTS+=ECM_INTERFACE_MACVLAN_ENABLE=y
248+
endif
249+
250+
# Disable ECM IPv6 support when global IPv6 support is disabled.
251+
ifneq ($(CONFIG_IPV6),)
252+
ECM_MAKE_OPTS+=ECM_IPV6_ENABLE=y
253+
endif
254+
255+
# Keeping default as ipq806x for branches that does not have subtarget framework
256+
ifeq ($(CONFIG_TARGET_ipq),y)
257+
subtarget:=$(SUBTARGET)
258+
else
259+
subtarget:=$(CONFIG_TARGET_BOARD)
260+
endif
261+
262+
# Enable NSS frontend for all the platforms except ipq40xx
263+
ifeq ($(CONFIG_TARGET_ipq_ipq40xx)$(CONFIG_TARGET_ipq40xx),)
264+
ECM_MAKE_OPTS+=ECM_FRONT_END_NSS_ENABLE=y
265+
endif
266+
267+
define Build/InstallDev
268+
$(INSTALL_DIR) $(1)/usr/include/qca-nss-ecm
269+
$(CP) $(PKG_BUILD_DIR)/exports/* $(1)/usr/include/qca-nss-ecm
270+
endef
271+
272+
define Build/Compile
273+
$(MAKE) -C "$(LINUX_DIR)" $(strip $(ECM_MAKE_OPTS)) \
274+
CROSS_COMPILE="$(TARGET_CROSS)" \
275+
ARCH="$(LINUX_KARCH)" \
276+
M="$(PKG_BUILD_DIR)" \
277+
EXTRA_CFLAGS="$(EXTRA_CFLAGS)" SoC="$(subtarget)" \
278+
EXAMPLES_BUILD_PCC="$(CONFIG_QCA_NSS_ECM_EXAMPLES_PCC)" \
279+
EXAMPLES_BUILD_MARK="$(CONFIG_QCA_NSS_ECM_EXAMPLES_MARK)" \
280+
EXAMPLES_BUILD_OVS="$(CONFIG_QCA_NSS_ECM_OVS)" \
281+
modules
282+
endef
283+
284+
define KernelPackage/qca-nss-ecm-premium/config
285+
menu "ECM Configuration"
286+
config QCA_NSS_ECM_EXAMPLES_PCC
287+
bool "Build PCC usage example"
288+
help
289+
Selecting this will build the PCC classifier usage example module.
290+
default n
291+
292+
config QCA_NSS_ECM_EXAMPLES_MARK
293+
bool "Build Mark classifier usage example"
294+
help
295+
Selecting this will build the Mark classifier usage example module.
296+
default n
297+
298+
config QCA_NSS_ECM_OVS
299+
bool "Build OVS classifier external module"
300+
help
301+
Selecting this will build the OVS classifier external module.
302+
default n
303+
endmenu
304+
endef
305+
306+
$(eval $(call KernelPackage,qca-nss-ecm-noload))
307+
$(eval $(call KernelPackage,qca-nss-ecm-standard))
308+
$(eval $(call KernelPackage,qca-nss-ecm-premium-noload))
309+
$(eval $(call KernelPackage,qca-nss-ecm-premium))

0 commit comments

Comments
 (0)