Merge Official Source

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
This commit is contained in:
Tianling Shen 2025-02-24 23:08:39 +08:00
commit 07089cedb8
No known key found for this signature in database
GPG Key ID: 6850B6345C862176
62 changed files with 892 additions and 743 deletions

View File

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

View File

@ -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 <nbd@nbd.name>

View File

@ -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 <nbd@nbd.name>

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -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;
/**

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -0,0 +1,67 @@
From c88eb6f4e9b2d8f71f3391db2bf0ec82ecccae81 Mon Sep 17 00:00:00 2001
From: Daniel Golle <daniel@makrotopia.org>
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 <daniel@makrotopia.org>
---
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 {

View File

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

View File

@ -1,22 +0,0 @@
From c8b3ecc22ed0edaf0259eaf7d1a5c04f300ad6e4 Mon Sep 17 00:00:00 2001
From: Stephen Hemminger <stephen@networkplumber.org>
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 <stephen@networkplumber.org>
---
include/libnetlink.h | 1 +
1 file changed, 1 insertion(+)
--- a/include/libnetlink.h
+++ b/include/libnetlink.h
@@ -4,6 +4,7 @@
#include <stdio.h>
#include <string.h>
+#include <endian.h>
#include <asm/types.h>
#include <linux/netlink.h>
#include <linux/rtnetlink.h>

View File

@ -1,29 +0,0 @@
From fa3949b792e275f75d7d6200dc2036ef7fff8816 Mon Sep 17 00:00:00 2001
From: Stephen Hemminger <stephen@networkplumber.org>
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 <stephen@networkplumber.org>
---
rdma/rdma.h | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
--- a/rdma/rdma.h
+++ b/rdma/rdma.h
@@ -10,11 +10,12 @@
#include <string.h>
#include <errno.h>
#include <getopt.h>
+#include <time.h>
+#include <libgen.h>
#include <netinet/in.h>
#include <libmnl/libmnl.h>
#include <rdma/rdma_netlink.h>
#include <rdma/rdma_user_cm.h>
-#include <time.h>
#include <net/if_arp.h>
#include "list.h"

View File

@ -1,84 +0,0 @@
From 7e23da91fca6e5dedeb32a7d308cf20982e897c3 Mon Sep 17 00:00:00 2001
From: Stephen Hemminger <stephen@networkplumber.org>
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 <stephen@networkplumber.org>
---
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 <fcntl.h>
#include <dlfcn.h>
#include <errno.h>
+#include <string.h>
+#include <strings.h>
+#include <limits.h>
+
#include <sys/socket.h>
+#include <arpa/inet.h>
#include <linux/if.h>
-#include <linux/if_packet.h>
#include <linux/if_ether.h>
-#include <linux/sockios.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <string.h>
-#include <sys/ioctl.h>
-#include <stdbool.h>
-#include <linux/mpls.h>
#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 <sys/file.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/wait.h>
-#include <sys/inotify.h>
-#include <sys/mount.h>
-#include <sys/syscall.h>
+
#include <stdio.h>
+#include <stdint.h>
#include <string.h>
-#include <sched.h>
#include <fcntl.h>
#include <dirent.h>
#include <errno.h>
#include <unistd.h>
#include <ctype.h>
-#include <linux/limits.h>
+#include <limits.h>
+
+#include <sys/file.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/inotify.h>
+#include <sys/mount.h>
#include <linux/net_namespace.h>
@@ -23,7 +23,6 @@
#include "list.h"
#include "ip_common.h"
#include "namespace.h"
-#include "json_print.h"
static int usage(void)
{

View File

@ -1,26 +0,0 @@
From f982f30e166a02e09097de05129449031ba51f76 Mon Sep 17 00:00:00 2001
From: Stephen Hemminger <stephen@networkplumber.org>
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 <stephen@networkplumber.org>
---
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 <string.h>
#include <stdio.h>
#include <stdbool.h>
+#include <limits.h>
+
#include <linux/types.h>
-#include <linux/limits.h>
#include <ftw.h>
#include "cg_map.h"

View File

@ -1,178 +0,0 @@
From ac547ad027e3d4e283202ecb487cf54707234491 Mon Sep 17 00:00:00 2001
From: Stephen Hemminger <stephen@networkplumber.org>
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 <stephen@networkplumber.org>
---
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 <unistd.h>
#include <string.h>
#include <net/if.h>
-#include <linux/limits.h>
+
#include <linux/if_arp.h>
#include <linux/if_ether.h>
#include <linux/ip.h>
@@ -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);

View File

@ -1,37 +0,0 @@
From 458dce5d0431f0589aca1bc841904b5d1db3bbce Mon Sep 17 00:00:00 2001
From: Stephen Hemminger <stephen@networkplumber.org>
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 <stephen@networkplumber.org>
---
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

View File

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

View File

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

View File

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

View File

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

View File

@ -17,7 +17,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
--- 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 <phil@raspberrypi.org>
/**
* 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 <phil@raspberrypi.org>
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 <phil@raspberrypi.org>
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);

View File

@ -1189,7 +1189,7 @@ Signed-off-by: Alexander Winkowski <dereference23@outlook.com>
}
--- 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);

View File

@ -148,7 +148,7 @@ Signed-off-by: Maíra Canal <mcanal@igalia.com>
--- 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 <mcanal@igalia.com>
/**
* 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 <mcanal@igalia.com>
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 <mcanal@igalia.com>
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;

View File

@ -14,7 +14,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
--- 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;

View File

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

View File

@ -36,7 +36,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
--- 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);
}

View File

@ -37,7 +37,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
--- 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);

View File

@ -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) },

View File

@ -157,7 +157,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
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 <jogo@openwrt.org>
/*
* 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 <jogo@openwrt.org>
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 <jogo@openwrt.org>
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 <jogo@openwrt.org>
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 <jogo@openwrt.org>
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 <jogo@openwrt.org>
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 <jogo@openwrt.org>
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 <jogo@openwrt.org>
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);

View File

@ -0,0 +1,54 @@
From: Felix Fietkau <nbd@nbd.name>
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 <nbd@nbd.name>
---
--- 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);
}

View File

@ -48,7 +48,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
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);

View File

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

View File

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

View File

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

View File

@ -13,7 +13,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
--- 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 <blogic@openwrt.org>
+#include <linux/kobject.h>
+#include <linux/workqueue.h>
#include <media/jpeg.h>
#include <media/v4l2-common.h>
@@ -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 <blogic@openwrt.org>
/* 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 <blogic@openwrt.org>
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];

View File

@ -22,7 +22,7 @@ Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
#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 <yangshiji66@outlook.com>
};
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 <yangshiji66@outlook.com>
};
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 <yangshiji66@outlook.com>
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);
}

View File

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

View File

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

View File

@ -67,7 +67,7 @@ Signed-off-by: Minda Chen <minda.chen@starfivetech.com>
}
/*
@@ -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;
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,126 +0,0 @@
From f1f1ae369a4cefd3474b3528e8d1847b18750605 Mon Sep 17 00:00:00 2001
From: Christian Marangi <ansuelsmth@gmail.com>
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 <ansuelsmth@gmail.com>
---
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@