Merge Official Source

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
This commit is contained in:
Tianling Shen
2025-10-19 02:48:38 +08:00
50 changed files with 1465 additions and 162 deletions
+3 -3
View File
@@ -6,9 +6,9 @@ PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL=$(PROJECT_GIT)/project/firmware/qca-wireless.git
PKG_SOURCE_DATE:=2025-10-14
PKG_SOURCE_VERSION:=821d27b582c130ab65b7d20d0dfcbade7cdaf623
PKG_MIRROR_HASH:=1e2959037baa5cfb24d931f9ad9b8f9a732d93810fce91a836ca7ed4d46ad7b0
PKG_SOURCE_DATE:=2025-10-17
PKG_SOURCE_VERSION:=a1529e183333e38bdc95dc8d9317b7af2bec0dcd
PKG_MIRROR_HASH:=30ce8f808424602cba556e106cb16080ef29d6d45a9d9018e04664598460eb2f
PKG_FLAGS:=nonshared
include $(INCLUDE_DIR)/package.mk
@@ -185,7 +185,7 @@ static void *g_xdata_addr = NULL;
static u32 *mei_arc_swap_buff = NULL; // holding swap pages
extern void ltq_mask_and_ack_irq(struct irq_data *d);
static void inline MEI_MASK_AND_ACK_IRQ(int x)
static inline void MEI_MASK_AND_ACK_IRQ(int x)
{
struct irq_data d;
d.hwirq = x;
@@ -1178,7 +1178,7 @@ DSL_BSP_AdslLedSet (DSL_DEV_Device_t * dev, DSL_DEV_LedId_t led_number, DSL_DEV_
* \param CMVMSG The pointer to message buffer.
* \ingroup Internal
*/
void
static void
makeCMV (u8 opcode, u8 group, u16 address, u16 index, int size, u16 * data, u16 *CMVMSG)
{
memset (CMVMSG, 0, MSG_LENGTH * 2);
@@ -2451,7 +2451,7 @@ IFX_MEI_IoctlCopyTo (int from_kernel, char *dest, char *from, int size)
return ret;
}
int
static int
IFX_MEI_Ioctls (DSL_DEV_Device_t * pDev, int from_kernel, unsigned int command, unsigned long lon)
{
int i = 0;
@@ -618,6 +618,9 @@ extern DSL_DEV_MeiError_t DSL_BSP_Showtime(DSL_DEV_Device_t *, DSL_uint32_t, DSL
extern int DSL_BSP_ATMLedCBRegister( int (*ifx_adsl_ledcallback)(void));
extern DSL_DEV_MeiError_t DSL_BSP_MemoryDebugAccess(DSL_DEV_Device_t *, DSL_BSP_MemoryAccessType_t, DSL_uint32_t, DSL_uint32_t *, DSL_uint32_t);
extern volatile DSL_DEV_Device_t *adsl_dev;
extern int DSL_BSP_ATMLedCBUnregister (int (*ifx_adsl_ledcallback) (void));
extern int ifx_mei_atm_led_blink(void);
extern int ifx_mei_atm_showtime_check(int *is_showtime, struct port_cell_info *port_cell, void **xdata_addr);
/**
* Dummy structure by now to show mechanism of extended data that will be
@@ -0,0 +1,25 @@
From: Shiji Yang <yangshiji66@outlook.com>
Date: Fri, 9 May 2025 20:01:14 +0800
Subject: [PATCH] add missing header platform_device.h
Fix compilation error:
/home/db/owrt/build_dir/target-mips_24kc_musl/linux-lantiq_xway/ltq-dsl-danube/drv_dsl_cpe_api-3.24.4.4/src/common/drv_dsl_cpe_os_linux.c:1155:15: error: variable 'ltq_adsl_driver' has initializer but incomplete type
1155 | static struct platform_driver ltq_adsl_driver = {
| ^~~~~~~~~~~~~~~
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
---
src/common/drv_dsl_cpe_os_linux.c | 1 +
1 file changed, 1 insertion(+)
--- a/src/common/drv_dsl_cpe_os_linux.c
+++ b/src/common/drv_dsl_cpe_os_linux.c
@@ -13,6 +13,7 @@
#define DSL_INTERN
#include <linux/kthread.h>
#include <linux/of_platform.h>
+#include <linux/platform_device.h>
#include "drv_dsl_cpe_api.h"
#include "drv_dsl_cpe_api_ioctl.h"
@@ -0,0 +1,32 @@
From: Shiji Yang <yangshiji66@outlook.com>
Date: Fri, 9 May 2025 20:58:09 +0800
Subject: [PATCH] silence missing-prototypes warnings
This patch silences various missing-prototypes build warnings on
6.12 kernel.
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
---
src/Makefile.am | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -299,6 +299,8 @@ if KERNEL_2_6
drv_dsl_cpe_api_OBJS = "$(subst .c,.o,$(filter %.c,$(drv_dsl_cpe_api_SOURCES)))"
+PKGFIX_CFLAGS = -Wno-error=missing-prototypes
+
drv_dsl_cpe_api.ko: $(drv_dsl_cpe_api_SOURCES)
@echo "drv_dsl_cpe_api: Making Linux 2.6.x kernel object"
if test ! -e common/drv_dsl_cpe_api.c ; then \
@@ -311,7 +313,7 @@ drv_dsl_cpe_api.ko: $(drv_dsl_cpe_api_SO
@echo "# drv_dsl_cpe_api: Generated to build Linux 2.6.x kernel object" > $(PWD)/Kbuild
@echo "obj-m := $(subst .ko,.o,$@)" >> $(PWD)/Kbuild
@echo "$(subst .ko,,$@)-y := $(drv_dsl_cpe_api_OBJS)" >> $(PWD)/Kbuild
- @echo "EXTRA_CFLAGS := -DHAVE_CONFIG_H $(drv_dsl_cpe_api_CFLAGS) $(DSL_DRIVER_INCL_PATH) $(IFXOS_INCLUDE_PATH) -I@abs_srcdir@/include -I$(PWD)/include" >> $(PWD)/Kbuild
+ @echo "EXTRA_CFLAGS := -DHAVE_CONFIG_H $(drv_dsl_cpe_api_CFLAGS) $(PKGFIX_CFLAGS) $(DSL_DRIVER_INCL_PATH) $(IFXOS_INCLUDE_PATH) -I@abs_srcdir@/include -I$(PWD)/include" >> $(PWD)/Kbuild
$(MAKE) ARCH=@KERNEL_ARCH@ -C @KERNEL_BUILD_PATH@ O=@KERNEL_BUILD_PATH@ M=$(PWD) modules
clean-generic:
@@ -1,12 +0,0 @@
--- a/ltq_atm.c
+++ b/ltq_atm.c
@@ -338,7 +338,8 @@ static int ppe_ioctl(struct atm_dev *dev
break;
case PPE_ATM_MIB_VCC: /* VCC related MIB */
- copy_from_user(&mib_vcc, arg, sizeof(mib_vcc));
+ if (copy_from_user(&mib_vcc, arg, sizeof(mib_vcc)))
+ return -EFAULT;
conn = find_vpivci(mib_vcc.vpi, mib_vcc.vci);
if (conn >= 0) {
mib_vcc.mib_vcc.aal5VccCrcErrors = g_atm_priv_data.conn[conn].aal5_vcc_crc_err;
@@ -254,7 +254,7 @@ static inline int pp32_download_code(u32 *code_src, unsigned int code_dword_len,
* ####################################
*/
extern void ase_fw_ver(unsigned int *major, unsigned int *minor)
static void ase_fw_ver(unsigned int *major, unsigned int *minor)
{
ASSERT(major != NULL, "pointer is NULL");
ASSERT(minor != NULL, "pointer is NULL");
@@ -263,7 +263,7 @@ extern void ase_fw_ver(unsigned int *major, unsigned int *minor)
*minor = FW_VER_ID->minor;
}
int ase_init(struct platform_device *pdev)
static int ase_init(struct platform_device *pdev)
{
init_pmu();
@@ -280,7 +280,7 @@ int ase_init(struct platform_device *pdev)
return 0;
}
void ase_shutdown(void)
static void ase_shutdown(void)
{
uninit_pmu();
}
@@ -294,7 +294,7 @@ void ase_shutdown(void)
* int --- 0: Success
* else: Error Code
*/
int ase_start(int pp32)
static int ase_start(int pp32)
{
int ret;
@@ -320,7 +320,7 @@ int ase_start(int pp32)
* Output:
* none
*/
void ase_stop(int pp32)
static void ase_stop(int pp32)
{
/* halt PP32 */
IFX_REG_W32(DBG_CTRL_STOP, PP32_DBG_CTRL);
@@ -185,7 +185,7 @@ static inline int pp32_download_code(u32 *code_src, unsigned int code_dword_len,
return 0;
}
void ar9_fw_ver(unsigned int *major, unsigned int *minor)
static void ar9_fw_ver(unsigned int *major, unsigned int *minor)
{
ASSERT(major != NULL, "pointer is NULL");
ASSERT(minor != NULL, "pointer is NULL");
@@ -194,7 +194,7 @@ void ar9_fw_ver(unsigned int *major, unsigned int *minor)
*minor = FW_VER_ID->minor;
}
int ar9_init(struct platform_device *pdev)
static int ar9_init(struct platform_device *pdev)
{
init_pmu();
reset_ppe(pdev);
@@ -205,7 +205,7 @@ int ar9_init(struct platform_device *pdev)
return 0;
}
void ar9_shutdown(void)
static void ar9_shutdown(void)
{
ltq_pmu_disable(IFX_PMU_MODULE_PPE_SLL01 |
IFX_PMU_MODULE_PPE_TC |
@@ -215,7 +215,7 @@ void ar9_shutdown(void)
IFX_PMU_MODULE_DSL_DFE);
}
int ar9_start(int pp32)
static int ar9_start(int pp32)
{
int ret;
@@ -231,7 +231,7 @@ int ar9_start(int pp32)
return 0;
}
void ar9_stop(int pp32)
static void ar9_stop(int pp32)
{
IFX_REG_W32(DBG_CTRL_STOP, PP32_DBG_CTRL(0));
}
@@ -198,7 +198,7 @@ static void danube_shutdown(void)
{
}
int danube_start(int pp32)
static int danube_start(int pp32)
{
int ret;
@@ -218,7 +218,7 @@ int danube_start(int pp32)
return 0;
}
void danube_stop(int pp32)
static void danube_stop(int pp32)
{
IFX_REG_W32(DBG_CTRL_STOP_SET(1), PP32_DBG_CTRL);
}
+3 -1
View File
@@ -36,6 +36,7 @@
#include <linux/init.h>
#include <linux/ioctl.h>
#include <linux/atmdev.h>
#include <linux/mod_devicetable.h>
#include <linux/platform_device.h>
#include <linux/of_device.h>
#include <linux/atm.h>
@@ -338,7 +339,8 @@ static int ppe_ioctl(struct atm_dev *dev, unsigned int cmd, void *arg)
break;
case PPE_ATM_MIB_VCC: /* VCC related MIB */
copy_from_user(&mib_vcc, arg, sizeof(mib_vcc));
if (copy_from_user(&mib_vcc, arg, sizeof(mib_vcc)))
return -EFAULT;
conn = find_vpivci(mib_vcc.vpi, mib_vcc.vci);
if (conn >= 0) {
mib_vcc.mib_vcc.aal5VccCrcErrors = g_atm_priv_data.conn[conn].aal5_vcc_crc_err;
+32 -32
View File
@@ -148,7 +148,7 @@ extern int disable_multiblock;
* \param key_len key lengths of 16, 24 and 32 bytes supported
* \return -EINVAL - bad key length, 0 - SUCCESS
*/
int aes_set_key (struct crypto_tfm *tfm, const u8 *in_key, unsigned int key_len)
static int aes_set_key (struct crypto_tfm *tfm, const u8 *in_key, unsigned int key_len)
{
struct aes_ctx *ctx = crypto_tfm_ctx(tfm);
@@ -177,7 +177,7 @@ int aes_set_key (struct crypto_tfm *tfm, const u8 *in_key, unsigned int key_len)
* \param key_len key lengths of 16, 24 and 32 bytes supported
* \return -EINVAL - bad key length, 0 - SUCCESS
*/
int aes_set_key_skcipher (struct crypto_skcipher *tfm, const u8 *in_key, unsigned int key_len)
static int aes_set_key_skcipher (struct crypto_skcipher *tfm, const u8 *in_key, unsigned int key_len)
{
return aes_set_key(crypto_skcipher_tfm(tfm), in_key, key_len);
}
@@ -189,7 +189,7 @@ int aes_set_key_skcipher (struct crypto_skcipher *tfm, const u8 *in_key, unsigne
* \param ctx_arg crypto algo context
* \return
*/
void aes_set_key_hw (void *ctx_arg)
static void aes_set_key_hw (void *ctx_arg)
{
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
volatile struct aes_t *aes = (volatile struct aes_t *) AES_START;
@@ -343,7 +343,7 @@ void ifx_deu_aes (void *ctx_arg, u8 *out_arg, const u8 *in_arg,
* \return 0 - SUCCESS
* -EINVAL - bad key length
*/
int ctr_rfc3686_aes_set_key (struct crypto_tfm *tfm, const uint8_t *in_key, unsigned int key_len)
static int ctr_rfc3686_aes_set_key (struct crypto_tfm *tfm, const uint8_t *in_key, unsigned int key_len)
{
struct aes_ctx *ctx = crypto_tfm_ctx(tfm);
@@ -376,7 +376,7 @@ int ctr_rfc3686_aes_set_key (struct crypto_tfm *tfm, const uint8_t *in_key, unsi
* \return 0 - SUCCESS
* -EINVAL - bad key length
*/
int ctr_rfc3686_aes_set_key_skcipher (struct crypto_skcipher *tfm, const uint8_t *in_key, unsigned int key_len)
static int ctr_rfc3686_aes_set_key_skcipher (struct crypto_skcipher *tfm, const uint8_t *in_key, unsigned int key_len)
{
return ctr_rfc3686_aes_set_key(crypto_skcipher_tfm(tfm), in_key, key_len);
}
@@ -413,7 +413,7 @@ int ctr_rfc3686_aes_set_key_skcipher (struct crypto_skcipher *tfm, const uint8_t
* \param encdec 1 for encrypt; 0 for decrypt
* \param inplace not used
*/
void ifx_deu_aes_ecb (void *ctx, uint8_t *dst, const uint8_t *src,
static void ifx_deu_aes_ecb (void *ctx, uint8_t *dst, const uint8_t *src,
uint8_t *iv, size_t nbytes, int encdec, int inplace)
{
ifx_deu_aes (ctx, dst, src, NULL, nbytes, encdec, 0);
@@ -430,7 +430,7 @@ void ifx_deu_aes_ecb (void *ctx, uint8_t *dst, const uint8_t *src,
* \param encdec 1 for encrypt; 0 for decrypt
* \param inplace not used
*/
void ifx_deu_aes_cbc (void *ctx, uint8_t *dst, const uint8_t *src,
static void ifx_deu_aes_cbc (void *ctx, uint8_t *dst, const uint8_t *src,
uint8_t *iv, size_t nbytes, int encdec, int inplace)
{
ifx_deu_aes (ctx, dst, src, iv, nbytes, encdec, 1);
@@ -447,7 +447,7 @@ void ifx_deu_aes_cbc (void *ctx, uint8_t *dst, const uint8_t *src,
* \param encdec 1 for encrypt; 0 for decrypt
* \param inplace not used
*/
void ifx_deu_aes_ofb (void *ctx, uint8_t *dst, const uint8_t *src,
static void ifx_deu_aes_ofb (void *ctx, uint8_t *dst, const uint8_t *src,
uint8_t *iv, size_t nbytes, int encdec, int inplace)
{
ifx_deu_aes (ctx, dst, src, iv, nbytes, encdec, 2);
@@ -464,7 +464,7 @@ void ifx_deu_aes_ofb (void *ctx, uint8_t *dst, const uint8_t *src,
* \param encdec 1 for encrypt; 0 for decrypt
* \param inplace not used
*/
void ifx_deu_aes_cfb (void *ctx, uint8_t *dst, const uint8_t *src,
static void ifx_deu_aes_cfb (void *ctx, uint8_t *dst, const uint8_t *src,
uint8_t *iv, size_t nbytes, int encdec, int inplace)
{
ifx_deu_aes (ctx, dst, src, iv, nbytes, encdec, 3);
@@ -481,7 +481,7 @@ void ifx_deu_aes_cfb (void *ctx, uint8_t *dst, const uint8_t *src,
* \param encdec 1 for encrypt; 0 for decrypt
* \param inplace not used
*/
void ifx_deu_aes_ctr (void *ctx, uint8_t *dst, const uint8_t *src,
static void ifx_deu_aes_ctr (void *ctx, uint8_t *dst, const uint8_t *src,
uint8_t *iv, size_t nbytes, int encdec, int inplace)
{
ifx_deu_aes (ctx, dst, src, iv, nbytes, encdec, 4);
@@ -494,7 +494,7 @@ void ifx_deu_aes_ctr (void *ctx, uint8_t *dst, const uint8_t *src,
* \param out output bytestream
* \param in input bytestream
*/
void ifx_deu_aes_encrypt (struct crypto_tfm *tfm, uint8_t *out, const uint8_t *in)
static void ifx_deu_aes_encrypt (struct crypto_tfm *tfm, uint8_t *out, const uint8_t *in)
{
struct aes_ctx *ctx = crypto_tfm_ctx(tfm);
ifx_deu_aes (ctx, out, in, NULL, AES_BLOCK_SIZE,
@@ -508,7 +508,7 @@ void ifx_deu_aes_encrypt (struct crypto_tfm *tfm, uint8_t *out, const uint8_t *i
* \param out output bytestream
* \param in input bytestream
*/
void ifx_deu_aes_decrypt (struct crypto_tfm *tfm, uint8_t *out, const uint8_t *in)
static void ifx_deu_aes_decrypt (struct crypto_tfm *tfm, uint8_t *out, const uint8_t *in)
{
struct aes_ctx *ctx = crypto_tfm_ctx(tfm);
ifx_deu_aes (ctx, out, in, NULL, AES_BLOCK_SIZE,
@@ -544,7 +544,7 @@ struct crypto_alg ifxdeu_aes_alg = {
* \param req skcipher request
* \return err
*/
int ecb_aes_encrypt(struct skcipher_request *req)
static int ecb_aes_encrypt(struct skcipher_request *req)
{
struct aes_ctx *ctx = crypto_tfm_ctx(req->base.tfm);
struct skcipher_walk walk;
@@ -570,7 +570,7 @@ int ecb_aes_encrypt(struct skcipher_request *req)
* \param req skcipher request
* \return err
*/
int ecb_aes_decrypt(struct skcipher_request *req)
static int ecb_aes_decrypt(struct skcipher_request *req)
{
struct aes_ctx *ctx = crypto_tfm_ctx(req->base.tfm);
struct skcipher_walk walk;
@@ -615,7 +615,7 @@ struct skcipher_alg ifxdeu_ecb_aes_alg = {
* \param req skcipher request
* \return err
*/
int cbc_aes_encrypt(struct skcipher_request *req)
static int cbc_aes_encrypt(struct skcipher_request *req)
{
struct aes_ctx *ctx = crypto_tfm_ctx(req->base.tfm);
struct skcipher_walk walk;
@@ -642,7 +642,7 @@ int cbc_aes_encrypt(struct skcipher_request *req)
* \param req skcipher request
* \return err
*/
int cbc_aes_decrypt(struct skcipher_request *req)
static int cbc_aes_decrypt(struct skcipher_request *req)
{
struct aes_ctx *ctx = crypto_tfm_ctx(req->base.tfm);
struct skcipher_walk walk;
@@ -694,7 +694,7 @@ struct skcipher_alg ifxdeu_cbc_aes_alg = {
* \param encdec 1 for encrypt; 0 for decrypt
*
*/
void ifx_deu_aes_xts (void *ctx_arg, u8 *out_arg, const u8 *in_arg,
static void ifx_deu_aes_xts (void *ctx_arg, u8 *out_arg, const u8 *in_arg,
u8 *iv_arg, size_t nbytes, int encdec)
{
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
@@ -797,7 +797,7 @@ void ifx_deu_aes_xts (void *ctx_arg, u8 *out_arg, const u8 *in_arg,
* \param req skcipher request
* \return err
*/
int xts_aes_encrypt(struct skcipher_request *req)
static int xts_aes_encrypt(struct skcipher_request *req)
{
struct aes_ctx *ctx = crypto_tfm_ctx(req->base.tfm);
struct skcipher_walk walk;
@@ -853,7 +853,7 @@ int xts_aes_encrypt(struct skcipher_request *req)
* \param req skcipher request
* \return err
*/
int xts_aes_decrypt(struct skcipher_request *req)
static int xts_aes_decrypt(struct skcipher_request *req)
{
struct aes_ctx *ctx = crypto_tfm_ctx(req->base.tfm);
struct skcipher_walk walk;
@@ -911,7 +911,7 @@ int xts_aes_decrypt(struct skcipher_request *req)
* \param key_len key lengths of 16, 24 and 32 bytes supported
* \return -EINVAL - bad key length, 0 - SUCCESS
*/
int xts_aes_set_key_skcipher (struct crypto_skcipher *tfm, const u8 *in_key, unsigned int key_len)
static int xts_aes_set_key_skcipher (struct crypto_skcipher *tfm, const u8 *in_key, unsigned int key_len)
{
struct aes_ctx *ctx = crypto_tfm_ctx(crypto_skcipher_tfm(tfm));
unsigned int keylen = (key_len / 2);
@@ -958,7 +958,7 @@ struct skcipher_alg ifxdeu_xts_aes_alg = {
* \param req skcipher request
* \return err
*/
int ofb_aes_encrypt(struct skcipher_request *req)
static int ofb_aes_encrypt(struct skcipher_request *req)
{
struct aes_ctx *ctx = crypto_tfm_ctx(req->base.tfm);
struct skcipher_walk walk;
@@ -991,7 +991,7 @@ int ofb_aes_encrypt(struct skcipher_request *req)
* \param req skcipher request
* \return err
*/
int ofb_aes_decrypt(struct skcipher_request *req)
static int ofb_aes_decrypt(struct skcipher_request *req)
{
struct aes_ctx *ctx = crypto_tfm_ctx(req->base.tfm);
struct skcipher_walk walk;
@@ -1046,7 +1046,7 @@ struct skcipher_alg ifxdeu_ofb_aes_alg = {
* \param req skcipher request
* \return err
*/
int cfb_aes_encrypt(struct skcipher_request *req)
static int cfb_aes_encrypt(struct skcipher_request *req)
{
struct aes_ctx *ctx = crypto_tfm_ctx(req->base.tfm);
struct skcipher_walk walk;
@@ -1079,7 +1079,7 @@ int cfb_aes_encrypt(struct skcipher_request *req)
* \param req skcipher request
* \return err
*/
int cfb_aes_decrypt(struct skcipher_request *req)
static int cfb_aes_decrypt(struct skcipher_request *req)
{
struct aes_ctx *ctx = crypto_tfm_ctx(req->base.tfm);
struct skcipher_walk walk;
@@ -1134,7 +1134,7 @@ struct skcipher_alg ifxdeu_cfb_aes_alg = {
* \param req skcipher request
* \return err
*/
int ctr_basic_aes_encrypt(struct skcipher_request *req)
static int ctr_basic_aes_encrypt(struct skcipher_request *req)
{
struct aes_ctx *ctx = crypto_tfm_ctx(req->base.tfm);
struct skcipher_walk walk;
@@ -1167,7 +1167,7 @@ int ctr_basic_aes_encrypt(struct skcipher_request *req)
* \param req skcipher request
* \return err
*/
int ctr_basic_aes_decrypt(struct skcipher_request *req)
static int ctr_basic_aes_decrypt(struct skcipher_request *req)
{
struct aes_ctx *ctx = crypto_tfm_ctx(req->base.tfm);
struct skcipher_walk walk;
@@ -1221,7 +1221,7 @@ struct skcipher_alg ifxdeu_ctr_basic_aes_alg = {
* \param req skcipher request
* \return err
*/
int ctr_rfc3686_aes_encrypt(struct skcipher_request *req)
static int ctr_rfc3686_aes_encrypt(struct skcipher_request *req)
{
struct aes_ctx *ctx = crypto_tfm_ctx(req->base.tfm);
struct skcipher_walk walk;
@@ -1264,7 +1264,7 @@ int ctr_rfc3686_aes_encrypt(struct skcipher_request *req)
* \param req skcipher request
* \return err
*/
int ctr_rfc3686_aes_decrypt(struct skcipher_request *req)
static int ctr_rfc3686_aes_decrypt(struct skcipher_request *req)
{
struct aes_ctx *ctx = crypto_tfm_ctx(req->base.tfm);
struct skcipher_walk walk;
@@ -1576,7 +1576,7 @@ static struct shash_alg ifxdeu_cbcmac_aes_alg = {
* \param key_len key lengths of 16, 24 and 32 bytes supported
* \return -EINVAL - bad key length, 0 - SUCCESS
*/
int aes_set_key_aead (struct crypto_aead *aead, const u8 *in_key, unsigned int key_len)
static int aes_set_key_aead (struct crypto_aead *aead, const u8 *in_key, unsigned int key_len)
{
struct aes_ctx *ctx = crypto_aead_ctx(aead);
int err;
@@ -1601,7 +1601,7 @@ int aes_set_key_aead (struct crypto_aead *aead, const u8 *in_key, unsigned int k
* \param in_key input authsize
* \return -EINVAL - bad authsize length, 0 - SUCCESS
*/
int gcm_aes_setauthsize (struct crypto_aead *aead, unsigned int authsize)
static int gcm_aes_setauthsize (struct crypto_aead *aead, unsigned int authsize)
{
return crypto_gcm_check_authsize(authsize);
}
@@ -1612,7 +1612,7 @@ int gcm_aes_setauthsize (struct crypto_aead *aead, unsigned int authsize)
* \param req aead request
* \return err
*/
int gcm_aes_encrypt(struct aead_request *req)
static int gcm_aes_encrypt(struct aead_request *req)
{
struct aes_ctx *ctx = crypto_tfm_ctx(req->base.tfm);
struct skcipher_walk walk;
@@ -1726,7 +1726,7 @@ int gcm_aes_encrypt(struct aead_request *req)
* \param req aead request
* \return err
*/
int gcm_aes_decrypt(struct aead_request *req)
static int gcm_aes_decrypt(struct aead_request *req)
{
struct aes_ctx *ctx = crypto_tfm_ctx(req->base.tfm);
struct skcipher_walk walk;
+20 -14
View File
@@ -126,7 +126,7 @@ extern int disable_deudma;
* \param key input key
* \param keylen key length
*/
int des_setkey(struct crypto_tfm *tfm, const u8 *key,
static int des_setkey(struct crypto_tfm *tfm, const u8 *key,
unsigned int keylen)
{
struct ifx_deu_des_ctx *dctx = crypto_tfm_ctx(tfm);
@@ -161,7 +161,7 @@ int des_setkey(struct crypto_tfm *tfm, const u8 *key,
* \param key_len key lengths of 16, 24 and 32 bytes supported
* \return -EINVAL - bad key length, 0 - SUCCESS
*/
int des_setkey_skcipher (struct crypto_skcipher *tfm, const u8 *in_key, unsigned int key_len)
static int des_setkey_skcipher (struct crypto_skcipher *tfm, const u8 *in_key, unsigned int key_len)
{
return des_setkey(crypto_skcipher_tfm(tfm), in_key, key_len);
}
@@ -296,7 +296,7 @@ void ifx_deu_des (void *ctx_arg, u8 *out_arg, const u8 *in_arg,
* \param encdec 1 for encrypt; 0 for decrypt
* \param inplace not used
*/
void ifx_deu_des_ecb (void *ctx, uint8_t *dst, const uint8_t *src,
static void ifx_deu_des_ecb (void *ctx, uint8_t *dst, const uint8_t *src,
uint8_t *iv, size_t nbytes, int encdec, int inplace)
{
ifx_deu_des (ctx, dst, src, NULL, nbytes, encdec, 0);
@@ -313,7 +313,7 @@ void ifx_deu_des_ecb (void *ctx, uint8_t *dst, const uint8_t *src,
* \param encdec 1 for encrypt; 0 for decrypt
* \param inplace not used
*/
void ifx_deu_des_cbc (void *ctx, uint8_t *dst, const uint8_t *src,
static void ifx_deu_des_cbc (void *ctx, uint8_t *dst, const uint8_t *src,
uint8_t *iv, size_t nbytes, int encdec, int inplace)
{
ifx_deu_des (ctx, dst, src, iv, nbytes, encdec, 1);
@@ -330,11 +330,13 @@ void ifx_deu_des_cbc (void *ctx, uint8_t *dst, const uint8_t *src,
* \param encdec 1 for encrypt; 0 for decrypt
* \param inplace not used
*/
void ifx_deu_des_ofb (void *ctx, uint8_t *dst, const uint8_t *src,
/*
static void ifx_deu_des_ofb (void *ctx, uint8_t *dst, const uint8_t *src,
uint8_t *iv, size_t nbytes, int encdec, int inplace)
{
ifx_deu_des (ctx, dst, src, iv, nbytes, encdec, 2);
}
*/
/*! \fn void ifx_deu_des_cfb (void *ctx, uint8_t *dst, const uint8_t *src, uint8_t *iv, size_t nbytes, int encdec, int inplace)
\ingroup IFX_DES_FUNCTIONS
@@ -347,11 +349,13 @@ void ifx_deu_des_ofb (void *ctx, uint8_t *dst, const uint8_t *src,
\param encdec 1 for encrypt; 0 for decrypt
\param inplace not used
*/
void ifx_deu_des_cfb (void *ctx, uint8_t *dst, const uint8_t *src,
/*
static void ifx_deu_des_cfb (void *ctx, uint8_t *dst, const uint8_t *src,
uint8_t *iv, size_t nbytes, int encdec, int inplace)
{
ifx_deu_des (ctx, dst, src, iv, nbytes, encdec, 3);
}
*/
/*! \fn void ifx_deu_des_ctr (void *ctx, uint8_t *dst, const uint8_t *src, uint8_t *iv, size_t nbytes, int encdec, int inplace)
* \ingroup IFX_DES_FUNCTIONS
@@ -364,11 +368,13 @@ void ifx_deu_des_cfb (void *ctx, uint8_t *dst, const uint8_t *src,
* \param encdec 1 for encrypt; 0 for decrypt
* \param inplace not used
*/
/*
void ifx_deu_des_ctr (void *ctx, uint8_t *dst, const uint8_t *src,
uint8_t *iv, size_t nbytes, int encdec, int inplace)
{
ifx_deu_des (ctx, dst, src, iv, nbytes, encdec, 4);
}
*/
/*! \fn void ifx_deu_des_encrypt (struct crypto_tfm *tfm, uint8_t *out, const uint8_t *in)
* \ingroup IFX_DES_FUNCTIONS
@@ -377,7 +383,7 @@ void ifx_deu_des_ctr (void *ctx, uint8_t *dst, const uint8_t *src,
* \param out output bytestream
* \param in input bytestream
*/
void ifx_deu_des_encrypt (struct crypto_tfm *tfm, uint8_t * out, const uint8_t * in)
static void ifx_deu_des_encrypt (struct crypto_tfm *tfm, uint8_t * out, const uint8_t * in)
{
struct ifx_deu_des_ctx *ctx = crypto_tfm_ctx(tfm);
ifx_deu_des (ctx, out, in, NULL, DES_BLOCK_SIZE,
@@ -392,7 +398,7 @@ void ifx_deu_des_encrypt (struct crypto_tfm *tfm, uint8_t * out, const uint8_t *
* \param out output bytestream
* \param in input bytestream
*/
void ifx_deu_des_decrypt (struct crypto_tfm *tfm, uint8_t * out, const uint8_t * in)
static void ifx_deu_des_decrypt (struct crypto_tfm *tfm, uint8_t * out, const uint8_t * in)
{
struct ifx_deu_des_ctx *ctx = crypto_tfm_ctx(tfm);
ifx_deu_des (ctx, out, in, NULL, DES_BLOCK_SIZE,
@@ -420,7 +426,7 @@ void ifx_deu_des_decrypt (struct crypto_tfm *tfm, uint8_t * out, const uint8_t *
* \param key input key
* \param keylen key length
*/
int des3_ede_setkey(struct crypto_tfm *tfm, const u8 *key,
static int des3_ede_setkey(struct crypto_tfm *tfm, const u8 *key,
unsigned int keylen)
{
struct ifx_deu_des_ctx *dctx = crypto_tfm_ctx(tfm);
@@ -454,7 +460,7 @@ int des3_ede_setkey(struct crypto_tfm *tfm, const u8 *key,
* \param key input key
* \param keylen key length
*/
int des3_ede_setkey_skcipher(struct crypto_skcipher *tfm, const u8 *key,
static int des3_ede_setkey_skcipher(struct crypto_skcipher *tfm, const u8 *key,
unsigned int keylen)
{
return des3_ede_setkey(crypto_skcipher_tfm(tfm), key, keylen);
@@ -508,7 +514,7 @@ struct crypto_alg ifxdeu_des3_ede_alg = {
* \param req skcipher request
* \return err
*/
int ecb_des_encrypt(struct skcipher_request *req)
static int ecb_des_encrypt(struct skcipher_request *req)
{
struct ifx_deu_des_ctx *ctx = crypto_tfm_ctx(req->base.tfm);
struct skcipher_walk walk;
@@ -534,7 +540,7 @@ int ecb_des_encrypt(struct skcipher_request *req)
* \param req skcipher request
* \return err
*/
int ecb_des_decrypt(struct skcipher_request *req)
static int ecb_des_decrypt(struct skcipher_request *req)
{
struct ifx_deu_des_ctx *ctx = crypto_tfm_ctx(req->base.tfm);
struct skcipher_walk walk;
@@ -599,7 +605,7 @@ struct skcipher_alg ifxdeu_ecb_des3_ede_alg = {
* \param req skcipher request
* \return err
*/
int cbc_des_encrypt(struct skcipher_request *req)
static int cbc_des_encrypt(struct skcipher_request *req)
{
struct ifx_deu_des_ctx *ctx = crypto_tfm_ctx(req->base.tfm);
struct skcipher_walk walk;
@@ -627,7 +633,7 @@ int cbc_des_encrypt(struct skcipher_request *req)
* \param req skcipher request
* \return err
*/
int cbc_des_decrypt(struct skcipher_request *req)
static int cbc_des_decrypt(struct skcipher_request *req)
{
struct ifx_deu_des_ctx *ctx = crypto_tfm_ctx(req->base.tfm);
struct skcipher_walk walk;
@@ -304,4 +304,7 @@ struct deu_dma_t {
} controlr;
};
u32 input_swap(u32 input);
void chip_version(void);
#endif /* IFXMIPS_DEU_AR9_H */
@@ -255,4 +255,6 @@ struct deu_dma_t {
} controlr;
};
u32 input_swap(u32 input);
#endif /* IFXMIPS_DEU_DANUBE_H */
@@ -321,4 +321,7 @@ struct deu_dma_t {
} controlr;
};
u32 input_swap(u32 input);
void chip_version(void);
#endif /* IFXMIPS_DEU_VR9_H */
@@ -0,0 +1,26 @@
From: Shiji Yang <yangshiji66@outlook.com>
Date: Wed, 7 May 2025 20:24:34 +0800
Subject: [PATCH] add missing prototype for IFX_Var_Fifo_getRoom()
Fix build warning on 6.12 kernel:
/home/db/owrt/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/linux-ipq40xx_generic/ifxos-ugw_8.5.2.10/src/common/ifx_fifo.c:532:14: error: no previous prototype for 'IFX_Var_Fifo_getRoom' [-Werror=missing-prototypes]
532 | IFX_uint32_t IFX_Var_Fifo_getRoom (IFX_VFIFO *pFifo)
| ^~~~~~~~~~~~~~~~~~~~
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
---
src/include/ifx_fifo.h | 2 ++
1 file changed, 2 insertions(+)
--- a/src/include/ifx_fifo.h
+++ b/src/include/ifx_fifo.h
@@ -104,6 +104,8 @@ extern IFX_int8_t IFX_Var_Fifo_isFull
IFX_VFIFO *pFifo);
extern IFX_uint32_t IFX_Var_Fifo_getCount(
IFX_VFIFO *pFifo);
+extern IFX_uint32_t IFX_Var_Fifo_getRoom(
+ IFX_VFIFO *pFifo);
#ifdef __cplusplus
}
@@ -1,6 +1,6 @@
--- a/ifxmips_ptm_adsl.c
+++ b/ifxmips_ptm_adsl.c
@@ -175,9 +175,11 @@ static INLINE void mailbox_signal(unsign
@@ -177,9 +177,11 @@ static INLINE void mailbox_signal(unsign
*/
static INLINE void proc_file_create(void);
static INLINE void proc_file_delete(void);
@@ -12,7 +12,7 @@
#if defined(ENABLE_FW_PROC) && ENABLE_FW_PROC
static int proc_read_genconf(char *, char **, off_t, int, int *, void *);
#endif
@@ -896,6 +898,7 @@ static INLINE void proc_file_delete(void
@@ -927,6 +929,7 @@ static INLINE void proc_file_delete(void
remove_proc_entry("driver/ifx_ptm", NULL);
}
@@ -20,7 +20,7 @@
static int proc_read_version(char *buf, char **start, off_t offset, int count, int *eof, void *data)
{
int len = 0;
@@ -970,8 +973,9 @@ static int proc_write_wanmib(struct file
@@ -1001,8 +1004,9 @@ static int proc_write_wanmib(struct file
return count;
}
@@ -1,6 +1,6 @@
--- a/ifxmips_ptm_adsl.c
+++ b/ifxmips_ptm_adsl.c
@@ -180,7 +180,7 @@ static int proc_read_version(char *, cha
@@ -182,7 +182,7 @@ static int proc_read_version(char *, cha
static int proc_read_wanmib(char *, char **, off_t, int, int *, void *);
static int proc_write_wanmib(struct file *, const char *, unsigned long, void *);
#endif
@@ -9,7 +9,7 @@
static int proc_read_genconf(char *, char **, off_t, int, int *, void *);
#endif
#if defined(ENABLE_DBG_PROC) && ENABLE_DBG_PROC
@@ -191,8 +191,8 @@ static int proc_write_wanmib(struct file
@@ -193,8 +193,8 @@ static int proc_write_wanmib(struct file
/*
* Proc Help Functions
*/
@@ -19,7 +19,7 @@
static INLINE int strincmp(const char *, const char *, int);
#endif
static INLINE int ifx_ptm_version(char *);
@@ -1166,8 +1166,6 @@ static int proc_write_dbg(struct file *f
@@ -1197,8 +1197,6 @@ static int proc_write_dbg(struct file *f
return count;
}
@@ -28,7 +28,7 @@
static INLINE int stricmp(const char *p1, const char *p2)
{
int c1, c2;
@@ -1185,7 +1183,6 @@ static INLINE int stricmp(const char *p1
@@ -1216,7 +1214,6 @@ static INLINE int stricmp(const char *p1
return *p1 - *p2;
}
@@ -0,0 +1,26 @@
From: Shiji Yang <yangshiji66@outlook.com>
Date: Fri, 9 May 2025 02:34:14 +0800
Subject: [PATCH] fix missing-prototypes warning
Fix the build warning on 6.12 kernel:
/home/db/owrt/build_dir/target-mips_24kc_musl/linux-lantiq_xrx200/ltq-ptm-vr9/ltq-ptm/ifxmips_ptm_vdsl.c:64:15: error: no previous prototype for 'cgu_get_pp32_clock' [-Werror=missing-prototypes]
64 | unsigned long cgu_get_pp32_clock(void)
| ^~~~~~~~~~~~~~~~~~
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
---
ifxmips_ptm_vdsl.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/ifxmips_ptm_vdsl.c
+++ b/ifxmips_ptm_vdsl.c
@@ -61,7 +61,7 @@ static void *g_xdata_addr = NULL;
#define ENABLE_TMP_DBG 0
-unsigned long cgu_get_pp32_clock(void)
+static unsigned long cgu_get_pp32_clock(void)
{
struct clk *c = clk_get_ppe();
unsigned long rate = clk_get_rate(c);
@@ -0,0 +1,26 @@
From: Shiji Yang <yangshiji66@outlook.com>
Date: Fri, 9 May 2025 02:36:31 +0800
Subject: [PATCH] add missing header mod_devicetable.h
Fix compilation error:
/home/db/owrt/build_dir/target-mips_24kc_musl/linux-lantiq_xrx200/ltq-ptm-vr9/ltq-ptm/ifxmips_ptm_vdsl.c:969:34: error: array type has incomplete element type 'struct of_device_id'
969 | static const struct of_device_id ltq_ptm_match[] = {
| ^~~~~~~~~~~~~
/home/db/owrt/build_dir/target-mips_24kc_musl/linux-lantiq_xrx200/ltq-ptm-vr9/ltq-ptm/ifxmips_ptm_vdsl.c:969:34: error: 'ltq_ptm_match' defined but not used [-Werror=unused-variable]
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
---
ifxmips_ptm_vdsl.c | 1 +
1 file changed, 1 insertion(+)
--- a/ifxmips_ptm_vdsl.c
+++ b/ifxmips_ptm_vdsl.c
@@ -34,6 +34,7 @@
#include <linux/interrupt.h>
#include <linux/netdevice.h>
#include <linux/platform_device.h>
+#include <linux/mod_devicetable.h>
#include <linux/of_device.h>
#include "ifxmips_ptm_vdsl.h"
@@ -0,0 +1,25 @@
From: Shiji Yang <yangshiji66@outlook.com>
Date: Fri, 9 May 2025 21:16:08 +0800
Subject: [PATCH] add missing header "mod_devicetable.h"
Fix compilation error:
/home/db/owrt/build_dir/target-mips_24kc_musl/linux-lantiq_xway/ltq-ptm-danube/ltq-ptm/ifxmips_ptm_adsl.c:1433:34: error: array type has incomplete element type 'struct of_device_id'
1433 | static const struct of_device_id ltq_ptm_match[] = {
| ^~~~~~~~~~~~~
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
---
ifxmips_ptm_adsl.c | 1 +
1 file changed, 1 insertion(+)
--- a/ifxmips_ptm_adsl.c
+++ b/ifxmips_ptm_adsl.c
@@ -43,6 +43,7 @@
#include <linux/ioctl.h>
#include <linux/etherdevice.h>
#include <linux/interrupt.h>
+#include <linux/mod_devicetable.h>
#include <linux/netdevice.h>
#include <linux/platform_device.h>
#include <linux/of_device.h>
@@ -46,6 +46,8 @@
#include <linux/netdevice.h>
#include <linux/platform_device.h>
#include <linux/of_device.h>
#include <linux/uaccess.h>
#include <linux/capability.h>
#include <asm/io.h>
/*
@@ -463,56 +465,85 @@ static int ptm_ioctl(struct net_device *dev, struct ifreq *ifr, void __user *dat
{
int ndev;
if (!capable(CAP_NET_ADMIN))
return -EPERM;
for ( ndev = 0; ndev < ARRAY_SIZE(g_net_dev) && g_net_dev[ndev] != dev; ndev++ );
ASSERT(ndev >= 0 && ndev < ARRAY_SIZE(g_net_dev), "ndev = %d (wrong value)", ndev);
switch ( cmd )
{
case IFX_PTM_MIB_CW_GET:
((PTM_CW_IF_ENTRY_T *)data)->ifRxNoIdleCodewords = WAN_MIB_TABLE[ndev].wrx_nonidle_cw;
((PTM_CW_IF_ENTRY_T *)data)->ifRxIdleCodewords = WAN_MIB_TABLE[ndev].wrx_idle_cw;
((PTM_CW_IF_ENTRY_T *)data)->ifRxCodingViolation = WAN_MIB_TABLE[ndev].wrx_err_cw;
((PTM_CW_IF_ENTRY_T *)data)->ifTxNoIdleCodewords = 0;
((PTM_CW_IF_ENTRY_T *)data)->ifTxIdleCodewords = 0;
{
PTM_CW_IF_ENTRY_T tmp = {0};
tmp.ifRxNoIdleCodewords = WAN_MIB_TABLE[ndev].wrx_nonidle_cw;
tmp.ifRxIdleCodewords = WAN_MIB_TABLE[ndev].wrx_idle_cw;
tmp.ifRxCodingViolation = WAN_MIB_TABLE[ndev].wrx_err_cw;
tmp.ifTxNoIdleCodewords = 0;
tmp.ifTxIdleCodewords = 0;
if (copy_to_user(data, &tmp, sizeof(tmp)))
return -EFAULT;
}
break;
case IFX_PTM_MIB_FRAME_GET:
((PTM_FRAME_MIB_T *)data)->RxCorrect = WAN_MIB_TABLE[ndev].wrx_correct_pdu;
((PTM_FRAME_MIB_T *)data)->TC_CrcError = WAN_MIB_TABLE[ndev].wrx_tccrc_err_pdu;
((PTM_FRAME_MIB_T *)data)->RxDropped = WAN_MIB_TABLE[ndev].wrx_nodesc_drop_pdu + WAN_MIB_TABLE[ndev].wrx_len_violation_drop_pdu;
((PTM_FRAME_MIB_T *)data)->TxSend = WAN_MIB_TABLE[ndev].wtx_total_pdu;
{
PTM_FRAME_MIB_T tmp = {0};
tmp.RxCorrect = WAN_MIB_TABLE[ndev].wrx_correct_pdu;
tmp.TC_CrcError = WAN_MIB_TABLE[ndev].wrx_tccrc_err_pdu;
tmp.RxDropped = WAN_MIB_TABLE[ndev].wrx_nodesc_drop_pdu + WAN_MIB_TABLE[ndev].wrx_len_violation_drop_pdu;
tmp.TxSend = WAN_MIB_TABLE[ndev].wtx_total_pdu;
if (copy_to_user(data, &tmp, sizeof(tmp)))
return -EFAULT;
}
break;
case IFX_PTM_CFG_GET:
((IFX_PTM_CFG_T *)data)->RxEthCrcPresent = CFG_ETH_EFMTC_CRC->rx_eth_crc_present;
((IFX_PTM_CFG_T *)data)->RxEthCrcCheck = CFG_ETH_EFMTC_CRC->rx_eth_crc_check;
((IFX_PTM_CFG_T *)data)->RxTcCrcCheck = CFG_ETH_EFMTC_CRC->rx_tc_crc_check;
((IFX_PTM_CFG_T *)data)->RxTcCrcLen = CFG_ETH_EFMTC_CRC->rx_tc_crc_len;
((IFX_PTM_CFG_T *)data)->TxEthCrcGen = CFG_ETH_EFMTC_CRC->tx_eth_crc_gen;
((IFX_PTM_CFG_T *)data)->TxTcCrcGen = CFG_ETH_EFMTC_CRC->tx_tc_crc_gen;
((IFX_PTM_CFG_T *)data)->TxTcCrcLen = CFG_ETH_EFMTC_CRC->tx_tc_crc_len;
{
IFX_PTM_CFG_T tmp = {0};
tmp.RxEthCrcPresent = CFG_ETH_EFMTC_CRC->rx_eth_crc_present;
tmp.RxEthCrcCheck = CFG_ETH_EFMTC_CRC->rx_eth_crc_check;
tmp.RxTcCrcCheck = CFG_ETH_EFMTC_CRC->rx_tc_crc_check;
tmp.RxTcCrcLen = CFG_ETH_EFMTC_CRC->rx_tc_crc_len;
tmp.TxEthCrcGen = CFG_ETH_EFMTC_CRC->tx_eth_crc_gen;
tmp.TxTcCrcGen = CFG_ETH_EFMTC_CRC->tx_tc_crc_gen;
tmp.TxTcCrcLen = CFG_ETH_EFMTC_CRC->tx_tc_crc_len;
if (copy_to_user(data, &tmp, sizeof(tmp)))
return -EFAULT;
}
break;
case IFX_PTM_CFG_SET:
CFG_ETH_EFMTC_CRC->rx_eth_crc_present = ((IFX_PTM_CFG_T *)data)->RxEthCrcPresent ? 1 : 0;
CFG_ETH_EFMTC_CRC->rx_eth_crc_check = ((IFX_PTM_CFG_T *)data)->RxEthCrcCheck ? 1 : 0;
if ( ((IFX_PTM_CFG_T *)data)->RxTcCrcCheck && (((IFX_PTM_CFG_T *)data)->RxTcCrcLen == 16 || ((IFX_PTM_CFG_T *)data)->RxTcCrcLen == 32) )
{
CFG_ETH_EFMTC_CRC->rx_tc_crc_check = 1;
CFG_ETH_EFMTC_CRC->rx_tc_crc_len = ((IFX_PTM_CFG_T *)data)->RxTcCrcLen;
}
else
{
CFG_ETH_EFMTC_CRC->rx_tc_crc_check = 0;
CFG_ETH_EFMTC_CRC->rx_tc_crc_len = 0;
}
CFG_ETH_EFMTC_CRC->tx_eth_crc_gen = ((IFX_PTM_CFG_T *)data)->TxEthCrcGen ? 1 : 0;
if ( ((IFX_PTM_CFG_T *)data)->TxTcCrcGen && (((IFX_PTM_CFG_T *)data)->TxTcCrcLen == 16 || ((IFX_PTM_CFG_T *)data)->TxTcCrcLen == 32) )
{
CFG_ETH_EFMTC_CRC->tx_tc_crc_gen = 1;
CFG_ETH_EFMTC_CRC->tx_tc_crc_len = ((IFX_PTM_CFG_T *)data)->TxTcCrcLen;
}
else
{
CFG_ETH_EFMTC_CRC->tx_tc_crc_gen = 0;
CFG_ETH_EFMTC_CRC->tx_tc_crc_len = 0;
IFX_PTM_CFG_T cfg = {0};
if (copy_from_user(&cfg, data, sizeof(cfg)))
return -EFAULT;
CFG_ETH_EFMTC_CRC->rx_eth_crc_present = cfg.RxEthCrcPresent ? 1 : 0;
CFG_ETH_EFMTC_CRC->rx_eth_crc_check = cfg.RxEthCrcCheck ? 1 : 0;
if ( cfg.RxTcCrcCheck && (cfg.RxTcCrcLen == 16 || cfg.RxTcCrcLen == 32) )
{
CFG_ETH_EFMTC_CRC->rx_tc_crc_check = 1;
CFG_ETH_EFMTC_CRC->rx_tc_crc_len = cfg.RxTcCrcLen;
}
else
{
CFG_ETH_EFMTC_CRC->rx_tc_crc_check = 0;
CFG_ETH_EFMTC_CRC->rx_tc_crc_len = 0;
}
CFG_ETH_EFMTC_CRC->tx_eth_crc_gen = cfg.TxEthCrcGen ? 1 : 0;
if ( cfg.TxTcCrcGen && (cfg.TxTcCrcLen == 16 || cfg.TxTcCrcLen == 32) )
{
CFG_ETH_EFMTC_CRC->tx_tc_crc_gen = 1;
CFG_ETH_EFMTC_CRC->tx_tc_crc_len = cfg.TxTcCrcLen;
}
else
{
CFG_ETH_EFMTC_CRC->tx_tc_crc_gen = 0;
CFG_ETH_EFMTC_CRC->tx_tc_crc_len = 0;
}
}
break;
default:
@@ -381,14 +381,24 @@ static int ptm_ioctl(struct net_device *dev, struct ifreq *ifr, void __user *dat
{
ASSERT(dev == g_net_dev[0], "incorrect device");
if (!capable(CAP_NET_ADMIN))
return -EPERM;
switch ( cmd )
{
case IFX_PTM_MIB_CW_GET:
((PTM_CW_IF_ENTRY_T *)data)->ifRxNoIdleCodewords = IFX_REG_R32(DREG_AR_CELL0) + IFX_REG_R32(DREG_AR_CELL1);
((PTM_CW_IF_ENTRY_T *)data)->ifRxIdleCodewords = IFX_REG_R32(DREG_AR_IDLE_CNT0) + IFX_REG_R32(DREG_AR_IDLE_CNT1);
((PTM_CW_IF_ENTRY_T *)data)->ifRxCodingViolation = IFX_REG_R32(DREG_AR_CVN_CNT0) + IFX_REG_R32(DREG_AR_CVN_CNT1) + IFX_REG_R32(DREG_AR_CVNP_CNT0) + IFX_REG_R32(DREG_AR_CVNP_CNT1);
((PTM_CW_IF_ENTRY_T *)data)->ifTxNoIdleCodewords = IFX_REG_R32(DREG_AT_CELL0) + IFX_REG_R32(DREG_AT_CELL1);
((PTM_CW_IF_ENTRY_T *)data)->ifTxIdleCodewords = IFX_REG_R32(DREG_AT_IDLE_CNT0) + IFX_REG_R32(DREG_AT_IDLE_CNT1);
{
PTM_CW_IF_ENTRY_T tmp = {0};
tmp.ifRxNoIdleCodewords = IFX_REG_R32(DREG_AR_CELL0) + IFX_REG_R32(DREG_AR_CELL1);
tmp.ifRxIdleCodewords = IFX_REG_R32(DREG_AR_IDLE_CNT0) + IFX_REG_R32(DREG_AR_IDLE_CNT1);
tmp.ifRxCodingViolation = IFX_REG_R32(DREG_AR_CVN_CNT0) + IFX_REG_R32(DREG_AR_CVN_CNT1) + IFX_REG_R32(DREG_AR_CVNP_CNT0) + IFX_REG_R32(DREG_AR_CVNP_CNT1);
tmp.ifTxNoIdleCodewords = IFX_REG_R32(DREG_AT_CELL0) + IFX_REG_R32(DREG_AT_CELL1);
tmp.ifTxIdleCodewords = IFX_REG_R32(DREG_AT_IDLE_CNT0) + IFX_REG_R32(DREG_AT_IDLE_CNT1);
if (copy_to_user(data, &tmp, sizeof(tmp)))
return -EFAULT;
}
break;
case IFX_PTM_MIB_FRAME_GET:
{
@@ -401,38 +411,50 @@ static int ptm_ioctl(struct net_device *dev, struct ifreq *ifr, void __user *dat
for ( i = 0; i < 8; i++ )
tmp.TxSend += WAN_TX_MIB_TABLE(i)->wtx_total_pdu;
*((PTM_FRAME_MIB_T *)data) = tmp;
if (copy_to_user(data, &tmp, sizeof(tmp)))
return -EFAULT;
}
break;
case IFX_PTM_CFG_GET:
// use bear channel 0 preemption gamma interface settings
((IFX_PTM_CFG_T *)data)->RxEthCrcPresent = 1;
((IFX_PTM_CFG_T *)data)->RxEthCrcCheck = RX_GAMMA_ITF_CFG(0)->rx_eth_fcs_ver_dis == 0 ? 1 : 0;
((IFX_PTM_CFG_T *)data)->RxTcCrcCheck = RX_GAMMA_ITF_CFG(0)->rx_tc_crc_ver_dis == 0 ? 1 : 0;;
((IFX_PTM_CFG_T *)data)->RxTcCrcLen = RX_GAMMA_ITF_CFG(0)->rx_tc_crc_size == 0 ? 0 : (RX_GAMMA_ITF_CFG(0)->rx_tc_crc_size * 16);
((IFX_PTM_CFG_T *)data)->TxEthCrcGen = TX_GAMMA_ITF_CFG(0)->tx_eth_fcs_gen_dis == 0 ? 1 : 0;
((IFX_PTM_CFG_T *)data)->TxTcCrcGen = TX_GAMMA_ITF_CFG(0)->tx_tc_crc_size == 0 ? 0 : 1;
((IFX_PTM_CFG_T *)data)->TxTcCrcLen = TX_GAMMA_ITF_CFG(0)->tx_tc_crc_size == 0 ? 0 : (TX_GAMMA_ITF_CFG(0)->tx_tc_crc_size * 16);
{
IFX_PTM_CFG_T tmp = {0};
// use bear channel 0 preemption gamma interface settings
tmp.RxEthCrcPresent = 1;
tmp.RxEthCrcCheck = RX_GAMMA_ITF_CFG(0)->rx_eth_fcs_ver_dis == 0 ? 1 : 0;
tmp.RxTcCrcCheck = RX_GAMMA_ITF_CFG(0)->rx_tc_crc_ver_dis == 0 ? 1 : 0;
tmp.RxTcCrcLen = RX_GAMMA_ITF_CFG(0)->rx_tc_crc_size == 0 ? 0 : (RX_GAMMA_ITF_CFG(0)->rx_tc_crc_size * 16);
tmp.TxEthCrcGen = TX_GAMMA_ITF_CFG(0)->tx_eth_fcs_gen_dis == 0 ? 1 : 0;
tmp.TxTcCrcGen = TX_GAMMA_ITF_CFG(0)->tx_tc_crc_size == 0 ? 0 : 1;
tmp.TxTcCrcLen = TX_GAMMA_ITF_CFG(0)->tx_tc_crc_size == 0 ? 0 : (TX_GAMMA_ITF_CFG(0)->tx_tc_crc_size * 16);
if (copy_to_user(data, &tmp, sizeof(tmp)))
return -EFAULT;
}
break;
case IFX_PTM_CFG_SET:
{
IFX_PTM_CFG_T cfg;
int i;
if (copy_from_user(&cfg, data, sizeof(cfg)))
return -EFAULT;
for ( i = 0; i < 4; i++ ) {
RX_GAMMA_ITF_CFG(i)->rx_eth_fcs_ver_dis = ((IFX_PTM_CFG_T *)data)->RxEthCrcCheck ? 0 : 1;
RX_GAMMA_ITF_CFG(i)->rx_eth_fcs_ver_dis = cfg.RxEthCrcCheck ? 0 : 1;
RX_GAMMA_ITF_CFG(0)->rx_tc_crc_ver_dis = ((IFX_PTM_CFG_T *)data)->RxTcCrcCheck ? 0 : 1;
RX_GAMMA_ITF_CFG(0)->rx_tc_crc_ver_dis = cfg.RxTcCrcCheck ? 0 : 1;
switch ( ((IFX_PTM_CFG_T *)data)->RxTcCrcLen ) {
switch ( cfg.RxTcCrcLen ) {
case 16: RX_GAMMA_ITF_CFG(0)->rx_tc_crc_size = 1; break;
case 32: RX_GAMMA_ITF_CFG(0)->rx_tc_crc_size = 2; break;
default: RX_GAMMA_ITF_CFG(0)->rx_tc_crc_size = 0;
}
TX_GAMMA_ITF_CFG(0)->tx_eth_fcs_gen_dis = ((IFX_PTM_CFG_T *)data)->TxEthCrcGen ? 0 : 1;
TX_GAMMA_ITF_CFG(0)->tx_eth_fcs_gen_dis = cfg.TxEthCrcGen ? 0 : 1;
if ( ((IFX_PTM_CFG_T *)data)->TxTcCrcGen ) {
switch ( ((IFX_PTM_CFG_T *)data)->TxTcCrcLen ) {
if ( cfg.TxTcCrcGen ) {
switch ( cfg.TxTcCrcLen ) {
case 16: TX_GAMMA_ITF_CFG(0)->tx_tc_crc_size = 1; break;
case 32: TX_GAMMA_ITF_CFG(0)->tx_tc_crc_size = 2; break;
default: TX_GAMMA_ITF_CFG(0)->tx_tc_crc_size = 0;
@@ -0,0 +1,56 @@
From: Shiji Yang <yangshiji66@outlook.com>
Date: Thu, 8 May 2025 23:30:39 +0800
Subject: [PATCH] fix missing prototypes warnings
This patch fixes various missing-prototypes build warnings on
6.12 kernel:
/home/db/owrt/build_dir/target-mips_24kc_musl/linux-lantiq_xrx200/drv_tapi-3.13.0/src/drv_tapi_event.c:2815:13: error: no previous prototype for 'IFX_TAPI_EventWrpBufferPool_ElementCountGet' [-Werror=missing-prototypes]
2815 | IFX_int32_t IFX_TAPI_EventWrpBufferPool_ElementCountGet(IFX_void_t)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/db/owrt/build_dir/target-mips_24kc_musl/linux-lantiq_xrx200/drv_tapi-3.13.0/src/drv_tapi_event.c:2844:13: error: no previous prototype for 'IFX_TAPI_EventWrpBufferPool_ElementAvailCountGet' [-Werror=missing-prototypes]
2844 | IFX_int32_t IFX_TAPI_EventWrpBufferPool_ElementAvailCountGet(IFX_void_t)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/db/owrt/build_dir/target-mips_24kc_musl/linux-lantiq_xrx200/drv_tapi-3.13.0/src/drv_tapi_fxo.c:145:13: error: no previous prototype for 'TAPI_FXO_DAA_Ioctl' [-Werror=missing-prototypes]
145 | IFX_int32_t TAPI_FXO_DAA_Ioctl (TAPI_CHANNEL *pChannel,
| ^~~~~~~~~~~~~~~~~~
/home/db/owrt/build_dir/target-mips_24kc_musl/linux-lantiq_xrx200/drv_tapi-3.13.0/src/drv_tapi_fxo.c:291:13: error: no previous prototype for 'TAPI_FXO_SmartSlic_Ioctl' [-Werror=missing-prototypes]
291 | IFX_int32_t TAPI_FXO_SmartSlic_Ioctl(TAPI_CHANNEL *pChannel,
| ^~~~~~~~~~~~~~~~~~~~~~~~
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
---
src/drv_tapi_event.h | 3 +++
src/drv_tapi_fxo.c | 4 ++--
2 files changed, 5 insertions(+), 2 deletions(-)
--- a/src/drv_tapi_event.h
+++ b/src/drv_tapi_event.h
@@ -24,4 +24,7 @@
#define IFX_EVENT_DISABLE 1
#define IFX_EVENT_ENABLE 0
+IFX_int32_t IFX_TAPI_EventWrpBufferPool_ElementCountGet(IFX_void_t);
+IFX_int32_t IFX_TAPI_EventWrpBufferPool_ElementAvailCountGet(IFX_void_t);
+
#endif /* _DRV_TAPIEVENT_H */
--- a/src/drv_tapi_fxo.c
+++ b/src/drv_tapi_fxo.c
@@ -142,7 +142,7 @@ IFX_return_t IFX_TAPI_FXO_Event_Dispatch
\remarks
This function is called if DAA TAPI plugin is used for FXO handling.
*/
-IFX_int32_t TAPI_FXO_DAA_Ioctl (TAPI_CHANNEL *pChannel,
+static IFX_int32_t TAPI_FXO_DAA_Ioctl (TAPI_CHANNEL *pChannel,
IFX_uint32_t cmd,
IFX_ulong_t arg)
{
@@ -288,7 +288,7 @@ IFX_int32_t TAPI_FXO_DAA_Ioctl (TAPI_CHA
This function is called if LL driver is used for FXO ioctl handling.
Used on systems which have SmartSLIC with fused FXO line(s).
*/
-IFX_int32_t TAPI_FXO_SmartSlic_Ioctl(TAPI_CHANNEL *pChannel,
+static IFX_int32_t TAPI_FXO_SmartSlic_Ioctl(TAPI_CHANNEL *pChannel,
IFX_uint32_t cmd,
IFX_ulong_t arg)
{
@@ -0,0 +1,24 @@
From: Shiji Yang <yangshiji66@outlook.com>
Date: Wed, 7 May 2025 21:57:39 +0800
Subject: [PATCH] add missing prototype for ifx_mei_atm_led_blink()
Fix build warning on 6.12 kernel:
/home/db/owrt/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/linux-ipq40xx_generic/dsl_cpe_mei-ugw_8.5.2.10/src/drv_mei_cpe_api_atm_ptm_intern.c:658:5: error: no previous prototype for 'ifx_mei_atm_led_blink' [-Werror=missing-prototypes]
658 | int ifx_mei_atm_led_blink(void)
| ^~~~~~~~~~~~~~~~~~~~~
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
---
src/drv_mei_cpe_api_atm_ptm_intern.h | 1 +
1 file changed, 1 insertion(+)
--- a/src/drv_mei_cpe_api_atm_ptm_intern.h
+++ b/src/drv_mei_cpe_api_atm_ptm_intern.h
@@ -91,6 +91,7 @@ extern IFX_int32_t MEI_InternalLineTCMod
IFX_int8_t nInstance,
IFX_boolean_t bPowerUp,
IFX_boolean_t bKillMEIControlThread);
+int ifx_mei_atm_led_blink(void);
#ifdef PPA_SUPPORTS_CALLBACKS
extern int ppa_callback_set(e_ltq_mei_cb_type type, void *func);
@@ -0,0 +1,43 @@
From: Shiji Yang <yangshiji66@outlook.com>
Date: Wed, 7 May 2025 22:07:16 +0800
Subject: [PATCH] convert platform driver .remove to .remove_new
Fix build error on 6.12 kernel:
/home/db/owrt/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/linux-ipq40xx_generic/dsl_cpe_mei-ugw_8.5.2.10/src/drv_mei_cpe_linux.c:2270:14: error: initialization of 'void (*)(struct platform_device *)' from incompatible pointer type 'int (*)(struct platform_device *)' [-Wincompatible-pointer-types]
2270 | .remove = ltq_dsl_cpe_mei_remove,
| ^~~~~~~~~~~~~~~~~~~~~~
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
---
src/drv_mei_cpe_linux.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
--- a/src/drv_mei_cpe_linux.c
+++ b/src/drv_mei_cpe_linux.c
@@ -2234,7 +2234,7 @@ static int dev_found = 0;
/* containt the number of devices registered in module_init */
static int dev_registered = 0;
-static int ltq_dsl_cpe_mei_remove(struct platform_device *pdev)
+static void ltq_dsl_cpe_mei_remove(struct platform_device *pdev)
{
/* clear platform */
MEI_DEVICE_CFG_VALUE_SET(platform, e_MEI_DEV_PLATFORM_CONFIG_UNKNOWN);
@@ -2244,7 +2244,6 @@ static int ltq_dsl_cpe_mei_remove(struct
dev_registered--;
}
#endif
- return 0;
}
static const struct of_device_id ltq_dsl_cpe_mei_match[] = {
@@ -2267,7 +2266,7 @@ static struct platform_driver ltq_dsl_cp
.owner = THIS_MODULE,
.of_match_table = ltq_dsl_cpe_mei_match,
},
- .remove = ltq_dsl_cpe_mei_remove,
+ .remove_new = ltq_dsl_cpe_mei_remove,
};
static int ltq_dsl_cpe_mei_reboot_notifier(struct notifier_block *nb,
@@ -0,0 +1,50 @@
From: Shiji Yang <yangshiji66@outlook.com>
Date: Wed, 7 May 2025 22:53:48 +0800
Subject: [PATCH] fix ignored-qualifiers build warnings
This patch fixes the following build warnings:
/home/db/owrt/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/linux-ipq40xx_generic/dsl_cpe_mei-ugw_8.5.2.10/src/drv_mei_cpe_mei_access_vrx.c:41:15: error: type qualifiers ignored on function return type [-Werror=ignored-qualifiers]
41 | static inline volatile IFX_uint32_t MEI_RCU_get(MEI_MEI_DRV_CNTRL_T *pMeiDrvCntrl)
| ^~~~~~~~
/home/db/owrt/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/linux-ipq40xx_generic/dsl_cpe_mei-ugw_8.5.2.10/src/drv_mei_cpe_mei_access_vrx.c:55:15: error: type qualifiers ignored on function return type [-Werror=ignored-qualifiers]
55 | static inline volatile IFX_uint32_t MEI_CGU_get(MEI_MEI_DRV_CNTRL_T *pMeiDrvCntrl)
| ^~~~~~~~
/home/db/owrt/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/linux-ipq40xx_generic/dsl_cpe_mei-ugw_8.5.2.10/src/drv_mei_cpe_mei_access_vrx.c:63:15: error: type qualifiers ignored on function return type [-Werror=ignored-qualifiers]
63 | static inline volatile IFX_uint32_t MEI_RCU_Slave_get(MEI_MEI_DRV_CNTRL_T *pMeiDrvCntrl)
| ^~~~~~~~
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
---
src/drv_mei_cpe_mei_access_vrx.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
--- a/src/drv_mei_cpe_mei_access_vrx.c
+++ b/src/drv_mei_cpe_mei_access_vrx.c
@@ -38,7 +38,7 @@
Local macro definition
========================================================================= */
-static inline volatile IFX_uint32_t MEI_RCU_get(MEI_MEI_DRV_CNTRL_T *pMeiDrvCntrl)
+static inline IFX_uint32_t MEI_RCU_get(MEI_MEI_DRV_CNTRL_T *pMeiDrvCntrl)
{
IFX_uint32_t ret = 0;
if (MEI_DEVICE_CFG_IS_PLATFORM(e_MEI_DEV_PLATFORM_CONFIG_VR9))
@@ -52,7 +52,7 @@ static inline volatile IFX_uint32_t MEI_
return ret;
}
#if (MEI_SUPPORT_DEVICE_VR11 == 1)
-static inline volatile IFX_uint32_t MEI_CGU_get(MEI_MEI_DRV_CNTRL_T *pMeiDrvCntrl)
+static inline IFX_uint32_t MEI_CGU_get(MEI_MEI_DRV_CNTRL_T *pMeiDrvCntrl)
{
IFX_uint32_t ret = 0;
ret = (MEI_DRV_PCIE_VIRT_MEMBASE_GET(pMeiDrvCntrl) | MEI_CGU_OFFSET);
@@ -60,7 +60,7 @@ static inline volatile IFX_uint32_t MEI_
}
#endif
-static inline volatile IFX_uint32_t MEI_RCU_Slave_get(MEI_MEI_DRV_CNTRL_T *pMeiDrvCntrl)
+static inline IFX_uint32_t MEI_RCU_Slave_get(MEI_MEI_DRV_CNTRL_T *pMeiDrvCntrl)
{
IFX_uint32_t ret = 0;
if (MEI_DEVICE_CFG_IS_PLATFORM(e_MEI_DEV_PLATFORM_CONFIG_VR9))
@@ -0,0 +1,172 @@
From: Shiji Yang <yangshiji66@outlook.com>
Date: Wed, 7 May 2025 23:22:11 +0800
Subject: [PATCH] fix missing prototypes warnings
This patch fixes various missing-prototypes build warnings on
6.12 kernel.
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
---
src/bnd/drv_dsl_cpe_api_bnd_vrx.c | 2 +-
src/common/drv_dsl_cpe_api.c | 16 ++++++++--------
src/common/drv_dsl_cpe_os_linux.c | 4 ++--
src/device/drv_dsl_cpe_device_vrx.c | 2 +-
src/g997/drv_dsl_cpe_api_g997_vrx.c | 1 +
src/include/drv_dsl_cpe_intern.h | 6 +++---
6 files changed, 16 insertions(+), 15 deletions(-)
--- a/src/bnd/drv_dsl_cpe_api_bnd_vrx.c
+++ b/src/bnd/drv_dsl_cpe_api_bnd_vrx.c
@@ -75,7 +75,7 @@ static DSL_Error_t DSL_DRV_BND_VRX_HsCon
- DSL_SUCCESS in case of success
- DSL_ERROR if operation failed
*/
-DSL_Error_t DSL_DRV_BND_VRX_PafHsStatusGet(
+static DSL_Error_t DSL_DRV_BND_VRX_PafHsStatusGet(
DSL_Context_t *pContext,
DSL_BND_VRX_PafHsStatus_t *pData)
{
--- a/src/common/drv_dsl_cpe_api.c
+++ b/src/common/drv_dsl_cpe_api.c
@@ -3873,7 +3873,7 @@ DSL_Error_t DSL_DRV_LoopLengthStatusGet(
return nErrCode;
}
-DSL_Error_t DSL_DRV_RetxStatisticsGet(
+static DSL_Error_t DSL_DRV_RetxStatisticsGet(
DSL_IN DSL_Context_t *pContext,
DSL_IN_OUT DSL_ReTxStatistics_t *pData)
{
@@ -4053,7 +4053,7 @@ DSL_Error_t DSL_DRV_SystemInterfaceConfi
\ref DSL_FIO_SYSTEM_INTERFACE_STATUS_GET
*/
#ifdef INCLUDE_DSL_SYSTEM_INTERFACE
-DSL_Error_t DSL_DRV_SystemInterfaceStatusGet(
+static DSL_Error_t DSL_DRV_SystemInterfaceStatusGet(
DSL_Context_t *pContext,
DSL_SystemInterfaceStatus_t *pData)
{
@@ -5593,7 +5593,7 @@ DSL_Error_t DSL_DRV_DBG_DebugFeatureConf
#endif /* DSL_DEBUG_DISABLE*/
#ifdef INCLUDE_DSL_FILTER_DETECTION
-DSL_Error_t DSL_DRV_FilterDetectionDataGet(
+static DSL_Error_t DSL_DRV_FilterDetectionDataGet(
DSL_IN DSL_Context_t *pContext,
DSL_OUT DSL_FilterDetection_t *pData)
{
@@ -5742,7 +5742,7 @@ DSL_Error_t DSL_DRV_FilterDetectionBasic
}
#endif /* INCLUDE_DSL_FILTER_DETECTION */
-DSL_Error_t DSL_DRV_HybridSelectionDataGet(
+static DSL_Error_t DSL_DRV_HybridSelectionDataGet(
DSL_IN DSL_Context_t *pContext,
DSL_OUT DSL_HybridSelection_t *pData)
{
@@ -5804,7 +5804,7 @@ DSL_Error_t DSL_DRV_HybridSelectionDataG
return nErrCode;
}
-DSL_Error_t DSL_DRV_OlrStatisticsGet(
+static DSL_Error_t DSL_DRV_OlrStatisticsGet(
DSL_IN DSL_Context_t *pContext,
DSL_OUT DSL_OlrStatistics_t *pData)
{
@@ -5932,7 +5932,7 @@ DSL_void_t DSL_DRV_InitDataFree(
#endif /* INCLUDE_DSL_INIT_DATA_PREPARE*/
}
-DSL_Error_t DSL_DRV_IoctlHandleHelperCall(
+static DSL_Error_t DSL_DRV_IoctlHandleHelperCall(
DSL_OpenContext_t *pOpenCtx,
DSL_Context_t *pContext,
DSL_boolean_t bIsInKernel,
@@ -6573,7 +6573,7 @@ DSL_Error_t DSL_DRV_T1413_XTUR_VendorRev
return nErrCode;
}
-DSL_Error_t DSL_DRV_PSDCalibrationConfigGet(
+static DSL_Error_t DSL_DRV_PSDCalibrationConfigGet(
DSL_IN DSL_Context_t *pContext,
DSL_IN_OUT DSL_PSDCalibration_t *pData)
{
@@ -6608,7 +6608,7 @@ DSL_Error_t DSL_DRV_PSDCalibrationConfig
return nErrCode;
}
-DSL_Error_t DSL_DRV_PSDCalibrationConfigSet(
+static DSL_Error_t DSL_DRV_PSDCalibrationConfigSet(
DSL_IN DSL_Context_t *pContext,
DSL_IN_OUT DSL_PSDCalibration_t *pData)
{
--- a/src/common/drv_dsl_cpe_os_linux.c
+++ b/src/common/drv_dsl_cpe_os_linux.c
@@ -1341,7 +1341,7 @@ static void DSL_DRV_NlSendMsg(DSL_char_t
#endif
/* Entry point of driver */
-int __init DSL_ModuleInit(void)
+static int __init DSL_ModuleInit(void)
{
DSL_int_t i;
@@ -1457,7 +1457,7 @@ void DSL_ModuleCleanup(void)
return;
}
-void __exit DSL_ModuleExit(void)
+static void __exit DSL_ModuleExit(void)
{
printk("DSL: Unloading module" DSL_DRV_CRLF);
--- a/src/device/drv_dsl_cpe_device_vrx.c
+++ b/src/device/drv_dsl_cpe_device_vrx.c
@@ -6914,7 +6914,7 @@ DSL_Error_t DSL_DRV_VRX_ShowtimeMeasurem
return nErrCode;
}
-DSL_Error_t DSL_DRV_VRX_ShowtimeBasicMFDMeasurementUpdate(DSL_Context_t *pContext)
+static DSL_Error_t DSL_DRV_VRX_ShowtimeBasicMFDMeasurementUpdate(DSL_Context_t *pContext)
{
DSL_Error_t nErrCode = DSL_SUCCESS;
ACK_MFD_InitResultsGet_t sInitResultAck = { 0 };
--- a/src/g997/drv_dsl_cpe_api_g997_vrx.c
+++ b/src/g997/drv_dsl_cpe_api_g997_vrx.c
@@ -11,6 +11,7 @@
#define DSL_INTERN
#include "drv_dsl_cpe_api.h"
+#include "drv_dsl_cpe_device_g997.h"
#ifdef INCLUDE_DSL_CPE_API_VRX
--- a/src/include/drv_dsl_cpe_intern.h
+++ b/src/include/drv_dsl_cpe_intern.h
@@ -1151,7 +1151,7 @@ DSL_Error_t DSL_DRV_InteropFeatureConfig
For a detailed description please refer to the equivalent ioctl
\ref DSL_FIO_RETX_STATISTICS_GET
*/
-#ifdef INCLUDE_DSL_CPE_API_DANUBE
+#if defined(INCLUDE_DSL_CPE_API_DANUBE) && 0
#ifndef SWIG_TMP
DSL_Error_t DSL_DRV_RetxStatisticsGet(
DSL_IN DSL_Context_t *pContext,
@@ -1436,7 +1436,7 @@ DSL_Error_t DSL_DRV_SystemInterfaceConfi
For a detailed description please refer to the equivalent ioctl
\ref DSL_FIO_FILTER_DETECTION_DATA_GET
*/
-#if defined(INCLUDE_DSL_CPE_API_DANUBE) && defined(INCLUDE_DSL_FILTER_DETECTION)
+#if defined(INCLUDE_DSL_CPE_API_DANUBE) && defined(INCLUDE_DSL_FILTER_DETECTION) && 0
#ifndef SWIG_TMP
DSL_Error_t DSL_DRV_FilterDetectionDataGet(
DSL_IN DSL_Context_t *pContext,
@@ -1462,7 +1462,7 @@ DSL_Error_t DSL_DRV_FilterDetectionBasic
For a detailed description please refer to the equivalent ioctl
\ref DSL_FIO_HYBRID_SELECTION_DATA_GET
*/
-#ifdef INCLUDE_DSL_CPE_API_DANUBE
+#if defined(INCLUDE_DSL_CPE_API_DANUBE) && 0
#ifndef SWIG_TMP
DSL_Error_t DSL_DRV_HybridSelectionDataGet(
DSL_IN DSL_Context_t *pContext,
@@ -313,17 +313,22 @@
#if (MEI_EXPORT_INTERNAL_API == 1) && (MEI_DRV_ATM_PTM_INTERFACE_ENABLE == 1)
@@ -59,8 +58,21 @@ extern IFX_int32_t MEI_InternalTcReset(
@@ -58,9 +57,26 @@ extern IFX_int32_t MEI_InternalTcRequest
extern IFX_int32_t MEI_InternalTcReset(
MEI_DYN_CNTRL_T *pMeiDynCntrl,
MEI_TC_Reset_t *pArgTcReset);
+struct port_cell_info;
+extern int ifx_mei_atm_showtime_check(int *is_showtime,
+ struct port_cell_info *port_cell,
+ void **xdata_addr);
+
+#if 1
+#include <lantiq_atm.h>
+typedef enum {
+ LTQ_MEI_SHOWTIME_ENTER,
+ LTQ_MEI_SHOWTIME_EXIT
+} e_ltq_mei_cb_type;
+
+typedef void (*ltq_mei_atm_showtime_enter_t)(IFX_uint8_t, struct port_cell_info *, void *);
+typedef void (*ltq_mei_atm_showtime_exit_t)(IFX_uint8_t);
+
@@ -0,0 +1,41 @@
From: Shiji Yang <yangshiji66@outlook.com>
Date: Fri, 9 May 2025 00:54:48 +0800
Subject: [PATCH] convert platform driver .remove to .remove_new
Fix compilation error on 6.12 kernel:
/home/db/owrt/build_dir/target-mips_24kc_musl/linux-lantiq_xrx200/drv_mei_cpe-1.5.17.6/src/drv_mei_cpe_linux.c:2073:23: error: initialization of 'void (*)(struct platform_device *)' from incompatible pointer type 'int (*)(struct platform_device *)' [-Wincompatible-pointer-types]
2073 | .remove = __exit_p(ltq_dsl_cpe_mei_remove),
| ^~~~~~~~~~~~~~~~~~~~~~
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
---
src/drv_mei_cpe_linux.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
--- a/src/drv_mei_cpe_linux.c
+++ b/src/drv_mei_cpe_linux.c
@@ -2048,13 +2048,12 @@ static int MEI_InstallProcEntry(unsigned
#endif
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0))
-static int __exit ltq_dsl_cpe_mei_remove(struct platform_device *pdev)
+static void __exit ltq_dsl_cpe_mei_remove(struct platform_device *pdev)
{
MEI_module_exit();
/* clear platform */
MEI_DEVICE_CFG_VALUE_SET(platform, e_MEI_DEV_PLATFORM_CONFIG_UNKNOWN);
- return 0;
}
static const struct of_device_id ltq_dsl_cpe_mei_match[] = {
@@ -2070,7 +2069,7 @@ static struct platform_driver ltq_dsl_cp
.owner = THIS_MODULE,
.of_match_table = ltq_dsl_cpe_mei_match,
},
- .remove = __exit_p(ltq_dsl_cpe_mei_remove),
+ .remove_new = __exit_p(ltq_dsl_cpe_mei_remove),
};
static int __init ltq_dsl_cpe_mei_probe(struct platform_device *pdev)
@@ -0,0 +1,38 @@
From: Shiji Yang <yangshiji66@outlook.com>
Date: Fri, 9 May 2025 00:58:00 +0800
Subject: [PATCH] fix ignored-qualifiers build warnings
This patch fixes the following build warnings:
/home/db/owrt/build_dir/target-mips_24kc_musl/linux-lantiq_xrx200/drv_mei_cpe-1.5.17.6/src/drv_mei_cpe_mei_access_vrx.c:41:15: error: type qualifiers ignored on function return type [-Werror=ignored-qualifiers]
41 | static inline volatile IFX_uint32_t MEI_RCU_get(MEI_MEI_DRV_CNTRL_T *pMeiDrvCntrl)
| ^~~~~~~~
/home/db/owrt/build_dir/target-mips_24kc_musl/linux-lantiq_xrx200/drv_mei_cpe-1.5.17.6/src/drv_mei_cpe_mei_access_vrx.c:56:15: error: type qualifiers ignored on function return type [-Werror=ignored-qualifiers]
56 | static inline volatile IFX_uint32_t MEI_RCU_Slave_get(MEI_MEI_DRV_CNTRL_T *pMeiDrvCntrl)
| ^~~~~~~~
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
---
src/drv_mei_cpe_mei_access_vrx.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
--- a/src/drv_mei_cpe_mei_access_vrx.c
+++ b/src/drv_mei_cpe_mei_access_vrx.c
@@ -38,7 +38,7 @@
Local macro definition
========================================================================= */
-static inline volatile IFX_uint32_t MEI_RCU_get(MEI_MEI_DRV_CNTRL_T *pMeiDrvCntrl)
+static inline IFX_uint32_t MEI_RCU_get(MEI_MEI_DRV_CNTRL_T *pMeiDrvCntrl)
{
IFX_uint32_t ret = 0;
if (MEI_DEVICE_CFG_IS_PLATFORM(e_MEI_DEV_PLATFORM_CONFIG_VR9))
@@ -53,7 +53,7 @@ static inline volatile IFX_uint32_t MEI_
return ret;
}
-static inline volatile IFX_uint32_t MEI_RCU_Slave_get(MEI_MEI_DRV_CNTRL_T *pMeiDrvCntrl)
+static inline IFX_uint32_t MEI_RCU_Slave_get(MEI_MEI_DRV_CNTRL_T *pMeiDrvCntrl)
{
IFX_uint32_t ret = 0;
if (MEI_DEVICE_CFG_IS_PLATFORM(e_MEI_DEV_PLATFORM_CONFIG_VR9))
@@ -0,0 +1,53 @@
From: Shiji Yang <yangshiji66@outlook.com>
Date: Fri, 9 May 2025 01:10:32 +0800
Subject: [PATCH] fix missing prototypes warnings
This patch fixes various missing-prototypes build warnings on
6.12 kernel.
/home/db/owrt/build_dir/target-mips_24kc_musl/linux-lantiq_xrx200/drv_mei_cpe-1.5.17.6/src/drv_mei_cpe_api_atm_ptm_intern.c:314:5: error: no previous prototype for 'ifx_mei_atm_led_blink' [-Werror=missing-prototypes]
314 | int ifx_mei_atm_led_blink(void)
| ^~~~~~~~~~~~~~~~~~~~~
/home/db/owrt/build_dir/target-mips_24kc_musl/linux-lantiq_xrx200/drv_mei_cpe-1.5.17.6/src/drv_mei_cpe_api_atm_ptm_intern.c:325:5: error: no previous prototype for 'ltq_ifx_mei_atm_showtime_enter_compat' [-Werror=missing-prototypes]
325 | int ltq_ifx_mei_atm_showtime_enter_compat(IFX_uint8_t dslLineNum,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/db/owrt/build_dir/target-mips_24kc_musl/linux-lantiq_xrx200/drv_mei_cpe-1.5.17.6/src/drv_mei_cpe_api_atm_ptm_intern.c:334:5: error: no previous prototype for 'ltq_ifx_mei_atm_showtime_exit_compat' [-Werror=missing-prototypes]
334 | int ltq_ifx_mei_atm_showtime_exit_compat(IFX_uint8_t dslLineNum) {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
---
src/drv_mei_cpe_api_atm_ptm_intern.c | 4 ++--
src/drv_mei_cpe_api_atm_ptm_intern.h | 1 +
2 files changed, 3 insertions(+), 2 deletions(-)
--- a/src/drv_mei_cpe_api_atm_ptm_intern.c
+++ b/src/drv_mei_cpe_api_atm_ptm_intern.c
@@ -322,7 +322,7 @@ int ifx_mei_atm_led_blink(void)
int (*ifx_mei_atm_showtime_enter)(struct port_cell_info *, void *) = NULL;
int (*ifx_mei_atm_showtime_exit)(void) = NULL;
-int ltq_ifx_mei_atm_showtime_enter_compat(IFX_uint8_t dslLineNum,
+static int ltq_ifx_mei_atm_showtime_enter_compat(IFX_uint8_t dslLineNum,
struct port_cell_info *cellInfo,
void *xdata) {
if (ifx_mei_atm_showtime_enter)
@@ -331,7 +331,7 @@ int ltq_ifx_mei_atm_showtime_enter_compa
return -e_MEI_ERR_OP_FAILED;
}
-int ltq_ifx_mei_atm_showtime_exit_compat(IFX_uint8_t dslLineNum) {
+static int ltq_ifx_mei_atm_showtime_exit_compat(IFX_uint8_t dslLineNum) {
if (ifx_mei_atm_showtime_exit)
return ifx_mei_atm_showtime_exit();
--- a/src/drv_mei_cpe_api_atm_ptm_intern.h
+++ b/src/drv_mei_cpe_api_atm_ptm_intern.h
@@ -61,6 +61,7 @@ struct port_cell_info;
extern int ifx_mei_atm_showtime_check(int *is_showtime,
struct port_cell_info *port_cell,
void **xdata_addr);
+extern int ifx_mei_atm_led_blink(void);
#if 1
#include <lantiq_atm.h>
@@ -0,0 +1,100 @@
From: Shiji Yang <yangshiji66@outlook.com>
Date: Fri, 9 May 2025 02:48:52 +0800
Subject: [PATCH] fix missing-prototypes warning
This patch fixes various missing-prototypes build warnings on
6.12 kernel.
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
---
src/common/drv_dsl_cpe_api.c | 12 ++++++------
src/common/drv_dsl_cpe_os_linux.c | 4 ++--
src/g997/drv_dsl_cpe_api_g997_vrx.c | 1 +
3 files changed, 9 insertions(+), 8 deletions(-)
--- a/src/common/drv_dsl_cpe_api.c
+++ b/src/common/drv_dsl_cpe_api.c
@@ -2871,7 +2871,7 @@ DSL_Error_t DSL_DRV_LoopLengthStatusGet(
return nErrCode;
}
-DSL_Error_t DSL_DRV_RetxStatisticsGet(
+static DSL_Error_t DSL_DRV_RetxStatisticsGet(
DSL_IN DSL_Context_t *pContext,
DSL_IN_OUT DSL_ReTxStatistics_t *pData)
{
@@ -3044,7 +3044,7 @@ DSL_Error_t DSL_DRV_SystemInterfaceConfi
\ref DSL_FIO_SYSTEM_INTERFACE_STATUS_GET
*/
#ifdef INCLUDE_DSL_SYSTEM_INTERFACE
-DSL_Error_t DSL_DRV_SystemInterfaceStatusGet(
+static DSL_Error_t DSL_DRV_SystemInterfaceStatusGet(
DSL_Context_t *pContext,
DSL_SystemInterfaceStatus_t *pData)
{
@@ -4372,7 +4372,7 @@ DSL_Error_t DSL_DRV_DBG_DebugFeatureConf
#endif /* DSL_DEBUG_DISABLE*/
#ifdef INCLUDE_DSL_FILTER_DETECTION
-DSL_Error_t DSL_DRV_FilterDetectionDataGet(
+static DSL_Error_t DSL_DRV_FilterDetectionDataGet(
DSL_IN DSL_Context_t *pContext,
DSL_OUT DSL_FilterDetection_t *pData)
{
@@ -4422,7 +4422,7 @@ DSL_Error_t DSL_DRV_FilterDetectionDataG
}
#endif /* INCLUDE_DSL_FILTER_DETECTION */
-DSL_Error_t DSL_DRV_HybridSelectionDataGet(
+static DSL_Error_t DSL_DRV_HybridSelectionDataGet(
DSL_IN DSL_Context_t *pContext,
DSL_OUT DSL_HybridSelection_t *pData)
{
@@ -4476,7 +4476,7 @@ DSL_Error_t DSL_DRV_HybridSelectionDataG
return nErrCode;
}
-DSL_Error_t DSL_DRV_OlrStatisticsGet(
+static DSL_Error_t DSL_DRV_OlrStatisticsGet(
DSL_IN DSL_Context_t *pContext,
DSL_OUT DSL_OlrStatistics_t *pData)
{
@@ -4596,7 +4596,7 @@ DSL_void_t DSL_DRV_InitDataFree(
#endif /* INCLUDE_DSL_INIT_DATA_PREPARE*/
}
-DSL_Error_t DSL_DRV_IoctlHandleHelperCall(
+static DSL_Error_t DSL_DRV_IoctlHandleHelperCall(
DSL_OpenContext_t *pOpenCtx,
DSL_Context_t *pContext,
DSL_boolean_t bIsInKernel,
--- a/src/common/drv_dsl_cpe_os_linux.c
+++ b/src/common/drv_dsl_cpe_os_linux.c
@@ -1214,7 +1214,7 @@ static struct class *dsl_class;
static dev_t dsl_devt;
/* Entry point of driver */
-int __init DSL_ModuleInit(void)
+static int __init DSL_ModuleInit(void)
{
DSL_int_t i;
@@ -1262,7 +1262,7 @@ int __init DSL_ModuleInit(void)
return 0;
}
-void __exit DSL_ModuleCleanup(void)
+static void __exit DSL_ModuleCleanup(void)
{
printk("Module will be unloaded"DSL_DRV_CRLF);
--- a/src/g997/drv_dsl_cpe_api_g997_vrx.c
+++ b/src/g997/drv_dsl_cpe_api_g997_vrx.c
@@ -11,6 +11,7 @@
#define DSL_INTERN
#include "drv_dsl_cpe_api.h"
+#include "drv_dsl_cpe_device_g997.h"
#ifdef INCLUDE_DSL_CPE_API_VRX
@@ -0,0 +1,29 @@
From: Shiji Yang <yangshiji66@outlook.com>
Date: Fri, 9 May 2025 08:22:25 +0800
Subject: [PATCH] ignore missing-prototypes warning
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
---
src/Makefile.am | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -226,6 +226,8 @@ install-exec-hook: $(bin_PROGRAMS)
if KERNEL_2_6
drv_vmmc_OBJS = "$(subst .c,.o, $(drv_vmmc_SOURCES) $(nodist_drv_vmmc_SOURCES))"
+PKGFIX_CFLAGS = -Wno-error=missing-prototypes
+
drv_vmmc.ko: $(drv_vmmc_SOURCES) $(EXTRA_DIST)
@echo "Making Linux 2.6.x kernel object"
@for f in $(drv_vmmc_SOURCES) $(nodist_drv_vmmc_SOURCES) ; do \
@@ -238,7 +240,7 @@ drv_vmmc.ko: $(drv_vmmc_SOURCES) $(EXTRA
@echo "# drv_vmmc: Generated to build Linux 2.6.x kernel object" > $(PWD)/Kbuild
@echo "obj-m := $(subst .ko,.o,$@)" >> $(PWD)/Kbuild
@echo "$(subst .ko,,$@)-y := $(drv_vmmc_OBJS)" >> $(PWD)/Kbuild
- @echo "EXTRA_CFLAGS := -DHAVE_CONFIG_H $(drv_vmmc_CFLAGS) $(INCLUDES)" >> $(PWD)/Kbuild
+ @echo "EXTRA_CFLAGS := -DHAVE_CONFIG_H $(drv_vmmc_CFLAGS) $(PKGFIX_CFLAGS) $(INCLUDES)" >> $(PWD)/Kbuild
$(MAKE) ARCH=@KERNEL_ARCH@ -C @KERNEL_BUILD_PATH@ O=@KERNEL_BUILD_PATH@ M=$(PWD) modules
clean-generic:
@@ -18,7 +18,7 @@
#include "drv_mps_vmmc_dbg.h"
#include "drv_mps_vmmc_device.h"
+const void (*ifx_bsp_basic_mps_decrypt)(unsigned int addr, int n) = NULL;
+void (*ifx_bsp_basic_mps_decrypt)(unsigned int addr, int n) = NULL;
+
+#define IFX_MPS_SRAM IFXMIPS_MPS_SRAM
+
@@ -106,13 +106,13 @@
pFWDwnld->length -= sizeof(IFX_uint32_t);
+ switch(ltq_soc_type()) {
+ case SOC_TYPE_AR9:
+ ifx_bsp_basic_mps_decrypt = (const void (*)(unsigned int, int))0xbf0017c4;
+ ifx_bsp_basic_mps_decrypt = (void (*)(unsigned int, int))0xbf0017c4;
+ break;
+ case SOC_TYPE_VR9:
+ ifx_bsp_basic_mps_decrypt = (const void (*)(unsigned int, int))0xbf001ea4;
+ ifx_bsp_basic_mps_decrypt = (void (*)(unsigned int, int))0xbf001ea4;
+ break;
+ case SOC_TYPE_VR9_2:
+ ifx_bsp_basic_mps_decrypt = (const void (*)(unsigned int, int))0xbf001f38;
+ ifx_bsp_basic_mps_decrypt = (void (*)(unsigned int, int))0xbf001f38;
+ break;
+ }
+ if (ifx_bsp_basic_mps_decrypt)
@@ -0,0 +1,143 @@
From: Shiji Yang <yangshiji66@outlook.com>
Date: Thu, 8 May 2025 23:53:01 +0800
Subject: [PATCH] fix version macro definition conflicts on 6.12 kernel
Add LANTIQ prefix before MIN/MAX to fix:
/home/db/owrt/build_dir/target-mips_24kc_musl/linux-lantiq_xrx200/drv_vmmc-1.9.0/src/drv_vmmc_init.c:91:9: error: "MAX" redefined [-Werror]
91 | #define MAX(x,y) ((x) > (y) ? (x) : (y))
| ^~~
./include/linux/minmax.h:330:9: note: this is the location of the previous definition
330 | #define MAX(a,b) __cmp(max,a,b)
| ^~~
/home/db/owrt/build_dir/target-mips_24kc_musl/linux-lantiq_xrx200/drv_vmmc-1.9.0/src/drv_vmmc_init_cap.c:42:9: error: "MIN" redefined [-Werror]
42 | #define MIN(x,y) ({ (x) < (y) ? (x) : (y); })
| ^~~
./include/linux/minmax.h:329:9: note: this is the location of the previous definition
329 | #define MIN(a,b) __cmp(min,a,b)
| ^~~
/home/db/owrt/build_dir/target-mips_24kc_musl/linux-lantiq_xrx200/drv_vmmc-1.9.0/src/drv_vmmc_sig_cptd.c:41:9: error: "MAX" redefined [-Werror]
41 | #define MAX(x,y) ((x) > (y) ? (x) : (y))
| ^~~
./include/linux/minmax.h:330:9: note: this is the location of the previous definition
330 | #define MAX(a,b) __cmp(max,a,b)
| ^~~
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
---
src/drv_vmmc_init.c | 12 ++++++------
src/drv_vmmc_init_cap.c | 4 ++--
src/drv_vmmc_sig_cptd.c | 4 ++--
3 files changed, 10 insertions(+), 10 deletions(-)
--- a/src/drv_vmmc_init.c
+++ b/src/drv_vmmc_init.c
@@ -88,7 +88,7 @@ CREATE_TRACE_GROUP(VMMC);
/** what compatible driver version */
#define DRV_VMMC_WHAT_STR "@(#)Lantiq VMMC device driver, version " DRV_VMMC_VER_STR
-#define MAX(x,y) ((x) > (y) ? (x) : (y))
+#define LANTIQ_MAX(x,y) ((x) > (y) ? (x) : (y))
#define MPS_CH_VALID(mpsCh) ((mpsCh >= 1 && mpsCh <= 7) ? 1 : 0)
@@ -927,17 +927,17 @@ static IFX_int32_t VMMC_TAPI_LL_FW_Init(
/* Maximum number of resources, is the maximum of:
nALI, nPCM, nCOD, nSIG, nDECT, nLIN and nAudioCnt. */
- tmp1 = MAX (pDev->caps.nALI, pDev->caps.nPCM);
- tmp2 = MAX (pDev->caps.nCOD, pDev->caps.nSIG);
- pDev->caps.nMaxRes = MAX(tmp1, tmp2);
+ tmp1 = LANTIQ_MAX(pDev->caps.nALI, pDev->caps.nPCM);
+ tmp2 = LANTIQ_MAX(pDev->caps.nCOD, pDev->caps.nSIG);
+ pDev->caps.nMaxRes = LANTIQ_MAX(tmp1, tmp2);
#ifdef DECT_SUPPORT
- pDev->caps.nMaxRes = MAX(pDev->caps.nMaxRes, pDev->caps.nDECT);
+ pDev->caps.nMaxRes = LANTIQ_MAX(pDev->caps.nMaxRes, pDev->caps.nDECT);
#endif /* LIN_SUPPORT */
#ifdef LIN_SUPPORT
- pDev->caps.nMaxRes = MAX(pDev->caps.nMaxRes, pDev->caps.nLIN);
+ pDev->caps.nMaxRes = LANTIQ_MAX(pDev->caps.nMaxRes, pDev->caps.nLIN);
#endif /* LIN_SUPPORT */
#if (VMMC_CFG_FEATURES & VMMC_FEAT_AUDIO)
- pDev->caps.nMaxRes = MAX(pDev->caps.nMaxRes, pDev->caps.nAudioCnt);
+ pDev->caps.nMaxRes = LANTIQ_MAX(pDev->caps.nMaxRes, pDev->caps.nAudioCnt);
#endif /* (VMMC_CFG_FEATURES & VMMC_FEAT_AUDIO) */
if (pDev->caps.nMaxRes > VMMC_MAX_CH_NR)
@@ -977,7 +977,7 @@ static IFX_int32_t VMMC_TAPI_LL_FW_Init(
nResource.DTMFRCount = pDev->caps.nDTMFD;
nResource.FSKGCount = pDev->caps.nCIDS;
nResource.FSKRCount = pDev->caps.nCIDR;
- nResource.ToneCount = MAX(pDev->caps.nSIG, pDev->caps.nDECT);
+ nResource.ToneCount = LANTIQ_MAX(pDev->caps.nSIG, pDev->caps.nDECT);
nResource.HdlcCount = pDev->caps.nHDLC;
IFX_TAPI_ReportResources (pDev->pTapiDev,&nResource);
--- a/src/drv_vmmc_init_cap.c
+++ b/src/drv_vmmc_init_cap.c
@@ -39,7 +39,7 @@
/* ============================= */
/* Local Macros & Definitions */
/* ============================= */
-#define MIN(x,y) ({ (x) < (y) ? (x) : (y); })
+#define LANTIQ_MIN(x,y) ({ (x) < (y) ? (x) : (y); })
/* ============================= */
/* Local function declaration */
@@ -392,7 +392,7 @@ IFX_return_t VMMC_Get_FwCap(VMMC_DEVICE
/* Read the maximum length of the message that we can interpret but
not more than the firmware can provide. */
/* BLEN is the length including the header that the fw reports. */
- capCmd.LENGTH = MIN (capCmd.BLEN, sizeof(SYS_CAP_t));
+ capCmd.LENGTH = LANTIQ_MIN(capCmd.BLEN, sizeof(SYS_CAP_t));
/* Subtract the length of the header. */
capCmd.LENGTH -= CMD_HDR_CNT;
/* Read capability once more - this time with maximum length. */
@@ -479,7 +479,7 @@ IFX_return_t VMMC_Get_FwCap(VMMC_DEVICE
pDev->caps.FEAT = capCmd.FEAT;
/* Number of UTG resources per channel (== SIG module), either 1 or 2 */
pDev->caps.nUtgPerCh = (capCmd.FEAT & EDSP_CAP_FEAT_UTGUD) ? 2 : 1;
- pDev->caps.nUtgPerCh = MIN(pDev->caps.nUtgPerCh, LL_TAPI_TONE_MAXRES);
+ pDev->caps.nUtgPerCh = LANTIQ_MIN(pDev->caps.nUtgPerCh, LL_TAPI_TONE_MAXRES);
/* Number of AudioChannels */
pDev->caps.nAudioCnt = (pDev->caps.FEAT & EDSP_CAP_FEAT_CHAUD) ? 1 : 0;
/* Overlays */
--- a/src/drv_vmmc_sig_cptd.c
+++ b/src/drv_vmmc_sig_cptd.c
@@ -38,7 +38,7 @@
/** define which constant is taken for cpt level calculation */
#define CONST_CPT CONST_CPT_BLACKMAN
/* return the maximum of two scalar values */
-#define MAX(x,y) ((x) > (y) ? (x) : (y))
+#define LANTIQ_MAX(x,y) ((x) > (y) ? (x) : (y))
/* ============================= */
/* Local function declaration */
@@ -511,7 +511,7 @@ static IFX_int32_t vmmc_sig_CPTD_SetCoef
if (nTenPercentTimeTolerance > nMaxTenPercentTimeTolerance)
nMaxTenPercentTimeTolerance = nTenPercentTimeTolerance;
- val = (IFX_uint16_t) (pTone->cadence[i] - MAX(nAbsoluteTimeTolerance,
+ val = (IFX_uint16_t) (pTone->cadence[i] - LANTIQ_MAX(nAbsoluteTimeTolerance,
nTenPercentTimeTolerance));
switch (i)
{
@@ -578,7 +578,7 @@ static IFX_int32_t vmmc_sig_CPTD_SetCoef
{
/* set tolerance +TIM_TOL */
pCmd->TIM_TOL =
- (2 * MAX (nAbsoluteTimeTolerance, nMaxTenPercentTimeTolerance));
+ (2 * LANTIQ_MAX(nAbsoluteTimeTolerance, nMaxTenPercentTimeTolerance));
/* return because nothing more to do */
return IFX_SUCCESS;
}
@@ -605,7 +605,7 @@ static IFX_int32_t vmmc_sig_CPTD_SetCoef
/* set tolerance +TIM_TOL and NR of successfully fulfilled timing
requirement steps required to pass */
pCmd->TIM_TOL =
- (2 * MAX (nAbsoluteTimeTolerance, nMaxTenPercentTimeTolerance));
+ (2 * LANTIQ_MAX(nAbsoluteTimeTolerance, nMaxTenPercentTimeTolerance));
pCmd->NR = nr;
return IFX_SUCCESS;
@@ -0,0 +1,28 @@
From: Shiji Yang <yangshiji66@outlook.com>
Date: Fri, 9 May 2025 01:31:44 +0800
Subject: [PATCH] fix unknown type name errors
Fix compilation errors:
/home/db/owrt/build_dir/target-mips_24kc_musl/linux-lantiq_xrx200/drv_vmmc-1.9.0/src/drv_vmmc_sig.h:41:45: error: unknown type name 'IFX_TAPI_DRV_CTX_SIG_t'
41 | extern IFX_void_t VMMC_SIG_Func_Register (IFX_TAPI_DRV_CTX_SIG_t *pSig);
| ^~~~~~~~~~~~~~~~~~~~~~
/home/db/owrt/build_dir/target-mips_24kc_musl/linux-lantiq_xrx200/drv_vmmc-1.9.0/src/drv_vmmc_sig.h:43:54: error: unknown type name 'VMMC_CHANNEL'
43 | extern IFX_int32_t VMMC_SIG_Allocate_Ch_Structures (VMMC_CHANNEL *pCh);
| ^~~~~~~~~~~~
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
---
src/drv_vmmc_sig.h | 1 +
1 file changed, 1 insertion(+)
--- a/src/drv_vmmc_sig.h
+++ b/src/drv_vmmc_sig.h
@@ -20,6 +20,7 @@
/* ============================= */
/* Includes */
/* ============================= */
+#include "drv_vmmc_api.h"
#include "ifx_types.h"
/* ============================= */
@@ -0,0 +1,26 @@
From: Shiji Yang <yangshiji66@outlook.com>
Date: Fri, 9 May 2025 01:43:41 +0800
Subject: [PATCH] fix 'inline' is not at beginning of declaration
Fix build warning on 6.12 kernel:
/home/db/owrt/build_dir/target-mips_24kc_musl/linux-lantiq_xrx200/drv_vmmc-1.9.0/src/mps/drv_mps_vmmc_common.c:58:1: error: 'inline' is not at beginning of declaration [-Werror=old-style-declaration]
58 | static void inline bsp_mask_and_ack_irq(int x)
| ^~~~~~
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
---
src/mps/drv_mps_vmmc_common.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/src/mps/drv_mps_vmmc_common.c
+++ b/src/mps/drv_mps_vmmc_common.c
@@ -55,7 +55,7 @@
# define bsp_mask_and_ack_irq ltq_mask_and_ack_irq
#else
extern void ltq_mask_and_ack_irq(struct irq_data *d);
-static void inline bsp_mask_and_ack_irq(int x)
+static inline void bsp_mask_and_ack_irq(int x)
{
struct irq_data d;
d.hwirq = x;
@@ -1,6 +1,14 @@
--- a/ep.c
+++ b/ep.c
@@ -373,23 +373,23 @@ int dc_ep_dev_info_req(int dev_idx, enum
@@ -34,6 +34,7 @@
#include <linux/pci.h>
#include <linux/pci_regs.h>
#include <linux/platform_device.h>
+#include <linux/version.h>
#include "ep.h"
#include "aca.h"
@@ -373,23 +374,23 @@ int dc_ep_dev_info_req(int dev_idx, enum
switch (module) {
case DC_EP_INT_PPE:
@@ -31,18 +39,22 @@
break;
}
@@ -466,8 +466,8 @@ static int dc_ep_msi_enable(struct pci_d
@@ -466,8 +467,12 @@ static int dc_ep_msi_enable(struct pci_d
return -EIO;
}
- err = pci_enable_msi_exact(pdev, nvec);
- if (err) {
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0))
+ err = pci_alloc_irq_vectors(pdev, nvec, nvec, PCI_IRQ_MSI | PCI_IRQ_LEGACY);
+#else
+ err = pci_alloc_irq_vectors(pdev, nvec, nvec, PCI_IRQ_MSI | PCI_IRQ_INTX);
+#endif
+ if (err < 0) {
dev_err(&pdev->dev,
"%s: Failed to enable MSI interrupts error code: %d\n",
__func__, err);
@@ -589,15 +589,15 @@ static int dc_ep_probe(struct pci_dev *p
@@ -589,15 +594,15 @@ static int dc_ep_probe(struct pci_dev *p
/* Target structures have a limit of 32 bit DMA pointers.
* DMA pointers can be wider than 32 bits by default on some systems.
*/
@@ -61,7 +73,7 @@
goto err_region;
}
@@ -654,7 +654,7 @@ static int dc_ep_probe(struct pci_dev *p
@@ -654,7 +659,7 @@ static int dc_ep_probe(struct pci_dev *p
goto err_iomap;
spin_lock(&dc_ep_lock);
@@ -70,7 +82,7 @@
spin_unlock(&dc_ep_lock);
#ifndef CONFIG_OF
@@ -715,7 +715,7 @@ static void dc_ep_remove(struct pci_dev
@@ -715,7 +720,7 @@ static void dc_ep_remove(struct pci_dev
dc_ep_icu_disable(priv);
pci_iounmap(pdev, priv->mem);
pci_release_region(pdev, DC_EP_BAR_NUM);
@@ -0,0 +1,34 @@
From: Shiji Yang <yangshiji66@outlook.com>
Date: Wed, 7 May 2025 19:16:16 +0800
Subject: [PATCH] fix version macro definition conflicts on 6.12 kernel
Add LANTIQ prefix to version variable names to fix:
/home/db/owrt/build_dir/target-arm_cortex-a7+neon-vfpv4_musl_eabi/linux-ipq40xx_generic/vrx518_ep-2.1.0/ep.c:45:9: error: "MIN" redefined [-Werror]
45 | #define MIN 1
| ^~~
./include/linux/minmax.h:329:9: note: this is the location of the previous definition
329 | #define MIN(a,b) __cmp(min,a,b)
| ^~~
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
---
ep.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
--- a/ep.c
+++ b/ep.c
@@ -42,10 +42,10 @@
#define DC_EP_DBG
-#define MAJ 2
-#define MIN 1
+#define LANTIQ_MAJ 2
+#define LANTIQ_MIN 1
#define BUILD 0
-#define DRV_VERSION __stringify(MAJ) "." __stringify(MIN) "." \
+#define DRV_VERSION __stringify(LANTIQ_MAJ) "." __stringify(LANTIQ_MIN) "." \
__stringify(BUILD) "-k"
static bool pcie_switch_exist;
@@ -22,9 +22,9 @@ Signed-off-by: Andrew MacIntyre <andymac@pcug.org.au>
dcdp/ptm_tc.c | 1 +
1 file changed, 1 insertion(+)
--- a/dcdp/ptm_tc.c 2023-12-17 16:11:22.503500398 +1100
+++ b/dcdp/ptm_tc.c 2024-01-26 16:48:49.881623474 +1100
@@ -657,6 +657,7 @@ static void ptm_setup(struct net_device
--- a/dcdp/ptm_tc.c
+++ b/dcdp/ptm_tc.c
@@ -666,6 +666,7 @@ static void ptm_setup(struct net_device
ether_setup(dev);
dev->watchdog_timeo = 10 * HZ;
dev->netdev_ops = &g_ptm_netdev_ops;
@@ -0,0 +1,66 @@
From: Shiji Yang <yangshiji66@outlook.com>
Date: Thu, 8 May 2025 7:43:51 +0800
Subject: [PATCH] fix missing prototypes warnings
This patch fixes various missing-prototypes build warnings on
6.12 kernel.
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
---
dcdp/atm_tc.c | 2 +-
dcdp/inc/platform.h | 1 +
dcdp/platform/sw_plat.c | 1 +
dcdp/tc_proc.c | 4 ++--
4 files changed, 5 insertions(+), 3 deletions(-)
--- a/dcdp/atm_tc.c
+++ b/dcdp/atm_tc.c
@@ -279,7 +279,7 @@ unsigned int find_vpi(unsigned int vpi)
* success: 0
* failed: -1
*/
-unsigned int find_vpivci_from_queue_id(
+static unsigned int find_vpivci_from_queue_id(
unsigned int queue_id,
unsigned int *vpi,
unsigned int *vci)
--- a/dcdp/inc/platform.h
+++ b/dcdp/inc/platform.h
@@ -20,6 +20,7 @@
the file called "COPYING".
*******************************************************************************/
+struct tc_priv;
extern size_t plat_priv_sz(void);
extern int platform_init(struct tc_priv *, const char *);
extern void platform_exit(void);
--- a/dcdp/platform/sw_plat.c
+++ b/dcdp/platform/sw_plat.c
@@ -38,6 +38,7 @@
#include <linux/workqueue.h>
#include "../inc/dsl_tc.h"
+#include "../inc/platform.h"
#include "../inc/tc_main.h"
#include "../inc/reg_addr.h"
#include "../inc/tc_common.h"
--- a/dcdp/tc_proc.c
+++ b/dcdp/tc_proc.c
@@ -1945,7 +1945,7 @@ static void fwdbg_help(struct tc_comm *p
if (!cmds[i].cmd)
fwdbg_help(priv, NULL, 0, result);
}
-int fw_dbg_start(struct tc_comm *priv,
+static int fw_dbg_start(struct tc_comm *priv,
char *commands[], int num, char *result)
{
int i;
@@ -1964,7 +1964,7 @@ int fw_dbg_start(struct tc_comm *priv,
return 0;
}
-ssize_t proc_write_fwdbg_seq(
+static ssize_t proc_write_fwdbg_seq(
struct file *file,
const char __user *buf,
size_t count,
+2 -2
View File
@@ -8,13 +8,13 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=mbedtls
PKG_VERSION:=3.6.4
PKG_VERSION:=3.6.5
PKG_RELEASE:=1
PKG_BUILD_FLAGS:=no-mips16 gc-sections no-lto
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL=https://github.com/Mbed-TLS/$(PKG_NAME)/releases/download/$(PKG_NAME)-$(PKG_VERSION)
PKG_HASH:=ec35b18a6c593cf98c3e30db8b98ff93e8940a8c4e690e66b41dfc011d678110
PKG_HASH:=4a11f1777bb95bf4ad96721cac945a26e04bf19f57d905f241fe77ebeddf46d8
PKG_LICENSE:=GPL-2.0-or-later
PKG_LICENSE_FILES:=LICENSE
+1 -1
View File
@@ -12,9 +12,9 @@ PKG_SOURCE_DATE:=2018-06-27
PKG_RELEASE:=2
PKG_SOURCE_URL:=https://git.netfilter.org/ebtables
PKG_MIRROR_HASH:=3039d73b167c41025b1b401b647743b9c6d786613c693eef34de325b30de6d47
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=48cff25dfea5b37e16ba5dc6601e98ab140f5f99
PKG_MIRROR_HASH:=1ee560498e1a047b329eab3dad8425ae51e7f0527e4495efb99481ca11206b37
PKG_LICENSE:=GPL-2.0
PKG_CPE_ID:=cpe:/a:netfilter:ebtables
+3 -3
View File
@@ -5,10 +5,10 @@ PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL=$(PROJECT_GIT)/project/ubus.git
PKG_SOURCE_DATE:=2025-07-02
PKG_SOURCE_DATE:=2025-10-17
PKG_SOURCE_DATE_ABI:=2025-01-02
PKG_SOURCE_VERSION:=5952b48e251c0ea76dfce97f129da6f18d889eda
PKG_MIRROR_HASH:=60edfc101eaa85976d243febc368fc419fe44283bd3a743851a6bc7975e881f0
PKG_SOURCE_VERSION:=60e04048a0e2f3e33651c19e62861b41be4c290f
PKG_MIRROR_HASH:=2db028305ae58afe184bb01e51d3635898d84ffcd04308a73ce143c05fc7b2db
PKG_ABI_VERSION:=$(call abi_version_str,$(PKG_SOURCE_DATE_ABI))
CMAKE_INSTALL:=1
@@ -0,0 +1,35 @@
From 0fc403192dcc8def1f6284959141608ac4c86699 Mon Sep 17 00:00:00 2001
From: Namjae Jeon <linkinjeon@kernel.org>
Date: Fri, 10 Jan 2025 13:37:05 +0900
Subject: ksmbd: browse interfaces list on FSCTL_QUERY_INTERFACE_INFO IOCTL
[ Upstream commit b2d99376c5d61eb60ffdb6c503e4b6c8f9712ddd ]
ksmbd.mount will give each interfaces list and bind_interfaces_only flags
to ksmbd server. Previously, the interfaces list was sent only
when bind_interfaces_only was enabled.
ksmbd server browse only interfaces list given from ksmbd.conf on
FSCTL_QUERY_INTERFACE_INFO IOCTL.
Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
Signed-off-by: Steve French <stfrench@microsoft.com>
Stable-dep-of: 21a4e47578d4 ("ksmbd: fix use-after-free in __smb2_lease_break_noti()")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
fs/smb/server/ksmbd_netlink.h | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
(limited to 'fs/smb/server/ksmbd_netlink.h')
--- a/fs/smb/server/ksmbd_netlink.h
+++ b/fs/smb/server/ksmbd_netlink.h
@@ -108,7 +108,8 @@ struct ksmbd_startup_request {
__u32 smb2_max_credits; /* MAX credits */
__u32 smbd_max_io_size; /* smbd read write size */
__u32 max_connections; /* Number of maximum simultaneous connections */
- __u32 reserved[126]; /* Reserved room */
+ __s8 bind_interfaces_only;
+ __s8 reserved[503]; /* Reserved room */
__u32 ifc_list_sz; /* interfaces list size */
__s8 ____payload[];
};
@@ -0,0 +1,119 @@
From d8b6dc9256762293048bf122fc11c4e612d0ef5d Mon Sep 17 00:00:00 2001
From: Namjae Jeon <linkinjeon@kernel.org>
Date: Wed, 1 Oct 2025 09:25:35 +0900
Subject: ksmbd: add max ip connections parameter
This parameter set the maximum number of connections per ip address.
The default is 8.
Cc: stable@vger.kernel.org
Fixes: c0d41112f1a5 ("ksmbd: extend the connection limiting mechanism to support IPv6")
Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
Signed-off-by: Steve French <stfrench@microsoft.com>
---
fs/smb/server/ksmbd_netlink.h | 5 +++--
fs/smb/server/server.h | 1 +
fs/smb/server/transport_ipc.c | 3 +++
fs/smb/server/transport_tcp.c | 27 ++++++++++++++++-----------
4 files changed, 23 insertions(+), 13 deletions(-)
(limited to 'fs/smb')
--- a/fs/smb/server/ksmbd_netlink.h
+++ b/fs/smb/server/ksmbd_netlink.h
@@ -109,10 +109,11 @@ struct ksmbd_startup_request {
__u32 smbd_max_io_size; /* smbd read write size */
__u32 max_connections; /* Number of maximum simultaneous connections */
__s8 bind_interfaces_only;
- __s8 reserved[503]; /* Reserved room */
+ __u32 max_ip_connections; /* Number of maximum connection per ip address */
+ __s8 reserved[499]; /* Reserved room */
__u32 ifc_list_sz; /* interfaces list size */
__s8 ____payload[];
-};
+} __packed;
#define KSMBD_STARTUP_CONFIG_INTERFACES(s) ((s)->____payload)
--- a/fs/smb/server/server.h
+++ b/fs/smb/server/server.h
@@ -43,6 +43,7 @@ struct ksmbd_server_config {
unsigned int auth_mechs;
unsigned int max_connections;
unsigned int max_inflight_req;
+ unsigned int max_ip_connections;
char *conf[SERVER_CONF_WORK_GROUP + 1];
};
--- a/fs/smb/server/transport_ipc.c
+++ b/fs/smb/server/transport_ipc.c
@@ -321,6 +321,9 @@ static int ipc_server_config_on_startup(
if (req->max_connections)
server_conf.max_connections = req->max_connections;
+ if (req->max_ip_connections)
+ server_conf.max_ip_connections = req->max_ip_connections;
+
ret = ksmbd_set_netbios_name(req->netbios_name);
ret |= ksmbd_set_server_string(req->server_string);
ret |= ksmbd_set_work_group(req->work_group);
--- a/fs/smb/server/transport_tcp.c
+++ b/fs/smb/server/transport_tcp.c
@@ -240,6 +240,7 @@ static int ksmbd_kthread_fn(void *p)
struct interface *iface = (struct interface *)p;
struct ksmbd_conn *conn;
int ret;
+ unsigned int max_ip_conns;
while (!kthread_should_stop()) {
mutex_lock(&iface->sock_release_lock);
@@ -257,34 +258,38 @@ static int ksmbd_kthread_fn(void *p)
continue;
}
+ if (!server_conf.max_ip_connections)
+ goto skip_max_ip_conns_limit;
+
/*
* Limits repeated connections from clients with the same IP.
*/
+ max_ip_conns = 0;
down_read(&conn_list_lock);
- list_for_each_entry(conn, &conn_list, conns_list)
+ list_for_each_entry(conn, &conn_list, conns_list) {
#if IS_ENABLED(CONFIG_IPV6)
if (client_sk->sk->sk_family == AF_INET6) {
if (memcmp(&client_sk->sk->sk_v6_daddr,
- &conn->inet6_addr, 16) == 0) {
- ret = -EAGAIN;
- break;
- }
+ &conn->inet6_addr, 16) == 0)
+ max_ip_conns++;
} else if (inet_sk(client_sk->sk)->inet_daddr ==
- conn->inet_addr) {
- ret = -EAGAIN;
- break;
- }
+ conn->inet_addr)
+ max_ip_conns++;
#else
if (inet_sk(client_sk->sk)->inet_daddr ==
- conn->inet_addr) {
+ conn->inet_addr)
+ max_ip_conns++;
+#endif
+ if (server_conf.max_ip_connections <= max_ip_conns) {
ret = -EAGAIN;
break;
}
-#endif
+ }
up_read(&conn_list_lock);
if (ret == -EAGAIN)
continue;
+skip_max_ip_conns_limit:
if (server_conf.max_connections &&
atomic_inc_return(&active_num_conn) >= server_conf.max_connections) {
pr_info_ratelimited("Limit the maximum number of connections(%u)\n",
+5
View File
@@ -33,6 +33,11 @@ define Device/Default
pad-rootfs | append-metadata
endef
define Build/asus-trx
$(STAGING_DIR_HOST)/bin/asusuimage $(wordlist 1,$(words $(1)),$(1)) -i $@ -o $@.new
mv $@.new $@
endef
include $(SUBTARGET).mk
define Image/Build
+3
View File
@@ -271,6 +271,9 @@ define Device/asus_rt-ax52
KERNEL_INITRAMFS := kernel-bin | lzma | \
fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb with-initrd | pad-to 64k
IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
ARTIFACTS := initramfs.trx
ARTIFACT/initramfs.trx := append-image-stage initramfs-kernel.bin | \
uImage none | asus-trx -v 3 -n $$(DEVICE_MODEL)
endef
TARGET_DEVICES += asus_rt-ax52
@@ -14,6 +14,7 @@ CONFIG_GRO_CELLS=y
CONFIG_LZO_COMPRESS=y
CONFIG_LZO_DECOMPRESS=y
CONFIG_MEMORY=y
CONFIG_MTD_CFI=y
CONFIG_MTD_NAND_FSL_IFC=y
CONFIG_MTD_PHYSMAP=y
CONFIG_MTD_SPLIT_TPLINK_FW=y