|
| 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