diff --git a/include/kernel-6.6 b/include/kernel-6.6 index a22eb0f6f9..2e70a47f1d 100644 --- a/include/kernel-6.6 +++ b/include/kernel-6.6 @@ -1,2 +1,2 @@ -LINUX_VERSION-6.6 = .78 -LINUX_KERNEL_HASH-6.6.78 = 5aa39a9bd555133ad741058f9908a277e6b36bb928481e747d885b50aaaa93ed +LINUX_VERSION-6.6 = .79 +LINUX_KERNEL_HASH-6.6.79 = 07a6f904470da1a099aa1683e3025a999dd82f2438f78b006b80c6ae2e9dfe8d diff --git a/package/firmware/linux-firmware/Makefile b/package/firmware/linux-firmware/Makefile index 433ff03a21..bb5d14e04f 100644 --- a/package/firmware/linux-firmware/Makefile +++ b/package/firmware/linux-firmware/Makefile @@ -8,12 +8,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=linux-firmware -PKG_VERSION:=20241110 +PKG_VERSION:=20250211 PKG_RELEASE:=1 PKG_SOURCE_URL:=@KERNEL/linux/kernel/firmware PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz -PKG_HASH:=32e6d3eb5c7fcb69fe5d58976c6deafa0d6552719c6e74835064aff049d25bd7 +PKG_HASH:=2de1345897bf839d532c5de0fdb348770ca2a5f4edfb21971582597abb45297d PKG_MAINTAINER:=Felix Fietkau diff --git a/package/firmware/wireless-regdb/Makefile b/package/firmware/wireless-regdb/Makefile index 7d4cf63c47..7055b12bfa 100644 --- a/package/firmware/wireless-regdb/Makefile +++ b/package/firmware/wireless-regdb/Makefile @@ -1,14 +1,14 @@ include $(TOPDIR)/rules.mk PKG_NAME:=wireless-regdb -PKG_VERSION:=2024.10.07 +PKG_VERSION:=2025.02.20 PKG_RELEASE:=1 PKG_LICENSE:=ISC PKG_LICENSE_FILES:=LICENSE PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz PKG_SOURCE_URL:=@KERNEL/software/network/wireless-regdb/ -PKG_HASH:=f76f2bd79a653e9f9dd50548d99d03a4a4eb157da056dfd5892f403ec28fb3d5 +PKG_HASH:=57f8e7721cf5a880c13ae0c202edbb21092a060d45f9e9c59bcd2a8272bfa456 PKG_MAINTAINER:=Felix Fietkau diff --git a/package/firmware/wireless-regdb/patches/600-custom-change-txpower-and-dfs.patch b/package/firmware/wireless-regdb/patches/600-custom-change-txpower-and-dfs.patch index 2f464126da..65cbeadfee 100644 --- a/package/firmware/wireless-regdb/patches/600-custom-change-txpower-and-dfs.patch +++ b/package/firmware/wireless-regdb/patches/600-custom-change-txpower-and-dfs.patch @@ -1,6 +1,6 @@ --- a/db.txt +++ b/db.txt -@@ -421,9 +421,8 @@ country CL: DFS-JP +@@ -425,9 +425,8 @@ country CL: DFS-JP # https://www.miit.gov.cn/cms_files/filemanager/1226211233/attach/20236/d1dc19424d5a4cfe90d631adeee8dd58.pdf # Note: The transmit power for 5250-5350MHz bands can be raised by 3dBm when TPC is implemented country CN: DFS-FCC @@ -12,7 +12,7 @@ (5725 - 5850 @ 80), (33) # 60 GHz band channels 1,4: 28dBm, channels 2,3: 44dBm # ref: http://www.miit.gov.cn/n11293472/n11505629/n11506593/n11960250/n11960606/n11960700/n12330791.files/n12330790.pdf -@@ -1916,14 +1915,12 @@ country US: DFS-FCC +@@ -1940,14 +1939,12 @@ country US: DFS-FCC (920 - 928 @ 8), (30) (2400 - 2472 @ 40), (30) # 5.15 ~ 5.25 GHz: 30 dBm for master mode, 23 dBm for clients diff --git a/package/kernel/lantiq/ltq-vdsl-vr11-mei/Makefile b/package/kernel/lantiq/ltq-vdsl-vr11-mei/Makefile index 3e01ee6373..b91854558e 100644 --- a/package/kernel/lantiq/ltq-vdsl-vr11-mei/Makefile +++ b/package/kernel/lantiq/ltq-vdsl-vr11-mei/Makefile @@ -9,7 +9,7 @@ include $(INCLUDE_DIR)/kernel.mk PKG_NAME:=ltq-vdsl-vr11-mei PKG_VERSION:=1.11.1 -PKG_RELEASE:=3 +PKG_RELEASE:=4 PKG_BASE_NAME:=dsl_cpe_mei UGW_VERSION=8.5.2.10 diff --git a/package/kernel/lantiq/ltq-vdsl-vr11-mei/patches/030-no-static-linking.patch b/package/kernel/lantiq/ltq-vdsl-vr11-mei/patches/030-no-static-linking.patch new file mode 100644 index 0000000000..ad998429dd --- /dev/null +++ b/package/kernel/lantiq/ltq-vdsl-vr11-mei/patches/030-no-static-linking.patch @@ -0,0 +1,47 @@ +This removes -static compile option. The -static option tells GCC to +link this statically with the libc, which we do not want in OpenWrt. We +want to link everything dynamically to the libc. This fixes a compile +problem with glibc. + +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -198,10 +198,10 @@ AM_CFLAGS = -Wall -Wimplicit -Wunused -W + + if IFXOS_ENABLE + AM_LDFLAGS= \ +- -Bstatic -dn -static @IFXOS_LIBRARY_PATH@ ++ -Bstatic -dn @IFXOS_LIBRARY_PATH@ + else + AM_LDFLAGS= \ +- -Bstatic -dn -static ++ -Bstatic -dn + endif + + # +@@ -302,7 +302,7 @@ mei_cpe_appl_ldflags= $(ADD_APPL_LDFLAGS + else + if TARGET_ADM5120_MIPSEL + mei_cpe_appl_cflags = -O1 -g +-mei_cpe_appl_ldflags = -static ++mei_cpe_appl_ldflags = + else + mei_cpe_appl_cflags = -DPPC + endif +@@ -335,7 +335,7 @@ endif + mei_cpe_drv_test_CFLAGS = $(mei_cpe_app_common_cflags) \ + $(mei_cpe_appl_cflags) $(MEI_DRV_TARGET_OPTIONS) + +-mei_cpe_drv_test_LDFLAGS = $(mei_cpe_appl_ldflags) -Bstatic -dn -static @IFXOS_LIBRARY_PATH@ \ ++mei_cpe_drv_test_LDFLAGS = $(mei_cpe_appl_ldflags) -Bstatic -dn @IFXOS_LIBRARY_PATH@ \ + $(dsl_cpe_mei_LDFLAGS) + + mei_cpe_drv_test_LDADD = -lifxos $(dsl_cpe_mei_LDADD) +@@ -356,7 +356,7 @@ endif + + mei_cpe_drv_dbg_strm_dmp_CFLAGS = $(mei_cpe_app_common_cflags) \ + $(mei_cpe_appl_cflags) $(MEI_DRV_TARGET_OPTIONS) +-mei_cpe_drv_dbg_strm_dmp_LDFLAGS = $(mei_cpe_appl_ldflags) -Bstatic -dn -static @IFXOS_LIBRARY_PATH@ \ ++mei_cpe_drv_dbg_strm_dmp_LDFLAGS = $(mei_cpe_appl_ldflags) -Bstatic -dn @IFXOS_LIBRARY_PATH@ \ + $(dsl_cpe_mei_LDFLAGS) + mei_cpe_drv_dbg_strm_dmp_LDADD = -lifxos $(dsl_cpe_mei_LDADD) + diff --git a/package/kernel/lantiq/ltq-vdsl-vr11-mei/patches/100-compat.patch b/package/kernel/lantiq/ltq-vdsl-vr11-mei/patches/100-compat.patch index 74e88894d8..58df61a0cb 100644 --- a/package/kernel/lantiq/ltq-vdsl-vr11-mei/patches/100-compat.patch +++ b/package/kernel/lantiq/ltq-vdsl-vr11-mei/patches/100-compat.patch @@ -10,13 +10,11 @@ --- a/src/drv_mei_cpe_linux.h +++ b/src/drv_mei_cpe_linux.h -@@ -110,6 +110,10 @@ typedef irqreturn_t (*usedIsrHandler_t)( +@@ -110,6 +110,8 @@ typedef irqreturn_t (*usedIsrHandler_t)( # endif #endif -+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,17,0)) +#define PDE_DATA pde_data -+#endif + /** Function typedef for the Linux request_threaded_irq() diff --git a/package/kernel/lantiq/ltq-vdsl-vr11-mei/patches/130-support-kernel-6.6.patch b/package/kernel/lantiq/ltq-vdsl-vr11-mei/patches/130-support-kernel-6.6.patch index 407afc9bf2..f09fbd4284 100644 --- a/package/kernel/lantiq/ltq-vdsl-vr11-mei/patches/130-support-kernel-6.6.patch +++ b/package/kernel/lantiq/ltq-vdsl-vr11-mei/patches/130-support-kernel-6.6.patch @@ -1,14 +1,11 @@ --- a/src/drv_mei_cpe_linux.c +++ b/src/drv_mei_cpe_linux.c -@@ -2779,7 +2779,11 @@ static int MEI_InitModuleRegCharDev(cons +@@ -2779,7 +2779,7 @@ static int MEI_InitModuleRegCharDev(cons ("Using major number %d" MEI_DRV_CRLF, MAJOR(mei_devt))); } -+#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 4, 0) - mei_class = class_create(THIS_MODULE, devName); -+#else +- mei_class = class_create(THIS_MODULE, devName); + mei_class = class_create(devName); -+#endif if (IS_ERR(mei_class)) { PRN_DBG_USR_NL( MEI_DRV,MEI_DRV_PRN_LEVEL_HIGH, diff --git a/package/kernel/lantiq/ltq-vdsl-vr11-mei/patches/131-fix-field-spanning-write-mei-mailbox-packed.patch b/package/kernel/lantiq/ltq-vdsl-vr11-mei/patches/131-fix-field-spanning-write-mei-mailbox-packed.patch new file mode 100644 index 0000000000..202a7d63f8 --- /dev/null +++ b/package/kernel/lantiq/ltq-vdsl-vr11-mei/patches/131-fix-field-spanning-write-mei-mailbox-packed.patch @@ -0,0 +1,179 @@ +--- a/src/cmv_message_format.h ++++ b/src/cmv_message_format.h +@@ -308,7 +308,7 @@ typedef struct cmv_std_message_header_s + unsigned short index; + /** CMV length */ + unsigned short length; +-} CMV_STD_MESSAGE_HEADER_T; ++} __attribute__((packed)) CMV_STD_MESSAGE_HEADER_T; + + /** + CMV payload paramaters (8, 16, 32 Bit) +@@ -318,7 +318,7 @@ typedef union cmv_std_message_payload_s + unsigned char params_8Bit[CMV_USED_PAYLOAD_8BIT_SIZE]; + unsigned short params_16Bit[CMV_USED_PAYLOAD_16BIT_SIZE]; + unsigned int params_32Bit[CMV_USED_PAYLOAD_32BIT_SIZE]; +-} CMV_STD_MESSAGE_PAYLOAD_T; ++} __attribute__((packed)) CMV_STD_MESSAGE_PAYLOAD_T; + + /** + CMV Standard message. +@@ -327,7 +327,7 @@ typedef struct cmv_std_message_s + { + CMV_STD_MESSAGE_HEADER_T header; + CMV_STD_MESSAGE_PAYLOAD_T payload; +-} CMV_STD_MESSAGE_T; ++} __attribute__((packed)) CMV_STD_MESSAGE_T; + + + /* ============================================================================ +@@ -341,7 +341,7 @@ typedef struct cmv_message_modem_rdy_s + { + CMV_STD_MESSAGE_HEADER_T header; + CMV_STD_MESSAGE_PAYLOAD_T modemRdyParams; +-} CMV_MESSAGE_MODEM_RDY_T; ++} __attribute__((packed)) CMV_MESSAGE_MODEM_RDY_T; + + + /* ============================================================================ +@@ -358,7 +358,7 @@ typedef struct cmv_message_modem_rdy_s + typedef struct cmv_message_cs_static_params_s + { + unsigned short pageIdx[MEI_CMV_CODESWAP_MAX_PAGES]; +-} CMV_MESSAGE_CS_STATIC_PARAMS_T; ++} __attribute__((packed)) CMV_MESSAGE_CS_STATIC_PARAMS_T; + + + typedef struct cmv_dyn_codeswap_page_info_s +@@ -366,7 +366,7 @@ typedef struct cmv_dyn_codeswap_page_inf + unsigned short pageIdx; + unsigned short h_destAddr; + unsigned short l_destAddr; +-} CMV_DYN_CODESWAP_PAGE_INFO_T; ++} __attribute__((packed)) CMV_DYN_CODESWAP_PAGE_INFO_T; + + /** + CMV codeswap message payload (dynamic). +@@ -374,7 +374,7 @@ typedef struct cmv_dyn_codeswap_page_inf + typedef struct cmv_message_cs_dyn_params_s + { + CMV_DYN_CODESWAP_PAGE_INFO_T pageInfo[MEI_CMV_CODESWAP_MAX_PAGES]; +-} CMV_MESSAGE_CS_DYN_PARAMS_T; ++} __attribute__((packed)) CMV_MESSAGE_CS_DYN_PARAMS_T; + + + /** +@@ -388,7 +388,7 @@ typedef struct cmv_message_cs_s + CMV_MESSAGE_CS_STATIC_PARAMS_T csStaticParams; + CMV_MESSAGE_CS_DYN_PARAMS_T csDynParams; + } params; +-} CMV_MESSAGE_CS_T; ++} __attribute__((packed)) CMV_MESSAGE_CS_T; + + /* ============================================================================ + CMV Fast Read request message definitions +@@ -406,7 +406,7 @@ typedef struct cmv_fast_read_params_s + unsigned short addrMSW; + unsigned short addrLSW; + unsigned short size_16bit; +-} CMV_FAST_READ_PARAMS_T; ++} __attribute__((packed)) CMV_FAST_READ_PARAMS_T; + + /** + CMV fast read message payload. +@@ -414,7 +414,7 @@ typedef struct cmv_fast_read_params_s + typedef struct cmv_message_fast_rd_params_s + { + unsigned short fastRdpage[MEI_CMV_FAST_READ_MAX_PAGES]; +-} CMV_MESSAGE_FAST_RD_PARAMS_T; ++} __attribute__((packed)) CMV_MESSAGE_FAST_RD_PARAMS_T; + + /** + CMV codeswap message. +@@ -423,7 +423,7 @@ typedef struct cmv_message_fast_rd_s + { + CMV_STD_MESSAGE_HEADER_T header; + CMV_MESSAGE_FAST_RD_PARAMS_T fastRdParams; +-} CMV_MESSAGE_FAST_RD_T; ++} __attribute__((packed)) CMV_MESSAGE_FAST_RD_T; + + /** + CMV messages +@@ -435,7 +435,7 @@ typedef union cmv_message_all_s + CMV_MESSAGE_CS_T codeSwap; + CMV_MESSAGE_FAST_RD_T fastRd; + unsigned short rawMsg[CMV_HEADER_16BIT_SIZE + CMV_USED_PAYLOAD_16BIT_SIZE]; +-} CMV_MESSAGE_ALL_T; ++} __attribute__((packed)) CMV_MESSAGE_ALL_T; + + + +--- a/src/drv_mei_cpe_mailbox.h ++++ b/src/drv_mei_cpe_mailbox.h +@@ -202,7 +202,7 @@ typedef union MEI_cmv_mailbox_s + CMV_MESSAGE_CS_T codeSwap; + /** CMV Fast Read message */ + CMV_MESSAGE_FAST_RD_T fastRd; +-} MEI_CMV_MAILBOX_T; ++} __attribute__((packed)) MEI_CMV_MAILBOX_T; + + + /** +@@ -211,7 +211,7 @@ typedef union MEI_cmv_mailbox_s + typedef struct MEI_mei_mailbox_raw_s + { + IFX_uint16_t rawMsg[CMV_HEADER_16BIT_SIZE + CMV_USED_PAYLOAD_16BIT_SIZE]; +-} MEI_MEI_MAILBOX_RAW_T; ++} __attribute__((packed)) MEI_MEI_MAILBOX_RAW_T; + + + /** +@@ -223,7 +223,7 @@ typedef union MEI_mei_mailbox_s + MEI_MEI_MAILBOX_RAW_T mbRaw; + /** CMV message type */ + MEI_CMV_MAILBOX_T mbCmv; +-} MEI_MEI_MAILBOX_T; ++} __attribute__((packed)) MEI_MEI_MAILBOX_T; + + + #ifdef __cplusplus +--- a/src/drv_mei_cpe_msg_process.c ++++ b/src/drv_mei_cpe_msg_process.c +@@ -2215,7 +2215,7 @@ MEI_STATIC IFX_int32_t MEI_ModemNfcRead( + Return IFX/modem message + - index and length fields becomes part of the appl. payload + */ +- pSource = (unsigned char *)&pMailbox->mbCmv.cmv.header.index; ++ pSource = (unsigned char *)&pMailbox->mbCmv.cmv + offsetof(CMV_STD_MESSAGE_T, header.index); + + /* size field contains number of 16 bit payload elements of the message */ + paylSize_byte = (CMV_MSGHDR_PAYLOAD_SIZE_GET(pMailbox->mbCmv.cmv)) << CMV_MSG_BIT_SIZE_16BIT; +@@ -3551,7 +3551,7 @@ IFX_int32_t MEI_IoctlCmdMsgWrite( + */ + cmvMbSize = CMV_HEADER_8BIT_SIZE + + pUserMsg->paylSize_byte - (sizeof(IFX_uint16_t) * 2); +- pDestPtr = (unsigned char *)&pMailbox->mbCmv.cmv.header.index; ++ pDestPtr = (unsigned char *)&pMailbox->mbCmv.cmv + offsetof(CMV_STD_MESSAGE_T, header.index); + + if ( cmvMbSize > (int)(sizeof(MEI_CMV_MAILBOX_T)) ) + { +@@ -3665,7 +3665,7 @@ IFX_int32_t MEI_IoctlAckMsgRead( + Return IFX/modem message + - index and length fields becomes part of the appl. payload + */ +- pSource = (unsigned char *)&pMailbox->mbCmv.cmv.header.index; ++ pSource = (unsigned char *)&pMailbox->mbCmv.cmv + offsetof(CMV_STD_MESSAGE_T, header.index); + + /* size field contains number of 16 bit payload elements of the message */ + paylSize_byte = (CMV_MSGHDR_PAYLOAD_SIZE_GET(pMailbox->mbCmv.cmv)) << CMV_MSG_BIT_SIZE_16BIT; +--- a/src/drv_mei_cpe_msg_process_ar9.c ++++ b/src/drv_mei_cpe_msg_process_ar9.c +@@ -1385,7 +1385,7 @@ MEI_STATIC IFX_int32_t MEI_ModemNfcRead( + Return IFX/modem message + - index and length fields becomes part of the appl. payload + */ +- pSource = (unsigned char *)&pMailbox->mbCmv.cmv.header.index; ++ pSource = (unsigned char *)&pMailbox->mbCmv.cmv + offsetof(CMV_STD_MESSAGE_T, header.index); + + /* size field contains number of 16 bit payload elements of the message */ + paylSize_byte = (CMV_MSGHDR_PAYLOAD_SIZE_GET(pMailbox->mbCmv.cmv)) << CMV_MSG_BIT_SIZE_16BIT; diff --git a/package/kernel/lantiq/ltq-vdsl-vr11/Makefile b/package/kernel/lantiq/ltq-vdsl-vr11/Makefile index 99d6e35376..50432986e2 100644 --- a/package/kernel/lantiq/ltq-vdsl-vr11/Makefile +++ b/package/kernel/lantiq/ltq-vdsl-vr11/Makefile @@ -9,7 +9,7 @@ include $(INCLUDE_DIR)/kernel.mk PKG_NAME:=ltq-vdsl-vr11 PKG_VERSION:=4.23.1 -PKG_RELEASE:=3 +PKG_RELEASE:=4 PKG_BASE_NAME:=dsl_cpe_api UGW_VERSION=8.5.2.10 diff --git a/package/kernel/lantiq/ltq-vdsl-vr11/patches/300-l3-request-no-retry.patch b/package/kernel/lantiq/ltq-vdsl-vr11/patches/300-l3-request-no-retry.patch new file mode 100644 index 0000000000..818f676b32 --- /dev/null +++ b/package/kernel/lantiq/ltq-vdsl-vr11/patches/300-l3-request-no-retry.patch @@ -0,0 +1,46 @@ +Add option for L3 request without retry on failure + +This allows to attempt an orderly shutdown via L3 request while avoiding +excessive delay in the failure case (up to 6 seconds with the currently +hard-coded 3 attempts). +--- a/src/g997/drv_dsl_cpe_api_g997_vrx.c ++++ b/src/g997/drv_dsl_cpe_api_g997_vrx.c +@@ -1053,6 +1053,7 @@ DSL_Error_t DSL_DRV_DEV_G997_PowerManage + { + DSL_Error_t nErrCode = DSL_SUCCESS, nRet = DSL_SUCCESS; + DSL_int_t nAttempt = 0, i = 0; ++ DSL_int_t nAttemptCount = DSL_LX_TO_L3_ATTEMPT_COUNT; + const DSL_int_t nMaxRetry = DSL_LX_TO_L3_TIMEOUT/DSL_L3_WAIT_INTERVAL; + DSL_G997_PowerManagementStatusData_t PmStatus = {DSL_G997_PMS_NA}; + DSL_VRX_L3RequestStatus_t L3RequestStatus = DSL_VRX_L3_STATUS_NA; +@@ -1095,11 +1096,15 @@ DSL_Error_t DSL_DRV_DEV_G997_PowerManage + nErrCode = DSL_ERR_NOT_SUPPORTED_BY_DEVICE; + break; + ++ case DSL_G997_PMSF_LX_TO_L3_NO_RETRY: ++ nAttemptCount = 1; ++ fallthrough; ++ + case DSL_G997_PMSF_LX_TO_L3: + if (PmStatus.nPowerManagementStatus != DSL_G997_PMS_L3) + { + /* retry it DSL_LX_TO_L3_ATTEMPT_COUNT times */ +- for (nAttempt = 0; nAttempt < DSL_LX_TO_L3_ATTEMPT_COUNT; nAttempt++) ++ for (nAttempt = 0; nAttempt < nAttemptCount; nAttempt++) + { + /* L3 shutdown request*/ + nErrCode = DSL_DRV_VRX_SendMsgShutdownRequest(pContext); +--- a/src/include/drv_dsl_cpe_api_g997.h ++++ b/src/include/drv_dsl_cpe_api_g997.h +@@ -1199,7 +1199,10 @@ typedef enum + procedure. After reaching the L3 state, the line shall remain in the L3 idle + state until it is forced into another state through this configuration + parameter. */ +- DSL_G997_PMSF_LX_TO_L3 = 3 ++ DSL_G997_PMSF_LX_TO_L3 = 3, ++ /** ++ Same as above, but does not retry in case of failure. */ ++ DSL_G997_PMSF_LX_TO_L3_NO_RETRY = 4 + } DSL_G997_PowerManagementStateForce_t; + + /** diff --git a/package/kernel/lantiq/ltq-vdsl-vr9-mei/Makefile b/package/kernel/lantiq/ltq-vdsl-vr9-mei/Makefile index 9b3dac299f..2576355bd1 100644 --- a/package/kernel/lantiq/ltq-vdsl-vr9-mei/Makefile +++ b/package/kernel/lantiq/ltq-vdsl-vr9-mei/Makefile @@ -9,7 +9,7 @@ include $(INCLUDE_DIR)/kernel.mk PKG_NAME:=ltq-vdsl-vr9-mei PKG_VERSION:=1.5.17.6 -PKG_RELEASE:=6 +PKG_RELEASE:=7 PKG_BASE_NAME:=drv_mei_cpe PKG_SOURCE:=$(PKG_BASE_NAME)-$(PKG_VERSION).tar.gz diff --git a/package/kernel/lantiq/ltq-vdsl-vr9-mei/patches/401-fix-field-spanning-write-mei-mailbox-packed.patch b/package/kernel/lantiq/ltq-vdsl-vr9-mei/patches/401-fix-field-spanning-write-mei-mailbox-packed.patch new file mode 100644 index 0000000000..549411b78e --- /dev/null +++ b/package/kernel/lantiq/ltq-vdsl-vr9-mei/patches/401-fix-field-spanning-write-mei-mailbox-packed.patch @@ -0,0 +1,179 @@ +--- a/src/cmv_message_format.h ++++ b/src/cmv_message_format.h +@@ -308,7 +308,7 @@ typedef struct cmv_std_message_header_s + unsigned short index; + /** CMV length */ + unsigned short length; +-} CMV_STD_MESSAGE_HEADER_T; ++} __attribute__((packed)) CMV_STD_MESSAGE_HEADER_T; + + /** + CMV payload paramaters (8, 16, 32 Bit) +@@ -318,7 +318,7 @@ typedef union cmv_std_message_payload_s + unsigned char params_8Bit[CMV_USED_PAYLOAD_8BIT_SIZE]; + unsigned short params_16Bit[CMV_USED_PAYLOAD_16BIT_SIZE]; + unsigned int params_32Bit[CMV_USED_PAYLOAD_32BIT_SIZE]; +-} CMV_STD_MESSAGE_PAYLOAD_T; ++} __attribute__((packed)) CMV_STD_MESSAGE_PAYLOAD_T; + + /** + CMV Standard message. +@@ -327,7 +327,7 @@ typedef struct cmv_std_message_s + { + CMV_STD_MESSAGE_HEADER_T header; + CMV_STD_MESSAGE_PAYLOAD_T payload; +-} CMV_STD_MESSAGE_T; ++} __attribute__((packed)) CMV_STD_MESSAGE_T; + + + /* ============================================================================ +@@ -341,7 +341,7 @@ typedef struct cmv_message_modem_rdy_s + { + CMV_STD_MESSAGE_HEADER_T header; + CMV_STD_MESSAGE_PAYLOAD_T modemRdyParams; +-} CMV_MESSAGE_MODEM_RDY_T; ++} __attribute__((packed)) CMV_MESSAGE_MODEM_RDY_T; + + + /* ============================================================================ +@@ -358,7 +358,7 @@ typedef struct cmv_message_modem_rdy_s + typedef struct cmv_message_cs_static_params_s + { + unsigned short pageIdx[MEI_CMV_CODESWAP_MAX_PAGES]; +-} CMV_MESSAGE_CS_STATIC_PARAMS_T; ++} __attribute__((packed)) CMV_MESSAGE_CS_STATIC_PARAMS_T; + + + typedef struct cmv_dyn_codeswap_page_info_s +@@ -366,7 +366,7 @@ typedef struct cmv_dyn_codeswap_page_inf + unsigned short pageIdx; + unsigned short h_destAddr; + unsigned short l_destAddr; +-} CMV_DYN_CODESWAP_PAGE_INFO_T; ++} __attribute__((packed)) CMV_DYN_CODESWAP_PAGE_INFO_T; + + /** + CMV codeswap message payload (dynamic). +@@ -374,7 +374,7 @@ typedef struct cmv_dyn_codeswap_page_inf + typedef struct cmv_message_cs_dyn_params_s + { + CMV_DYN_CODESWAP_PAGE_INFO_T pageInfo[MEI_CMV_CODESWAP_MAX_PAGES]; +-} CMV_MESSAGE_CS_DYN_PARAMS_T; ++} __attribute__((packed)) CMV_MESSAGE_CS_DYN_PARAMS_T; + + + /** +@@ -388,7 +388,7 @@ typedef struct cmv_message_cs_s + CMV_MESSAGE_CS_STATIC_PARAMS_T csStaticParams; + CMV_MESSAGE_CS_DYN_PARAMS_T csDynParams; + } params; +-} CMV_MESSAGE_CS_T; ++} __attribute__((packed)) CMV_MESSAGE_CS_T; + + /* ============================================================================ + CMV Fast Read request message definitions +@@ -406,7 +406,7 @@ typedef struct cmv_fast_read_params_s + unsigned short addrMSW; + unsigned short addrLSW; + unsigned short size_16bit; +-} CMV_FAST_READ_PARAMS_T; ++} __attribute__((packed)) CMV_FAST_READ_PARAMS_T; + + /** + CMV fast read message payload. +@@ -414,7 +414,7 @@ typedef struct cmv_fast_read_params_s + typedef struct cmv_message_fast_rd_params_s + { + unsigned short fastRdpage[MEI_CMV_FAST_READ_MAX_PAGES]; +-} CMV_MESSAGE_FAST_RD_PARAMS_T; ++} __attribute__((packed)) CMV_MESSAGE_FAST_RD_PARAMS_T; + + /** + CMV codeswap message. +@@ -423,7 +423,7 @@ typedef struct cmv_message_fast_rd_s + { + CMV_STD_MESSAGE_HEADER_T header; + CMV_MESSAGE_FAST_RD_PARAMS_T fastRdParams; +-} CMV_MESSAGE_FAST_RD_T; ++} __attribute__((packed)) CMV_MESSAGE_FAST_RD_T; + + /** + CMV messages +@@ -435,7 +435,7 @@ typedef union cmv_message_all_s + CMV_MESSAGE_CS_T codeSwap; + CMV_MESSAGE_FAST_RD_T fastRd; + unsigned short rawMsg[CMV_HEADER_16BIT_SIZE + CMV_USED_PAYLOAD_16BIT_SIZE]; +-} CMV_MESSAGE_ALL_T; ++} __attribute__((packed)) CMV_MESSAGE_ALL_T; + + + +--- a/src/drv_mei_cpe_mailbox.h ++++ b/src/drv_mei_cpe_mailbox.h +@@ -197,7 +197,7 @@ typedef union MEI_cmv_mailbox_s + CMV_MESSAGE_CS_T codeSwap; + /** CMV Fast Read message */ + CMV_MESSAGE_FAST_RD_T fastRd; +-} MEI_CMV_MAILBOX_T; ++} __attribute__((packed)) MEI_CMV_MAILBOX_T; + + + /** +@@ -206,7 +206,7 @@ typedef union MEI_cmv_mailbox_s + typedef struct MEI_mei_mailbox_raw_s + { + IFX_uint16_t rawMsg[CMV_HEADER_16BIT_SIZE + CMV_USED_PAYLOAD_16BIT_SIZE]; +-} MEI_MEI_MAILBOX_RAW_T; ++} __attribute__((packed)) MEI_MEI_MAILBOX_RAW_T; + + + /** +@@ -218,7 +218,7 @@ typedef union MEI_mei_mailbox_s + MEI_MEI_MAILBOX_RAW_T mbRaw; + /** CMV message type */ + MEI_CMV_MAILBOX_T mbCmv; +-} MEI_MEI_MAILBOX_T; ++} __attribute__((packed)) MEI_MEI_MAILBOX_T; + + + #ifdef __cplusplus +--- a/src/drv_mei_cpe_msg_process.c ++++ b/src/drv_mei_cpe_msg_process.c +@@ -2172,7 +2172,7 @@ MEI_STATIC IFX_int32_t MEI_ModemNfcRead( + Return IFX/modem message + - index and length fields becomes part of the appl. payload + */ +- pSource = (unsigned char *)&pMailbox->mbCmv.cmv.header.index; ++ pSource = (unsigned char *)&pMailbox->mbCmv.cmv + offsetof(CMV_STD_MESSAGE_T, header.index); + + /* size field contains number of 16 bit payload elements of the message */ + paylSize_byte = (CMV_MSGHDR_PAYLOAD_SIZE_GET(pMailbox->mbCmv.cmv)) << CMV_MSG_BIT_SIZE_16BIT; +@@ -3508,7 +3508,7 @@ IFX_int32_t MEI_IoctlCmdMsgWrite( + */ + cmvMbSize = CMV_HEADER_8BIT_SIZE + + pUserMsg->paylSize_byte - (sizeof(IFX_uint16_t) * 2); +- pDestPtr = (unsigned char *)&pMailbox->mbCmv.cmv.header.index; ++ pDestPtr = (unsigned char *)&pMailbox->mbCmv.cmv + offsetof(CMV_STD_MESSAGE_T, header.index); + + if ( cmvMbSize > (int)(sizeof(MEI_CMV_MAILBOX_T)) ) + { +@@ -3622,7 +3622,7 @@ IFX_int32_t MEI_IoctlAckMsgRead( + Return IFX/modem message + - index and length fields becomes part of the appl. payload + */ +- pSource = (unsigned char *)&pMailbox->mbCmv.cmv.header.index; ++ pSource = (unsigned char *)&pMailbox->mbCmv.cmv + offsetof(CMV_STD_MESSAGE_T, header.index); + + /* size field contains number of 16 bit payload elements of the message */ + paylSize_byte = (CMV_MSGHDR_PAYLOAD_SIZE_GET(pMailbox->mbCmv.cmv)) << CMV_MSG_BIT_SIZE_16BIT; +--- a/src/drv_mei_cpe_msg_process_ar9.c ++++ b/src/drv_mei_cpe_msg_process_ar9.c +@@ -1385,7 +1385,7 @@ MEI_STATIC IFX_int32_t MEI_ModemNfcRead( + Return IFX/modem message + - index and length fields becomes part of the appl. payload + */ +- pSource = (unsigned char *)&pMailbox->mbCmv.cmv.header.index; ++ pSource = (unsigned char *)&pMailbox->mbCmv.cmv + offsetof(CMV_STD_MESSAGE_T, header.index); + + /* size field contains number of 16 bit payload elements of the message */ + paylSize_byte = (CMV_MSGHDR_PAYLOAD_SIZE_GET(pMailbox->mbCmv.cmv)) << CMV_MSG_BIT_SIZE_16BIT; diff --git a/package/kernel/lantiq/ltq-vdsl-vr9-mei/patches/401-use-unsafe_memcpy-for-intentional-field-spanning-write.patch b/package/kernel/lantiq/ltq-vdsl-vr9-mei/patches/401-use-unsafe_memcpy-for-intentional-field-spanning-write.patch deleted file mode 100644 index 1542ace44f..0000000000 --- a/package/kernel/lantiq/ltq-vdsl-vr9-mei/patches/401-use-unsafe_memcpy-for-intentional-field-spanning-write.patch +++ /dev/null @@ -1,15 +0,0 @@ ---- a/src/drv_mei_cpe_msg_process.c -+++ b/src/drv_mei_cpe_msg_process.c -@@ -3524,7 +3524,12 @@ IFX_int32_t MEI_IoctlCmdMsgWrite( - { - if (bInternCall) - { -+#if (LINUX_VERSION_CODE < KERNEL_VERSION(5,19,0)) - memcpy(pDestPtr, pUserMsg->pPayload, pUserMsg->paylSize_byte); -+#else -+ unsafe_memcpy(pDestPtr, pUserMsg->pPayload, pUserMsg->paylSize_byte, -+ /* field-spanning writing is used here intentionally */); -+#endif - } - else - { diff --git a/package/kernel/linux/modules/bluetooth.mk b/package/kernel/linux/modules/bluetooth.mk new file mode 100644 index 0000000000..c474baf8d2 --- /dev/null +++ b/package/kernel/linux/modules/bluetooth.mk @@ -0,0 +1,155 @@ +# +# Copyright (C) 2006-2025 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +BLUETOOTH_MENU:=Bluetooth Support + +define KernelPackage/bluetooth + SUBMENU:=$(BLUETOOTH_MENU) + TITLE:=Bluetooth support + DEPENDS:=+kmod-crypto-hash +kmod-crypto-ecb +kmod-lib-crc16 +kmod-hid +kmod-crypto-cmac +kmod-regmap-core +kmod-crypto-ecdh + KCONFIG:= \ + CONFIG_BT \ + CONFIG_BT_BREDR=y \ + CONFIG_BT_DEBUGFS=n \ + CONFIG_BT_LE=y \ + CONFIG_BT_RFCOMM \ + CONFIG_BT_BNEP \ + CONFIG_BT_HIDP + $(call AddDepends/rfkill) + FILES:= \ + $(LINUX_DIR)/net/bluetooth/bluetooth.ko \ + $(LINUX_DIR)/net/bluetooth/rfcomm/rfcomm.ko \ + $(LINUX_DIR)/net/bluetooth/bnep/bnep.ko \ + $(LINUX_DIR)/net/bluetooth/hidp/hidp.ko + AUTOLOAD:=$(call AutoProbe,bluetooth rfcomm bnep hidp) +endef + +define KernelPackage/bluetooth/description + Kernel support for Bluetooth devices +endef + +$(eval $(call KernelPackage,bluetooth)) + + +define KernelPackage/hci-uart + SUBMENU:=$(BLUETOOTH_MENU) + TITLE:=Bluetooth HCI UART support + DEPENDS:=+kmod-bluetooth + KCONFIG:= \ + CONFIG_BT_HCIUART \ + CONFIG_BT_HCIUART_BCM=y \ + CONFIG_BT_HCIUART_INTEL=n \ + CONFIG_BT_HCIUART_H4 \ + CONFIG_BT_HCIUART_NOKIA=n + FILES:= \ + $(LINUX_DIR)/drivers/bluetooth/hci_uart.ko + AUTOLOAD:=$(call AutoProbe,hci_uart) +endef + +define KernelPackage/hci-uart/description + Kernel support for Bluetooth HCI UART devices +endef + +$(eval $(call KernelPackage,hci-uart)) + + +define KernelPackage/btusb + SUBMENU:=$(BLUETOOTH_MENU) + TITLE:=Bluetooth HCI USB support + DEPENDS:=@USB_SUPPORT +kmod-usb-core +kmod-bluetooth + KCONFIG:= \ + CONFIG_BT_HCIBTUSB \ + CONFIG_BT_HCIBTUSB_BCM=y \ + CONFIG_BT_HCIBTUSB_MTK=y \ + CONFIG_BT_HCIBTUSB_RTL=y + FILES:= \ + $(LINUX_DIR)/drivers/bluetooth/btusb.ko \ + $(LINUX_DIR)/drivers/bluetooth/btbcm.ko \ + $(LINUX_DIR)/drivers/bluetooth/btintel.ko \ + $(LINUX_DIR)/drivers/bluetooth/btrtl.ko \ + $(LINUX_DIR)/drivers/bluetooth/btmtk.ko + AUTOLOAD:=$(call AutoProbe,btusb) +endef + +define KernelPackage/btusb/description + Kernel support for USB Bluetooth HCI USB devices +endef + +$(eval $(call KernelPackage,btusb)) + + +define KernelPackage/ath3k + SUBMENU:=$(BLUETOOTH_MENU) + TITLE:=ATH3K Kernel Module support + DEPENDS:=+kmod-hci-uart +kmod-btusb +ar3k-firmware + KCONFIG:= \ + CONFIG_BT_ATH3K \ + CONFIG_BT_HCIUART_ATH3K=y + FILES:= \ + $(LINUX_DIR)/drivers/bluetooth/ath3k.ko + AUTOLOAD:=$(call AutoProbe,ath3k) +endef + +define KernelPackage/ath3k/description + Kernel support for ATH3K Module +endef + +$(eval $(call KernelPackage,ath3k)) + + +define KernelPackage/bluetooth-6lowpan + SUBMENU:=$(BLUETOOTH_MENU) + TITLE:=Bluetooth 6LoWPAN support + DEPENDS:=+kmod-6lowpan +kmod-bluetooth + KCONFIG:=CONFIG_BT_6LOWPAN + FILES:=$(LINUX_DIR)/net/bluetooth/bluetooth_6lowpan.ko + AUTOLOAD:=$(call AutoProbe,bluetooth_6lowpan) +endef + +define KernelPackage/bluetooth-6lowpan/description + Kernel support for 6LoWPAN over Bluetooth Low Energy devices +endef + +$(eval $(call KernelPackage,bluetooth-6lowpan)) + + +define KernelPackage/btmrvl + SUBMENU:=$(BLUETOOTH_MENU) + TITLE:=Marvell Bluetooth Kernel Module support + DEPENDS:=+kmod-mmc +kmod-bluetooth +mwifiex-sdio-firmware + KCONFIG:= \ + CONFIG_BT_MRVL \ + CONFIG_BT_MRVL_SDIO + FILES:= \ + $(LINUX_DIR)/drivers/bluetooth/btmrvl.ko \ + $(LINUX_DIR)/drivers/bluetooth/btmrvl_sdio.ko + AUTOLOAD:=$(call AutoProbe,btmrvl btmrvl_sdio) +endef + +define KernelPackage/btmrvl/description + Kernel support for Marvell SDIO Bluetooth Module +endef + +$(eval $(call KernelPackage,btmrvl)) + + +define KernelPackage/btsdio + SUBMENU:=$(BLUETOOTH_MENU) + TITLE:=Bluetooth HCI SDIO driver + DEPENDS:=+kmod-bluetooth +kmod-mmc + KCONFIG:= \ + CONFIG_BT_HCIBTSDIO + FILES:= \ + $(LINUX_DIR)/drivers/bluetooth/btsdio.ko + AUTOLOAD:=$(call AutoProbe,btsdio) +endef + +define KernelPackage/btsdio/description + Kernel support for Bluetooth device with SDIO interface +endef + +$(eval $(call KernelPackage,btsdio)) diff --git a/package/kernel/linux/modules/other.mk b/package/kernel/linux/modules/other.mk index 2723211f20..35e442aa24 100644 --- a/package/kernel/linux/modules/other.mk +++ b/package/kernel/linux/modules/other.mk @@ -27,121 +27,6 @@ endef $(eval $(call KernelPackage,6lowpan)) -define KernelPackage/bluetooth - SUBMENU:=$(OTHER_MENU) - TITLE:=Bluetooth support - DEPENDS:=@USB_SUPPORT +kmod-usb-core +kmod-crypto-hash +kmod-crypto-ecb +kmod-lib-crc16 +kmod-hid +kmod-crypto-cmac +kmod-regmap-core +kmod-crypto-ecdh - KCONFIG:= \ - CONFIG_BT \ - CONFIG_BT_BREDR=y \ - CONFIG_BT_DEBUGFS=n \ - CONFIG_BT_LE=y \ - CONFIG_BT_RFCOMM \ - CONFIG_BT_BNEP \ - CONFIG_BT_HCIBTUSB \ - CONFIG_BT_HCIBTUSB_BCM=y \ - CONFIG_BT_HCIBTUSB_MTK=y \ - CONFIG_BT_HCIBTUSB_RTL=y \ - CONFIG_BT_HCIUART \ - CONFIG_BT_HCIUART_BCM=y \ - CONFIG_BT_HCIUART_INTEL=n \ - CONFIG_BT_HCIUART_H4 \ - CONFIG_BT_HCIUART_NOKIA=n \ - CONFIG_BT_HIDP - $(call AddDepends/rfkill) - FILES:= \ - $(LINUX_DIR)/net/bluetooth/bluetooth.ko \ - $(LINUX_DIR)/net/bluetooth/rfcomm/rfcomm.ko \ - $(LINUX_DIR)/net/bluetooth/bnep/bnep.ko \ - $(LINUX_DIR)/net/bluetooth/hidp/hidp.ko \ - $(LINUX_DIR)/drivers/bluetooth/hci_uart.ko \ - $(LINUX_DIR)/drivers/bluetooth/btusb.ko \ - $(LINUX_DIR)/drivers/bluetooth/btbcm.ko \ - $(LINUX_DIR)/drivers/bluetooth/btintel.ko \ - $(LINUX_DIR)/drivers/bluetooth/btrtl.ko \ - $(LINUX_DIR)/drivers/bluetooth/btmtk.ko - AUTOLOAD:=$(call AutoProbe,bluetooth rfcomm bnep hidp hci_uart btusb) -endef - -define KernelPackage/bluetooth/description - Kernel support for Bluetooth devices -endef - -$(eval $(call KernelPackage,bluetooth)) - -define KernelPackage/ath3k - SUBMENU:=$(OTHER_MENU) - TITLE:=ATH3K Kernel Module support - DEPENDS:=+kmod-bluetooth +ar3k-firmware - KCONFIG:= \ - CONFIG_BT_ATH3K \ - CONFIG_BT_HCIUART_ATH3K=y - FILES:= \ - $(LINUX_DIR)/drivers/bluetooth/ath3k.ko - AUTOLOAD:=$(call AutoProbe,ath3k) -endef - -define KernelPackage/ath3k/description - Kernel support for ATH3K Module -endef - -$(eval $(call KernelPackage,ath3k)) - - -define KernelPackage/bluetooth-6lowpan - SUBMENU:=$(OTHER_MENU) - TITLE:=Bluetooth 6LoWPAN support - DEPENDS:=+kmod-6lowpan +kmod-bluetooth - KCONFIG:=CONFIG_BT_6LOWPAN - FILES:=$(LINUX_DIR)/net/bluetooth/bluetooth_6lowpan.ko - AUTOLOAD:=$(call AutoProbe,bluetooth_6lowpan) -endef - -define KernelPackage/bluetooth-6lowpan/description - Kernel support for 6LoWPAN over Bluetooth Low Energy devices -endef - -$(eval $(call KernelPackage,bluetooth-6lowpan)) - - -define KernelPackage/btmrvl - SUBMENU:=$(OTHER_MENU) - TITLE:=Marvell Bluetooth Kernel Module support - DEPENDS:=+kmod-mmc +kmod-bluetooth +mwifiex-sdio-firmware - KCONFIG:= \ - CONFIG_BT_MRVL \ - CONFIG_BT_MRVL_SDIO - FILES:= \ - $(LINUX_DIR)/drivers/bluetooth/btmrvl.ko \ - $(LINUX_DIR)/drivers/bluetooth/btmrvl_sdio.ko - AUTOLOAD:=$(call AutoProbe,btmrvl btmrvl_sdio) -endef - -define KernelPackage/btmrvl/description - Kernel support for Marvell SDIO Bluetooth Module -endef - -$(eval $(call KernelPackage,btmrvl)) - - -define KernelPackage/btsdio - SUBMENU:=$(OTHER_MENU) - TITLE:=Bluetooth HCI SDIO driver - DEPENDS:=+kmod-bluetooth +kmod-mmc - KCONFIG:= \ - CONFIG_BT_HCIBTSDIO - FILES:= \ - $(LINUX_DIR)/drivers/bluetooth/btsdio.ko - AUTOLOAD:=$(call AutoProbe,btsdio) -endef - -define KernelPackage/btsdio/description - Kernel support for Bluetooth device with SDIO interface -endef - -$(eval $(call KernelPackage,btsdio)) - - define KernelPackage/dma-buf SUBMENU:=$(OTHER_MENU) TITLE:=DMA shared buffer support diff --git a/package/libs/zlib/Makefile b/package/libs/zlib/Makefile index 2559fbba0d..2156554964 100644 --- a/package/libs/zlib/Makefile +++ b/package/libs/zlib/Makefile @@ -11,13 +11,14 @@ PKG_NAME:=zlib PKG_VERSION:=1.3.1 PKG_RELEASE:=1 -PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz -PKG_SOURCE_URL:=https://github.com/madler/zlib/releases/download/v$(PKG_VERSION) -PKG_HASH:=38ef96b8dfe510d42707d9c781877914792541133e1870841463bfa73f883e32 +PKG_SOURCE_PROTO:=git +PKG_SOURCE_URL:=https://github.com/madler/zlib +PKG_SOURCE_VERSION:=51b7f2abdade71cd9bb0e7a373ef2610ec6f9daf +PKG_MIRROR_HASH:=6558577038f4839057fad93afb295bf32e84dc9bd2c33512d40a5eab6d4889ef PKG_LICENSE:=Zlib -PKG_LICENSE_FILES:=README -PKG_CPE_ID:=cpe:/a:gnu:zlib +PKG_LICENSE_FILES:=LICENSE +PKG_CPE_ID:=cpe:/a:zlib:zlib PKG_CONFIG_DEPENDS:= CONFIG_ZLIB_OPTIMIZE_SPEED diff --git a/package/network/config/ltq-vdsl-vr11-app/Makefile b/package/network/config/ltq-vdsl-vr11-app/Makefile index f1782db285..2aacbbd785 100644 --- a/package/network/config/ltq-vdsl-vr11-app/Makefile +++ b/package/network/config/ltq-vdsl-vr11-app/Makefile @@ -9,7 +9,7 @@ include $(INCLUDE_DIR)/kernel.mk PKG_NAME:=ltq-vdsl-vr11-app PKG_VERSION:=4.23.1 -PKG_RELEASE:=5 +PKG_RELEASE:=6 PKG_BASE_NAME:=dsl_cpe_control UGW_VERSION=8.5.2.10 diff --git a/package/network/config/ltq-vdsl-vr11-app/patches/201-orderly-shutdown.patch b/package/network/config/ltq-vdsl-vr11-app/patches/201-orderly-shutdown.patch index eabeaaedcb..201b963fa0 100644 --- a/package/network/config/ltq-vdsl-vr11-app/patches/201-orderly-shutdown.patch +++ b/package/network/config/ltq-vdsl-vr11-app/patches/201-orderly-shutdown.patch @@ -45,7 +45,7 @@ is stopped on exit. { + memset(&sPowerManagementStateForcedTrigger, 0x0, + sizeof(DSL_G997_PowerManagementStateForcedTrigger_t)); -+ sPowerManagementStateForcedTrigger.data.nPowerManagementState = DSL_G997_PMSF_LX_TO_L3; ++ sPowerManagementStateForcedTrigger.data.nPowerManagementState = DSL_G997_PMSF_LX_TO_L3_NO_RETRY; + + nRet = (DSL_Error_t)DSL_CPE_Ioctl( + DSL_CPE_GetGlobalContext()->fd[nDevice], diff --git a/package/network/utils/ethtool/Makefile b/package/network/utils/ethtool/Makefile index 893fcc1eda..5da65273ca 100644 --- a/package/network/utils/ethtool/Makefile +++ b/package/network/utils/ethtool/Makefile @@ -57,6 +57,11 @@ else CONFIGURE_ARGS += --disable-netlink --disable-pretty-dump endif +# enable support for input_xfrm with kernels newer than 6.6 +ifeq ($(CONFIG_LINUX_6_6),) +CONFIGURE_ARGS += --enable-rss-input-xfrm +endif + define Package/ethtool/install $(INSTALL_DIR) $(1)/usr/sbin $(INSTALL_BIN) $(PKG_BUILD_DIR)/ethtool $(1)/usr/sbin diff --git a/package/network/utils/ethtool/patches/0001-ethtool-make-building-for-RSS-input-xfrm-optional.patch b/package/network/utils/ethtool/patches/0001-ethtool-make-building-for-RSS-input-xfrm-optional.patch new file mode 100644 index 0000000000..4c8403dcbc --- /dev/null +++ b/package/network/utils/ethtool/patches/0001-ethtool-make-building-for-RSS-input-xfrm-optional.patch @@ -0,0 +1,67 @@ +From c88eb6f4e9b2d8f71f3391db2bf0ec82ecccae81 Mon Sep 17 00:00:00 2001 +From: Daniel Golle +Date: Wed, 12 Feb 2025 04:12:42 +0000 +Subject: [PATCH] ethtool: make building for RSS input xfrm optional + +Unfortunately there is no way to detect at runtime if the kernel the +support for RSS input transformation, and the default value +RXH_XFRM_NO_CHANGE (0xff) used by newer ethtool results in breakage +with older kernels. +As a stop-gap solution simply don't compile with support for input +xfrm by default. + +Signed-off-by: Daniel Golle +--- + configure.ac | 10 ++++++++++ + ethtool.c | 10 ++++++++++ + 2 files changed, 20 insertions(+) + +--- a/configure.ac ++++ b/configure.ac +@@ -45,6 +45,16 @@ if test x$enable_pretty_dump = xyes; the + fi + AM_CONDITIONAL([ETHTOOL_ENABLE_PRETTY_DUMP], [test x$enable_pretty_dump = xyes]) + ++AC_ARG_ENABLE(rss-input-xfrm, ++ [ --enable-rss-input-xfrm build with support for RSS input transformation (disabled by default)], ++ , ++ enable_rss_input_xfrm=no) ++if test x$enable_rss_input_xfrm = xyes; then ++ AC_DEFINE(ETHTOOL_ENABLE_RSS_INPUT_XFRM, 1, ++ [Define this to enable building with support for RSS input transformation.]) ++fi ++AM_CONDITIONAL([ETHTOOL_ENABLE_RSS_INPUT_XFRM], [test x$enable_rss_input_xfrm = xyes]) ++ + AC_ARG_WITH([bash-completion-dir], + AS_HELP_STRING([--with-bash-completion-dir[=PATH]], + [Install the bash-completion script in this directory. @<:@default=yes@:>@]), +--- a/ethtool.c ++++ b/ethtool.c +@@ -4109,9 +4109,11 @@ static int do_grxfh(struct cmd_context * + (const char *)hfuncs->data + i * ETH_GSTRING_LEN, + (rss->hfunc & (1 << i)) ? "on" : "off"); + ++#ifdef ETHTOOL_ENABLE_RSS_INPUT_XFRM + printf("RSS input transformation:\n"); + printf(" symmetric-xor: %s\n", + (rss->input_xfrm & RXH_XFRM_SYM_XOR) ? "on" : "off"); ++#endif + + out: + free(hfuncs); +@@ -4431,7 +4433,15 @@ static int do_srxfh(struct cmd_context * + rss->cmd = ETHTOOL_SRSSH; + rss->rss_context = rss_context; + rss->hfunc = req_hfunc; ++#ifdef ETHTOOL_ENABLE_RSS_INPUT_XFRM + rss->input_xfrm = req_input_xfrm; ++#else ++ if (req_input_xfrm != 0xff) { ++ perror("Compiled for kernel without support for input transformation"); ++ err = 1; ++ goto free; ++ } ++#endif + if (delete) { + rss->indir_size = rss->key_size = 0; + } else { diff --git a/package/network/utils/iproute2/Makefile b/package/network/utils/iproute2/Makefile index ca6793d49b..8cf77b36ab 100644 --- a/package/network/utils/iproute2/Makefile +++ b/package/network/utils/iproute2/Makefile @@ -8,12 +8,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=iproute2 -PKG_VERSION:=6.12.0 -PKG_RELEASE:=2 +PKG_VERSION:=6.13.0 +PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz PKG_SOURCE_URL:=@KERNEL/linux/utils/net/iproute2 -PKG_HASH:=bbd141ef7b5d0127cc2152843ba61f274dc32814fa3e0f13e7d07a080bef53d9 +PKG_HASH:=a43aa43338d882b44d01e549f3f105a92ae9feea32a82fae45a88e7a49302819 PKG_BUILD_PARALLEL:=1 PKG_BUILD_DEPENDS:=iptables PKG_LICENSE:=GPL-2.0 diff --git a/package/network/utils/iproute2/patches/013-endian.h.patch b/package/network/utils/iproute2/patches/013-endian.h.patch deleted file mode 100644 index a81c3b5eec..0000000000 --- a/package/network/utils/iproute2/patches/013-endian.h.patch +++ /dev/null @@ -1,22 +0,0 @@ -From c8b3ecc22ed0edaf0259eaf7d1a5c04f300ad6e4 Mon Sep 17 00:00:00 2001 -From: Stephen Hemminger -Date: Thu, 12 Dec 2024 11:24:18 -0800 -Subject: [PATCH] libnetlink: add missing endian.h - -Need endian.h to get htobe64 with musl. - -Signed-off-by: Stephen Hemminger ---- - include/libnetlink.h | 1 + - 1 file changed, 1 insertion(+) - ---- a/include/libnetlink.h -+++ b/include/libnetlink.h -@@ -4,6 +4,7 @@ - - #include - #include -+#include - #include - #include - #include diff --git a/package/network/utils/iproute2/patches/014-basename.patch b/package/network/utils/iproute2/patches/014-basename.patch deleted file mode 100644 index f98238ec65..0000000000 --- a/package/network/utils/iproute2/patches/014-basename.patch +++ /dev/null @@ -1,29 +0,0 @@ -From fa3949b792e275f75d7d6200dc2036ef7fff8816 Mon Sep 17 00:00:00 2001 -From: Stephen Hemminger -Date: Thu, 12 Dec 2024 11:21:56 -0800 -Subject: [PATCH] rdma: add missing header for basename - -The function basename prototype is in libgen.h -Fixes build on musl - -Signed-off-by: Stephen Hemminger ---- - rdma/rdma.h | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - ---- a/rdma/rdma.h -+++ b/rdma/rdma.h -@@ -10,11 +10,12 @@ - #include - #include - #include -+#include -+#include - #include - #include - #include - #include --#include - #include - - #include "list.h" diff --git a/package/network/utils/iproute2/patches/015-limits.h.patch b/package/network/utils/iproute2/patches/015-limits.h.patch deleted file mode 100644 index e212b88ebd..0000000000 --- a/package/network/utils/iproute2/patches/015-limits.h.patch +++ /dev/null @@ -1,84 +0,0 @@ -From 7e23da91fca6e5dedeb32a7d308cf20982e897c3 Mon Sep 17 00:00:00 2001 -From: Stephen Hemminger -Date: Tue, 10 Dec 2024 13:38:08 -0800 -Subject: [PATCH] ip: rearrange and prune header files - -The recent report of issues with missing limits.h impacting musl -suggested looking at what files are and are not included in ip code. - -The standard practice is to put standard headers first, then system, -then local headers. Used iwyu to get suggestions about missing -and extraneous headers. - -Signed-off-by: Stephen Hemminger ---- - ip/iplink.c | 13 +++++-------- - ip/ipnetns.c | 19 +++++++++---------- - 2 files changed, 14 insertions(+), 18 deletions(-) - ---- a/ip/iplink.c -+++ b/ip/iplink.c -@@ -11,17 +11,14 @@ - #include - #include - #include -+#include -+#include -+#include -+ - #include -+#include - #include --#include - #include --#include --#include --#include --#include --#include --#include --#include - - #include "rt_names.h" - #include "utils.h" ---- a/ip/ipnetns.c -+++ b/ip/ipnetns.c -@@ -1,21 +1,21 @@ - /* SPDX-License-Identifier: GPL-2.0 */ - #define _ATFILE_SOURCE --#include --#include --#include --#include --#include --#include --#include -+ - #include -+#include - #include --#include - #include - #include - #include - #include - #include --#include -+#include -+ -+#include -+#include -+#include -+#include -+#include - - #include - -@@ -23,7 +23,6 @@ - #include "list.h" - #include "ip_common.h" - #include "namespace.h" --#include "json_print.h" - - static int usage(void) - { diff --git a/package/network/utils/iproute2/patches/016-limits.h.patch b/package/network/utils/iproute2/patches/016-limits.h.patch deleted file mode 100644 index c20404f6fd..0000000000 --- a/package/network/utils/iproute2/patches/016-limits.h.patch +++ /dev/null @@ -1,26 +0,0 @@ -From f982f30e166a02e09097de05129449031ba51f76 Mon Sep 17 00:00:00 2001 -From: Stephen Hemminger -Date: Thu, 12 Dec 2024 11:29:44 -0800 -Subject: [PATCH] cg_map: use limits.h - -Prefer limits.h from system headers over linux/limits.h -Fixes build with musl. - -Signed-off-by: Stephen Hemminger ---- - lib/cg_map.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - ---- a/lib/cg_map.c -+++ b/lib/cg_map.c -@@ -9,8 +9,9 @@ - #include - #include - #include -+#include -+ - #include --#include - #include - - #include "cg_map.h" diff --git a/package/network/utils/iproute2/patches/017-linux-limits.patch b/package/network/utils/iproute2/patches/017-linux-limits.patch deleted file mode 100644 index 0c5d138402..0000000000 --- a/package/network/utils/iproute2/patches/017-linux-limits.patch +++ /dev/null @@ -1,178 +0,0 @@ -From ac547ad027e3d4e283202ecb487cf54707234491 Mon Sep 17 00:00:00 2001 -From: Stephen Hemminger -Date: Thu, 12 Dec 2024 14:15:59 -0800 -Subject: [PATCH] flower: replace XATTR_SIZE_MAX - -The flower tc parser was using XATTR_SIZE_MAX from linux/limits.h, -but this constant is intended to before extended filesystem attributes -not for TC. Replace it with a local define. - -This fixes issue on systems with musl and XATTR_SIZE_MAX is not -defined in limits.h there. - -Signed-off-by: Stephen Hemminger ---- - tc/f_flower.c | 37 ++++++++++++++++++++----------------- - 1 file changed, 20 insertions(+), 17 deletions(-) - ---- a/tc/f_flower.c -+++ b/tc/f_flower.c -@@ -10,7 +10,7 @@ - #include - #include - #include --#include -+ - #include - #include - #include -@@ -22,6 +22,9 @@ - #include "tc_util.h" - #include "rt_names.h" - -+/* maximum length of options string */ -+#define FLOWER_OPTS_MAX 4096 -+ - #ifndef IPPROTO_L2TP - #define IPPROTO_L2TP 115 - #endif -@@ -1252,7 +1255,7 @@ static int flower_check_enc_opt_key(char - - static int flower_parse_enc_opts_geneve(char *str, struct nlmsghdr *n) - { -- char key[XATTR_SIZE_MAX], mask[XATTR_SIZE_MAX]; -+ char key[FLOWER_OPTS_MAX], mask[FLOWER_OPTS_MAX]; - int data_len, key_len, mask_len, err; - char *token, *slash; - struct rtattr *nest; -@@ -1265,7 +1268,7 @@ static int flower_parse_enc_opts_geneve( - if (slash) - *slash = '\0'; - -- if ((key_len + strlen(token) > XATTR_SIZE_MAX) || -+ if ((key_len + strlen(token) > FLOWER_OPTS_MAX) || - flower_check_enc_opt_key(token)) - return -1; - -@@ -1275,7 +1278,7 @@ static int flower_parse_enc_opts_geneve( - - if (!slash) { - /* Pad out mask when not provided */ -- if (mask_len + strlen(token) > XATTR_SIZE_MAX) -+ if (mask_len + strlen(token) > FLOWER_OPTS_MAX) - return -1; - - data_len = strlen(rindex(token, ':')); -@@ -1288,7 +1291,7 @@ static int flower_parse_enc_opts_geneve( - continue; - } - -- if (mask_len + strlen(slash + 1) > XATTR_SIZE_MAX) -+ if (mask_len + strlen(slash + 1) > FLOWER_OPTS_MAX) - return -1; - - strcpy(&mask[mask_len], slash + 1); -@@ -1318,7 +1321,7 @@ static int flower_parse_enc_opts_geneve( - - static int flower_parse_enc_opts_vxlan(char *str, struct nlmsghdr *n) - { -- char key[XATTR_SIZE_MAX], mask[XATTR_SIZE_MAX]; -+ char key[FLOWER_OPTS_MAX], mask[FLOWER_OPTS_MAX]; - struct rtattr *nest; - char *slash; - int err; -@@ -1326,14 +1329,14 @@ static int flower_parse_enc_opts_vxlan(c - slash = strchr(str, '/'); - if (slash) { - *slash++ = '\0'; -- if (strlen(slash) > XATTR_SIZE_MAX) -+ if (strlen(slash) > FLOWER_OPTS_MAX) - return -1; - strcpy(mask, slash); - } else { - strcpy(mask, "0xffffffff"); - } - -- if (strlen(str) > XATTR_SIZE_MAX) -+ if (strlen(str) > FLOWER_OPTS_MAX) - return -1; - strcpy(key, str); - -@@ -1355,7 +1358,7 @@ static int flower_parse_enc_opts_vxlan(c - - static int flower_parse_enc_opts_erspan(char *str, struct nlmsghdr *n) - { -- char key[XATTR_SIZE_MAX], mask[XATTR_SIZE_MAX]; -+ char key[FLOWER_OPTS_MAX], mask[FLOWER_OPTS_MAX]; - struct rtattr *nest; - char *slash; - int err; -@@ -1364,7 +1367,7 @@ static int flower_parse_enc_opts_erspan( - slash = strchr(str, '/'); - if (slash) { - *slash++ = '\0'; -- if (strlen(slash) > XATTR_SIZE_MAX) -+ if (strlen(slash) > FLOWER_OPTS_MAX) - return -1; - strcpy(mask, slash); - } else { -@@ -1376,7 +1379,7 @@ static int flower_parse_enc_opts_erspan( - strcpy(mask + index, ":0xffffffff:0xff:0xff"); - } - -- if (strlen(str) > XATTR_SIZE_MAX) -+ if (strlen(str) > FLOWER_OPTS_MAX) - return -1; - strcpy(key, str); - -@@ -1398,7 +1401,7 @@ static int flower_parse_enc_opts_erspan( - - static int flower_parse_enc_opts_gtp(char *str, struct nlmsghdr *n) - { -- char key[XATTR_SIZE_MAX], mask[XATTR_SIZE_MAX]; -+ char key[FLOWER_OPTS_MAX], mask[FLOWER_OPTS_MAX]; - struct rtattr *nest; - char *slash; - int err; -@@ -1406,13 +1409,13 @@ static int flower_parse_enc_opts_gtp(cha - slash = strchr(str, '/'); - if (slash) { - *slash++ = '\0'; -- if (strlen(slash) > XATTR_SIZE_MAX) -+ if (strlen(slash) > FLOWER_OPTS_MAX) - return -1; - strcpy(mask, slash); - } else - strcpy(mask, "ff:ff"); - -- if (strlen(str) > XATTR_SIZE_MAX) -+ if (strlen(str) > FLOWER_OPTS_MAX) - return -1; - strcpy(key, str); - -@@ -1433,7 +1436,7 @@ static int flower_parse_enc_opts_gtp(cha - - static int flower_parse_enc_opts_pfcp(char *str, struct nlmsghdr *n) - { -- char key[XATTR_SIZE_MAX], mask[XATTR_SIZE_MAX]; -+ char key[FLOWER_OPTS_MAX], mask[FLOWER_OPTS_MAX]; - struct rtattr *nest; - char *slash; - int err; -@@ -1442,14 +1445,14 @@ static int flower_parse_enc_opts_pfcp(ch - slash = strchr(str, '/'); - if (slash) { - *slash++ = '\0'; -- if (strlen(slash) > XATTR_SIZE_MAX) -+ if (strlen(slash) > FLOWER_OPTS_MAX) - return -1; - strcpy(mask, slash); - } else { - strcpy(mask, "ff:ffffffffffffffff"); - } - -- if (strlen(str) > XATTR_SIZE_MAX) -+ if (strlen(str) > FLOWER_OPTS_MAX) - return -1; - strcpy(key, str); - diff --git a/package/network/utils/iproute2/patches/018-linux-limits.patch b/package/network/utils/iproute2/patches/018-linux-limits.patch deleted file mode 100644 index 8c2669acd9..0000000000 --- a/package/network/utils/iproute2/patches/018-linux-limits.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 458dce5d0431f0589aca1bc841904b5d1db3bbce Mon Sep 17 00:00:00 2001 -From: Stephen Hemminger -Date: Thu, 12 Dec 2024 14:18:35 -0800 -Subject: [PATCH] uapi: remove no longer used linux/limits.h - -Code is now using limits.h instead. - -Signed-off-by: Stephen Hemminger ---- - include/uapi/linux/limits.h | 21 --------------------- - 1 file changed, 21 deletions(-) - delete mode 100644 include/uapi/linux/limits.h - ---- a/include/uapi/linux/limits.h -+++ /dev/null -@@ -1,21 +0,0 @@ --/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ --#ifndef _LINUX_LIMITS_H --#define _LINUX_LIMITS_H -- --#define NR_OPEN 1024 -- --#define NGROUPS_MAX 65536 /* supplemental group IDs are available */ --#define ARG_MAX 131072 /* # bytes of args + environ for exec() */ --#define LINK_MAX 127 /* # links a file may have */ --#define MAX_CANON 255 /* size of the canonical input queue */ --#define MAX_INPUT 255 /* size of the type-ahead buffer */ --#define NAME_MAX 255 /* # chars in a file name */ --#define PATH_MAX 4096 /* # chars in a path name including nul */ --#define PIPE_BUF 4096 /* # bytes in atomic write to a pipe */ --#define XATTR_NAME_MAX 255 /* # chars in an extended attribute name */ --#define XATTR_SIZE_MAX 65536 /* size of an extended attribute value (64k) */ --#define XATTR_LIST_MAX 65536 /* size of extended attribute namelist (64k) */ -- --#define RTSIG_MAX 32 -- --#endif diff --git a/package/network/utils/iproute2/patches/170-ip_tiny.patch b/package/network/utils/iproute2/patches/170-ip_tiny.patch index 149bcd2afc..fb95550630 100644 --- a/package/network/utils/iproute2/patches/170-ip_tiny.patch +++ b/package/network/utils/iproute2/patches/170-ip_tiny.patch @@ -25,7 +25,7 @@ sed -n '/'$$s'[^ ]* =/{s:.* \([^ ]*'$$s'[^ ]*\) .*:extern char \1[] __attribute__((weak)); if (!strcmp(sym, "\1")) return \1;:;p}' $$files ; \ --- a/ip/ip.c +++ b/ip/ip.c -@@ -61,11 +61,17 @@ static void usage(void) +@@ -59,11 +59,17 @@ static void usage(void) fprintf(stderr, "Usage: ip [ OPTIONS ] OBJECT { COMMAND | help }\n" " ip [ -force ] -batch filename\n" @@ -43,7 +43,7 @@ " OPTIONS := { -V[ersion] | -s[tatistics] | -d[etails] | -r[esolve] |\n" " -h[uman-readable] | -iec | -j[son] | -p[retty] |\n" " -f[amily] { inet | inet6 | mpls | bridge | link } |\n" -@@ -88,37 +94,49 @@ static const struct cmd { +@@ -86,37 +92,49 @@ static const struct cmd { int (*func)(int argc, char **argv); } cmds[] = { { "address", do_ipaddr }, diff --git a/package/system/selinux-policy/Makefile b/package/system/selinux-policy/Makefile index 2834e94cc5..8b5e556da3 100644 --- a/package/system/selinux-policy/Makefile +++ b/package/system/selinux-policy/Makefile @@ -8,8 +8,8 @@ include $(TOPDIR)/rules.mk PKG_NAME:=selinux-policy PKG_SOURCE_PROTO:=git PKG_SOURCE_URL:=https://git.defensec.nl/selinux-policy.git -PKG_VERSION:=1.2.5 -PKG_MIRROR_HASH:=0b485aefed7ecc1ba3c5f5843cb3b10e9d7c55c09b361cd56933081c0dbdc223 +PKG_VERSION:=2.1 +PKG_MIRROR_HASH:=8ab9f734d2a81c8d396afb4f6783c67d31b76c0334bf8e564eb050f98356655b PKG_SOURCE_VERSION:=v$(PKG_VERSION) PKG_BUILD_DEPENDS:=secilc/host policycoreutils/host @@ -44,10 +44,14 @@ endef define Package/selinux-policy/install $(INSTALL_DIR) $(1)/etc/selinux/$(PKG_NAME)/contexts/files/ $(INSTALL_DIR) $(1)/etc/selinux/$(PKG_NAME)/policy/ - $(INSTALL_DATA) $(PKG_BUILD_DIR)/customizable_types $(1)/etc/selinux/$(PKG_NAME)/contexts/ - $(INSTALL_DATA) $(PKG_BUILD_DIR)/file_contexts.subs_dist $(1)/etc/selinux/$(PKG_NAME)/contexts/files/ - $(INSTALL_DATA) $(PKG_BUILD_DIR)/file_contexts $(1)/etc/selinux/$(PKG_NAME)/contexts/files/ $(INSTALL_CONF) $(PKG_BUILD_DIR)/policy.* $(1)/etc/selinux/$(PKG_NAME)/policy/ + $(INSTALL_DATA) $(PKG_BUILD_DIR)/customizable_types $(1)/etc/selinux/$(PKG_NAME)/contexts/ + $(INSTALL_DATA) $(PKG_BUILD_DIR)/default_contexts $(1)/etc/selinux/$(PKG_NAME)/contexts/ + $(INSTALL_DATA) $(PKG_BUILD_DIR)/default_type $(1)/etc/selinux/$(PKG_NAME)/contexts/ + $(INSTALL_DATA) $(PKG_BUILD_DIR)/failsafe_context $(1)/etc/selinux/$(PKG_NAME)/contexts/ + $(INSTALL_DATA) $(PKG_BUILD_DIR)/file_contexts $(1)/etc/selinux/$(PKG_NAME)/contexts/files/ + $(INSTALL_DATA) $(PKG_BUILD_DIR)/file_contexts.subs_dist $(1)/etc/selinux/$(PKG_NAME)/contexts/files/ + $(INSTALL_DATA) $(PKG_BUILD_DIR)/seusers $(1)/etc/selinux/$(PKG_NAME)/ $(INSTALL_DATA) ./files/selinux-config $(1)/etc/selinux/config endef diff --git a/package/utils/ucode-mod-uline/src/uline.c b/package/utils/ucode-mod-uline/src/uline.c index 4bee2597c3..26cea6fa24 100644 --- a/package/utils/ucode-mod-uline/src/uline.c +++ b/package/utils/ucode-mod-uline/src/uline.c @@ -880,7 +880,14 @@ void uline_set_hint(struct uline_state *s, const char *str, size_t len) pos_add_string(s, &s->cursor_pos, str, len); } - set_cursor(s, prev_pos); + if (s->cursor_pos.y >= s->rows) { + if (s->cursor_pos.x > 0) + vt100_next_line(s->output); + s->cursor_pos = (struct pos){}; + s->full_update = true; + } else { + set_cursor(s, prev_pos); + } fflush(s->output); } diff --git a/target/linux/airoha/patches-6.6/105-uart-add-en7523-support.patch b/target/linux/airoha/patches-6.6/105-uart-add-en7523-support.patch index 80b6550be3..80723bd5af 100644 --- a/target/linux/airoha/patches-6.6/105-uart-add-en7523-support.patch +++ b/target/linux/airoha/patches-6.6/105-uart-add-en7523-support.patch @@ -122,7 +122,7 @@ }; /* Uart divisor latch read */ -@@ -2881,6 +2889,12 @@ serial8250_do_set_termios(struct uart_po +@@ -2889,6 +2897,12 @@ serial8250_do_set_termios(struct uart_po serial8250_set_divisor(port, baud, quot, frac); diff --git a/target/linux/bcm27xx/patches-6.6/950-0065-cgroup-Disable-cgroup-memory-by-default.patch b/target/linux/bcm27xx/patches-6.6/950-0065-cgroup-Disable-cgroup-memory-by-default.patch index 5f2d80b697..5600e85734 100644 --- a/target/linux/bcm27xx/patches-6.6/950-0065-cgroup-Disable-cgroup-memory-by-default.patch +++ b/target/linux/bcm27xx/patches-6.6/950-0065-cgroup-Disable-cgroup-memory-by-default.patch @@ -17,7 +17,7 @@ Signed-off-by: Phil Elwell --- a/kernel/cgroup/cgroup.c +++ b/kernel/cgroup/cgroup.c -@@ -6063,6 +6063,9 @@ int __init cgroup_init_early(void) +@@ -6059,6 +6059,9 @@ int __init cgroup_init_early(void) return 0; } @@ -27,7 +27,7 @@ Signed-off-by: Phil Elwell /** * cgroup_init - cgroup initialization * -@@ -6096,6 +6099,12 @@ int __init cgroup_init(void) +@@ -6092,6 +6095,12 @@ int __init cgroup_init(void) cgroup_unlock(); @@ -40,7 +40,7 @@ Signed-off-by: Phil Elwell for_each_subsys(ss, ssid) { if (ss->early_init) { struct cgroup_subsys_state *css = -@@ -6736,6 +6745,10 @@ static int __init cgroup_disable(char *s +@@ -6740,6 +6749,10 @@ static int __init cgroup_disable(char *s strcmp(token, ss->legacy_name)) continue; @@ -51,7 +51,7 @@ Signed-off-by: Phil Elwell static_branch_disable(cgroup_subsys_enabled_key[i]); pr_info("Disabling %s control group subsystem\n", ss->name); -@@ -6754,6 +6767,31 @@ static int __init cgroup_disable(char *s +@@ -6758,6 +6771,31 @@ static int __init cgroup_disable(char *s } __setup("cgroup_disable=", cgroup_disable); diff --git a/target/linux/bcm27xx/patches-6.6/950-0087-Add-dwc_otg-driver.patch b/target/linux/bcm27xx/patches-6.6/950-0087-Add-dwc_otg-driver.patch index 3da9f4230b..82e969138e 100644 --- a/target/linux/bcm27xx/patches-6.6/950-0087-Add-dwc_otg-driver.patch +++ b/target/linux/bcm27xx/patches-6.6/950-0087-Add-dwc_otg-driver.patch @@ -1189,7 +1189,7 @@ Signed-off-by: Alexander Winkowski } --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c -@@ -5712,7 +5712,7 @@ static void port_event(struct usb_hub *h +@@ -5722,7 +5722,7 @@ static void port_event(struct usb_hub *h port_dev->over_current_count++; port_over_current_notify(port_dev); diff --git a/target/linux/bcm27xx/patches-6.6/950-1349-cgroup-Use-kernel-command-line-to-disable-memory-cgr.patch b/target/linux/bcm27xx/patches-6.6/950-1349-cgroup-Use-kernel-command-line-to-disable-memory-cgr.patch index 61dec89382..b1ceaad71d 100644 --- a/target/linux/bcm27xx/patches-6.6/950-1349-cgroup-Use-kernel-command-line-to-disable-memory-cgr.patch +++ b/target/linux/bcm27xx/patches-6.6/950-1349-cgroup-Use-kernel-command-line-to-disable-memory-cgr.patch @@ -148,7 +148,7 @@ Signed-off-by: Maíra Canal --- a/kernel/cgroup/cgroup.c +++ b/kernel/cgroup/cgroup.c -@@ -6063,9 +6063,6 @@ int __init cgroup_init_early(void) +@@ -6059,9 +6059,6 @@ int __init cgroup_init_early(void) return 0; } @@ -158,7 +158,7 @@ Signed-off-by: Maíra Canal /** * cgroup_init - cgroup initialization * -@@ -6099,12 +6096,6 @@ int __init cgroup_init(void) +@@ -6095,12 +6092,6 @@ int __init cgroup_init(void) cgroup_unlock(); @@ -171,7 +171,7 @@ Signed-off-by: Maíra Canal for_each_subsys(ss, ssid) { if (ss->early_init) { struct cgroup_subsys_state *css = -@@ -6745,10 +6736,6 @@ static int __init cgroup_disable(char *s +@@ -6749,10 +6740,6 @@ static int __init cgroup_disable(char *s strcmp(token, ss->legacy_name)) continue; @@ -182,7 +182,7 @@ Signed-off-by: Maíra Canal static_branch_disable(cgroup_subsys_enabled_key[i]); pr_info("Disabling %s control group subsystem\n", ss->name); -@@ -6782,7 +6769,7 @@ static int __init cgroup_enable(char *st +@@ -6786,7 +6773,7 @@ static int __init cgroup_enable(char *st strcmp(token, ss->legacy_name)) continue; diff --git a/target/linux/bcm27xx/patches-6.6/950-1445-fixup-cgroup-Use-kernel-command-line-to-disable-memo.patch b/target/linux/bcm27xx/patches-6.6/950-1445-fixup-cgroup-Use-kernel-command-line-to-disable-memo.patch index 8c4a1c3a3e..b3a73945f6 100644 --- a/target/linux/bcm27xx/patches-6.6/950-1445-fixup-cgroup-Use-kernel-command-line-to-disable-memo.patch +++ b/target/linux/bcm27xx/patches-6.6/950-1445-fixup-cgroup-Use-kernel-command-line-to-disable-memo.patch @@ -14,7 +14,7 @@ Signed-off-by: Phil Elwell --- a/kernel/cgroup/cgroup.c +++ b/kernel/cgroup/cgroup.c -@@ -6769,11 +6769,19 @@ static int __init cgroup_enable(char *st +@@ -6773,11 +6773,19 @@ static int __init cgroup_enable(char *st strcmp(token, ss->legacy_name)) continue; diff --git a/target/linux/bcm53xx/image/Makefile b/target/linux/bcm53xx/image/Makefile index 27115451f8..396cffeb0a 100644 --- a/target/linux/bcm53xx/image/Makefile +++ b/target/linux/bcm53xx/image/Makefile @@ -398,7 +398,7 @@ TARGET_DEVICES += meraki_mr26 define Device/meraki_mr32 DEVICE_VENDOR := Meraki DEVICE_MODEL := MR32 - DEVICE_PACKAGES := $(B43) kmod-leds-pwm kmod-hwmon-ina2xx kmod-bluetooth + DEVICE_PACKAGES := $(B43) kmod-leds-pwm kmod-hwmon-ina2xx kmod-hci-uart DEVICE_DTS := bcm53016-meraki-mr32 # Meraki FW r23 tries to resize the part.safe partition before it will # flash the image. This is a bit of a problem, since resizing will fail diff --git a/target/linux/generic/backport-6.6/602-v6.10-net-Use-backlog-NAPI-to-clean-up-the-defer_list.patch b/target/linux/generic/backport-6.6/602-v6.10-net-Use-backlog-NAPI-to-clean-up-the-defer_list.patch index 82b83552d3..9af345002a 100644 --- a/target/linux/generic/backport-6.6/602-v6.10-net-Use-backlog-NAPI-to-clean-up-the-defer_list.patch +++ b/target/linux/generic/backport-6.6/602-v6.10-net-Use-backlog-NAPI-to-clean-up-the-defer_list.patch @@ -36,7 +36,7 @@ Signed-off-by: Paolo Abeni --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h -@@ -3300,6 +3300,7 @@ static inline void dev_xmit_recursion_de +@@ -3306,6 +3306,7 @@ static inline void dev_xmit_recursion_de __this_cpu_dec(softnet_data.xmit.recursion); } diff --git a/target/linux/generic/backport-6.6/700-v6.10-net-create-a-dummy-net_device-allocator.patch b/target/linux/generic/backport-6.6/700-v6.10-net-create-a-dummy-net_device-allocator.patch index c6718c8e22..8b562a0f61 100644 --- a/target/linux/generic/backport-6.6/700-v6.10-net-create-a-dummy-net_device-allocator.patch +++ b/target/linux/generic/backport-6.6/700-v6.10-net-create-a-dummy-net_device-allocator.patch @@ -37,7 +37,7 @@ Signed-off-by: David S. Miller --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h -@@ -4561,6 +4561,9 @@ static inline void netif_addr_unlock_bh( +@@ -4567,6 +4567,9 @@ static inline void netif_addr_unlock_bh( void ether_setup(struct net_device *dev); diff --git a/target/linux/generic/hack-6.6/780-usb-net-MeigLink_modem_support.patch b/target/linux/generic/hack-6.6/780-usb-net-MeigLink_modem_support.patch index 222633058a..bbd73b1e60 100644 --- a/target/linux/generic/hack-6.6/780-usb-net-MeigLink_modem_support.patch +++ b/target/linux/generic/hack-6.6/780-usb-net-MeigLink_modem_support.patch @@ -44,7 +44,7 @@ Subject: [PATCH] net/usb/qmi_wwan: add MeigLink modem support #define QUECTEL_VENDOR_ID 0x2c7c /* These Quectel products use Quectel's vendor ID */ -@@ -1162,6 +1167,11 @@ static const struct usb_device_id option +@@ -1153,6 +1158,11 @@ static const struct usb_device_id option { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x0023)}, /* ONYX 3G device */ { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x9000), /* SIMCom SIM5218 */ .driver_info = NCTRL(0) | NCTRL(1) | NCTRL(2) | NCTRL(3) | RSVD(4) }, @@ -56,7 +56,7 @@ Subject: [PATCH] net/usb/qmi_wwan: add MeigLink modem support /* Quectel products using Qualcomm vendor ID */ { USB_DEVICE(QUALCOMM_VENDOR_ID, QUECTEL_PRODUCT_UC15)}, { USB_DEVICE(QUALCOMM_VENDOR_ID, QUECTEL_PRODUCT_UC20), -@@ -1203,6 +1213,11 @@ static const struct usb_device_id option +@@ -1194,6 +1204,11 @@ static const struct usb_device_id option .driver_info = ZLP }, { USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_BG96), .driver_info = RSVD(4) }, diff --git a/target/linux/generic/pending-6.6/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch b/target/linux/generic/pending-6.6/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch index e239d20409..9b76c82a6f 100644 --- a/target/linux/generic/pending-6.6/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch +++ b/target/linux/generic/pending-6.6/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch @@ -157,7 +157,7 @@ Signed-off-by: Jonas Gorski case RTN_THROW: case RTN_UNREACHABLE: default: -@@ -4546,6 +4565,17 @@ static int ip6_pkt_prohibit_out(struct n +@@ -4551,6 +4570,17 @@ static int ip6_pkt_prohibit_out(struct n return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED, IPSTATS_MIB_OUTNOROUTES); } @@ -175,7 +175,7 @@ Signed-off-by: Jonas Gorski /* * Allocate a dst for local (unicast / anycast) address. */ -@@ -5037,7 +5067,8 @@ static int rtm_to_fib6_config(struct sk_ +@@ -5042,7 +5072,8 @@ static int rtm_to_fib6_config(struct sk_ if (rtm->rtm_type == RTN_UNREACHABLE || rtm->rtm_type == RTN_BLACKHOLE || rtm->rtm_type == RTN_PROHIBIT || @@ -185,7 +185,7 @@ Signed-off-by: Jonas Gorski cfg->fc_flags |= RTF_REJECT; if (rtm->rtm_type == RTN_LOCAL) -@@ -6299,6 +6330,8 @@ static int ip6_route_dev_notify(struct n +@@ -6304,6 +6335,8 @@ static int ip6_route_dev_notify(struct n #ifdef CONFIG_IPV6_MULTIPLE_TABLES net->ipv6.ip6_prohibit_entry->dst.dev = dev; net->ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(dev); @@ -194,7 +194,7 @@ Signed-off-by: Jonas Gorski net->ipv6.ip6_blk_hole_entry->dst.dev = dev; net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev); #endif -@@ -6310,6 +6343,7 @@ static int ip6_route_dev_notify(struct n +@@ -6315,6 +6348,7 @@ static int ip6_route_dev_notify(struct n in6_dev_put_clear(&net->ipv6.ip6_null_entry->rt6i_idev); #ifdef CONFIG_IPV6_MULTIPLE_TABLES in6_dev_put_clear(&net->ipv6.ip6_prohibit_entry->rt6i_idev); @@ -202,7 +202,7 @@ Signed-off-by: Jonas Gorski in6_dev_put_clear(&net->ipv6.ip6_blk_hole_entry->rt6i_idev); #endif } -@@ -6510,6 +6544,8 @@ static int __net_init ip6_route_net_init +@@ -6515,6 +6549,8 @@ static int __net_init ip6_route_net_init #ifdef CONFIG_IPV6_MULTIPLE_TABLES net->ipv6.fib6_has_custom_rules = false; @@ -211,7 +211,7 @@ Signed-off-by: Jonas Gorski net->ipv6.ip6_prohibit_entry = kmemdup(&ip6_prohibit_entry_template, sizeof(*net->ipv6.ip6_prohibit_entry), GFP_KERNEL); -@@ -6520,11 +6556,21 @@ static int __net_init ip6_route_net_init +@@ -6525,11 +6561,21 @@ static int __net_init ip6_route_net_init ip6_template_metrics, true); INIT_LIST_HEAD(&net->ipv6.ip6_prohibit_entry->dst.rt_uncached); @@ -234,7 +234,7 @@ Signed-off-by: Jonas Gorski net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops; dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst, ip6_template_metrics, true); -@@ -6551,6 +6597,8 @@ out: +@@ -6556,6 +6602,8 @@ out: return ret; #ifdef CONFIG_IPV6_MULTIPLE_TABLES @@ -243,7 +243,7 @@ Signed-off-by: Jonas Gorski out_ip6_prohibit_entry: kfree(net->ipv6.ip6_prohibit_entry); out_ip6_null_entry: -@@ -6570,6 +6618,7 @@ static void __net_exit ip6_route_net_exi +@@ -6575,6 +6623,7 @@ static void __net_exit ip6_route_net_exi kfree(net->ipv6.ip6_null_entry); #ifdef CONFIG_IPV6_MULTIPLE_TABLES kfree(net->ipv6.ip6_prohibit_entry); @@ -251,7 +251,7 @@ Signed-off-by: Jonas Gorski kfree(net->ipv6.ip6_blk_hole_entry); #endif dst_entries_destroy(&net->ipv6.ip6_dst_ops); -@@ -6653,6 +6702,9 @@ void __init ip6_route_init_special_entri +@@ -6658,6 +6707,9 @@ void __init ip6_route_init_special_entri init_net.ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev); init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev; init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev); diff --git a/target/linux/generic/pending-6.6/686-net-ipv6-fix-TCP-GSO-segmentation-with-NAT.patch b/target/linux/generic/pending-6.6/686-net-ipv6-fix-TCP-GSO-segmentation-with-NAT.patch new file mode 100644 index 0000000000..9591e16ec9 --- /dev/null +++ b/target/linux/generic/pending-6.6/686-net-ipv6-fix-TCP-GSO-segmentation-with-NAT.patch @@ -0,0 +1,54 @@ +From: Felix Fietkau +Date: Mon, 24 Feb 2025 12:18:23 +0100 +Subject: [PATCH] net: ipv6: fix TCP GSO segmentation with NAT + +When updating the source/destination address, the TCP/UDP checksum needs to +be updated as well. + +Fixes: bee88cd5bd83 ("net: add support for segmenting TCP fraglist GSO packets") +Signed-off-by: Felix Fietkau +--- + +--- a/net/ipv6/tcpv6_offload.c ++++ b/net/ipv6/tcpv6_offload.c +@@ -112,24 +112,36 @@ static struct sk_buff *__tcpv6_gso_segme + struct sk_buff *seg; + struct tcphdr *th2; + struct ipv6hdr *iph2; ++ bool addr_equal; + + seg = segs; + th = tcp_hdr(seg); + iph = ipv6_hdr(seg); + th2 = tcp_hdr(seg->next); + iph2 = ipv6_hdr(seg->next); ++ addr_equal = ipv6_addr_equal(&iph->saddr, &iph2->saddr) && ++ ipv6_addr_equal(&iph->daddr, &iph2->daddr); + + if (!(*(const u32 *)&th->source ^ *(const u32 *)&th2->source) && +- ipv6_addr_equal(&iph->saddr, &iph2->saddr) && +- ipv6_addr_equal(&iph->daddr, &iph2->daddr)) ++ addr_equal) + return segs; + + while ((seg = seg->next)) { + th2 = tcp_hdr(seg); + iph2 = ipv6_hdr(seg); + +- iph2->saddr = iph->saddr; +- iph2->daddr = iph->daddr; ++ if (!addr_equal) { ++ inet_proto_csum_replace16(&th2->check, seg, ++ iph2->saddr.s6_addr32, ++ iph->saddr.s6_addr32, ++ true); ++ inet_proto_csum_replace16(&th2->check, seg, ++ iph2->daddr.s6_addr32, ++ iph->daddr.s6_addr32, ++ true); ++ iph2->saddr = iph->saddr; ++ iph2->daddr = iph->daddr; ++ } + __tcpv6_gso_segment_csum(seg, &th2->source, th->source); + __tcpv6_gso_segment_csum(seg, &th2->dest, th->dest); + } diff --git a/target/linux/generic/pending-6.6/811-pci_disable_usb_common_quirks.patch b/target/linux/generic/pending-6.6/811-pci_disable_usb_common_quirks.patch index e91d1ef6b2..7ac5347031 100644 --- a/target/linux/generic/pending-6.6/811-pci_disable_usb_common_quirks.patch +++ b/target/linux/generic/pending-6.6/811-pci_disable_usb_common_quirks.patch @@ -48,7 +48,7 @@ Signed-off-by: Felix Fietkau static inline int io_type_enabled(struct pci_dev *pdev, unsigned int mask) { u16 cmd; -@@ -1283,3 +1298,4 @@ static void quirk_usb_early_handoff(stru +@@ -1292,3 +1307,4 @@ static void quirk_usb_early_handoff(stru } DECLARE_PCI_FIXUP_CLASS_FINAL(PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_SERIAL_USB, 8, quirk_usb_early_handoff); diff --git a/target/linux/ipq40xx/image/generic.mk b/target/linux/ipq40xx/image/generic.mk index 2071059444..393bb991f1 100644 --- a/target/linux/ipq40xx/image/generic.mk +++ b/target/linux/ipq40xx/image/generic.mk @@ -739,7 +739,7 @@ define Device/linksys_whw03 IMAGE_SIZE := 131072k IMAGES += factory.bin IMAGE/factory.bin := append-kernel | pad-to $$$$(KERNEL_SIZE) | append-rootfs | pad-rootfs | linksys-image type=WHW03 - DEVICE_PACKAGES := ath10k-firmware-qca9888-ct kmod-leds-pca963x kmod-spi-dev kmod-bluetooth \ + DEVICE_PACKAGES := ath10k-firmware-qca9888-ct kmod-leds-pca963x kmod-spi-dev kmod-hci-uart \ kmod-fs-ext4 e2fsprogs kmod-fs-f2fs mkf2fs losetup ipq-wifi-linksys_whw03 endef TARGET_DEVICES += linksys_whw03 @@ -758,7 +758,7 @@ define Device/linksys_whw03v2 UBINIZE_OPTS := -E 5 # EOD marks to "hide" factory sig at EOF IMAGES += factory.bin IMAGE/factory.bin := append-kernel | pad-to $$$$(KERNEL_SIZE) | append-ubi | linksys-image type=WHW03v2 - DEVICE_PACKAGES := ath10k-firmware-qca9888-ct kmod-leds-pca963x kmod-spi-dev kmod-bluetooth + DEVICE_PACKAGES := ath10k-firmware-qca9888-ct kmod-leds-pca963x kmod-spi-dev kmod-hci-uart endef TARGET_DEVICES += linksys_whw03v2 @@ -1127,7 +1127,7 @@ define Device/teltonika_rutx10 PAGESIZE := 2048 FILESYSTEMS := squashfs IMAGE/factory.ubi := append-ubi | qsdk-ipq-factory-nand | append-rutx-metadata - DEVICE_PACKAGES := kmod-bluetooth + DEVICE_PACKAGES := kmod-btusb endef # Missing DSA Setup #TARGET_DEVICES += teltonika_rutx10 diff --git a/target/linux/mediatek/patches-6.6/410-bt-mtk-serial-fix.patch b/target/linux/mediatek/patches-6.6/410-bt-mtk-serial-fix.patch index 206dad7f23..1a67286e61 100644 --- a/target/linux/mediatek/patches-6.6/410-bt-mtk-serial-fix.patch +++ b/target/linux/mediatek/patches-6.6/410-bt-mtk-serial-fix.patch @@ -19,7 +19,7 @@ }, [PORT_NPCM] = { .name = "Nuvoton 16550", -@@ -2775,6 +2775,11 @@ serial8250_do_set_termios(struct uart_po +@@ -2783,6 +2783,11 @@ serial8250_do_set_termios(struct uart_po unsigned long flags; unsigned int baud, quot, frac = 0; diff --git a/target/linux/qualcommax/image/ipq807x.mk b/target/linux/qualcommax/image/ipq807x.mk index b7d2fc4bbf..c50e2ca9c7 100644 --- a/target/linux/qualcommax/image/ipq807x.mk +++ b/target/linux/qualcommax/image/ipq807x.mk @@ -208,7 +208,7 @@ define Device/linksys_mx4200v1 $(call Device/linksys_mx4x00) DEVICE_MODEL := MX4200 DEVICE_VARIANT := v1 - DEVICE_PACKAGES += kmod-bluetooth + DEVICE_PACKAGES += kmod-hci-uart endef TARGET_DEVICES += linksys_mx4200v1 @@ -241,7 +241,7 @@ define Device/linksys_mx8500 $(call Device/linksys_mx) DEVICE_MODEL := MX8500 DEVICE_PACKAGES += ipq-wifi-linksys_mx8500 kmod-ath11k-pci \ - ath11k-firmware-qcn9074 kmod-bluetooth + ath11k-firmware-qcn9074 kmod-hci-uart endef TARGET_DEVICES += linksys_mx8500 @@ -545,6 +545,6 @@ define Device/zyxel_nbg7815 DEVICE_DTS_CONFIG := config@nbg7815 SOC := ipq8074 DEVICE_PACKAGES := kmod-fs-f2fs f2fs-tools ipq-wifi-zyxel_nbg7815 kmod-ath11k-pci \ - kmod-bluetooth kmod-hwmon-tmp103 + kmod-hci-uart kmod-hwmon-tmp103 endef TARGET_DEVICES += zyxel_nbg7815 diff --git a/target/linux/ramips/patches-6.6/810-uvc-add-iPassion-iP2970-support.patch b/target/linux/ramips/patches-6.6/810-uvc-add-iPassion-iP2970-support.patch index dc4f2ecd9a..56b638aa36 100644 --- a/target/linux/ramips/patches-6.6/810-uvc-add-iPassion-iP2970-support.patch +++ b/target/linux/ramips/patches-6.6/810-uvc-add-iPassion-iP2970-support.patch @@ -13,7 +13,7 @@ Signed-off-by: John Crispin --- a/drivers/media/usb/uvc/uvc_driver.c +++ b/drivers/media/usb/uvc/uvc_driver.c -@@ -3269,6 +3269,18 @@ static const struct usb_device_id uvc_id +@@ -3287,6 +3287,18 @@ static const struct usb_device_id uvc_id .bInterfaceSubClass = 1, .bInterfaceProtocol = 0, .driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX) }, @@ -62,9 +62,9 @@ Signed-off-by: John Crispin +#include +#include + #include #include - -@@ -1296,9 +1301,149 @@ static void uvc_video_decode_data(struct +@@ -1321,9 +1326,149 @@ static void uvc_video_decode_data(struct uvc_urb->async_operations++; } @@ -214,7 +214,7 @@ Signed-off-by: John Crispin /* Mark the buffer as done if the EOF marker is set. */ if (data[1] & UVC_STREAM_EOF && buf->bytesused != 0) { uvc_dbg(stream->dev, FRAME, "Frame complete (EOF found)\n"); -@@ -1880,6 +2025,8 @@ static int uvc_init_video_isoc(struct uv +@@ -1905,6 +2050,8 @@ static int uvc_init_video_isoc(struct uv if (npackets == 0) return -ENOMEM; @@ -225,16 +225,16 @@ Signed-off-by: John Crispin for_each_uvc_urb(uvc_urb, stream) { --- a/drivers/media/usb/uvc/uvcvideo.h +++ b/drivers/media/usb/uvc/uvcvideo.h -@@ -76,6 +76,8 @@ - #define UVC_QUIRK_NO_RESET_RESUME 0x00004000 +@@ -77,6 +77,8 @@ #define UVC_QUIRK_DISABLE_AUTOSUSPEND 0x00008000 #define UVC_QUIRK_INVALID_DEVICE_SOF 0x00010000 -+#define UVC_QUIRK_MOTION 0x00020000 -+#define UVC_QUIRK_SINGLE_ISO 0x00040000 + #define UVC_QUIRK_MJPEG_NO_EOF 0x00020000 ++#define UVC_QUIRK_MOTION 0x00040000 ++#define UVC_QUIRK_SINGLE_ISO 0x00080000 /* Format flags */ #define UVC_FMT_FLAG_COMPRESSED 0x00000001 -@@ -586,6 +588,7 @@ struct uvc_device { +@@ -587,6 +589,7 @@ struct uvc_device { struct input_dev *input; char input_phys[64]; diff --git a/target/linux/ramips/patches-6.6/831-mmc-mtk-sd-initialize-pad-delay-and-drive-strength.patch b/target/linux/ramips/patches-6.6/831-mmc-mtk-sd-initialize-pad-delay-and-drive-strength.patch index c3d13932ef..7fd7b3af43 100644 --- a/target/linux/ramips/patches-6.6/831-mmc-mtk-sd-initialize-pad-delay-and-drive-strength.patch +++ b/target/linux/ramips/patches-6.6/831-mmc-mtk-sd-initialize-pad-delay-and-drive-strength.patch @@ -22,7 +22,7 @@ Signed-off-by: Shiji Yang #define PAD_DS_TUNE 0x188 #define PAD_CMD_TUNE 0x18c #define EMMC51_CFG0 0x204 -@@ -400,6 +404,7 @@ struct mtk_mmc_compatible { +@@ -402,6 +406,7 @@ struct mtk_mmc_compatible { bool enhance_rx; bool support_64g; bool use_internal_cd; @@ -30,7 +30,7 @@ Signed-off-by: Shiji Yang }; struct msdc_tune_para { -@@ -537,6 +542,7 @@ static const struct mtk_mmc_compatible m +@@ -539,6 +544,7 @@ static const struct mtk_mmc_compatible m .stop_clk_fix = false, .enhance_rx = false, .use_internal_cd = true, @@ -38,7 +38,7 @@ Signed-off-by: Shiji Yang }; static const struct mtk_mmc_compatible mt7622_compat = { -@@ -1729,9 +1735,11 @@ static void msdc_init_hw(struct msdc_hos +@@ -1731,9 +1737,11 @@ static void msdc_init_hw(struct msdc_hos } writel(0, host->base + MSDC_IOCON); sdr_set_field(host->base + MSDC_IOCON, MSDC_IOCON_DDLSEL, 0); @@ -53,7 +53,7 @@ Signed-off-by: Shiji Yang sdr_set_bits(host->base + EMMC50_CFG0, EMMC50_CFG_CFCSTS_SEL); if (host->dev_comp->stop_clk_fix) { -@@ -1795,6 +1803,18 @@ static void msdc_init_hw(struct msdc_hos +@@ -1797,6 +1805,18 @@ static void msdc_init_hw(struct msdc_hos MSDC_PAD_TUNE_RXDLYSEL); } diff --git a/target/linux/realtek/dts/rtl8380_netgear_gs310tp-v1.dts b/target/linux/realtek/dts/rtl8380_netgear_gs310tp-v1.dts index a6f7181c11..9d58b3028a 100644 --- a/target/linux/realtek/dts/rtl8380_netgear_gs310tp-v1.dts +++ b/target/linux/realtek/dts/rtl8380_netgear_gs310tp-v1.dts @@ -8,6 +8,15 @@ }; +&gpio1 { + poe-enable { + gpio-hog; + gpios = <10 GPIO_ACTIVE_HIGH>; + output-high; + line-name = "poe-enable"; + }; +}; + &firmware { openwrt,ih-magic = <0x4e474335>; }; diff --git a/target/linux/realtek/image/rtl930x.mk b/target/linux/realtek/image/rtl930x.mk index 8aff7d52f6..50c7249435 100644 --- a/target/linux/realtek/image/rtl930x.mk +++ b/target/linux/realtek/image/rtl930x.mk @@ -9,6 +9,8 @@ define Device/xikestor_sks8300-8x SOC := rtl9303 DEVICE_VENDOR := XikeStor DEVICE_MODEL := SKS8300-8X + DEVICE_ALT0_VENDOR := ONTi + DEVICE_ALT0_MODEL := ONT-S508CL-8S BLOCKSIZE := 64k KERNEL_SIZE := 8192k IMAGE_SIZE := 30720k diff --git a/target/linux/starfive/patches-6.6/0066-uart-8250-Add-dw-auto-flow-ctrl-support.patch b/target/linux/starfive/patches-6.6/0066-uart-8250-Add-dw-auto-flow-ctrl-support.patch index ec6130b7ce..4fd92a46dc 100644 --- a/target/linux/starfive/patches-6.6/0066-uart-8250-Add-dw-auto-flow-ctrl-support.patch +++ b/target/linux/starfive/patches-6.6/0066-uart-8250-Add-dw-auto-flow-ctrl-support.patch @@ -67,7 +67,7 @@ Signed-off-by: Minda Chen } /* -@@ -2814,7 +2827,6 @@ serial8250_do_set_termios(struct uart_po +@@ -2822,7 +2835,6 @@ serial8250_do_set_termios(struct uart_po if (termios->c_cflag & CRTSCTS) up->mcr |= UART_MCR_AFE; } diff --git a/target/linux/sunxi/Makefile b/target/linux/sunxi/Makefile index 5bf76b0d50..3d3c6c2916 100644 --- a/target/linux/sunxi/Makefile +++ b/target/linux/sunxi/Makefile @@ -7,7 +7,7 @@ include $(TOPDIR)/rules.mk ARCH:=arm BOARD:=sunxi BOARDNAME:=Allwinner ARM SoCs -FEATURES:=usb ext4 display rootfs-part rtc squashfs +FEATURES:=ext4 display rootfs-part rtc squashfs usb usbgadget SUBTARGETS:=cortexa8 cortexa7 cortexa53 KERNEL_PATCHVER:=6.6 diff --git a/tools/autoconf/patches/000-relocatable.patch b/tools/autoconf/patches/000-relocatable.patch index bc8a2d1b7c..21b7f14f7f 100644 --- a/tools/autoconf/patches/000-relocatable.patch +++ b/tools/autoconf/patches/000-relocatable.patch @@ -1,3 +1,34 @@ +--- a/bin/autoconf.in ++++ b/bin/autoconf.in +@@ -29,7 +29,10 @@ use warnings FATAL => 'all'; + + BEGIN + { +- my $pkgdatadir = $ENV{'autom4te_perllibdir'} || '@pkgdatadir@'; ++ my $pkgdatadir = $ENV{'autom4te_perllibdir'} || ++ ($ENV{'STAGING_DIR_HOST'} ? ++ $ENV{'STAGING_DIR_HOST'} . '/share/autoconf' : ++ '@pkgdatadir@'); + unshift @INC, $pkgdatadir; + + # Override SHELL. On DJGPP SHELL may not be set to a shell +@@ -44,8 +47,14 @@ use Autom4te::Channels qw(msg); + use Autom4te::General; + + # Lib files. +-my $autom4te = $ENV{'AUTOM4TE'} || '@bindir@/@autom4te-name@'; +-my $trailer_m4 = $ENV{'trailer_m4'} || '@pkgdatadir@/autoconf/trailer.m4'; ++my $autom4te = $ENV{'AUTOM4TE'} || ++ ($ENV{'STAGING_DIR_HOST'} ? ++ $ENV{'STAGING_DIR_HOST'} . '/bin/@autom4te-name@' : ++ '@bindir@/@autom4te-name@'); ++my $trailer_m4 = $ENV{'trailer_m4'} || ++ ($ENV{'STAGING_DIR_HOST'} ? ++ $ENV{'STAGING_DIR_HOST'} . '/share/autoconf/autoconf/trailer.m4' : ++ '@pkgdatadir@/autoconf/trailer.m4'); + + # $HELP + # ----- --- a/bin/autoheader.in +++ b/bin/autoheader.in @@ -30,9 +30,12 @@ use 5.006; diff --git a/tools/automake/Makefile b/tools/automake/Makefile index dddc0a148f..7f129c1d83 100644 --- a/tools/automake/Makefile +++ b/tools/automake/Makefile @@ -8,12 +8,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=automake PKG_CPE_ID:=cpe:/a:gnu:automake -PKG_VERSION:=1.17 +PKG_VERSION:=1.16.5 PKG_API_VERSION:=$(word 2,$(subst ., ,$(PKG_VERSION))) -PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=@GNU/automake -PKG_HASH:=8920c1fc411e13b90bf704ef9db6f29d540e76d232cb3b2c9f4dc4cc599bd990 +PKG_HASH:=07bd24ad08a64bc17250ce09ec56e921d6343903943e99ccf63bbf0705e34605 include $(INCLUDE_DIR)/host-build.mk @@ -21,7 +21,7 @@ HOST_CONFIGURE_ARGS += \ --disable-silent-rules HOST_CONFIGURE_VARS += \ - PERL="$(shell command -v perl)" \ + PERL="/usr/bin/env perl" \ am_cv_prog_PERL_ithreads=no define Host/Configure diff --git a/tools/automake/patches/000-relocatable.patch b/tools/automake/patches/000-relocatable.patch index 5dcda2829e..0b61eaeb45 100644 --- a/tools/automake/patches/000-relocatable.patch +++ b/tools/automake/patches/000-relocatable.patch @@ -11,7 +11,7 @@ # We need at least this version for CLONE support. --- a/bin/aclocal.in +++ b/bin/aclocal.in -@@ -23,10 +23,12 @@ use 5.006; +@@ -23,9 +23,11 @@ use 5.006; use strict; use warnings FATAL => 'all'; @@ -20,23 +20,21 @@ BEGIN { - unshift (@INC, '@datadir@/@PACKAGE@-@APIVERSION@') -- unless $ENV{AUTOMAKE_UNINSTALLED}; + unshift (@INC, ($ENV{'STAGING_DIR_HOST'} ? $ENV{'STAGING_DIR_HOST'} . '/share/@PACKAGE@-@APIVERSION@' : '@datadir@/@PACKAGE@-@APIVERSION@')) -+ unless $ENV{AUTOMAKE_UNINSTALLED}; + unless $ENV{AUTOMAKE_UNINSTALLED}; } - use File::Basename; @@ -65,8 +67,8 @@ $perl_threads = 0; - # --aclocal-path option/ACLOCAL_PATH environment variable, and reset - # with the '--system-acdir' option. + # ACLOCAL_PATH environment variable, and reset with the '--system-acdir' + # option. my @user_includes = (); -my @automake_includes = ('@datadir@/aclocal-' . $APIVERSION); -my @system_includes = ('@datadir@/aclocal'); +my @automake_includes = ($ENV{'STAGING_DIR_HOST'} ? $ENV{'STAGING_DIR_HOST'} . "/share/aclocal-$APIVERSION" : "@datadir@/aclocal-$APIVERSION"); +my @system_includes = ($ENV{'STAGING_DIR_HOST'} ? $ENV{'STAGING_DIR_HOST'} . '/share/aclocal' : '@datadir@/aclocal'); - my $aclocal_path = ''; # Whether we should copy M4 file in $user_includes[0]. + my $install = 0; --- a/bin/automake.in +++ b/bin/automake.in @@ -26,9 +26,11 @@ use 5.006; diff --git a/tools/automake/patches/100-aclocal-skip-not-existing-directories.patch b/tools/automake/patches/100-aclocal-skip-not-existing-directories.patch index 6fa23c49e8..a0d04e21e5 100644 --- a/tools/automake/patches/100-aclocal-skip-not-existing-directories.patch +++ b/tools/automake/patches/100-aclocal-skip-not-existing-directories.patch @@ -1,6 +1,6 @@ --- a/bin/aclocal.in +++ b/bin/aclocal.in -@@ -372,6 +372,12 @@ sub scan_m4_dirs ($$@) +@@ -371,6 +371,12 @@ sub scan_m4_dirs ($$@) foreach my $m4dir (@dirlist) { diff --git a/tools/automake/patches/101-do-not-require-files.patch b/tools/automake/patches/101-do-not-require-files.patch index 26847bc680..3a8c9fcb47 100644 --- a/tools/automake/patches/101-do-not-require-files.patch +++ b/tools/automake/patches/101-do-not-require-files.patch @@ -1,6 +1,6 @@ --- a/bin/automake.in +++ b/bin/automake.in -@@ -4552,7 +4552,7 @@ sub handle_gettext () +@@ -4513,7 +4513,7 @@ sub handle_gettext () && grep ($_ eq 'intl', @subdirs)); } @@ -9,7 +9,7 @@ } # Emit makefile footer. -@@ -5677,7 +5677,7 @@ sub check_gnu_standards () +@@ -5641,7 +5641,7 @@ sub check_gnu_standards () # otherwise require non-.md. my $required = (! -f $file && -f "$file.md") ? "$file.md" : $file; @@ -18,7 +18,7 @@ } # Accept one of these three licenses; default to COPYING. -@@ -5691,7 +5691,7 @@ sub check_gnu_standards () +@@ -5655,7 +5655,7 @@ sub check_gnu_standards () last; } } diff --git a/tools/automake/patches/200-other-V-values-for-verbosity.patch b/tools/automake/patches/200-other-V-values-for-verbosity.patch index 8a5a2d31bd..1ea9d38b0e 100644 --- a/tools/automake/patches/200-other-V-values-for-verbosity.patch +++ b/tools/automake/patches/200-other-V-values-for-verbosity.patch @@ -9,8 +9,8 @@ Subject: [PATCH] Allow other V values for verbosity --- a/m4/silent.m4 +++ b/m4/silent.m4 -@@ -53,7 +53,7 @@ case $enable_silent_rules in @%:@ ((( - esac +@@ -43,7 +43,7 @@ else + fi]) if test $am_cv_make_support_nested_variables = yes; then dnl Using '$V' instead of '$(V)' breaks IRIX make. - AM_V='$(V)' diff --git a/tools/xz/Makefile b/tools/xz/Makefile index a90cec86bf..97a47041d2 100644 --- a/tools/xz/Makefile +++ b/tools/xz/Makefile @@ -7,12 +7,13 @@ include $(TOPDIR)/rules.mk PKG_NAME:=xz -PKG_VERSION:=5.4.6 +PKG_VERSION:=5.6.4 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 -PKG_SOURCE_URL:=@SF/lzmautils \ +PKG_SOURCE_URL:=https://github.com/tukaani-project/xz/releases/download/v$(PKG_VERSION) \ + @SF/lzmautils \ http://tukaani.org/xz -PKG_HASH:=913851b274e8e1d31781ec949f1c23e8dbcf0ecf6e73a2436dc21769dd3e6f49 +PKG_HASH:=176d510c30d80a23b8050bbc048f2ecaacb823ae48b6821727ed6591f0df9200 PKG_CPE_ID:=cpe:/a:tukaani:xz HOST_BUILD_PARALLEL:=1 diff --git a/tools/zlib/Makefile b/tools/zlib/Makefile index b1307ef2af..09c0aa6f71 100644 --- a/tools/zlib/Makefile +++ b/tools/zlib/Makefile @@ -11,12 +11,13 @@ PKG_NAME:=zlib PKG_VERSION:=1.3.1 PKG_RELEASE:=1 -PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz -PKG_SOURCE_URL:=https://github.com/madler/zlib/releases/download/v$(PKG_VERSION) -PKG_HASH:=9a93b2b7dfdac77ceba5a558a580e74667dd6fede4585b91eefb60f03b72df23 +PKG_SOURCE_PROTO:=git +PKG_SOURCE_URL:=https://github.com/madler/zlib +PKG_SOURCE_VERSION:=51b7f2abdade71cd9bb0e7a373ef2610ec6f9daf +PKG_MIRROR_HASH:=6558577038f4839057fad93afb295bf32e84dc9bd2c33512d40a5eab6d4889ef PKG_LICENSE:=Zlib -PKG_LICENSE_FILES:=README +PKG_LICENSE_FILES:=LICENSE PKG_CPE_ID:=cpe:/a:zlib:zlib HOST_BUILD_PARALLEL:=1 diff --git a/tools/zstd/Makefile b/tools/zstd/Makefile index e1d36c59cf..88a961f323 100644 --- a/tools/zstd/Makefile +++ b/tools/zstd/Makefile @@ -1,11 +1,11 @@ include $(TOPDIR)/rules.mk PKG_NAME:=zstd -PKG_VERSION:=1.5.6 +PKG_VERSION:=1.5.7 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://github.com/facebook/zstd/releases/download/v$(PKG_VERSION) -PKG_HASH:=8c29e06cf42aacc1eafc4077ae2ec6c6fcb96a626157e0593d5e82a34fd403c1 +PKG_HASH:=eb33e51f49a15e023950cd7825ca74a4a2b43db8354825ac24fc1b7ee09e6fa3 PKG_LICENSE:=BSD-3-Clause PKG_LICENSE_FILES:=LICENSE diff --git a/tools/zstd/patches/001-Provide-variant-pkg-config-file-for-multi-threaded-s.patch b/tools/zstd/patches/001-Provide-variant-pkg-config-file-for-multi-threaded-s.patch deleted file mode 100644 index 1bbcaf4c8a..0000000000 --- a/tools/zstd/patches/001-Provide-variant-pkg-config-file-for-multi-threaded-s.patch +++ /dev/null @@ -1,126 +0,0 @@ -From f1f1ae369a4cefd3474b3528e8d1847b18750605 Mon Sep 17 00:00:00 2001 -From: Christian Marangi -Date: Sat, 6 Apr 2024 14:41:54 +0200 -Subject: [PATCH] Provide variant pkg-config file for multi-threaded static lib - -Multi-threaded static library require -pthread to correctly link and works. -The pkg-config we provide tho only works with dynamic multi-threaded library -and won't provide the correct libs and cflags values if lib-mt is used. - -To handle this, introduce an env variable MT to permit advanced user to -install and generate a correct pkg-config file for lib-mt or detect if -lib-mt target is called. - -With MT env set on calling make install-pc, libzstd.pc.in is a -pkg-config file for a multi-threaded static library. - -On calling make lib-mt, a libzstd.pc is generated for a multi-threaded -static library as it's what asked by the user by forcing it. - -libzstd.pc is changed to PHONY to force regeneration of it on calling -lib targets or install-pc to handle case where the same directory is -used for mixed compilation. - -This was notice while migrating from meson to make build system where -meson generates a correct .pc file while make doesn't. - -Signed-off-by: Christian Marangi ---- - lib/Makefile | 20 +++++++++++++++++++- - lib/README.md | 4 ++++ - lib/libzstd.pc.in | 4 ++-- - 3 files changed, 25 insertions(+), 3 deletions(-) - ---- a/lib/Makefile -+++ b/lib/Makefile -@@ -63,6 +63,8 @@ CPPFLAGS_DYNLIB += -DZSTD_MULTITHREAD # - LDFLAGS_DYNLIB += -pthread - CPPFLAGS_STATICLIB += # static library build defaults to single-threaded - -+# pkg-config Libs.private points to LDFLAGS_DYNLIB -+PCLIB := $(LDFLAGS_DYNLIB) - - ifeq ($(findstring GCC,$(CCVER)),GCC) - decompress/zstd_decompress_block.o : CFLAGS+=-fno-tree-vectorize -@@ -186,12 +188,15 @@ lib : libzstd.a libzstd - %-mt : CPPFLAGS_DYNLIB := -DZSTD_MULTITHREAD - %-mt : CPPFLAGS_STATICLIB := -DZSTD_MULTITHREAD - %-mt : LDFLAGS_DYNLIB := -pthread -+%-mt : PCLIB := -+%-mt : PCMTLIB := $(LDFLAGS_DYNLIB) - %-mt : % - @echo multi-threaded build completed - - %-nomt : CPPFLAGS_DYNLIB := - %-nomt : LDFLAGS_DYNLIB := - %-nomt : CPPFLAGS_STATICLIB := -+%-nomt : PCLIB := - %-nomt : % - @echo single-threaded build completed - -@@ -292,6 +297,14 @@ PCLIBPREFIX := $(if $(findstring $(LIBDI - # to PREFIX, rather than as a resolved value. - PCEXEC_PREFIX := $(if $(HAS_EXPLICIT_EXEC_PREFIX),$(EXEC_PREFIX),$${prefix}) - -+ -+ifneq ($(MT),) -+ PCLIB := -+ PCMTLIB := $(LDFLAGS_DYNLIB) -+else -+ PCLIB := $(LDFLAGS_DYNLIB) -+endif -+ - ifneq (,$(filter $(UNAME),FreeBSD NetBSD DragonFly)) - PKGCONFIGDIR ?= $(PREFIX)/libdata/pkgconfig - else -@@ -308,6 +321,10 @@ INSTALL_PROGRAM ?= $(INSTALL) - INSTALL_DATA ?= $(INSTALL) -m 644 - - -+# pkg-config library define. -+# For static single-threaded library declare -pthread in Libs.private -+# For static multi-threaded library declare -pthread in Libs and Cflags -+.PHONY: libzstd.pc - libzstd.pc: libzstd.pc.in - @echo creating pkgconfig - @sed \ -@@ -316,7 +333,8 @@ libzstd.pc: libzstd.pc.in - -e 's|@INCLUDEDIR@|$(PCINCPREFIX)$(PCINCDIR)|' \ - -e 's|@LIBDIR@|$(PCLIBPREFIX)$(PCLIBDIR)|' \ - -e 's|@VERSION@|$(VERSION)|' \ -- -e 's|@LIBS_PRIVATE@|$(LDFLAGS_DYNLIB)|' \ -+ -e 's|@LIBS_MT@|$(PCMTLIB)|' \ -+ -e 's|@LIBS_PRIVATE@|$(PCLIB)|' \ - $< >$@ - - .PHONY: install ---- a/lib/README.md -+++ b/lib/README.md -@@ -27,12 +27,16 @@ Enabling multithreading requires 2 condi - - For convenience, we provide a build target to generate multi and single threaded libraries: - - Force enable multithreading on both dynamic and static libraries by appending `-mt` to the target, e.g. `make lib-mt`. -+ Note that the `.pc` generated on calling `make lib-mt` will already include the require Libs and Cflags. - - Force disable multithreading on both dynamic and static libraries by appending `-nomt` to the target, e.g. `make lib-nomt`. - - By default, as mentioned before, dynamic library is multithreaded, and static library is single-threaded, e.g. `make lib`. - - When linking a POSIX program with a multithreaded version of `libzstd`, - note that it's necessary to invoke the `-pthread` flag during link stage. - -+The `.pc` generated from `make install` or `make install-pc` always assume a single-threaded static library -+is compiled. To correctly generate a `.pc` for the multi-threaded static library, set `MT=1` as ENV variable. -+ - Multithreading capabilities are exposed - via the [advanced API defined in `lib/zstd.h`](https://github.com/facebook/zstd/blob/v1.4.3/lib/zstd.h#L351). - ---- a/lib/libzstd.pc.in -+++ b/lib/libzstd.pc.in -@@ -11,6 +11,6 @@ Name: zstd - Description: fast lossless compression algorithm library - URL: https://facebook.github.io/zstd/ - Version: @VERSION@ --Libs: -L${libdir} -lzstd -+Libs: -L${libdir} -lzstd @LIBS_MT@ - Libs.private: @LIBS_PRIVATE@ --Cflags: -I${includedir} -+Cflags: -I${includedir} @LIBS_MT@