Skip to content

Commit eef826b

Browse files
committed
ipq50xx: NSS NAT support
1 parent bcd1a64 commit eef826b

File tree

8 files changed

+599
-0
lines changed

8 files changed

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

0 commit comments

Comments
 (0)