qca-nss-ecm: update to QSDK 12.3r2

Bump QCA NSS ECM to NHSS.QSDK.12.3.r2 tag.

Massive thanks to @AgustinLorenzo.

Reference:
8d73961018
This commit is contained in:
bitthief 2023-05-08 15:13:34 +03:00
parent cd3706b916
commit 07350c9f03
14 changed files with 168 additions and 285 deletions

View File

@ -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+= \

View File

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

View File

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

View File

@ -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
* Destination IP address is local

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -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;
}

View File

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

View File

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

View File

@ -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 <nss_api_if.h>
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 <nss_api_if.h>
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);