From 07350c9f0362fc3f7a2dd5a4c3d9180cfccf33aa Mon Sep 17 00:00:00 2001 From: bitthief Date: Mon, 8 May 2023 15:13:34 +0300 Subject: [PATCH] qca-nss-ecm: update to QSDK 12.3r2 Bump QCA NSS ECM to NHSS.QSDK.12.3.r2 tag. Massive thanks to @AgustinLorenzo. Reference: https://github.com/AgustinLorenzo/nss-packages/commit/8d73961018b5047ac32bc8f9e65c55c238f4940f --- qca/qca-nss-ecm/Makefile | 11 +- qca/qca-nss-ecm/files/qca-nss-ecm.sysctl | 3 +- ...de-componentize-the-module-even-more.patch | 60 ++++---- ...eewide-rework-ipv6_dev_find_and_hold.patch | 23 ++-- ...rk-debugfs-api-to-new-implementation.patch | 70 +++++----- ...olve-the-cpu-high-load-regarding-ecm.patch | 10 +- ...terface-switch-to-kernel_recvmsg-api.patch | 8 +- ...ide-rework-notifier-changes-for-5.15.patch | 6 +- ...se-of-static-be_liberal-and-no_windo.patch | 56 ++++---- ...dp_get_timeouts-and-use-standard-ups.patch | 10 +- ...-ppp-generic-function-calls-for-5.15.patch | 4 +- ...x-conntrack-created-firewall-stopped.patch | 6 +- ...dge-flow-packet-in-post-routing-hook.patch | 57 -------- ...reewide-export-ipv4-and-ipv6-symbols.patch | 129 ++++++------------ 14 files changed, 168 insertions(+), 285 deletions(-) delete mode 100644 qca/qca-nss-ecm/patches/101-qca-nss-ecm-Skip-bridge-flow-packet-in-post-routing-hook.patch diff --git a/qca/qca-nss-ecm/Makefile b/qca/qca-nss-ecm/Makefile index 609b243..8398576 100644 --- a/qca/qca-nss-ecm/Makefile +++ b/qca/qca-nss-ecm/Makefile @@ -5,9 +5,10 @@ PKG_RELEASE:=$(AUTORELEASE) PKG_SOURCE_URL:=https://git.codelinaro.org/clo/qsdk/oss/lklm/qca-nss-ecm.git PKG_SOURCE_PROTO:=git -PKG_SOURCE_DATE:=2022-07-09 -PKG_SOURCE_VERSION:=83b4e6266f94e1084acc69c97706d0c86a44cfe3 -PKG_MIRROR_HASH:=62d87358f3cbb8266ebc04000980516cc4c95025ed6d6d332e54d6c18f2e2510 +PKG_SOURCE_DATE:=2023-01-20 +PKG_SOURCE_VERSION:=db66c472e07990600bec9f01fb79e103540b0ca3 +PKG_MIRROR_HASH:=613fa9f8ff20984db5296763c35dea8a9ac0a5f507a0c125ea2814a6d4047a3a +PKG_RELEASE=1 PKG_BUILD_PARALLEL:=1 PKG_FLAGS:=nonshared @@ -32,7 +33,8 @@ define KernelPackage/qca-nss-ecm +kmod-ppp +kmod-pppoe +kmod-pptp +kmod-bonding \ +PACKAGE_kmod-pppol2tp:kmod-pppol2tp \ +PACKAGE_kmod-qca-mcs:kmod-qca-mcs \ - +PACKAGE_kmod-nat46:kmod-nat46 + +PACKAGE_kmod-nat46:kmod-nat46 \ + +PACKAGE_kmod-vxlan:kmod-vxlan TITLE:=QCA NSS Enhanced Connection Manager (ECM) FILES:=$(PKG_BUILD_DIR)/ecm.ko KCONFIG:=CONFIG_BRIDGE_NETFILTER=y \ @@ -53,7 +55,6 @@ define KernelPackage/qca-nss-ecm/install $(INSTALL_DATA) ./files/qca-nss-ecm.uci $(1)/etc/config/ecm $(INSTALL_DATA) ./files/qca-nss-ecm.defaults $(1)/etc/uci-defaults/99-qca-nss-ecm $(INSTALL_BIN) ./files/qca-nss-ecm.sysctl $(1)/etc/sysctl.d/qca-nss-ecm.conf - echo 'net.netfilter.nf_conntrack_max=32768' >> $(1)/etc/sysctl.d/qca-nss-ecm.conf endef EXTRA_CFLAGS+= \ diff --git a/qca/qca-nss-ecm/files/qca-nss-ecm.sysctl b/qca/qca-nss-ecm/files/qca-nss-ecm.sysctl index 1a3d76b..27a8190 100644 --- a/qca/qca-nss-ecm/files/qca-nss-ecm.sysctl +++ b/qca/qca-nss-ecm/files/qca-nss-ecm.sysctl @@ -1,2 +1 @@ -# nf_conntrack_tcp_no_window_check is 0 by default, set it to 1 -net.netfilter.nf_conntrack_tcp_no_window_check=1 +net.netfilter.nf_conntrack_max=32768 diff --git a/qca/qca-nss-ecm/patches/0001-treewide-componentize-the-module-even-more.patch b/qca/qca-nss-ecm/patches/0001-treewide-componentize-the-module-even-more.patch index 12b3490..0d78a03 100644 --- a/qca/qca-nss-ecm/patches/0001-treewide-componentize-the-module-even-more.patch +++ b/qca/qca-nss-ecm/patches/0001-treewide-componentize-the-module-even-more.patch @@ -16,7 +16,7 @@ diff --git a/Makefile b/Makefile index a59cbce..f7e40f8 100644 --- a/Makefile +++ b/Makefile -@@ -113,9 +113,17 @@ ccflags-$(ECM_INTERFACE_BOND_ENABLE) += -DECM_INTERFACE_BOND_ENABLE +@@ -125,9 +125,17 @@ ccflags-$(ECM_INTERFACE_BOND_ENABLE) += -DECM_INTERFACE_BOND_ENABLE # Define ECM_INTERFACE_PPPOE_ENABLE=y in order # to enable support for PPPoE acceleration. # ############################################################################# @@ -35,7 +35,7 @@ index a59cbce..f7e40f8 100644 # ############################################################################# # Define ECM_INTERFACE_L2TPV2_ENABLE=y in order # to enable support for l2tpv2 acceleration. -@@ -142,6 +150,12 @@ endif +@@ -154,6 +162,12 @@ endif endif ccflags-$(ECM_INTERFACE_PPP_ENABLE) += -DECM_INTERFACE_PPP_ENABLE @@ -48,7 +48,7 @@ index a59cbce..f7e40f8 100644 # ############################################################################# # Define ECM_INTERFACE_GRE_TAP_ENABLE=y in order # to enable support for GRE TAP interface. -@@ -218,7 +232,9 @@ ccflags-$(ECM_INTERFACE_OVS_BRIDGE_ENABLE) += -DECM_INTERFACE_OVS_BRIDGE_ENABLE +@@ -237,7 +251,9 @@ ccflags-$(ECM_INTERFACE_OVS_BRIDGE_ENABLE) += -DECM_INTERFACE_OVS_BRIDGE_ENABLE # ############################################################################# # Define ECM_INTERFACE_VLAN_ENABLE=y in order to enable support for VLAN # ############################################################################# @@ -59,7 +59,7 @@ index a59cbce..f7e40f8 100644 ccflags-$(ECM_INTERFACE_VLAN_ENABLE) += -DECM_INTERFACE_VLAN_ENABLE # ############################################################################# -@@ -255,7 +271,9 @@ ccflags-$(ECM_CLASSIFIER_OVS_ENABLE) += -DECM_CLASSIFIER_OVS_ENABLE +@@ -279,7 +295,9 @@ ccflags-$(ECM_CLASSIFIER_OVS_ENABLE) += -DECM_CLASSIFIER_OVS_ENABLE # ############################################################################# # Define ECM_CLASSIFIER_MARK_ENABLE=y in order to enable mark classifier. # ############################################################################# @@ -70,7 +70,7 @@ index a59cbce..f7e40f8 100644 ecm-$(ECM_CLASSIFIER_MARK_ENABLE) += ecm_classifier_mark.o ccflags-$(ECM_CLASSIFIER_MARK_ENABLE) += -DECM_CLASSIFIER_MARK_ENABLE -@@ -274,7 +292,9 @@ ccflags-$(ECM_CLASSIFIER_NL_ENABLE) += -DECM_CLASSIFIER_NL_ENABLE +@@ -303,7 +321,9 @@ ccflags-$(ECM_CLASSIFIER_NL_ENABLE) += -DECM_CLASSIFIER_NL_ENABLE # ############################################################################# # Define ECM_CLASSIFIER_DSCP_ENABLE=y in order to enable DSCP classifier. # ############################################################################# @@ -81,7 +81,7 @@ index a59cbce..f7e40f8 100644 ecm-$(ECM_CLASSIFIER_DSCP_ENABLE) += ecm_classifier_dscp.o ccflags-$(ECM_CLASSIFIER_DSCP_ENABLE) += -DECM_CLASSIFIER_DSCP_ENABLE ccflags-$(ECM_CLASSIFIER_DSCP_IGS) += -DECM_CLASSIFIER_DSCP_IGS -@@ -293,7 +313,9 @@ ccflags-$(ECM_CLASSIFIER_HYFI_ENABLE) += -DECM_CLASSIFIER_HYFI_ENABLE +@@ -322,7 +342,9 @@ ccflags-$(ECM_CLASSIFIER_HYFI_ENABLE) += -DECM_CLASSIFIER_HYFI_ENABLE # the Parental Controls subsystem classifier in ECM. Currently disabled until # customers require it / if they need to integrate their Parental Controls with it. # ############################################################################# @@ -92,7 +92,7 @@ index a59cbce..f7e40f8 100644 ecm-$(ECM_CLASSIFIER_PCC_ENABLE) += ecm_classifier_pcc.o ccflags-$(ECM_CLASSIFIER_PCC_ENABLE) += -DECM_CLASSIFIER_PCC_ENABLE -@@ -372,27 +372,36 @@ ccflags-$(ECM_NON_PORTED_SUPPORT_ENABLE) +@@ -363,27 +385,36 @@ ccflags-$(ECM_NON_PORTED_SUPPORT_ENABLE) += -DECM_NON_PORTED_SUPPORT_ENABLE # ############################################################################# # Define ECM_STATE_OUTPUT_ENABLE=y to support XML state output # ############################################################################# @@ -132,7 +132,7 @@ index a59cbce..f7e40f8 100644 ccflags-$(ECM_TRACKER_DPI_SUPPORT_ENABLE) += -DECM_TRACKER_DPI_SUPPORT_ENABLE # ############################################################################# -@@ -356,14 +386,18 @@ ccflags-$(ECM_TRACKER_DPI_SUPPORT_ENABLE) += -DECM_TRACKER_DPI_SUPPORT_ENABLE +@@ -391,14 +422,18 @@ ccflags-$(ECM_TRACKER_DPI_SUPPORT_ENABLE) += -DECM_TRACKER_DPI_SUPPORT_ENABLE # support for the database keeping lists of connections that are assigned # on a per TYPE of classifier basis. # ############################################################################# @@ -153,7 +153,7 @@ index a59cbce..f7e40f8 100644 ccflags-$(ECM_BAND_STEERING_ENABLE) += -DECM_BAND_STEERING_ENABLE # ############################################################################# -@@ -488,7 +488,6 @@ ccflags-y += -DECM_TRACKER_UDP_DEBUG_LEVEL=1 +@@ -468,7 +503,6 @@ ccflags-y += -DECM_TRACKER_UDP_DEBUG_LEVEL=1 ccflags-y += -DECM_BOND_NOTIFIER_DEBUG_LEVEL=1 ccflags-y += -DECM_INTERFACE_DEBUG_LEVEL=1 ccflags-y += -DECM_STATE_DEBUG_LEVEL=1 @@ -165,7 +165,7 @@ diff --git a/ecm_db/ecm_db_connection.c b/ecm_db/ecm_db_connection.c index 6d0bff4..77e5f3f 100644 --- a/ecm_db/ecm_db_connection.c +++ b/ecm_db/ecm_db_connection.c -@@ -454,7 +454,9 @@ EXPORT_SYMBOL(ecm_db_connection_make_defunct); +@@ -441,7 +441,9 @@ EXPORT_SYMBOL(ecm_db_connection_make_defunct); */ void ecm_db_connection_data_totals_update(struct ecm_db_connection_instance *ci, bool is_from, uint64_t size, uint64_t packets) { @@ -175,7 +175,7 @@ index 6d0bff4..77e5f3f 100644 DEBUG_CHECK_MAGIC(ci, ECM_DB_CONNECTION_INSTANCE_MAGIC, "%px: magic failed\n", ci); -@@ -553,7 +555,9 @@ EXPORT_SYMBOL(ecm_db_connection_data_totals_update); +@@ -540,7 +542,9 @@ EXPORT_SYMBOL(ecm_db_connection_data_totals_update); */ void ecm_db_connection_data_totals_update_dropped(struct ecm_db_connection_instance *ci, bool is_from, uint64_t size, uint64_t packets) { @@ -185,7 +185,7 @@ index 6d0bff4..77e5f3f 100644 DEBUG_CHECK_MAGIC(ci, ECM_DB_CONNECTION_INSTANCE_MAGIC, "%px: magic failed\n", ci); -@@ -1532,6 +1536,7 @@ void ecm_db_connection_defunct_all(void) +@@ -1526,6 +1530,7 @@ void ecm_db_connection_defunct_all(void) } EXPORT_SYMBOL(ecm_db_connection_defunct_all); @@ -193,7 +193,7 @@ index 6d0bff4..77e5f3f 100644 /* * ecm_db_connection_defunct_by_classifier() * Make defunct based on masked fields -@@ -1698,6 +1703,7 @@ next_ci: +@@ -1692,6 +1697,7 @@ next_ci: ECM_IP_ADDR_TO_OCTAL(dest_addr_mask), dest_port_mask, proto_mask, cnt); } } @@ -201,7 +201,7 @@ index 6d0bff4..77e5f3f 100644 /* * ecm_db_connection_defunct_by_port() -@@ -1987,6 +1993,7 @@ struct ecm_db_node_instance *ecm_db_connection_node_get_and_ref(struct ecm_db_co +@@ -1981,6 +1987,7 @@ struct ecm_db_node_instance *ecm_db_connection_node_get_and_ref(struct ecm_db_co } EXPORT_SYMBOL(ecm_db_connection_node_get_and_ref); @@ -209,7 +209,7 @@ index 6d0bff4..77e5f3f 100644 /* * ecm_db_connection_mapping_get_and_ref_next() * Return reference to next connection in the mapping chain in the specified direction. -@@ -2028,6 +2035,7 @@ struct ecm_db_connection_instance *ecm_db_connection_iface_get_and_ref_next(stru +@@ -2022,6 +2029,7 @@ struct ecm_db_connection_instance *ecm_db_connection_iface_get_and_ref_next(stru return nci; } EXPORT_SYMBOL(ecm_db_connection_iface_get_and_ref_next); @@ -221,7 +221,7 @@ diff --git a/ecm_db/ecm_db_node.c b/ecm_db/ecm_db_node.c index c3d70be..89b386f 100644 --- a/ecm_db/ecm_db_node.c +++ b/ecm_db/ecm_db_node.c -@@ -224,8 +224,10 @@ EXPORT_SYMBOL(ecm_db_node_get_and_ref_next); +@@ -227,8 +227,10 @@ EXPORT_SYMBOL(ecm_db_node_get_and_ref_next); */ int ecm_db_node_deref(struct ecm_db_node_instance *ni) { @@ -232,7 +232,7 @@ index c3d70be..89b386f 100644 #endif DEBUG_CHECK_MAGIC(ni, ECM_DB_NODE_INSTANCE_MAGIC, "%px: magic failed\n", ni); -@@ -486,8 +488,10 @@ EXPORT_SYMBOL(ecm_db_node_iface_get_and_ref); +@@ -489,8 +491,10 @@ EXPORT_SYMBOL(ecm_db_node_iface_get_and_ref); void ecm_db_node_add(struct ecm_db_node_instance *ni, struct ecm_db_iface_instance *ii, uint8_t *address, ecm_db_node_final_callback_t final, void *arg) { @@ -247,7 +247,7 @@ diff --git a/ecm_interface.c b/ecm_interface.c index d7ca169..2ca02bc 100644 --- a/ecm_interface.c +++ b/ecm_interface.c -@@ -1355,6 +1355,7 @@ struct neighbour *ecm_interface_ipv6_neigh_get(struct ecm_front_end_connection_i +@@ -1424,6 +1424,7 @@ struct neighbour *ecm_interface_ipv6_neigh_get(struct ecm_front_end_connection_i */ bool ecm_interface_is_pptp(struct sk_buff *skb, const struct net_device *out) { @@ -255,7 +255,7 @@ index d7ca169..2ca02bc 100644 struct net_device *in; /* -@@ -1379,6 +1380,7 @@ bool ecm_interface_is_pptp(struct sk_buff *skb, const struct net_device *out) +@@ -1448,6 +1449,7 @@ bool ecm_interface_is_pptp(struct sk_buff *skb, const struct net_device *out) } dev_put(in); @@ -263,7 +263,7 @@ index d7ca169..2ca02bc 100644 return false; } -@@ -1391,6 +1393,7 @@ bool ecm_interface_is_pptp(struct sk_buff *skb, const struct net_device *out) +@@ -1460,6 +1462,7 @@ bool ecm_interface_is_pptp(struct sk_buff *skb, const struct net_device *out) */ bool ecm_interface_is_l2tp_packet_by_version(struct sk_buff *skb, const struct net_device *out, int ver) { @@ -271,7 +271,7 @@ index d7ca169..2ca02bc 100644 uint32_t flag = 0; struct net_device *in; -@@ -1423,6 +1426,7 @@ bool ecm_interface_is_l2tp_packet_by_version(struct sk_buff *skb, const struct n +@@ -1492,6 +1495,7 @@ bool ecm_interface_is_l2tp_packet_by_version(struct sk_buff *skb, const struct n } dev_put(in); @@ -279,7 +279,7 @@ index d7ca169..2ca02bc 100644 return false; } -@@ -1435,6 +1439,7 @@ bool ecm_interface_is_l2tp_packet_by_version(struct sk_buff *skb, const struct n +@@ -1504,6 +1508,7 @@ bool ecm_interface_is_l2tp_packet_by_version(struct sk_buff *skb, const struct n */ bool ecm_interface_is_l2tp_pptp(struct sk_buff *skb, const struct net_device *out) { @@ -287,7 +287,7 @@ index d7ca169..2ca02bc 100644 struct net_device *in; /* -@@ -1457,6 +1462,7 @@ bool ecm_interface_is_l2tp_pptp(struct sk_buff *skb, const struct net_device *ou +@@ -1526,6 +1531,7 @@ bool ecm_interface_is_l2tp_pptp(struct sk_buff *skb, const struct net_device *ou } dev_put(in); @@ -295,7 +295,7 @@ index d7ca169..2ca02bc 100644 return false; } -@@ -6770,6 +6776,7 @@ static void ecm_interface_regenerate_connections(struct ecm_db_iface_instance *i +@@ -6898,6 +6904,7 @@ static void ecm_interface_regenerate_connections(struct ecm_db_iface_instance *i return; } @@ -303,7 +303,7 @@ index d7ca169..2ca02bc 100644 for (dir = 0; dir < ECM_DB_OBJ_DIR_MAX; dir++) { /* * Re-generate all connections associated with this interface -@@ -6785,6 +6792,7 @@ static void ecm_interface_regenerate_connections(struct ecm_db_iface_instance *i +@@ -6913,6 +6920,7 @@ static void ecm_interface_regenerate_connections(struct ecm_db_iface_instance *i ci[dir] = cin; } } @@ -315,15 +315,15 @@ diff --git a/frontends/ecm_front_end_common.c b/frontends/ecm_front_end_common.c index 3b33c41..e21ca24 100644 --- a/frontends/ecm_front_end_common.c +++ b/frontends/ecm_front_end_common.c -@@ -228,6 +228,7 @@ bool ecm_front_end_gre_proto_is_accel_allowed(struct net_device *indev, +@@ -460,6 +460,7 @@ bool ecm_front_end_gre_proto_is_accel_allowed(struct net_device *indev, struct nf_conntrack_tuple *tuple, - int ip_version) + int ip_version, uint16_t offset) { +#ifdef ECM_INTERFACE_GRE_ENABLE struct net_device *dev; struct gre_base_hdr *greh; -@@ -239,10 +240,12 @@ bool ecm_front_end_gre_proto_is_accel_allowed(struct net_device *indev, +@@ -471,10 +472,12 @@ bool ecm_front_end_gre_proto_is_accel_allowed(struct net_device *indev, /* * Case 1: PPTP locally terminated */ @@ -336,7 +336,7 @@ index 3b33c41..e21ca24 100644 /* * Case 2: PPTP pass through -@@ -350,6 +353,10 @@ bool ecm_front_end_gre_proto_is_accel_allowed(struct net_device *indev, +@@ -582,6 +585,10 @@ bool ecm_front_end_gre_proto_is_accel_allowed(struct net_device *indev, */ DEBUG_TRACE("%px: GRE IPv%d pass through - allow acceleration\n", skb, ip_version); return true; @@ -347,5 +347,3 @@ index 3b33c41..e21ca24 100644 } #ifdef ECM_CLASSIFIER_DSCP_ENABLE --- -2.34.1 diff --git a/qca/qca-nss-ecm/patches/0002-treewide-rework-ipv6_dev_find_and_hold.patch b/qca/qca-nss-ecm/patches/0002-treewide-rework-ipv6_dev_find_and_hold.patch index 0045fd9..10bf34a 100644 --- a/qca/qca-nss-ecm/patches/0002-treewide-rework-ipv6_dev_find_and_hold.patch +++ b/qca/qca-nss-ecm/patches/0002-treewide-rework-ipv6_dev_find_and_hold.patch @@ -1,6 +1,6 @@ --- a/ecm_interface.c +++ b/ecm_interface.c -@@ -334,7 +334,7 @@ static struct net_device *ecm_interface_dev_find_by_local_addr_ipv6(ip_addr_t ad +@@ -336,7 +336,7 @@ static struct net_device *ecm_interface_dev_find_by_local_addr_ipv6(ip_addr_t ad struct net_device *dev; ECM_IP_ADDR_TO_NIN6_ADDR(addr6, addr); @@ -9,7 +9,7 @@ return dev; } #endif -@@ -736,7 +764,7 @@ static bool ecm_interface_mac_addr_get_ipv6_no_route(struct net_device *dev, ip_ +@@ -737,7 +737,7 @@ static bool ecm_interface_mac_addr_get_ipv6_no_route(struct net_device *dev, ip_ * Get the MAC address that corresponds to IP address given. */ ECM_IP_ADDR_TO_NIN6_ADDR(daddr, addr); @@ -19,20 +19,21 @@ DEBUG_TRACE("%pi6 is a local address\n", &daddr); memcpy(mac_addr, dev->dev_addr, ETH_ALEN); diff --git a/frontends/ecm_front_end_common.c b/frontends/ecm_front_end_common.c -index e21ca24..6054685 100644 +index 8142be1..927e548 100644 --- a/frontends/ecm_front_end_common.c +++ b/frontends/ecm_front_end_common.c -@@ -56,6 +56,9 @@ - #include "ecm_db.h" - #include "ecm_front_end_common.h" - #include "ecm_interface.h" +@@ -101,6 +101,10 @@ + #endif + #endif + +#ifdef ECM_IPV6_ENABLE +#include "ecm_front_end_ipv6.h" +#endif - ++ /* * Sysctl table header -@@ -315,7 +318,7 @@ bool ecm_front_end_gre_proto_is_accel_allowed(struct net_device *indev, + */ +@@ -547,7 +551,7 @@ bool ecm_front_end_gre_proto_is_accel_allowed(struct net_device *indev, } } else { #ifdef ECM_IPV6_ENABLE @@ -41,7 +42,7 @@ index e21ca24..6054685 100644 if (dev) { /* * Source IP address is local -@@ -325,7 +328,7 @@ bool ecm_front_end_gre_proto_is_accel_allowed(struct net_device *indev, +@@ -557,7 +561,7 @@ bool ecm_front_end_gre_proto_is_accel_allowed(struct net_device *indev, return false; } @@ -49,4 +50,4 @@ index e21ca24..6054685 100644 + dev = ipv6_dev_find_and_hold(&init_net, &(tuple->dst.u3.in6), 1); if (dev) { /* - * Destination IP address is local \ No newline at end of file + * Destination IP address is local \ No newline at end of file diff --git a/qca/qca-nss-ecm/patches/0003-treewide-rework-debugfs-api-to-new-implementation.patch b/qca/qca-nss-ecm/patches/0003-treewide-rework-debugfs-api-to-new-implementation.patch index 0a83417..885a1d6 100644 --- a/qca/qca-nss-ecm/patches/0003-treewide-rework-debugfs-api-to-new-implementation.patch +++ b/qca/qca-nss-ecm/patches/0003-treewide-rework-debugfs-api-to-new-implementation.patch @@ -42,7 +42,7 @@ diff --git a/ecm_classifier_default.c b/ecm_classifier_default.c index 39315a9..1dad277 100644 --- a/ecm_classifier_default.c +++ b/ecm_classifier_default.c -@@ -757,26 +757,14 @@ int ecm_classifier_default_init(struct dentry *dentry) +@@ -760,26 +760,14 @@ int ecm_classifier_default_init(struct dentry *dentry) return -1; } @@ -79,7 +79,7 @@ diff --git a/ecm_classifier_dscp.c b/ecm_classifier_dscp.c index 4f0caeb..6c9401e 100644 --- a/ecm_classifier_dscp.c +++ b/ecm_classifier_dscp.c -@@ -763,12 +763,8 @@ int ecm_classifier_dscp_init(struct dentry *dentry) +@@ -816,12 +816,8 @@ int ecm_classifier_dscp_init(struct dentry *dentry) return -1; } @@ -98,7 +98,7 @@ diff --git a/ecm_classifier_emesh.c b/ecm_classifier_emesh.c index 72cf2e1..f8aecec 100644 --- a/ecm_classifier_emesh.c +++ b/ecm_classifier_emesh.c -@@ -1758,33 +1758,17 @@ int ecm_classifier_emesh_sawf_init(struc +@@ -1954,33 +1954,17 @@ int ecm_classifier_emesh_sawf_init(struct dentry *dentry) return -1; } @@ -126,16 +126,15 @@ index 72cf2e1..f8aecec 100644 - debugfs_remove_recursive(ecm_classifier_emesh_sawf_dentry); - return -1; - } -- ++ debugfs_create_u32("sawf_enabled", S_IRUGO | S_IWUSR, ecm_classifier_emesh_sawf_dentry, ++ (u32 *)&ecm_classifier_sawf_enabled); + - if (!debugfs_create_u32("cake_enabled", S_IRUGO | S_IWUSR, ecm_classifier_emesh_sawf_dentry, - (u32 *)&ecm_classifier_sawf_cake_enabled)) { - DEBUG_ERROR("Failed to create ecm sawf cake enabled file in debugfs\n"); - debugfs_remove_recursive(ecm_classifier_emesh_sawf_dentry); - return -1; - } -+ debugfs_create_u32("sawf_enabled", S_IRUGO | S_IWUSR, ecm_classifier_emesh_sawf_dentry, -+ (u32 *)&ecm_classifier_sawf_enabled); -+ + debugfs_create_u32("cake_enabled", S_IRUGO | S_IWUSR, ecm_classifier_emesh_sawf_dentry, + (u32 *)&ecm_classifier_sawf_cake_enabled); @@ -145,7 +144,7 @@ diff --git a/ecm_classifier_hyfi.c b/ecm_classifier_hyfi.c index a57a13e..fad7209 100644 --- a/ecm_classifier_hyfi.c +++ b/ecm_classifier_hyfi.c -@@ -1099,11 +1099,8 @@ int ecm_classifier_hyfi_rules_init(struc +@@ -1111,11 +1111,8 @@ int ecm_classifier_hyfi_rules_init(struct dentry *dentry) goto classifier_task_cleanup; } @@ -163,7 +162,7 @@ diff --git a/ecm_classifier_mark.c b/ecm_classifier_mark.c index d054d8e..65dd1e1 100644 --- a/ecm_classifier_mark.c +++ b/ecm_classifier_mark.c -@@ -753,12 +753,8 @@ int ecm_classifier_mark_init(struct dent +@@ -753,12 +753,8 @@ int ecm_classifier_mark_init(struct dentry *dentry) return -1; } @@ -201,7 +200,7 @@ diff --git a/ecm_classifier_pcc.c b/ecm_classifier_pcc.c index 6c6fcd4..af13357 100644 --- a/ecm_classifier_pcc.c +++ b/ecm_classifier_pcc.c -@@ -1232,12 +1232,8 @@ int ecm_classifier_pcc_init(struct dentry *dentry) +@@ -1246,12 +1246,8 @@ int ecm_classifier_pcc_init(struct dentry *dentry) return -1; } @@ -220,7 +219,7 @@ diff --git a/ecm_conntrack_notifier.c b/ecm_conntrack_notifier.c index f4f2c60..7b20132 100644 --- a/ecm_conntrack_notifier.c +++ b/ecm_conntrack_notifier.c -@@ -416,12 +416,8 @@ int ecm_conntrack_notifier_init(struct dentry *dentry) +@@ -429,12 +429,8 @@ int ecm_conntrack_notifier_init(struct dentry *dentry) return -1; } @@ -239,7 +238,7 @@ diff --git a/ecm_db/ecm_db_connection.c b/ecm_db/ecm_db_connection.c index 77e5f3f..4bd47c3 100644 --- a/ecm_db/ecm_db_connection.c +++ b/ecm_db/ecm_db_connection.c -@@ -3784,11 +3784,8 @@ static struct file_operations ecm_db_connection_count_simple_fops = { +@@ -3776,11 +3776,8 @@ static struct file_operations ecm_db_connection_count_simple_fops = { */ bool ecm_db_connection_init(struct dentry *dentry) { @@ -275,7 +274,7 @@ diff --git a/ecm_db/ecm_db_iface.c b/ecm_db/ecm_db_iface.c index 53c254c..f9ad269 100644 --- a/ecm_db/ecm_db_iface.c +++ b/ecm_db/ecm_db_iface.c -@@ -3688,11 +3688,8 @@ EXPORT_SYMBOL(ecm_db_iface_alloc); +@@ -3706,11 +3706,8 @@ EXPORT_SYMBOL(ecm_db_iface_alloc); */ bool ecm_db_iface_init(struct dentry *dentry) { @@ -311,7 +310,7 @@ diff --git a/ecm_db/ecm_db_node.c b/ecm_db/ecm_db_node.c index 89b386f..513fb84 100644 --- a/ecm_db/ecm_db_node.c +++ b/ecm_db/ecm_db_node.c -@@ -1188,11 +1188,8 @@ keep_sni_conn: +@@ -1211,11 +1211,8 @@ keep_sni_conn: */ bool ecm_db_node_init(struct dentry *dentry) { @@ -410,7 +409,7 @@ diff --git a/frontends/nss/ecm_nss_ipv4.c b/frontends/nss/ecm_nss_ipv4.c index 0fee3e8..5b0ce29 100644 --- a/frontends/nss/ecm_nss_ipv4.c +++ b/frontends/nss/ecm_nss_ipv4.c -@@ -1006,41 +1006,23 @@ int ecm_nss_ipv4_init(struct dentry *dentry) +@@ -1009,41 +1009,23 @@ int ecm_nss_ipv4_init(struct dentry *dentry) return result; } @@ -464,7 +463,7 @@ index 0fee3e8..5b0ce29 100644 if (!debugfs_create_file("accel_limit_mode", S_IRUGO | S_IWUSR, ecm_nss_ipv4_dentry, NULL, &ecm_nss_ipv4_accel_limit_mode_fops)) { -@@ -1071,11 +1053,8 @@ int ecm_nss_ipv4_init(struct dentry *dentry) +@@ -1074,11 +1056,8 @@ int ecm_nss_ipv4_init(struct dentry *dentry) goto task_cleanup; } @@ -482,7 +481,7 @@ diff --git a/frontends/nss/ecm_nss_ipv6.c b/frontends/nss/ecm_nss_ipv6.c index ee6b434..8d13f68 100644 --- a/frontends/nss/ecm_nss_ipv6.c +++ b/frontends/nss/ecm_nss_ipv6.c -@@ -985,41 +985,23 @@ int ecm_nss_ipv6_init(struct dentry *dentry) +@@ -986,41 +986,23 @@ int ecm_nss_ipv6_init(struct dentry *dentry) return result; } @@ -536,7 +535,7 @@ index ee6b434..8d13f68 100644 if (!debugfs_create_file("accel_limit_mode", S_IRUGO | S_IWUSR, ecm_nss_ipv6_dentry, NULL, &ecm_nss_ipv6_accel_limit_mode_fops)) { -@@ -1050,11 +1032,8 @@ int ecm_nss_ipv6_init(struct dentry *dentry) +@@ -1051,11 +1033,8 @@ int ecm_nss_ipv6_init(struct dentry *dentry) goto task_cleanup; } @@ -554,7 +553,7 @@ diff --git a/frontends/nss/ecm_nss_multicast_ipv4.c b/frontends/nss/ecm_nss_mult index a3dcb79..c9e92de 100644 --- a/frontends/nss/ecm_nss_multicast_ipv4.c +++ b/frontends/nss/ecm_nss_multicast_ipv4.c -@@ -2623,14 +2623,8 @@ find_next_tuple: +@@ -2619,14 +2619,8 @@ find_next_tuple: */ bool ecm_nss_multicast_ipv4_debugfs_init(struct dentry *dentry) { @@ -570,7 +569,7 @@ index a3dcb79..c9e92de 100644 return true; } -@@ -2649,11 +2643,8 @@ void ecm_nss_multicast_ipv4_stop(int num +@@ -2645,11 +2639,8 @@ void ecm_nss_multicast_ipv4_stop(int num) */ int ecm_nss_multicast_ipv4_init(struct dentry *dentry) { @@ -586,7 +585,7 @@ index a3dcb79..c9e92de 100644 * Register multicast update callback to MCS snooper --- a/frontends/nss/ecm_nss_multicast_ipv6.c +++ b/frontends/nss/ecm_nss_multicast_ipv6.c -@@ -2558,14 +2558,8 @@ static void ecm_nss_multicast_ipv6_mfc_u +@@ -2554,14 +2554,8 @@ static void ecm_nss_multicast_ipv6_mfc_update_event_callback(struct in6_addr *gr */ bool ecm_nss_multicast_ipv6_debugfs_init(struct dentry *dentry) { @@ -602,7 +601,7 @@ index a3dcb79..c9e92de 100644 return true; } -@@ -2584,11 +2578,8 @@ void ecm_nss_multicast_ipv6_stop(int num +@@ -2580,11 +2574,8 @@ void ecm_nss_multicast_ipv6_stop(int num) */ int ecm_nss_multicast_ipv6_init(struct dentry *dentry) { @@ -620,7 +619,7 @@ diff --git a/frontends/nss/ecm_nss_non_ported_ipv4.c b/frontends/nss/ecm_nss_non index ec4f365..77de341 100644 --- a/frontends/nss/ecm_nss_non_ported_ipv4.c +++ b/frontends/nss/ecm_nss_non_ported_ipv4.c -@@ -1940,11 +1940,8 @@ struct ecm_nss_non_ported_ipv4_connection_instance *ecm_nss_non_ported_ipv4_conn +@@ -1830,11 +1830,8 @@ struct ecm_front_end_connection_instance *ecm_nss_non_ported_ipv4_connection_ins */ bool ecm_nss_non_ported_ipv4_debugfs_init(struct dentry *dentry) { @@ -638,7 +637,7 @@ diff --git a/frontends/nss/ecm_nss_non_ported_ipv6.c b/frontends/nss/ecm_nss_non index 13e0cc5..91ad7aa 100644 --- a/frontends/nss/ecm_nss_non_ported_ipv6.c +++ b/frontends/nss/ecm_nss_non_ported_ipv6.c -@@ -1768,11 +1768,8 @@ struct ecm_nss_non_ported_ipv6_connection_instance *ecm_nss_non_ported_ipv6_conn +@@ -1656,11 +1656,8 @@ struct ecm_front_end_connection_instance *ecm_nss_non_ported_ipv6_connection_ins */ bool ecm_nss_non_ported_ipv6_debugfs_init(struct dentry *dentry) { @@ -656,7 +655,7 @@ diff --git a/frontends/nss/ecm_nss_ported_ipv4.c b/frontends/nss/ecm_nss_ported_ index 6375b6b..ea997e3 100644 --- a/frontends/nss/ecm_nss_ported_ipv4.c +++ b/frontends/nss/ecm_nss_ported_ipv4.c -@@ -1889,21 +1889,11 @@ struct ecm_front_end_connection_instance +@@ -1896,21 +1896,11 @@ struct ecm_front_end_connection_instance *ecm_nss_ported_ipv4_connection_instanc */ bool ecm_nss_ported_ipv4_debugfs_init(struct dentry *dentry) { @@ -677,18 +676,17 @@ index 6375b6b..ea997e3 100644 - debugfs_remove(udp_dentry); - return false; - } -- -- return true; + debugfs_create_u32("tcp_accelerated_count", S_IRUGO, dentry, + &ecm_nss_ported_ipv4_accelerated_count[ECM_FRONT_END_PORTED_PROTO_TCP]); -+ + +- return true; + return true; } diff --git a/frontends/nss/ecm_nss_ported_ipv6.c b/frontends/nss/ecm_nss_ported_ipv6.c index 1be8a58..451a557 100644 --- a/frontends/nss/ecm_nss_ported_ipv6.c +++ b/frontends/nss/ecm_nss_ported_ipv6.c -@@ -1803,21 +1803,11 @@ struct ecm_front_end_connection_instance +@@ -1809,21 +1809,11 @@ struct ecm_front_end_connection_instance *ecm_nss_ported_ipv6_connection_instanc */ bool ecm_nss_ported_ipv6_debugfs_init(struct dentry *dentry) { @@ -718,7 +716,7 @@ diff --git a/frontends/sfe/ecm_sfe_ipv4.c b/frontends/sfe/ecm_sfe_ipv4.c index 2076bad..3f30821 100644 --- a/frontends/sfe/ecm_sfe_ipv4.c +++ b/frontends/sfe/ecm_sfe_ipv4.c -@@ -914,48 +914,27 @@ int ecm_sfe_ipv4_init(struct dentry *dentry) +@@ -925,48 +925,27 @@ int ecm_sfe_ipv4_init(struct dentry *dentry) } #ifdef CONFIG_XFRM @@ -785,7 +783,7 @@ diff --git a/frontends/sfe/ecm_sfe_ipv6.c b/frontends/sfe/ecm_sfe_ipv6.c index e8981ee..54fdbf3 100644 --- a/frontends/sfe/ecm_sfe_ipv6.c +++ b/frontends/sfe/ecm_sfe_ipv6.c -@@ -906,48 +906,27 @@ int ecm_sfe_ipv6_init(struct dentry *dentry) +@@ -917,48 +917,27 @@ int ecm_sfe_ipv6_init(struct dentry *dentry) } #ifdef CONFIG_XFRM @@ -852,7 +850,7 @@ diff --git a/frontends/sfe/ecm_sfe_non_ported_ipv4.c b/frontends/sfe/ecm_sfe_non index d7cad2a..696bd13 100644 --- a/frontends/sfe/ecm_sfe_non_ported_ipv4.c +++ b/frontends/sfe/ecm_sfe_non_ported_ipv4.c -@@ -1930,11 +1930,8 @@ struct ecm_sfe_non_ported_ipv4_connection_instance *ecm_sfe_non_ported_ipv4_conn +@@ -1908,11 +1908,8 @@ struct ecm_front_end_connection_instance *ecm_sfe_non_ported_ipv4_connection_ins */ bool ecm_sfe_non_ported_ipv4_debugfs_init(struct dentry *dentry) { @@ -870,7 +868,7 @@ diff --git a/frontends/sfe/ecm_sfe_non_ported_ipv6.c b/frontends/sfe/ecm_sfe_non index a9fb637..fe06de4 100644 --- a/frontends/sfe/ecm_sfe_non_ported_ipv6.c +++ b/frontends/sfe/ecm_sfe_non_ported_ipv6.c -@@ -1777,11 +1777,8 @@ struct ecm_sfe_non_ported_ipv6_connection_instance *ecm_sfe_non_ported_ipv6_conn +@@ -1726,11 +1726,8 @@ struct ecm_front_end_connection_instance *ecm_sfe_non_ported_ipv6_connection_ins */ bool ecm_sfe_non_ported_ipv6_debugfs_init(struct dentry *dentry) { @@ -888,7 +886,7 @@ diff --git a/frontends/sfe/ecm_sfe_ported_ipv4.c b/frontends/sfe/ecm_sfe_ported_ index fc2c4ba..53f5b07 100644 --- a/frontends/sfe/ecm_sfe_ported_ipv4.c +++ b/frontends/sfe/ecm_sfe_ported_ipv4.c -@@ -2062,12 +2062,8 @@ bool ecm_sfe_ported_ipv4_debugfs_init(struct dentry *dentry) +@@ -2035,12 +2035,8 @@ bool ecm_sfe_ported_ipv4_debugfs_init(struct dentry *dentry) return false; } @@ -907,7 +905,7 @@ diff --git a/frontends/sfe/ecm_sfe_ported_ipv6.c b/frontends/sfe/ecm_sfe_ported_ index 90d642d..ae04cb4 100644 --- a/frontends/sfe/ecm_sfe_ported_ipv6.c +++ b/frontends/sfe/ecm_sfe_ported_ipv6.c -@@ -2007,12 +2007,8 @@ bool ecm_sfe_ported_ipv6_debugfs_init(struct dentry *dentry) +@@ -1982,12 +1982,8 @@ bool ecm_sfe_ported_ipv6_debugfs_init(struct dentry *dentry) return false; } @@ -922,5 +920,3 @@ index 90d642d..ae04cb4 100644 return true; } --- -2.34.1 diff --git a/qca/qca-nss-ecm/patches/0004-qca-nss-ecm-resolve-the-cpu-high-load-regarding-ecm.patch b/qca/qca-nss-ecm/patches/0004-qca-nss-ecm-resolve-the-cpu-high-load-regarding-ecm.patch index 595c6b6..44b8174 100644 --- a/qca/qca-nss-ecm/patches/0004-qca-nss-ecm-resolve-the-cpu-high-load-regarding-ecm.patch +++ b/qca/qca-nss-ecm/patches/0004-qca-nss-ecm-resolve-the-cpu-high-load-regarding-ecm.patch @@ -17,7 +17,7 @@ diff --git a/frontends/nss/ecm_nss_ipv4.c b/frontends/nss/ecm_nss_ipv4.c index 5b0ce29..719a747 100644 --- a/frontends/nss/ecm_nss_ipv4.c +++ b/frontends/nss/ecm_nss_ipv4.c -@@ -697,7 +697,7 @@ static void ecm_nss_ipv4_stats_sync_req_work(struct work_struct *work) +@@ -700,7 +700,7 @@ static void ecm_nss_ipv4_stats_sync_req_work(struct work_struct *work) } spin_unlock_bh(&ecm_nss_ipv4_lock); @@ -26,7 +26,7 @@ index 5b0ce29..719a747 100644 /* * If index is 0, we are starting a new round, but if we still have time remain -@@ -711,7 +711,7 @@ static void ecm_nss_ipv4_stats_sync_req_work(struct work_struct *work) +@@ -714,7 +714,7 @@ static void ecm_nss_ipv4_stats_sync_req_work(struct work_struct *work) } if (time_after(ecm_nss_ipv4_next_req_time, current_jiffies)) { @@ -39,7 +39,7 @@ diff --git a/frontends/nss/ecm_nss_ipv6.c b/frontends/nss/ecm_nss_ipv6.c index 8d13f68..67ee364 100644 --- a/frontends/nss/ecm_nss_ipv6.c +++ b/frontends/nss/ecm_nss_ipv6.c -@@ -675,7 +675,7 @@ static void ecm_nss_ipv6_stats_sync_req_work(struct work_struct *work) +@@ -676,7 +676,7 @@ static void ecm_nss_ipv6_stats_sync_req_work(struct work_struct *work) } spin_unlock_bh(&ecm_nss_ipv6_lock); @@ -48,7 +48,7 @@ index 8d13f68..67ee364 100644 /* * If index is 0, we are starting a new round, but if we still have time remain -@@ -689,7 +689,7 @@ static void ecm_nss_ipv6_stats_sync_req_work(struct work_struct *work) +@@ -690,7 +690,7 @@ static void ecm_nss_ipv6_stats_sync_req_work(struct work_struct *work) } if (time_after(ecm_nss_ipv6_next_req_time, current_jiffies)) { @@ -57,5 +57,3 @@ index 8d13f68..67ee364 100644 } ecm_nss_ipv6_roll_check_jiffies = jiffies; ecm_nss_ipv6_next_req_time = ecm_nss_ipv6_roll_check_jiffies + ECM_NSS_IPV6_STATS_SYNC_PERIOD; --- -2.34.1 diff --git a/qca/qca-nss-ecm/patches/0005-ecm_interface-switch-to-kernel_recvmsg-api.patch b/qca/qca-nss-ecm/patches/0005-ecm_interface-switch-to-kernel_recvmsg-api.patch index 2b41521..eab1fb1 100644 --- a/qca/qca-nss-ecm/patches/0005-ecm_interface-switch-to-kernel_recvmsg-api.patch +++ b/qca/qca-nss-ecm/patches/0005-ecm_interface-switch-to-kernel_recvmsg-api.patch @@ -15,7 +15,7 @@ diff --git a/ecm_interface.c b/ecm_interface.c index b461456..6be872a 100644 --- a/ecm_interface.c +++ b/ecm_interface.c -@@ -7617,9 +7617,13 @@ static int ecm_interface_wifi_event_hand +@@ -7775,9 +7775,13 @@ static int ecm_interface_wifi_event_handler(unsigned char *buf, int len) static int ecm_interface_wifi_event_rx(struct socket *sock, struct sockaddr_nl *addr, unsigned char *buf, int len) { struct msghdr msg; @@ -30,7 +30,7 @@ index b461456..6be872a 100644 iov.iov_base = buf; iov.iov_len = len; -@@ -7629,7 +7633,8 @@ static int ecm_interface_wifi_event_rx(s +@@ -7787,7 +7791,8 @@ static int ecm_interface_wifi_event_rx(struct socket *sock, struct sockaddr_nl * msg.msg_namelen = sizeof(struct sockaddr_nl); msg.msg_control = NULL; msg.msg_controllen = 0; @@ -40,7 +40,7 @@ index b461456..6be872a 100644 set_fs(KERNEL_DS); iov_iter_init(&msg.msg_iter, READ, &iov, 1, len); #if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 7, 0)) -@@ -7640,6 +7645,9 @@ static int ecm_interface_wifi_event_rx(s +@@ -7798,6 +7803,9 @@ static int ecm_interface_wifi_event_rx(struct socket *sock, struct sockaddr_nl * set_fs(oldfs); return size; @@ -50,5 +50,3 @@ index b461456..6be872a 100644 } /* --- -2.34.1 diff --git a/qca/qca-nss-ecm/patches/0006-treewide-rework-notifier-changes-for-5.15.patch b/qca/qca-nss-ecm/patches/0006-treewide-rework-notifier-changes-for-5.15.patch index d1cf315..4547c35 100644 --- a/qca/qca-nss-ecm/patches/0006-treewide-rework-notifier-changes-for-5.15.patch +++ b/qca/qca-nss-ecm/patches/0006-treewide-rework-notifier-changes-for-5.15.patch @@ -57,7 +57,7 @@ index 5f802b7..50e8566 100644 #endif /* -@@ -440,12 +427,16 @@ int ecm_conntrack_notifier_init(struct dentry *dentry) +@@ -436,12 +423,16 @@ int ecm_conntrack_notifier_init(struct dentry *dentry) /* * Eventing subsystem is available so we register a notifier hook to get fast notifications of expired connections */ @@ -75,7 +75,7 @@ index 5f802b7..50e8566 100644 #endif return 0; -@@ -459,7 +450,11 @@ void ecm_conntrack_notifier_exit(void) +@@ -455,7 +446,11 @@ void ecm_conntrack_notifier_exit(void) { DEBUG_INFO("ECM Conntrack Notifier exit\n"); #ifdef CONFIG_NF_CONNTRACK_EVENTS @@ -87,5 +87,3 @@ index 5f802b7..50e8566 100644 #endif /* * Remove the debugfs files recursively. --- -2.40.0 diff --git a/qca/qca-nss-ecm/patches/0007-frontends-drop-use-of-static-be_liberal-and-no_windo.patch b/qca/qca-nss-ecm/patches/0007-frontends-drop-use-of-static-be_liberal-and-no_windo.patch index c9bdfc3..d62626d 100644 --- a/qca/qca-nss-ecm/patches/0007-frontends-drop-use-of-static-be_liberal-and-no_windo.patch +++ b/qca/qca-nss-ecm/patches/0007-frontends-drop-use-of-static-be_liberal-and-no_windo.patch @@ -14,8 +14,8 @@ diff --git a/frontends/nss/ecm_nss_ported_ipv4.c b/frontends/nss/ecm_nss_ported_ index 6375b6b..ed9c10b 100644 --- a/frontends/nss/ecm_nss_ported_ipv4.c +++ b/frontends/nss/ecm_nss_ported_ipv4.c -@@ -125,14 +125,6 @@ struct ecm_nss_ported_ipv4_connection_instance { - static int ecm_nss_ported_ipv4_accelerated_count[ECM_NSS_PORTED_IPV4_PROTO_MAX] = {0}; +@@ -99,14 +99,6 @@ + static int ecm_nss_ported_ipv4_accelerated_count[ECM_FRONT_END_PORTED_PROTO_MAX] = {0}; /* Array of Number of TCP and UDP connections currently offloaded */ -/* @@ -29,7 +29,7 @@ index 6375b6b..ed9c10b 100644 /* * ecm_nss_ported_ipv4_connection_callback() * Callback for handling create ack/nack calls. -@@ -372,6 +364,12 @@ static void ecm_nss_ported_ipv4_connection_accelerate(struct ecm_front_end_conne +@@ -343,6 +335,12 @@ static void ecm_nss_ported_ipv4_connection_accelerate(struct ecm_front_end_conne uint8_t dest_mac_xlate[ETH_ALEN]; ecm_db_direction_t ecm_dir; ecm_front_end_acceleration_mode_t result_mode; @@ -40,9 +40,9 @@ index 6375b6b..ed9c10b 100644 + tn = nf_tcp_pernet(net); + } - DEBUG_CHECK_MAGIC(npci, ECM_NSS_PORTED_IPV4_CONNECTION_INSTANCE_MAGIC, "%px: magic failed", npci); + DEBUG_CHECK_MAGIC(feci, ECM_FRONT_END_CONNECTION_INSTANCE_MAGIC, "%px: magic failed", feci); -@@ -1235,12 +1233,8 @@ static void ecm_nss_ported_ipv4_connection_accelerate(struct ecm_front_end_conne +@@ -1212,12 +1210,8 @@ static void ecm_nss_ported_ipv4_connection_accelerate(struct ecm_front_end_conne nircm->tcp_rule.return_max_window = ct->proto.tcp.seen[return_dir].td_maxwin; nircm->tcp_rule.return_end = ct->proto.tcp.seen[return_dir].td_end; nircm->tcp_rule.return_max_end = ct->proto.tcp.seen[return_dir].td_maxend; @@ -61,8 +61,8 @@ diff --git a/frontends/nss/ecm_nss_ported_ipv6.c b/frontends/nss/ecm_nss_ported_ index 1be8a58..3062c12 100644 --- a/frontends/nss/ecm_nss_ported_ipv6.c +++ b/frontends/nss/ecm_nss_ported_ipv6.c -@@ -125,14 +125,6 @@ struct ecm_nss_ported_ipv6_connection_instance { - static int ecm_nss_ported_ipv6_accelerated_count[ECM_NSS_PORTED_IPV6_PROTO_MAX] = {0}; +@@ -100,14 +100,6 @@ + static int ecm_nss_ported_ipv6_accelerated_count[ECM_FRONT_END_PORTED_PROTO_MAX] = {0}; /* Array of Number of TCP and UDP connections currently offloaded */ -/* @@ -76,7 +76,7 @@ index 1be8a58..3062c12 100644 /* * ecm_nss_ported_ipv6_connection_callback() * Callback for handling create ack/nack calls. -@@ -376,6 +368,12 @@ static void ecm_nss_ported_ipv6_connection_accelerate(struct ecm_front_end_conne +@@ -348,6 +340,12 @@ static void ecm_nss_ported_ipv6_connection_accelerate(struct ecm_front_end_conne ip_addr_t src_ip; ip_addr_t dest_ip; ecm_front_end_acceleration_mode_t result_mode; @@ -87,9 +87,9 @@ index 1be8a58..3062c12 100644 + tn = nf_tcp_pernet(net); + } - DEBUG_CHECK_MAGIC(npci, ECM_NSS_PORTED_IPV6_CONNECTION_INSTANCE_MAGIC, "%px: magic failed", npci); + DEBUG_CHECK_MAGIC(feci, ECM_FRONT_END_CONNECTION_INSTANCE_MAGIC, "%px: magic failed", feci); -@@ -1161,11 +1159,7 @@ static void ecm_nss_ported_ipv6_connection_accelerate(struct ecm_front_end_conne +@@ -1138,11 +1136,7 @@ static void ecm_nss_ported_ipv6_connection_accelerate(struct ecm_front_end_conne nircm->tcp_rule.return_max_window = ct->proto.tcp.seen[return_dir].td_maxwin; nircm->tcp_rule.return_end = ct->proto.tcp.seen[return_dir].td_end; nircm->tcp_rule.return_max_end = ct->proto.tcp.seen[return_dir].td_maxend; @@ -106,8 +106,8 @@ diff --git a/frontends/sfe/ecm_sfe_ported_ipv4.c b/frontends/sfe/ecm_sfe_ported_ index 6e375f8..e5ae593 100644 --- a/frontends/sfe/ecm_sfe_ported_ipv4.c +++ b/frontends/sfe/ecm_sfe_ported_ipv4.c -@@ -123,14 +123,6 @@ struct ecm_sfe_ported_ipv4_connection_instance { - static int ecm_sfe_ported_ipv4_accelerated_count[ECM_SFE_PORTED_IPV4_PROTO_MAX] = {0}; +@@ -92,14 +92,6 @@ + static int ecm_sfe_ported_ipv4_accelerated_count[ECM_FRONT_END_PORTED_PROTO_MAX] = {0}; /* Array of Number of TCP and UDP connections currently offloaded */ -/* @@ -119,13 +119,15 @@ index 6e375f8..e5ae593 100644 -extern int nf_ct_tcp_be_liberal; - /* - * ecm_sfe_ported_ipv4_get_stats_bitmap() - * Get bit map -@@ -357,9 +357,15 @@ static void ecm_sfe_ported_ipv4_connecti + * ecm_sfe_ported_ipv4_connection_callback() + * Callback for handling create ack/nack calls. +@@ -336,11 +328,17 @@ static void ecm_sfe_ported_ipv4_connection_accelerate(struct ecm_front_end_conne uint8_t dest_mac_xlate[ETH_ALEN]; ecm_db_direction_t ecm_dir; ecm_front_end_acceleration_mode_t result_mode; + struct nf_tcp_net *tn; + struct ecm_classifier_instance *aci; + struct ecm_classifier_rule_create ecrc; uint32_t l2_accel_bits = (ECM_SFE_COMMON_FLOW_L2_ACCEL_ALLOWED | ECM_SFE_COMMON_RETURN_L2_ACCEL_ALLOWED); ecm_sfe_common_l2_accel_check_callback_t l2_accel_check; @@ -134,10 +136,10 @@ index 6e375f8..e5ae593 100644 + tn = nf_tcp_pernet(net); + } + - DEBUG_CHECK_MAGIC(feci, ECM_FRONT_END_CONNECTION_INSTANCE_MAGIC, "%px: magic failed", feci); + DEBUG_CHECK_MAGIC(feci, ECM_FRONT_END_CONNECTION_INSTANCE_MAGIC, "%px: magic failed", feci); /* -@@ -1332,11 +1330,7 @@ static void ecm_sfe_ported_ipv4_connection_accelerate(struct ecm_front_end_conne +@@ -1286,11 +1284,7 @@ static void ecm_sfe_ported_ipv4_connection_accelerate(struct ecm_front_end_conne nircm->tcp_rule.return_max_window = ct->proto.tcp.seen[return_dir].td_maxwin; nircm->tcp_rule.return_end = ct->proto.tcp.seen[return_dir].td_end; nircm->tcp_rule.return_max_end = ct->proto.tcp.seen[return_dir].td_maxend; @@ -154,8 +156,8 @@ diff --git a/frontends/sfe/ecm_sfe_ported_ipv6.c b/frontends/sfe/ecm_sfe_ported_ index f1885aa..4a6fdbd 100644 --- a/frontends/sfe/ecm_sfe_ported_ipv6.c +++ b/frontends/sfe/ecm_sfe_ported_ipv6.c -@@ -124,14 +124,6 @@ struct ecm_sfe_ported_ipv6_connection_instance { - static int ecm_sfe_ported_ipv6_accelerated_count[ECM_SFE_PORTED_IPV6_PROTO_MAX] = {0}; +@@ -92,14 +92,6 @@ + static int ecm_sfe_ported_ipv6_accelerated_count[ECM_FRONT_END_PORTED_PROTO_MAX] = {0}; /* Array of Number of TCP and UDP connections currently offloaded */ -/* @@ -167,11 +169,11 @@ index f1885aa..4a6fdbd 100644 -extern int nf_ct_tcp_be_liberal; - /* - * ecm_sfe_ported_ipv6_get_stats_bitmap() - * Get bit map -@@ -361,9 +361,15 @@ static void ecm_sfe_ported_ipv6_connecti - ip_addr_t src_ip; - ip_addr_t dest_ip; + * ecm_sfe_ported_ipv6_connection_callback() + * Callback for handling create ack/nack calls. +@@ -342,9 +334,15 @@ static void ecm_sfe_ported_ipv6_connection_accelerate(struct ecm_front_end_conne + struct ecm_classifier_instance *aci; + struct ecm_classifier_rule_create ecrc; ecm_front_end_acceleration_mode_t result_mode; - uint32_t l2_accel_bits = (ECM_SFE_COMMON_FLOW_L2_ACCEL_ALLOWED | ECM_SFE_COMMON_RETURN_L2_ACCEL_ALLOWED); + struct nf_tcp_net *tn; @@ -183,10 +185,10 @@ index f1885aa..4a6fdbd 100644 + tn = nf_tcp_pernet(net); + } + - DEBUG_CHECK_MAGIC(feci, ECM_FRONT_END_CONNECTION_INSTANCE_MAGIC, "%px: magic failed", feci); + DEBUG_CHECK_MAGIC(feci, ECM_FRONT_END_CONNECTION_INSTANCE_MAGIC, "%px: magic failed", feci); /* -@@ -1292,11 +1290,7 @@ static void ecm_sfe_ported_ipv6_connection_accelerate(struct ecm_front_end_conne +@@ -1247,11 +1245,7 @@ static void ecm_sfe_ported_ipv6_connection_accelerate(struct ecm_front_end_conne nircm->tcp_rule.return_max_window = ct->proto.tcp.seen[return_dir].td_maxwin; nircm->tcp_rule.return_end = ct->proto.tcp.seen[return_dir].td_end; nircm->tcp_rule.return_max_end = ct->proto.tcp.seen[return_dir].td_maxend; @@ -199,5 +201,3 @@ index f1885aa..4a6fdbd 100644 || (ct->proto.tcp.seen[flow_dir].flags & IP_CT_TCP_FLAG_BE_LIBERAL) || (ct->proto.tcp.seen[return_dir].flags & IP_CT_TCP_FLAG_BE_LIBERAL)) { nircm->rule_flags |= SFE_RULE_CREATE_FLAG_NO_SEQ_CHECK; --- -2.40.0 diff --git a/qca/qca-nss-ecm/patches/0009-frontends-drop-udp_get_timeouts-and-use-standard-ups.patch b/qca/qca-nss-ecm/patches/0009-frontends-drop-udp_get_timeouts-and-use-standard-ups.patch index 5986293..1f17f78 100644 --- a/qca/qca-nss-ecm/patches/0009-frontends-drop-udp_get_timeouts-and-use-standard-ups.patch +++ b/qca/qca-nss-ecm/patches/0009-frontends-drop-udp_get_timeouts-and-use-standard-ups.patch @@ -17,7 +17,7 @@ diff --git a/frontends/nss/ecm_nss_ipv4.c b/frontends/nss/ecm_nss_ipv4.c index 719a747..558819a 100644 --- a/frontends/nss/ecm_nss_ipv4.c +++ b/frontends/nss/ecm_nss_ipv4.c -@@ -607,7 +607,8 @@ sync_conntrack: +@@ -610,7 +610,8 @@ sync_conntrack: #else timeouts = nf_ct_timeout_lookup(ct); if (!timeouts) { @@ -31,7 +31,7 @@ diff --git a/frontends/nss/ecm_nss_ipv6.c b/frontends/nss/ecm_nss_ipv6.c index 67ee364..51eb069 100644 --- a/frontends/nss/ecm_nss_ipv6.c +++ b/frontends/nss/ecm_nss_ipv6.c -@@ -586,7 +586,8 @@ sync_conntrack: +@@ -587,7 +587,8 @@ sync_conntrack: #else timeouts = nf_ct_timeout_lookup(ct); if (!timeouts) { @@ -45,7 +45,7 @@ diff --git a/frontends/sfe/ecm_sfe_ipv4.c b/frontends/sfe/ecm_sfe_ipv4.c index 3f30821..931af5d 100644 --- a/frontends/sfe/ecm_sfe_ipv4.c +++ b/frontends/sfe/ecm_sfe_ipv4.c -@@ -527,7 +527,8 @@ sync_conntrack: +@@ -538,7 +538,8 @@ sync_conntrack: #else timeouts = nf_ct_timeout_lookup(ct); if (!timeouts) { @@ -59,7 +59,7 @@ diff --git a/frontends/sfe/ecm_sfe_ipv6.c b/frontends/sfe/ecm_sfe_ipv6.c index 54fdbf3..63d8888 100644 --- a/frontends/sfe/ecm_sfe_ipv6.c +++ b/frontends/sfe/ecm_sfe_ipv6.c -@@ -516,7 +516,8 @@ sync_conntrack: +@@ -527,7 +527,8 @@ sync_conntrack: #else timeouts = nf_ct_timeout_lookup(ct); if (!timeouts) { @@ -69,5 +69,3 @@ index 54fdbf3..63d8888 100644 } spin_lock_bh(&ct->lock); --- -2.34.1 diff --git a/qca/qca-nss-ecm/patches/0010-ecm_interface-fix-ppp-generic-function-calls-for-5.15.patch b/qca/qca-nss-ecm/patches/0010-ecm_interface-fix-ppp-generic-function-calls-for-5.15.patch index a6a01a2..99710d7 100644 --- a/qca/qca-nss-ecm/patches/0010-ecm_interface-fix-ppp-generic-function-calls-for-5.15.patch +++ b/qca/qca-nss-ecm/patches/0010-ecm_interface-fix-ppp-generic-function-calls-for-5.15.patch @@ -1,6 +1,6 @@ --- a/ecm_interface.c +++ b/ecm_interface.c -@@ -3551,7 +3551,7 @@ identifier_update: +@@ -3553,7 +3553,7 @@ identifier_update: if (skb && (skb->skb_iif == dev->ifindex)) { struct pppol2tp_common_addr info; @@ -9,7 +9,7 @@ DEBUG_TRACE("%px: Net device: %px is MULTILINK PPP - Unknown to the ECM\n", feci, dev); type_info.unknown.os_specific_ident = dev_interface_num; -@@ -3561,7 +3561,7 @@ identifier_update: +@@ -3563,7 +3563,7 @@ identifier_update: ii = ecm_interface_unknown_interface_establish(&type_info.unknown, dev_name, dev_interface_num, ae_interface_num, dev_mtu); return ii; } diff --git a/qca/qca-nss-ecm/patches/100-qca-nss-ecm-Fix-conntrack-created-firewall-stopped.patch b/qca/qca-nss-ecm/patches/100-qca-nss-ecm-Fix-conntrack-created-firewall-stopped.patch index aaebad9..d92790c 100644 --- a/qca/qca-nss-ecm/patches/100-qca-nss-ecm-Fix-conntrack-created-firewall-stopped.patch +++ b/qca/qca-nss-ecm/patches/100-qca-nss-ecm-Fix-conntrack-created-firewall-stopped.patch @@ -2,9 +2,9 @@ diff --git a/ecm_conntrack_notifier.c b/ecm_conntrack_notifier.c index 50e8566..cf8bd33 100644 --- a/ecm_conntrack_notifier.c +++ b/ecm_conntrack_notifier.c -@@ -437,6 +437,26 @@ int ecm_conntrack_notifier_init(struct dentry *dentry) +@@ -433,6 +433,26 @@ int ecm_conntrack_notifier_init(struct dentry *dentry) #else - nf_conntrack_register_notifier(&init_net, &ecm_conntrack_notifier); + nf_conntrack_register_notifier(&init_net, &ecm_conntrack_notifier); #endif + + /* @@ -29,7 +29,7 @@ index 50e8566..cf8bd33 100644 #endif return 0; -@@ -450,6 +470,13 @@ void ecm_conntrack_notifier_exit(void) +@@ -446,6 +466,13 @@ void ecm_conntrack_notifier_exit(void) { DEBUG_INFO("ECM Conntrack Notifier exit\n"); #ifdef CONFIG_NF_CONNTRACK_EVENTS diff --git a/qca/qca-nss-ecm/patches/101-qca-nss-ecm-Skip-bridge-flow-packet-in-post-routing-hook.patch b/qca/qca-nss-ecm/patches/101-qca-nss-ecm-Skip-bridge-flow-packet-in-post-routing-hook.patch deleted file mode 100644 index efd56c9..0000000 --- a/qca/qca-nss-ecm/patches/101-qca-nss-ecm-Skip-bridge-flow-packet-in-post-routing-hook.patch +++ /dev/null @@ -1,57 +0,0 @@ -diff --git a/frontends/cmn/ecm_ipv4.c b/frontends/cmn/ecm_ipv4.c -index f69eb45c135be420968bc2de1101c3220a8faeb6..cac02b4bef4fb4da2d5b8411efeb496a6d406db9 100644 ---- a/frontends/cmn/ecm_ipv4.c -+++ b/frontends/cmn/ecm_ipv4.c -@@ -1502,6 +1502,37 @@ vxlan_done: - #endif - } - -+/* -+ * ecm_ipv4_is_bridge_pkt() -+ * Return true if pkt is from bridge flow. -+ * If in/out dev is a bridge port and the other dev is a master -+ * of the same bridge port dev, then consider it a bridge flow packetĀ  -+ * and return true. -+ */ -+static bool ecm_ipv4_is_bridge_pkt(struct net_device *in, -+ struct net_device *out) -+{ -+ struct net_device *lower = NULL; -+ struct net_device *upper = NULL; -+ struct net_device *bridge = NULL; -+ -+ if (in->priv_flags & IFF_BRIDGE_PORT) { -+ lower = in; -+ bridge = out; -+ } else if (out->priv_flags & IFF_BRIDGE_PORT) { -+ lower = out; -+ bridge = in; -+ } -+ -+ if (!lower) -+ return false; -+ -+ rcu_read_lock(); -+ upper = netdev_master_upper_dev_get_rcu(lower); -+ rcu_read_unlock(); -+ return upper && (upper == bridge); -+} -+ - /* - * ecm_ipv4_post_routing_hook() - * Called for IP packets that are going out to interfaces after IP routing stage. -@@ -1572,6 +1603,14 @@ static unsigned int ecm_ipv4_post_routing_hook(void *priv, - return NF_ACCEPT; - } - -+ /* -+ * Skip bridge flow packet -+ */ -+ if (ecm_ipv4_is_bridge_pkt(in, out)) { -+ DEBUG_TRACE("Bridge flow, ignoring: %px\n", skb); -+ dev_put(in); -+ return NF_ACCEPT; -+ } - #ifndef ECM_INTERFACE_OVS_BRIDGE_ENABLE - /* - * skip OpenVSwitch flows because we don't accelerate them diff --git a/qca/qca-nss-ecm/patches/900-treewide-export-ipv4-and-ipv6-symbols.patch b/qca/qca-nss-ecm/patches/900-treewide-export-ipv4-and-ipv6-symbols.patch index 0c65cfa..29d43ad 100644 --- a/qca/qca-nss-ecm/patches/900-treewide-export-ipv4-and-ipv6-symbols.patch +++ b/qca/qca-nss-ecm/patches/900-treewide-export-ipv4-and-ipv6-symbols.patch @@ -1,42 +1,6 @@ ---- a/frontends/nss/ecm_nss_ipv4.h -+++ b/frontends/nss/ecm_nss_ipv4.h -@@ -14,6 +14,9 @@ - ************************************************************************** - */ - -+#ifndef __ECM_FRONT_END_NSS_IPV4_H -+#define __ECM_FRONT_END_NSS_IPV4_H -+ - #include - - extern int ecm_nss_ipv4_no_action_limit_default; /* Default no-action limit. */ -@@ -168,3 +171,5 @@ extern void ecm_nss_ipv4_accel_done_time - extern void ecm_nss_ipv4_decel_done_time_update(struct ecm_front_end_connection_instance *feci); - extern int ecm_nss_ipv4_init(struct dentry *dentry); - extern void ecm_nss_ipv4_exit(void); -+ -+#endif /* __ECM_FRONT_END_NSS_IPV4_H */ ---- a/frontends/nss/ecm_nss_ipv6.h -+++ b/frontends/nss/ecm_nss_ipv6.h -@@ -14,6 +14,9 @@ - ************************************************************************** - */ - -+#ifndef __ECM_FRONT_END_NSS_IPV6_H -+#define __ECM_FRONT_END_NSS_IPV6_H -+ - #include - - extern int ecm_nss_ipv6_no_action_limit_default; /* Default no-action limit. */ -@@ -168,3 +171,5 @@ extern void ecm_nss_ipv6_accel_done_time - extern void ecm_nss_ipv6_decel_done_time_update(struct ecm_front_end_connection_instance *feci); - extern int ecm_nss_ipv6_init(struct dentry *dentry); - extern void ecm_nss_ipv6_exit(void); -+ -+#endif /* __ECM_FRONT_END_NSS_IPV6_H */ --- a/frontends/nss/ecm_nss_common.c +++ b/frontends/nss/ecm_nss_common.c -@@ -67,6 +67,7 @@ bool ecm_nss_ipv6_is_conn_limit_reached( +@@ -67,6 +67,7 @@ bool ecm_nss_ipv6_is_conn_limit_reached(void) return false; } @@ -44,27 +8,14 @@ #endif /* -@@ -93,3 +94,4 @@ bool ecm_nss_ipv4_is_conn_limit_reached( +@@ -116,3 +117,4 @@ bool ecm_nss_ipv4_is_conn_limit_reached(void) return false; } +EXPORT_SYMBOL(ecm_nss_ipv4_is_conn_limit_reached); ---- a/frontends/nss/ecm_nss_non_ported_ipv4.h -+++ b/frontends/nss/ecm_nss_non_ported_ipv4.h -@@ -19,7 +19,7 @@ - - extern bool ecm_nss_non_ported_ipv4_debugfs_init(struct dentry *dentry); - --extern struct ecm_front_end_connection_instance *ecm_nss_non_ported_ipv4_connection_instance_alloc( -- bool can_accel, int protocol, -- struct ecm_db_connection_instance **nci); -+struct ecm_front_end_connection_instance *ecm_nss_non_ported_ipv4_connection_instance_alloc( -+ bool can_accel, int protocol, -+ struct ecm_db_connection_instance **nci); - extern void ecm_nss_non_ported_ipv4_sit_set_peer(struct ecm_front_end_connection_instance *feci, struct sk_buff *skb); --- a/frontends/nss/ecm_nss_non_ported_ipv4.c +++ b/frontends/nss/ecm_nss_non_ported_ipv4.c -@@ -1822,6 +1822,7 @@ struct ecm_front_end_connection_instance +@@ -1824,6 +1824,7 @@ struct ecm_front_end_connection_instance *ecm_nss_non_ported_ipv4_connection_ins return feci; } @@ -72,23 +23,20 @@ /* * ecm_nss_non_ported_ipv4_debugfs_init() ---- a/frontends/nss/ecm_nss_non_ported_ipv6.h -+++ b/frontends/nss/ecm_nss_non_ported_ipv6.h +--- a/frontends/nss/ecm_nss_non_ported_ipv4.h ++++ b/frontends/nss/ecm_nss_non_ported_ipv4.h @@ -19,7 +19,7 @@ - extern bool ecm_nss_non_ported_ipv6_debugfs_init(struct dentry *dentry); + extern bool ecm_nss_non_ported_ipv4_debugfs_init(struct dentry *dentry); --extern struct ecm_front_end_connection_instance *ecm_nss_non_ported_ipv6_connection_instance_alloc( -- bool can_accel, -- int protocol, -- struct ecm_db_connection_instance **nci); -+struct ecm_front_end_connection_instance *ecm_nss_non_ported_ipv6_connection_instance_alloc( -+ bool can_accel, -+ int protocol, -+ struct ecm_db_connection_instance **nci); +-extern struct ecm_front_end_connection_instance *ecm_nss_non_ported_ipv4_connection_instance_alloc( ++struct ecm_front_end_connection_instance *ecm_nss_non_ported_ipv4_connection_instance_alloc( + uint32_t accel_flags, + int protocol, + struct ecm_db_connection_instance **nci); --- a/frontends/nss/ecm_nss_non_ported_ipv6.c +++ b/frontends/nss/ecm_nss_non_ported_ipv6.c -@@ -1648,6 +1648,7 @@ struct ecm_front_end_connection_instance +@@ -1650,6 +1650,7 @@ struct ecm_front_end_connection_instance *ecm_nss_non_ported_ipv6_connection_ins return feci; } @@ -96,23 +44,20 @@ /* * ecm_nss_non_ported_ipv6_debugfs_init() ---- a/frontends/nss/ecm_nss_ported_ipv4.h -+++ b/frontends/nss/ecm_nss_ported_ipv4.h +--- a/frontends/nss/ecm_nss_non_ported_ipv6.h ++++ b/frontends/nss/ecm_nss_non_ported_ipv6.h @@ -19,7 +19,7 @@ - extern bool ecm_nss_ported_ipv4_debugfs_init(struct dentry *dentry); + extern bool ecm_nss_non_ported_ipv6_debugfs_init(struct dentry *dentry); --extern struct ecm_front_end_connection_instance *ecm_nss_ported_ipv4_connection_instance_alloc( -- bool can_accel, -- int protocol, -- struct ecm_db_connection_instance **nci); -+struct ecm_front_end_connection_instance *ecm_nss_ported_ipv4_connection_instance_alloc( -+ bool can_accel, -+ int protocol, -+ struct ecm_db_connection_instance **nci); +-extern struct ecm_front_end_connection_instance *ecm_nss_non_ported_ipv6_connection_instance_alloc( ++struct ecm_front_end_connection_instance *ecm_nss_non_ported_ipv6_connection_instance_alloc( + uint32_t accel_flags, + int protocol, + struct ecm_db_connection_instance **nci); --- a/frontends/nss/ecm_nss_ported_ipv4.c +++ b/frontends/nss/ecm_nss_ported_ipv4.c -@@ -1877,6 +1877,7 @@ struct ecm_front_end_connection_instance +@@ -1884,6 +1884,7 @@ struct ecm_front_end_connection_instance *ecm_nss_ported_ipv4_connection_instanc return feci; } @@ -120,23 +65,20 @@ /* * ecm_nss_ported_ipv4_debugfs_init() ---- a/frontends/nss/ecm_nss_ported_ipv6.h -+++ b/frontends/nss/ecm_nss_ported_ipv6.h +--- a/frontends/nss/ecm_nss_ported_ipv4.h ++++ b/frontends/nss/ecm_nss_ported_ipv4.h @@ -19,7 +19,7 @@ - extern bool ecm_nss_ported_ipv6_debugfs_init(struct dentry *dentry); + extern bool ecm_nss_ported_ipv4_debugfs_init(struct dentry *dentry); --extern struct ecm_front_end_connection_instance *ecm_nss_ported_ipv6_connection_instance_alloc( -- bool can_accel, -- int protocol, -- struct ecm_db_connection_instance **nci); -+struct ecm_front_end_connection_instance *ecm_nss_ported_ipv6_connection_instance_alloc( -+ bool can_accel, -+ int protocol, -+ struct ecm_db_connection_instance **nci); +-extern struct ecm_front_end_connection_instance *ecm_nss_ported_ipv4_connection_instance_alloc( ++struct ecm_front_end_connection_instance *ecm_nss_ported_ipv4_connection_instance_alloc( + uint32_t accel_flags, + int protocol, + struct ecm_db_connection_instance **nci); --- a/frontends/nss/ecm_nss_ported_ipv6.c +++ b/frontends/nss/ecm_nss_ported_ipv6.c -@@ -1791,6 +1791,7 @@ struct ecm_front_end_connection_instance +@@ -1797,6 +1797,7 @@ struct ecm_front_end_connection_instance *ecm_nss_ported_ipv6_connection_instanc return feci; } @@ -144,3 +86,14 @@ /* * ecm_nss_ported_ipv6_debugfs_init() +--- a/frontends/nss/ecm_nss_ported_ipv6.h ++++ b/frontends/nss/ecm_nss_ported_ipv6.h +@@ -19,7 +19,7 @@ + + extern bool ecm_nss_ported_ipv6_debugfs_init(struct dentry *dentry); + +-extern struct ecm_front_end_connection_instance *ecm_nss_ported_ipv6_connection_instance_alloc( ++struct ecm_front_end_connection_instance *ecm_nss_ported_ipv6_connection_instance_alloc( + uint32_t accel_flags, + int protocol, + struct ecm_db_connection_instance **nci);