Merge remote-tracking branch 'qos/NSS-12.5-K6.x' into NSS-12.5-K6.x

This commit is contained in:
breeze303 2024-09-27 21:10:50 +08:00
commit 2b94eaf3ba
18 changed files with 487 additions and 58 deletions

View File

@ -1,7 +1,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=qca-nss-cfi
PKG_RELEASE:=2
PKG_RELEASE:=3
PKG_SOURCE_URL:=https://git.codelinaro.org/clo/qsdk/oss/lklm/nss-cfi.git
PKG_SOURCE_PROTO:=git

View File

@ -0,0 +1,72 @@
--- a/cryptoapi/v2.0/nss_cryptoapi_aead.c
+++ b/cryptoapi/v2.0/nss_cryptoapi_aead.c
@@ -97,9 +97,9 @@ int nss_cryptoapi_aead_init(struct crypt
bool need_fallback;
BUG_ON(!ctx);
- NSS_CRYPTOAPI_SET_MAGIC(ctx);
memset(ctx, 0, sizeof(struct nss_cryptoapi_ctx));
+ NSS_CRYPTOAPI_SET_MAGIC(ctx);
ctx->user = g_cryptoapi.user;
ctx->stats.init++;
--- a/cryptoapi/v2.0/nss_cryptoapi_ahash.c
+++ b/cryptoapi/v2.0/nss_cryptoapi_ahash.c
@@ -231,8 +231,10 @@ int nss_cryptoapi_ahash_setkey(struct cr
void nss_cryptoapi_ahash_done(void *app_data, struct nss_crypto_hdr *ch, uint8_t status)
{
struct ahash_request *req = app_data;
- struct nss_cryptoapi_ctx *ctx = crypto_tfm_ctx(req->base.tfm);
+ struct crypto_ahash *ahash = crypto_ahash_reqtfm(req);
+ struct nss_cryptoapi_ctx *ctx = crypto_ahash_ctx(ahash);
struct nss_cryptoapi_req_ctx *rctx = ahash_request_ctx(req);
+
uint8_t *hw_hmac;
int error;
@@ -268,7 +270,7 @@ void nss_cryptoapi_ahash_done(void *app_
* Decrement cryptoapi reference
*/
nss_cryptoapi_ref_dec(ctx);
- req->base.complete(&req->base, error);
+ ahash_request_complete(req, error);
}
/*
--- a/cryptoapi/v2.0/nss_cryptoapi_skcipher.c
+++ b/cryptoapi/v2.0/nss_cryptoapi_skcipher.c
@@ -92,9 +92,9 @@ int nss_cryptoapi_skcipher_init(struct c
struct nss_cryptoapi_ctx *ctx = crypto_skcipher_ctx(tfm);
BUG_ON(!ctx);
- NSS_CRYPTOAPI_SET_MAGIC(ctx);
memset(ctx, 0, sizeof(struct nss_cryptoapi_ctx));
+ NSS_CRYPTOAPI_SET_MAGIC(ctx);
ctx->user = g_cryptoapi.user;
ctx->stats.init++;
@@ -220,11 +220,11 @@ int nss_cryptoapi_skcipher_setkey(struct
void nss_cryptoapi_skcipher_done(void *app_data, struct nss_crypto_hdr *ch, uint8_t status)
{
struct skcipher_request *req = app_data;
- struct nss_cryptoapi_ctx *ctx = skcipher_request_ctx(req);
+ struct crypto_skcipher *cipher = crypto_skcipher_reqtfm(req);
+ struct nss_cryptoapi_ctx *ctx = crypto_skcipher_ctx(cipher);
int error;
BUG_ON(!ch);
-
/*
* Check cryptoapi context magic number.
*/
@@ -256,7 +256,7 @@ void nss_cryptoapi_skcipher_done(void *a
* Decrement cryptoapi reference
*/
nss_cryptoapi_ref_dec(ctx);
- req->base.complete(&req->base, error);
+ skcipher_request_complete(req, error);
}
/*

View File

@ -1,7 +1,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=qca-nss-crypto
PKG_RELEASE:=2
PKG_RELEASE:=3
PKG_SOURCE_URL:=https://git.codelinaro.org/clo/qsdk/oss/lklm/nss-crypto.git
PKG_SOURCE_PROTO:=git
@ -28,7 +28,7 @@ define KernelPackage/qca-nss-crypto
SECTION:=kernel
CATEGORY:=Kernel modules
SUBMENU:=Cryptographic API modules
DEPENDS:=@TARGET_qualcommax +kmod-qca-nss-drv +@NSS_DRV_CRYPTO_ENABLE @BROKEN
DEPENDS:=@TARGET_qualcommax +kmod-qca-nss-drv +nss-eip-firmware +@NSS_DRV_CRYPTO_ENABLE
TITLE:=Kernel driver for NSS crypto driver
FILES:=$(PKG_BUILD_DIR)/$(NSS_CRYPTO_DIR)/src/qca-nss-crypto.ko \
$(PKG_BUILD_DIR)/$(NSS_CRYPTO_DIR)/tool/qca-nss-crypto-tool.ko

View File

@ -0,0 +1,76 @@
commit 1db9e5510558817d138de87f5a4942293a9fcb91
Author: syed touqeer pasha <quic_spasha@quicinc.com>
AuthorDate: Thu May 16 14:59:48 2024 +0530
Commit: syed touqeer pasha <quic_spasha@quicinc.com>
CommitDate: Thu May 16 14:59:48 2024 +0530
[qca-nss-drv] Add missing error code for wifili pkg.
Add missing error code between nss fw and nss drv.
Change-Id: I3f81da10b33fd15b1817a40eb906df9642a10d98
Signed-off-by: syed touqeer pasha <quic_spasha@quicinc.com>
--- a/exports/nss_wifili_if.h
+++ b/exports/nss_wifili_if.h
@@ -392,6 +392,60 @@ enum nss_wifili_error_types {
/**< Invalid TLV length. */
NSS_WIFILI_EMESG_RX_BUF_LEN_INVALID,
/**< Invalid Rx buffer length. */
+ NSS_WIFILI_EMSG_INVALID_PDEV_ID,
+ /**< Invalid pdev id from host. */
+ NSS_WIFILI_EMSG_NO_PDEV_PRESENT,
+ /**< Pdev corresponding to this pdev id is not present. */
+ NSS_WIFILI_EMESG_WDS_UPDATE_FAIL,
+ /**< Wds peer ast update failed. */
+ NSS_WIFILI_EMSG_VLAN_ID_SET_FAIL,
+ /**< Vlan id set failed. */
+ NSS_WIFILI_EMSG_PDEV_UPDATE_INVALID_RADIOID_FAIL,
+ /**< Pdev update failed due to invalid radio id. */
+ NSS_WIFILI_EMSG_PDEV_UPDATE_INVALID_LMACID_FAIL,
+ /**< Pdev update failed due to invalid lmac id. */
+ NSS_WIFILI_EMSG_PDEV_UPDATE_INVALID_TARGETPDEVID_FAIL,
+ /**< Pdev update failed due to invalid target pdev id. */
+ NSS_WIFILI_EMESG_PEER_AST_FLOWID_MAP_VAPID_INVALID_FAIL,
+ /**< Peer ast flow map failed due to invalid vdev_id. */
+ NSS_WIFILI_EMESG_PEER_AST_FLOWID_MAP_VDEV_NULL_FAIL,
+ /**< Peer ast flow map failed due to vdev null. */
+ NSS_WIFILI_EMESG_PEER_AST_FLOWID_MAP_PEERID_INVALID_FAIL,
+ /**< Peer ast flow map failed due to invalid peer_id. */
+ NSS_WIFILI_EMSG_PEER_AST_FLOWID_MAP_STA_VAP_FAIL,
+ /**< Peer ast flowid map failed due to sta vap. */
+ NSS_WIFILI_EMESG_PEER_AST_FLOWID_MAP_PEERID_MISMATCH_FAIL,
+ /**< Peer ast flow map failed due to mismatched peer_id. */
+ NSS_WIFILI_EMESG_PEER_AST_FLOWID_MAP_PEER_NULL_FAIL,
+ /**< Peer ast flow map failed due to peer null. */
+ NSS_WIFILI_EMSG_PEER_AST_FLOWID_MAP_AST_MISMATCH_FAIL,
+ /**< Peer ast flow map failed due to mismatched ast index. */
+ NSS_WIFILI_EMSG_INVALID_V3_STATS_TYPE,
+ /**< Invalid v3 stats type. */
+ NSS_WIFILI_EMSG_ISOLATION_SET_FAIL,
+ /**< Peer isolation set failed. */
+ NSS_WIFILI_EMESG_WDS_ALREADY_PRESENT,
+ /**< Wds peer ast add failed. */
+ NSS_WIFILI_EMSG_STATS_CLR_VDEV_NULL_FAIL,
+ /**< Statistics clear failed due to null vdev. */
+ NSS_WIFILI_EMSG_INVALID_VDEV_ID,
+ /**< Invalid vdev id from host. */
+ NSS_WIFILI_EMSG_PDEV_INIT_FAIL_INVALID_THREAD_SCHEME_ID,
+ /**< Incorrect scheme ID sent from host. */
+ NSS_WIFILI_EMSG_PEER_WDS_4ADDR_EVENT_INV_PEER,
+ /**< Invalid peer ID sent from host. */
+ NSS_WIFILI_EMSG_PEER_WDS_INVALID_IFNUM,
+ /**< Invalid peer ID sent from host. */
+ NSS_WIFILI_EMSG_PEER_AUTH_FLAG_UPDATE_FAIL,
+ /**< Peer authentication flag update failed. */
+ NSS_WIFILI_EMSG_PEER_TEARDOWN_ALLOC_FAIL,
+ /**< Alloc fail in peer tear down path. */
+ NSS_WIFILI_EMSG_TX_CAPTURE_MODE_UPDATE_FAIL,
+ /**< Tx capture mode update failure. */
+ NSS_WIFILI_EMSG_PEER_MEMORY_INSUFFICIENT_FROM_HOST,
+ /**< Peer memory from host is less than NSS peer struct. */
+ NSS_WIFILI_EMSG_DUPLICATE_MPASS_ID_SET,
+ /**< Duplicate mpass vlan id set. */
NSS_WIFILI_EMSG_UNKNOWN
/**< Unknown error message. */
};

View File

@ -0,0 +1,39 @@
--- a/nss_wifi_mesh_strings.c
+++ b/nss_wifi_mesh_strings.c
@@ -80,8 +80,8 @@ struct nss_stats_info nss_wifi_mesh_stri
{"not_found", NSS_STATS_TYPE_SPECIAL},
{"delete_success", NSS_STATS_TYPE_SPECIAL},
{"update_success", NSS_STATS_TYPE_SPECIAL},
- {"mesh_path_expired", NSS_STATS_TYPE_SPECIAL},
- {"mesh_path_refresh_needed", NSS_STATS_TYPE_SPECIAL},
+ {"path_expired", NSS_STATS_TYPE_SPECIAL},
+ {"path_refresh_needed", NSS_STATS_TYPE_SPECIAL},
{"add_requests", NSS_STATS_TYPE_SPECIAL},
{"del_requests", NSS_STATS_TYPE_SPECIAL},
{"update_requests", NSS_STATS_TYPE_SPECIAL},
@@ -91,8 +91,8 @@ struct nss_stats_info nss_wifi_mesh_stri
{"metric_updations", NSS_STATS_TYPE_SPECIAL},
{"block_mesh_fwd_updations", NSS_STATS_TYPE_SPECIAL},
{"delete_failures", NSS_STATS_TYPE_SPECIAL},
- {"mesh_path_dummy_add_failures",NSS_STATS_TYPE_SPECIAL},
- {"mesh_path_dummy_add_success", NSS_STATS_TYPE_SPECIAL}
+ {"path_dummy_add_failures", NSS_STATS_TYPE_SPECIAL},
+ {"path_dummy_add_success", NSS_STATS_TYPE_SPECIAL}
};
@@ -126,10 +126,10 @@ struct nss_stats_info nss_wifi_mesh_stri
{"update_requests", NSS_STATS_TYPE_SPECIAL},
{"mda_updations", NSS_STATS_TYPE_SPECIAL},
{"flag_updations", NSS_STATS_TYPE_SPECIAL},
- {"mesh_proxy_path_dummy_lookup_success", NSS_STATS_TYPE_SPECIAL},
- {"mesh_proxy_path_dummy_lookup_failures", NSS_STATS_TYPE_SPECIAL},
- {"mesh_proxy_path_dummy_add_failures", NSS_STATS_TYPE_SPECIAL},
- {"mesh_proxy_path_dummy_add_success", NSS_STATS_TYPE_SPECIAL}
+ {"proxy_path_dummy_lookup_success", NSS_STATS_TYPE_SPECIAL},
+ {"proxy_path_dummy_lookup_failures", NSS_STATS_TYPE_SPECIAL},
+ {"proxy_path_dummy_add_failures", NSS_STATS_TYPE_SPECIAL},
+ {"proxy_path_dummy_add_success", NSS_STATS_TYPE_SPECIAL}
};
/*

View File

@ -0,0 +1,76 @@
commit 1db9e5510558817d138de87f5a4942293a9fcb91
Author: syed touqeer pasha <quic_spasha@quicinc.com>
AuthorDate: Thu May 16 14:59:48 2024 +0530
Commit: syed touqeer pasha <quic_spasha@quicinc.com>
CommitDate: Thu May 16 14:59:48 2024 +0530
[qca-nss-drv] Add missing error code for wifili pkg.
Add missing error code between nss fw and nss drv.
Change-Id: I3f81da10b33fd15b1817a40eb906df9642a10d98
Signed-off-by: syed touqeer pasha <quic_spasha@quicinc.com>
--- a/exports/nss_wifili_if.h
+++ b/exports/nss_wifili_if.h
@@ -404,8 +404,60 @@ enum nss_wifili_error_types {
/**< Invalid TLV length. */
NSS_WIFILI_EMESG_RX_BUF_LEN_INVALID,
/**< Invalid Rx buffer length. */
+ NSS_WIFILI_EMSG_INVALID_PDEV_ID,
+ /**< Invalid pdev id from host. */
+ NSS_WIFILI_EMSG_NO_PDEV_PRESENT,
+ /**< Pdev corresponding to this pdev id is not present. */
+ NSS_WIFILI_EMESG_WDS_UPDATE_FAIL,
+ /**< Wds peer ast update failed. */
+ NSS_WIFILI_EMSG_VLAN_ID_SET_FAIL,
+ /**< Vlan id set failed. */
+ NSS_WIFILI_EMSG_PDEV_UPDATE_INVALID_RADIOID_FAIL,
+ /**< Pdev update failed due to invalid radio id. */
+ NSS_WIFILI_EMSG_PDEV_UPDATE_INVALID_LMACID_FAIL,
+ /**< Pdev update failed due to invalid lmac id. */
+ NSS_WIFILI_EMSG_PDEV_UPDATE_INVALID_TARGETPDEVID_FAIL,
+ /**< Pdev update failed due to invalid target pdev id. */
+ NSS_WIFILI_EMESG_PEER_AST_FLOWID_MAP_VAPID_INVALID_FAIL,
+ /**< Peer ast flow map failed due to invalid vdev_id. */
+ NSS_WIFILI_EMESG_PEER_AST_FLOWID_MAP_VDEV_NULL_FAIL,
+ /**< Peer ast flow map failed due to vdev null. */
+ NSS_WIFILI_EMESG_PEER_AST_FLOWID_MAP_PEERID_INVALID_FAIL,
+ /**< Peer ast flow map failed due to invalid peer_id. */
+ NSS_WIFILI_EMSG_PEER_AST_FLOWID_MAP_STA_VAP_FAIL,
+ /**< Peer ast flowid map failed due to sta vap. */
+ NSS_WIFILI_EMESG_PEER_AST_FLOWID_MAP_PEERID_MISMATCH_FAIL,
+ /**< Peer ast flow map failed due to mismatched peer_id. */
+ NSS_WIFILI_EMESG_PEER_AST_FLOWID_MAP_PEER_NULL_FAIL,
+ /**< Peer ast flow map failed due to peer null. */
+ NSS_WIFILI_EMSG_PEER_AST_FLOWID_MAP_AST_MISMATCH_FAIL,
+ /**< Peer ast flow map failed due to mismatched ast index. */
+ NSS_WIFILI_EMSG_INVALID_V3_STATS_TYPE,
+ /**< Invalid v3 stats type. */
+ NSS_WIFILI_EMSG_ISOLATION_SET_FAIL,
+ /**< Peer isolation set failed. */
+ NSS_WIFILI_EMESG_WDS_ALREADY_PRESENT,
+ /**< Wds peer ast add failed. */
+ NSS_WIFILI_EMSG_STATS_CLR_VDEV_NULL_FAIL,
+ /**< Statistics clear failed due to null vdev. */
+ NSS_WIFILI_EMSG_INVALID_VDEV_ID,
+ /**< Invalid vdev id from host. */
+ NSS_WIFILI_EMSG_PDEV_INIT_FAIL_INVALID_THREAD_SCHEME_ID,
+ /**< Incorrect scheme ID sent from host. */
+ NSS_WIFILI_EMSG_PEER_WDS_4ADDR_EVENT_INV_PEER,
+ /**< Invalid peer ID sent from host. */
+ NSS_WIFILI_EMSG_PEER_WDS_INVALID_IFNUM,
+ /**< Invalid peer ID sent from host. */
+ NSS_WIFILI_EMSG_PEER_AUTH_FLAG_UPDATE_FAIL,
+ /**< Peer authentication flag update failed. */
+ NSS_WIFILI_EMSG_PEER_TEARDOWN_ALLOC_FAIL,
+ /**< Alloc fail in peer tear down path. */
NSS_WIFILI_EMSG_TX_CAPTURE_MODE_UPDATE_FAIL,
/**< Tx capture mode update failure. */
+ NSS_WIFILI_EMSG_PEER_MEMORY_INSUFFICIENT_FROM_HOST,
+ /**< Peer memory from host is less than NSS peer struct. */
+ NSS_WIFILI_EMSG_DUPLICATE_MPASS_ID_SET,
+ /**< Duplicate mpass vlan id set. */
NSS_WIFILI_EMSG_UNKNOWN
/**< Unknown error message. */
};

View File

@ -0,0 +1,39 @@
--- a/nss_wifi_mesh_strings.c
+++ b/nss_wifi_mesh_strings.c
@@ -80,8 +80,8 @@ struct nss_stats_info nss_wifi_mesh_stri
{"not_found", NSS_STATS_TYPE_SPECIAL},
{"delete_success", NSS_STATS_TYPE_SPECIAL},
{"update_success", NSS_STATS_TYPE_SPECIAL},
- {"mesh_path_expired", NSS_STATS_TYPE_SPECIAL},
- {"mesh_path_refresh_needed", NSS_STATS_TYPE_SPECIAL},
+ {"path_expired", NSS_STATS_TYPE_SPECIAL},
+ {"path_refresh_needed", NSS_STATS_TYPE_SPECIAL},
{"add_requests", NSS_STATS_TYPE_SPECIAL},
{"del_requests", NSS_STATS_TYPE_SPECIAL},
{"update_requests", NSS_STATS_TYPE_SPECIAL},
@@ -91,8 +91,8 @@ struct nss_stats_info nss_wifi_mesh_stri
{"metric_updations", NSS_STATS_TYPE_SPECIAL},
{"block_mesh_fwd_updations", NSS_STATS_TYPE_SPECIAL},
{"delete_failures", NSS_STATS_TYPE_SPECIAL},
- {"mesh_path_dummy_add_failures",NSS_STATS_TYPE_SPECIAL},
- {"mesh_path_dummy_add_success", NSS_STATS_TYPE_SPECIAL}
+ {"path_dummy_add_failures", NSS_STATS_TYPE_SPECIAL},
+ {"path_dummy_add_success", NSS_STATS_TYPE_SPECIAL}
};
@@ -126,10 +126,10 @@ struct nss_stats_info nss_wifi_mesh_stri
{"update_requests", NSS_STATS_TYPE_SPECIAL},
{"mda_updations", NSS_STATS_TYPE_SPECIAL},
{"flag_updations", NSS_STATS_TYPE_SPECIAL},
- {"mesh_proxy_path_dummy_lookup_success", NSS_STATS_TYPE_SPECIAL},
- {"mesh_proxy_path_dummy_lookup_failures", NSS_STATS_TYPE_SPECIAL},
- {"mesh_proxy_path_dummy_add_failures", NSS_STATS_TYPE_SPECIAL},
- {"mesh_proxy_path_dummy_add_success", NSS_STATS_TYPE_SPECIAL}
+ {"proxy_path_dummy_lookup_success", NSS_STATS_TYPE_SPECIAL},
+ {"proxy_path_dummy_lookup_failures", NSS_STATS_TYPE_SPECIAL},
+ {"proxy_path_dummy_add_failures", NSS_STATS_TYPE_SPECIAL},
+ {"proxy_path_dummy_add_success", NSS_STATS_TYPE_SPECIAL}
};
/*

View File

@ -1,14 +1,14 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=qca-nss-ecm
PKG_RELEASE:=4
PKG_RELEASE:=1
PKG_SOURCE_URL:=https://git.codelinaro.org/clo/qsdk/oss/lklm/qca-nss-ecm.git
PKG_SOURCE_PROTO:=git
PKG_SOURCE_DATE:=2024-06-20
PKG_SOURCE_VERSION:=92c7fa1
PKG_MIRROR_HASH:=d69d09fe8e3d6339085854de4f5a44dbfdc9648f5d5f9001a874ac177e2bf16b
QSDK_VERSION:=12.5
PKG_SOURCE_DATE:=2024-09-02
PKG_SOURCE_VERSION:=bd5057b
PKG_MIRROR_HASH:=b50130ee65b575226e1d715d38b09cc496a901ea1d2ef48a83e727d61e0d8283
QSDK_VERSION:=12.5.5
PKG_VERSION:=$(QSDK_VERSION).$(subst -,.,$(PKG_SOURCE_DATE))~$(PKG_SOURCE_VERSION)
PKG_BUILD_PARALLEL:=1

View File

@ -32,7 +32,7 @@ Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
ecm-y := \
frontends/cmn/ecm_ae_classifier.o \
@@ -115,10 +117,18 @@ ccflags-$(ECM_INTERFACE_BOND_ENABLE) +=
@@ -117,10 +119,18 @@ ccflags-$(ECM_INTERFACE_BOND_ENABLE) +=
# Define ECM_INTERFACE_PPPOE_ENABLE=y in order
# to enable support for PPPoE acceleration.
# #############################################################################
@ -52,7 +52,7 @@ Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
# Define ECM_INTERFACE_L2TPV2_ENABLE=y in order
# to enable support for l2tpv2 acceleration.
# #############################################################################
@@ -151,6 +161,12 @@ endif
@@ -153,6 +163,12 @@ endif
ccflags-$(ECM_INTERFACE_PPP_ENABLE) += -DECM_INTERFACE_PPP_ENABLE
# #############################################################################
@ -65,7 +65,7 @@ Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
# Define ECM_INTERFACE_GRE_TAP_ENABLE=y in order
# to enable support for GRE TAP interface.
# #############################################################################
@@ -233,7 +249,9 @@ ccflags-$(ECM_INTERFACE_OVS_BRIDGE_ENABL
@@ -235,7 +251,9 @@ ccflags-$(ECM_INTERFACE_OVS_BRIDGE_ENABL
# #############################################################################
# Define ECM_INTERFACE_VLAN_ENABLE=y in order to enable support for VLAN
# #############################################################################
@ -76,7 +76,7 @@ Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
ccflags-$(ECM_INTERFACE_VLAN_ENABLE) += -DECM_INTERFACE_VLAN_ENABLE
# #############################################################################
@@ -275,7 +293,9 @@ ccflags-$(ECM_CLASSIFIER_OVS_ENABLE) +=
@@ -279,7 +297,9 @@ ccflags-$(ECM_CLASSIFIER_OVS_ENABLE) +=
# #############################################################################
# Define ECM_CLASSIFIER_MARK_ENABLE=y in order to enable mark classifier.
# #############################################################################
@ -87,7 +87,7 @@ Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
ecm-$(ECM_CLASSIFIER_MARK_ENABLE) += ecm_classifier_mark.o
ccflags-$(ECM_CLASSIFIER_MARK_ENABLE) += -DECM_CLASSIFIER_MARK_ENABLE
@@ -299,7 +319,9 @@ ccflags-$(ECM_CLASSIFIER_NL_ENABLE) += -
@@ -303,7 +323,9 @@ ccflags-$(ECM_CLASSIFIER_NL_ENABLE) += -
# #############################################################################
# Define ECM_CLASSIFIER_DSCP_ENABLE=y in order to enable DSCP classifier.
# #############################################################################
@ -98,7 +98,7 @@ Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
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
@@ -318,7 +340,9 @@ ccflags-$(ECM_CLASSIFIER_HYFI_ENABLE) +=
@@ -322,7 +344,9 @@ ccflags-$(ECM_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.
# #############################################################################
@ -109,7 +109,7 @@ Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
ecm-$(ECM_CLASSIFIER_PCC_ENABLE) += ecm_classifier_pcc.o
ccflags-$(ECM_CLASSIFIER_PCC_ENABLE) += -DECM_CLASSIFIER_PCC_ENABLE
@@ -367,27 +391,36 @@ ccflags-$(ECM_NON_PORTED_SUPPORT_ENABLE)
@@ -371,27 +395,36 @@ ccflags-$(ECM_NON_PORTED_SUPPORT_ENABLE)
# #############################################################################
# Define ECM_STATE_OUTPUT_ENABLE=y to support XML state output
# #############################################################################
@ -149,7 +149,7 @@ Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
ccflags-$(ECM_TRACKER_DPI_SUPPORT_ENABLE) += -DECM_TRACKER_DPI_SUPPORT_ENABLE
# #############################################################################
@@ -395,14 +428,18 @@ ccflags-$(ECM_TRACKER_DPI_SUPPORT_ENABLE
@@ -399,14 +432,18 @@ ccflags-$(ECM_TRACKER_DPI_SUPPORT_ENABLE
# support for the database keeping lists of connections that are assigned
# on a per TYPE of classifier basis.
# #############################################################################
@ -252,7 +252,7 @@ Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
--- a/ecm_interface.c
+++ b/ecm_interface.c
@@ -1525,6 +1525,7 @@ struct neighbour *ecm_interface_ipv6_nei
@@ -1531,6 +1531,7 @@ struct neighbour *ecm_interface_ipv6_nei
*/
bool ecm_interface_is_pptp(struct sk_buff *skb, const struct net_device *out)
{
@ -260,7 +260,7 @@ Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
struct net_device *in;
/*
@@ -1549,6 +1550,7 @@ bool ecm_interface_is_pptp(struct sk_buf
@@ -1555,6 +1556,7 @@ bool ecm_interface_is_pptp(struct sk_buf
}
dev_put(in);
@ -268,7 +268,7 @@ Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
return false;
}
@@ -1561,6 +1563,7 @@ bool ecm_interface_is_pptp(struct sk_buf
@@ -1567,6 +1569,7 @@ bool ecm_interface_is_pptp(struct sk_buf
*/
bool ecm_interface_is_l2tp_packet_by_version(struct sk_buff *skb, const struct net_device *out, int ver)
{
@ -276,7 +276,7 @@ Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
uint32_t flag = 0;
struct net_device *in;
@@ -1593,6 +1596,7 @@ bool ecm_interface_is_l2tp_packet_by_ver
@@ -1599,6 +1602,7 @@ bool ecm_interface_is_l2tp_packet_by_ver
}
dev_put(in);
@ -284,7 +284,7 @@ Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
return false;
}
@@ -1605,6 +1609,7 @@ bool ecm_interface_is_l2tp_packet_by_ver
@@ -1611,6 +1615,7 @@ bool ecm_interface_is_l2tp_packet_by_ver
*/
bool ecm_interface_is_l2tp_pptp(struct sk_buff *skb, const struct net_device *out)
{
@ -292,7 +292,7 @@ Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
struct net_device *in;
/*
@@ -1627,6 +1632,7 @@ bool ecm_interface_is_l2tp_pptp(struct s
@@ -1633,6 +1638,7 @@ bool ecm_interface_is_l2tp_pptp(struct s
}
dev_put(in);
@ -300,7 +300,7 @@ Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
return false;
}
@@ -7182,6 +7188,7 @@ static void ecm_interface_regenerate_con
@@ -7292,6 +7298,7 @@ static void ecm_interface_regenerate_con
return;
}
@ -308,7 +308,7 @@ Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
for (dir = 0; dir < ECM_DB_OBJ_DIR_MAX; dir++) {
/*
* Re-generate all connections associated with this interface
@@ -7197,6 +7204,7 @@ static void ecm_interface_regenerate_con
@@ -7307,6 +7314,7 @@ static void ecm_interface_regenerate_con
ci[dir] = cin;
}
}
@ -318,7 +318,7 @@ Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
/*
--- a/frontends/ecm_front_end_common.c
+++ b/frontends/ecm_front_end_common.c
@@ -538,6 +538,7 @@ bool ecm_front_end_gre_proto_is_accel_al
@@ -594,6 +594,7 @@ bool ecm_front_end_gre_proto_is_accel_al
struct nf_conntrack_tuple *reply_tuple,
int ip_version, uint16_t offset)
{
@ -326,7 +326,7 @@ Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
struct net_device *dev;
struct gre_base_hdr *greh;
@@ -549,10 +550,12 @@ bool ecm_front_end_gre_proto_is_accel_al
@@ -605,10 +606,12 @@ bool ecm_front_end_gre_proto_is_accel_al
/*
* Case 1: PPTP locally terminated
*/
@ -339,7 +339,7 @@ Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
/*
* Case 2: PPTP pass through
@@ -680,6 +683,10 @@ bool ecm_front_end_gre_proto_is_accel_al
@@ -736,6 +739,10 @@ bool ecm_front_end_gre_proto_is_accel_al
*/
DEBUG_TRACE("%px: GRE IPv%d pass through non NAT - allow acceleration\n", skb, ip_version);
return true;

View File

@ -39,7 +39,7 @@ instead or relying on a downstream api not present upstream.
spin_lock_bh(&ct->lock);
--- a/frontends/sfe/ecm_sfe_ipv4.c
+++ b/frontends/sfe/ecm_sfe_ipv4.c
@@ -563,7 +563,8 @@ sync_conntrack:
@@ -576,7 +576,8 @@ sync_conntrack:
#else
timeouts = nf_ct_timeout_lookup(ct);
if (!timeouts) {
@ -51,7 +51,7 @@ instead or relying on a downstream api not present upstream.
spin_lock_bh(&ct->lock);
--- a/frontends/sfe/ecm_sfe_ipv6.c
+++ b/frontends/sfe/ecm_sfe_ipv6.c
@@ -556,7 +556,8 @@ sync_conntrack:
@@ -569,7 +569,8 @@ sync_conntrack:
#else
timeouts = nf_ct_timeout_lookup(ct);
if (!timeouts) {

View File

@ -1,6 +1,6 @@
--- a/ecm_interface.c
+++ b/ecm_interface.c
@@ -3640,7 +3640,7 @@ identifier_update:
@@ -3718,7 +3718,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;
@@ -3650,7 +3650,7 @@ identifier_update:
@@ -3728,7 +3728,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

@ -15,7 +15,7 @@
+EXPORT_SYMBOL(ecm_nss_ipv4_is_conn_limit_reached);
--- a/frontends/nss/ecm_nss_non_ported_ipv4.c
+++ b/frontends/nss/ecm_nss_non_ported_ipv4.c
@@ -1847,6 +1847,7 @@ struct ecm_front_end_connection_instance
@@ -1897,6 +1897,7 @@ struct ecm_front_end_connection_instance
return feci;
}
@ -36,7 +36,7 @@
struct ecm_db_connection_instance **nci);
--- a/frontends/nss/ecm_nss_non_ported_ipv6.c
+++ b/frontends/nss/ecm_nss_non_ported_ipv6.c
@@ -1657,6 +1657,7 @@ struct ecm_front_end_connection_instance
@@ -1707,6 +1707,7 @@ struct ecm_front_end_connection_instance
return feci;
}
@ -57,7 +57,7 @@
struct ecm_db_connection_instance **nci);
--- a/frontends/nss/ecm_nss_ported_ipv4.c
+++ b/frontends/nss/ecm_nss_ported_ipv4.c
@@ -1906,6 +1906,7 @@ struct ecm_front_end_connection_instance
@@ -1956,6 +1956,7 @@ struct ecm_front_end_connection_instance
return feci;
}
@ -78,7 +78,7 @@
struct ecm_db_connection_instance **nci);
--- a/frontends/nss/ecm_nss_ported_ipv6.c
+++ b/frontends/nss/ecm_nss_ported_ipv6.c
@@ -1812,6 +1812,7 @@ struct ecm_front_end_connection_instance
@@ -1862,6 +1862,7 @@ struct ecm_front_end_connection_instance
return feci;
}

View File

@ -1,6 +1,6 @@
--- a/ecm_interface.c
+++ b/ecm_interface.c
@@ -4057,7 +4057,11 @@ static uint32_t ecm_interface_multicast_
@@ -4141,7 +4141,11 @@ static uint32_t ecm_interface_multicast_
* For MLO bond netdevice, destination for multicast is bond netdevice itself
* Therefore, slave lookup is not needed.
*/

View File

@ -1,6 +1,6 @@
--- a/ecm_interface.c
+++ b/ecm_interface.c
@@ -8009,7 +8009,7 @@ static int ecm_interface_wifi_event_iwev
@@ -8537,7 +8537,7 @@ static int ecm_interface_wifi_event_iwev
/*
* Copy the base data structure to get iwe->len
*/
@ -9,7 +9,7 @@
/*
* Check that len is valid and that we have that much in the buffer.
@@ -8026,10 +8026,10 @@ static int ecm_interface_wifi_event_iwev
@@ -8554,10 +8554,10 @@ static int ecm_interface_wifi_event_iwev
dpos = (char *)&iwe_buf.u.data.length;
dlen = dpos - (char *)&iwe_buf;
@ -22,7 +22,7 @@
return -1;
}
@@ -8037,7 +8037,7 @@ static int ecm_interface_wifi_event_iwev
@@ -8565,7 +8565,7 @@ static int ecm_interface_wifi_event_iwev
* Check the flags of iw event if it indicates the IW authorized signal.
*/
if (iwe->u.data.flags == ECM_INTERFACE_WIFI_EVENT_NODE_AUTH) {
@ -31,7 +31,7 @@
if (!dbuf) {
DEBUG_WARN("Failed to allocated a buffer to process the custom event");
return -1;
@@ -8060,16 +8060,16 @@ static int ecm_interface_wifi_event_iwev
@@ -8588,16 +8588,16 @@ static int ecm_interface_wifi_event_iwev
return 0;
}

View File

@ -1,6 +1,6 @@
--- a/frontends/nss/ecm_nss_non_ported_ipv4.c
+++ b/frontends/nss/ecm_nss_non_ported_ipv4.c
@@ -855,7 +855,7 @@ static void ecm_nss_non_ported_ipv4_conn
@@ -880,7 +880,7 @@ static void ecm_nss_non_ported_ipv4_conn
#endif
break;
case ECM_DB_IFACE_TYPE_RAWIP:
@ -9,7 +9,7 @@
nircm->valid_flags |= NSS_IPV4_RULE_CREATE_RAWIP_VALID;
#else
rule_invalid = true;
@@ -1072,7 +1072,7 @@ static void ecm_nss_non_ported_ipv4_conn
@@ -1122,7 +1122,7 @@ static void ecm_nss_non_ported_ipv4_conn
#endif
break;
case ECM_DB_IFACE_TYPE_RAWIP:

View File

@ -0,0 +1,10 @@
--- a/ecm_interface.c
+++ b/ecm_interface.c
@@ -47,6 +47,7 @@
#include <linux/rtnetlink.h>
#include <linux/socket.h>
#include <linux/wireless.h>
+#include <linux/nl80211.h>
#include <net/genetlink.h>
#include <net/gre.h>
#ifdef ECM_INTERFACE_BOND_ENABLE

View File

@ -52,7 +52,7 @@ return network.registerProtocol('quectel', {
},
renderFormOptions: function(s) {
var dev = this.getL3Device() || this.getDevice(), o;
var dev = this.getL3Device() || this.getDevice(), o, apn, apnv6;
o = s.taboption('general', form.Value, '_modem_device', _('Modem device'));
o.ucioption = 'device';
@ -65,8 +65,13 @@ return network.registerProtocol('quectel', {
}, this));
};
o = s.taboption('general', form.Value, 'apn', _('APN'));
o.validate = function(section_id, value) {
o = s.taboption('general', form.Flag, 'multiplexing', _('Use IP Multiplexing'));
o.default = o.disabled;
apn = s.taboption('general', form.Value, 'apn', _('APN'));
apn.depends('pdptype', 'ipv4v6');
apn.depends('pdptype', 'ipv4');
apn.validate = function(section_id, value) {
if (value == null || value == '')
return true;
@ -76,6 +81,24 @@ return network.registerProtocol('quectel', {
return true;
};
apnv6 = s.taboption('general', form.Value, 'apnv6', _('IPv6 APN'));
apnv6.depends({ pdptype: 'ipv4v6', multiplexing: '1' });
apnv6.depends({ pdptype: 'ipv6', multiplexing: '1' });
apnv6.validate = function(section_id, value) {
if (value == null || value == '')
return true;
if (!/^[a-zA-Z0-9\-.]*[a-zA-Z0-9]$/.test(value))
return _('Invalid APN provided');
var apn_value = apn.formvalue(section_id);
if (value.toLowerCase() === apn_value.toLowerCase())
return _('APN IPv6 must be different from APN');
return true;
};
o = s.taboption('general', form.Value, 'pincode', _('PIN'));
o.datatype = 'and(uinteger,minlength(4),maxlength(8))';
@ -99,13 +122,25 @@ return network.registerProtocol('quectel', {
o = s.taboption('advanced', form.Value, 'delay', _('Modem init timeout'),
_('Maximum amount of seconds to wait for the modem to become ready'));
o.placeholder = '10';
o.placeholder = '5';
o.datatype = 'min(1)';
o = s.taboption('advanced', form.Value, 'mtu', _('Override MTU'));
o.placeholder = dev ? (dev.getMTU() || '1500') : '1500';
o.datatype = 'max(9200)';
o = s.taboption('advanced', form.Value, 'pdnindex', _('PDN index'));
o.depends({ pdptype: 'ipv4v6', multiplexing: '1' });
o.depends({ pdptype: 'ipv4', multiplexing: '1' });
o.placeholder = '1';
o.datatype = 'and(uinteger,min(1),max(7))';
o = s.taboption('advanced', form.Value, 'pdnindexv6', _('IPv6 PDN index'));
o.depends({ pdptype: 'ipv4v6', multiplexing: '1' });
o.depends({ pdptype: 'ipv6', multiplexing: '1' });
o.placeholder = '2';
o.datatype = 'and(uinteger,min(1),max(7))';
o = s.taboption('general', form.ListValue, 'pdptype', _('PDP Type'));
o.value('ipv4v6', 'IPv4/IPv6');
o.value('ipv4', 'IPv4');
@ -120,5 +155,30 @@ return network.registerProtocol('quectel', {
o.placeholder = '0';
o.datatype = 'uinteger';
o.depends('defaultroute', '1');
o = s.taboption('advanced', form.DynamicList, 'cell_lock_4g', _('4G Cell ID Lock'));
o.datatype = 'string';
o.placeholder = _('<PCI>,<EARFCN>');
o.validate = function(section_id, value) {
if (value === null || value === '')
return true;
var parts = value.split(',');
if (parts.length !== 2)
return _('Must be two values separated by a comma(,)');
var isUnsignedInteger = function(str) {
return /^\d+$/.test(str);
};
if (!isUnsignedInteger(parts[0]))
return _('Invalid PCI!');
if (!isUnsignedInteger(parts[1]))
return _('Invalid EARFCN!');
return true;
};
}
});

View File

@ -10,7 +10,11 @@ proto_quectel_init_config() {
available=1
no_device=1
proto_config_add_string "device:device"
proto_config_add_boolean "multiplexing"
proto_config_add_string "apn"
proto_config_add_string "apnv6"
proto_config_add_string "pdnindex"
proto_config_add_string "pdnindexv6"
proto_config_add_string "auth"
proto_config_add_string "username"
proto_config_add_string "password"
@ -22,21 +26,49 @@ proto_quectel_init_config() {
proto_config_add_boolean "sourcefilter"
proto_config_add_boolean "delegate"
proto_config_add_int "mtu"
proto_config_add_array 'cell_lock_4g:list(string)'
proto_config_add_defaults
}
proto_quectel_setup() {
local interface="$1"
local device apn auth username password pincode delay pdptype
local device apn apnv6 auth username password pincode delay pdptype pdnindex pdnindexv6 multiplexing cell_lock_4g
local dhcp dhcpv6 sourcefilter delegate mtu $PROTO_DEFAULT_OPTIONS
local ip4table ip6table
local pid zone
json_get_vars device apn auth username password pincode delay
json_get_vars device apn apnv6 auth username password pincode delay pdnindex pdnindexv6 multiplexing
json_get_vars pdptype dhcp dhcpv6 sourcefilter delegate ip4table
json_get_vars ip6table mtu $PROTO_DEFAULT_OPTIONS
[ -n "$delay" ] && sleep "$delay"
echo -ne "AT+CFUN=1\r\n" > /dev/ttyUSB2
[ -n "$delay" ] || delay="5"
sleep "$delay"
if json_is_a cell_lock_4g array; then
echo "4G Cell ID Locking"
json_select cell_lock_4g
idx=1
cell_ids=""
while json_is_a ${idx} string
do
json_get_var cell_lock $idx
pci=$(echo $cell_lock | cut -d',' -f1)
earfcn=$(echo $cell_lock | cut -d',' -f2)
cell_ids="$cell_ids,$earfcn,$pci"
idx=$(( idx + 1 ))
done
idx=$(( idx - 1 ))
if [ "$idx" -gt 0 ]; then
cell_ids="${idx}${cell_ids}"
echo -e "AT+QNWLOCK=\"COMMON/4G\",${cell_ids}" | atinout - /dev/ttyUSB2 -
fi
else
echo -e "AT+QNWLOCK=\"COMMON/4G\",0" | atinout - /dev/ttyUSB2 -
fi
[ -n "$metric" ] || metric="0"
[ -z "$ctl_device" ] || device="$ctl_device"
@ -66,19 +98,42 @@ proto_quectel_setup() {
return 1
}
[ "$pdptype" = "ip" -o "$pdptype" = "ipv4v6" ] && ipv4opt="-4"
[ "$pdptype" = "ipv4" -o "$pdptype" = "ipv4v6" ] && ipv4opt="-4"
[ "$pdptype" = "ipv6" -o "$pdptype" = "ipv4v6" ] && ipv6opt="-6"
[ -n "$auth" ] || auth="none"
eval "proto_run_command '$interface' /usr/bin/quectel-cm -i '$ifname' $ipv4opt $ipv6opt ${pincode:+-p $pincode} -s '$apn' '$username' '$password' '$auth'"
quectel-qmi-proxy &
sleep 3
if [ "$multiplexing" = 1 ]; then
[ -n "$pdnindex" ] || pdnindex="1"
[ -n "$pdnindexv6" ] || pdnindexv6="2"
if [ -n "$ipv4opt" ]; then
quectel-cm -i "$ifname" $ipv4opt -n $pdnindex -m 1 ${pincode:+-p $pincode} -s "$apn" "$username" "$password" "$auth" &
fi
if [ -n "$ipv6opt" ]; then
quectel-cm -i "$ifname" $ipv6opt -n $pdnindexv6 -m 2 ${pincode:+-p $pincode} -s "$apnv6" "$username" "$password" "$auth" &
fi
else
quectel-cm -i "$ifname" $ipv4opt $ipv6opt ${pincode:+-p $pincode} -s "$apn" "$username" "$password" "$auth" &
fi
sleep 5
ifconfig "$ifname" up
ifconfig "${ifname}_1" &>"/dev/null" && ifname="${ifname}_1"
ifconfig "${ifname}_1" &>"/dev/null" && ifname4="${ifname}_1"
if [ "$multiplexing" = 1 ]; then
ifconfig "${ifname}_2" &>"/dev/null" && ifname6="${ifname}_2"
else
ifname6="$ifname4"
fi
if [ -n "$mtu" ]; then
echo "Setting MTU to $mtu"
/sbin/ip link set dev "$ifname" mtu "$mtu"
/sbin/ip link set dev "$ifname4" mtu "$mtu"
[ "$multiplexing" = 1 ] && /sbin/ip link set dev "$ifname6" mtu "$mtu"
fi
echo "Setting up $ifname"
@ -89,9 +144,11 @@ proto_quectel_setup() {
zone="$(fw3 -q network "$interface" 2>/dev/null)"
if [ "$pdptype" = "ipv6" ] || [ "$pdptype" = "ipv4v6" ]; then
ip -6 addr flush dev $ifname6
json_init
json_add_string name "${interface}_6"
json_add_string ifname "@$interface"
json_add_string device "$ifname6"
[ "$pdptype" = "ipv4v6" ] && json_add_string iface_464xlat "0"
json_add_string proto "dhcpv6"
proto_add_dynamic_defaults
@ -105,10 +162,10 @@ proto_quectel_setup() {
ubus call network add_dynamic "$(json_dump)"
fi
if [ "$pdptype" = "ip" ] || [ "$pdptype" = "ipv4v6" ]; then
if [ "$pdptype" = "ipv4" ] || [ "$pdptype" = "ipv4v6" ]; then
json_init
json_add_string name "${interface}_4"
json_add_string ifname "@$interface"
json_add_string device "$ifname4"
json_add_string proto "dhcp"
[ -z "$ip4table" ] || json_add_string ip4table "$ip4table"
proto_add_dynamic_defaults
@ -127,10 +184,10 @@ proto_quectel_teardown() {
echo "Stopping network $interface"
proto_kill_command "$interface"
proto_init_update "*" 0
proto_send_update "$interface"
killall quectel-cm
killall quectel-qmi-proxy
}
[ -n "$INCLUDE_ONLY" ] || {