From 06366c30e77c7e31200fe293929cdf304bdec175 Mon Sep 17 00:00:00 2001 From: coolsnowwolf Date: Sun, 15 Sep 2024 23:19:40 +0800 Subject: [PATCH 1/4] uqmi: update to latest HEAD --- package/network/utils/uqmi/Makefile | 21 +-- .../utils/uqmi/files/lib/netifd/proto/qmi.sh | 170 ++++++++++++------ 2 files changed, 126 insertions(+), 65 deletions(-) diff --git a/package/network/utils/uqmi/Makefile b/package/network/utils/uqmi/Makefile index 26eeee12a630e7..af9f8cc73435ff 100644 --- a/package/network/utils/uqmi/Makefile +++ b/package/network/utils/uqmi/Makefile @@ -1,19 +1,20 @@ include $(TOPDIR)/rules.mk PKG_NAME:=uqmi -PKG_RELEASE:=1 +PKG_RELEASE:=2 PKG_SOURCE_PROTO:=git PKG_SOURCE_URL=$(PROJECT_GIT)/project/uqmi.git -PKG_SOURCE_DATE:=2022-05-04 -PKG_SOURCE_VERSION:=56cb2d4056fef132ccf78dfb6f3074ae5d109992 -PKG_MIRROR_HASH:=cc832b5318805df8c8387a3650f250dee72d5f1dbda4e4866b5503e186b2210c +PKG_SOURCE_DATE:=2024-08-25 +PKG_SOURCE_VERSION:=28b48a10dbcd1177095b73c6d8086d10114f49b8 +PKG_MIRROR_HASH:=bf1f8112c94ce49a7c03a4b9593141129d63ce679f98594257c1f6ab9bc49766 PKG_MAINTAINER:=Matti Laakso PKG_LICENSE:=GPL-2.0 PKG_LICENSE_FILES:= PKG_FLAGS:=nonshared +PKG_BUILD_FLAGS:=gc-sections include $(INCLUDE_DIR)/package.mk include $(INCLUDE_DIR)/cmake.mk @@ -31,20 +32,16 @@ define Package/uqmi/description the QMI-protocol. endef -TARGET_CFLAGS += -I$(STAGING_DIR)/usr/include -ffunction-sections -fdata-sections - -ifneq (,$(findstring $(GCC_MAJOR_VERSION), 12 13)) - TARGET_CFLAGS += -Wno-error=dangling-pointer -Wno-error=maybe-uninitialized -endif - -TARGET_LDFLAGS += -Wl,--gc-sections +TARGET_CFLAGS += \ + -I$(STAGING_DIR)/usr/include \ + -Wno-error=maybe-uninitialized CMAKE_OPTIONS += \ -DDEBUG=1 define Package/uqmi/install $(INSTALL_DIR) $(1)/sbin - $(INSTALL_BIN) $(PKG_BUILD_DIR)/uqmi $(1)/sbin/ + $(INSTALL_BIN) $(PKG_BUILD_DIR)/uqmi/uqmi $(1)/sbin/ $(CP) ./files/* $(1)/ endef diff --git a/package/network/utils/uqmi/files/lib/netifd/proto/qmi.sh b/package/network/utils/uqmi/files/lib/netifd/proto/qmi.sh index c0134f44dde3e5..8ec577a90b7823 100755 --- a/package/network/utils/uqmi/files/lib/netifd/proto/qmi.sh +++ b/package/network/utils/uqmi/files/lib/netifd/proto/qmi.sh @@ -11,6 +11,7 @@ proto_qmi_init_config() { no_device=1 proto_config_add_string "device:device" proto_config_add_string apn + proto_config_add_string v6apn proto_config_add_string auth proto_config_add_string username proto_config_add_string password @@ -19,8 +20,11 @@ proto_qmi_init_config() { proto_config_add_string modes proto_config_add_string pdptype proto_config_add_int profile + proto_config_add_int v6profile proto_config_add_boolean dhcp proto_config_add_boolean dhcpv6 + proto_config_add_boolean sourcefilter + proto_config_add_boolean delegate proto_config_add_boolean autoconnect proto_config_add_int plmn proto_config_add_int timeout @@ -31,14 +35,15 @@ proto_qmi_init_config() { proto_qmi_setup() { local interface="$1" local dataformat connstat plmn_mode mcc mnc - local device apn auth username password pincode delay modes pdptype - local profile dhcp dhcpv6 autoconnect plmn timeout mtu $PROTO_DEFAULT_OPTIONS + local device apn v6apn auth username password pincode delay modes pdptype + local profile v6profile dhcp dhcpv6 autoconnect plmn timeout mtu $PROTO_DEFAULT_OPTIONS local ip4table ip6table local cid_4 pdh_4 cid_6 pdh_6 local ip_6 ip_prefix_length gateway_6 dns1_6 dns2_6 + local profile_pdptype - json_get_vars device apn auth username password pincode delay modes - json_get_vars pdptype profile dhcp dhcpv6 autoconnect plmn ip4table + json_get_vars device apn v6apn auth username password pincode delay modes + json_get_vars pdptype profile v6profile dhcp dhcpv6 sourcefilter delegate autoconnect plmn ip4table json_get_vars ip6table timeout mtu $PROTO_DEFAULT_OPTIONS [ "$timeout" = "" ] && timeout="10" @@ -81,7 +86,9 @@ proto_qmi_setup() { echo "Waiting for SIM initialization" local uninitialized_timeout=0 - while uqmi -s -d "$device" --get-pin-status | grep '"UIM uninitialized"' > /dev/null; do + # timeout 3s for first call to avoid hanging uqmi + uqmi -d "$device" -t 3000 --get-pin-status > /dev/null 2>&1 + while uqmi -s -d "$device" -t 1000 --get-pin-status | grep '"UIM uninitialized"' > /dev/null; do [ -e "$device" ] || return 1 if [ "$uninitialized_timeout" -lt "$timeout" -o "$timeout" = "0" ]; then let uninitialized_timeout++ @@ -94,9 +101,41 @@ proto_qmi_setup() { fi done - if uqmi -s -d "$device" --get-pin-status | grep '"Not supported"\|"Invalid QMI command"' > /dev/null; then + # Check if UIM application is stuck in illegal state + local uim_state_timeout=0 + while true; do + json_load "$(uqmi -s -d "$device" -t 1000 --uim-get-sim-state)" + json_get_var card_application_state card_application_state + + # SIM card is either completely absent or state is labeled as illegal + # Try to power-cycle the SIM card to recover from this state + if [ -z "$card_application_state" -o "$card_application_state" = "illegal" ]; then + echo "SIM in illegal state - Power-cycling SIM" + + # Try to reset SIM application + uqmi -d "$device" -t 1000 --uim-power-off --uim-slot 1 + sleep 3 + uqmi -d "$device" -t 1000 --uim-power-on --uim-slot 1 + + if [ "$uim_state_timeout" -lt "$timeout" ] || [ "$timeout" = "0" ]; then + let uim_state_timeout++ + sleep 1 + continue + fi + + # Recovery failed + proto_notify_error "$interface" SIM_ILLEGAL_STATE + proto_block_restart "$interface" + return 1 + else + break + fi + done + + if uqmi -s -d "$device" -t 1000 --uim-get-sim-state | grep -q '"Not supported"\|"Invalid QMI command"' && + uqmi -s -d "$device" -t 1000 --get-pin-status | grep -q '"Not supported"\|"Invalid QMI command"' ; then [ -n "$pincode" ] && { - uqmi -s -d "$device" --verify-pin1 "$pincode" > /dev/null || uqmi -s -d "$device" --uim-verify-pin1 "$pincode" > /dev/null || { + uqmi -s -d "$device" -t 1000 --verify-pin1 "$pincode" > /dev/null || uqmi -s -d "$device" -t 1000 --uim-verify-pin1 "$pincode" > /dev/null || { echo "Unable to verify PIN" proto_notify_error "$interface" PIN_FAILED proto_block_restart "$interface" @@ -104,9 +143,12 @@ proto_qmi_setup() { } } else - . /usr/share/libubox/jshn.sh - json_load "$(uqmi -s -d "$device" --get-pin-status)" + json_load "$(uqmi -s -d "$device" -t 1000 --get-pin-status)" json_get_var pin1_status pin1_status + if [ -z "$pin1_status" ]; then + json_load "$(uqmi -s -d "$device" -t 1000 --uim-get-sim-state)" + json_get_var pin1_status pin1_status + fi json_get_var pin1_verify_tries pin1_verify_tries case "$pin1_status" in @@ -127,7 +169,7 @@ proto_qmi_setup() { return 1 } if [ -n "$pincode" ]; then - uqmi -s -d "$device" --verify-pin1 "$pincode" > /dev/null 2>&1 || uqmi -s -d "$device" --uim-verify-pin1 "$pincode" > /dev/null 2>&1 || { + uqmi -s -d "$device" -t 1000 --verify-pin1 "$pincode" > /dev/null 2>&1 || uqmi -s -d "$device" -t 1000 --uim-verify-pin1 "$pincode" > /dev/null 2>&1 || { echo "Unable to verify PIN" proto_notify_error "$interface" PIN_FAILED proto_block_restart "$interface" @@ -144,16 +186,17 @@ proto_qmi_setup() { echo "PIN already verified" ;; *) - echo "PIN status failed ($pin1_status)" + echo "PIN status failed (${pin1_status:-sim_not_present})" proto_notify_error "$interface" PIN_STATUS_FAILED proto_block_restart "$interface" return 1 ;; esac + json_cleanup fi if [ -n "$plmn" ]; then - json_load "$(uqmi -s -d "$device" --get-plmn)" + json_load "$(uqmi -s -d "$device" -t 1000 --get-plmn)" json_get_var plmn_mode mode json_get_vars mcc mnc || { mcc=0 @@ -176,25 +219,17 @@ proto_qmi_setup() { fi fi - if [ -n "$mcc" -a -n "$mnc" ]; then - uqmi -s -d "$device" --set-plmn --mcc "$mcc" --mnc "$mnc" > /dev/null 2>&1 || { - echo "Unable to set PLMN" - proto_notify_error "$interface" PLMN_FAILED - proto_block_restart "$interface" - return 1 - } - fi - # Cleanup current state if any - uqmi -s -d "$device" --stop-network 0xffffffff --autoconnect > /dev/null 2>&1 + uqmi -s -d "$device" -t 1000 --stop-network 0xffffffff --autoconnect > /dev/null 2>&1 + uqmi -s -d "$device" -t 1000 --set-ip-family ipv6 --stop-network 0xffffffff --autoconnect > /dev/null 2>&1 # Go online - uqmi -s -d "$device" --set-device-operating-mode online > /dev/null 2>&1 + uqmi -s -d "$device" -t 1000 --set-device-operating-mode online > /dev/null 2>&1 # Set IP format - uqmi -s -d "$device" --set-data-format 802.3 > /dev/null 2>&1 - uqmi -s -d "$device" --wda-set-data-format 802.3 > /dev/null 2>&1 - dataformat="$(uqmi -s -d "$device" --wda-get-data-format)" + uqmi -s -d "$device" -t 1000 --set-data-format 802.3 > /dev/null 2>&1 + uqmi -s -d "$device" -t 1000 --wda-set-data-format 802.3 > /dev/null 2>&1 + dataformat="$(uqmi -s -d "$device" -t 1000 --wda-get-data-format)" if [ "$dataformat" = '"raw-ip"' ]; then @@ -207,16 +242,33 @@ proto_qmi_setup() { echo "Y" > /sys/class/net/$ifname/qmi/raw_ip fi - uqmi -s -d "$device" --sync > /dev/null 2>&1 + uqmi -s -d "$device" -t 1000 --sync > /dev/null 2>&1 - uqmi -s -d "$device" --network-register > /dev/null 2>&1 + uqmi -s -d "$device" -t 20000 --network-register > /dev/null 2>&1 + + # PLMN selection must happen after the call to network-register + if [ -n "$mcc" -a -n "$mnc" ]; then + uqmi -s -d "$device" -t 1000 --set-plmn --mcc "$mcc" --mnc "$mnc" > /dev/null 2>&1 || { + echo "Unable to set PLMN" + proto_notify_error "$interface" PLMN_FAILED + proto_block_restart "$interface" + return 1 + } + fi + + [ -n "$modes" ] && { + uqmi -s -d "$device" -t 1000 --set-network-modes "$modes" > /dev/null 2>&1 + sleep 3 + # Scan network to not rely on registration-timeout after RAT change + uqmi -s -d "$device" -t 30000 --network-scan > /dev/null 2>&1 + } echo "Waiting for network registration" - sleep 1 + sleep 5 local registration_timeout=0 local registration_state="" while true; do - registration_state=$(uqmi -s -d "$device" --get-serving-system 2>/dev/null | jsonfilter -e "@.registration" 2>/dev/null) + registration_state=$(uqmi -s -d "$device" -t 1000 --get-serving-system 2>/dev/null | jsonfilter -e "@.registration" 2>/dev/null) [ "$registration_state" = "registered" ] && break @@ -224,7 +276,7 @@ proto_qmi_setup() { if [ "$registration_timeout" -lt "$timeout" ] || [ "$timeout" = "0" ]; then [ "$registration_state" = "searching" ] || { echo "Device stopped network registration. Restart network registration" - uqmi -s -d "$device" --network-register > /dev/null 2>&1 + uqmi -s -d "$device" -t 20000 --network-register > /dev/null 2>&1 } let registration_timeout++ sleep 1 @@ -237,17 +289,23 @@ proto_qmi_setup() { fi proto_notify_error "$interface" NETWORK_REGISTRATION_FAILED - proto_block_restart "$interface" return 1 done - [ -n "$modes" ] && uqmi -s -d "$device" --set-network-modes "$modes" > /dev/null 2>&1 echo "Starting network $interface" - pdptype=$(echo "$pdptype" | awk '{print tolower($0)}') + pdptype="$(echo "$pdptype" | awk '{print tolower($0)}')" + [ "$pdptype" = "ip" -o "$pdptype" = "ipv6" -o "$pdptype" = "ipv4v6" ] || pdptype="ip" + # Configure PDP type and APN for profile 1. + # In case GGSN rejects IPv4v6 PDP, modem might not be able to + # establish a non-LTE data session. + profile_pdptype="$pdptype" + [ "$profile_pdptype" = "ip" ] && profile_pdptype="ipv4" + uqmi -s -d "$device" -t 1000 --modify-profile "3gpp,1" --apn "$apn" --pdp-type "$profile_pdptype" > /dev/null 2>&1 + if [ "$pdptype" = "ip" ]; then [ -z "$autoconnect" ] && autoconnect=1 [ "$autoconnect" = 0 ] && autoconnect="" @@ -256,16 +314,16 @@ proto_qmi_setup() { fi [ "$pdptype" = "ip" -o "$pdptype" = "ipv4v6" ] && { - cid_4=$(uqmi -s -d "$device" --get-client-id wds) + cid_4=$(uqmi -s -d "$device" -t 1000 --get-client-id wds) if ! [ "$cid_4" -eq "$cid_4" ] 2> /dev/null; then echo "Unable to obtain client ID" proto_notify_error "$interface" NO_CID return 1 fi - uqmi -s -d "$device" --set-client-id wds,"$cid_4" --set-ip-family ipv4 > /dev/null 2>&1 + uqmi -s -d "$device" -t 1000 --set-client-id wds,"$cid_4" --set-ip-family ipv4 > /dev/null 2>&1 - pdh_4=$(uqmi -s -d "$device" --set-client-id wds,"$cid_4" \ + pdh_4=$(uqmi -s -d "$device" -t 5000 --set-client-id wds,"$cid_4" \ --start-network \ ${apn:+--apn $apn} \ ${profile:+--profile $profile} \ @@ -277,35 +335,38 @@ proto_qmi_setup() { # pdh_4 is a numeric value on success if ! [ "$pdh_4" -eq "$pdh_4" ] 2> /dev/null; then echo "Unable to connect IPv4" - uqmi -s -d "$device" --set-client-id wds,"$cid_4" --release-client-id wds > /dev/null 2>&1 + uqmi -s -d "$device" -t 1000 --set-client-id wds,"$cid_4" --release-client-id wds > /dev/null 2>&1 proto_notify_error "$interface" CALL_FAILED return 1 fi # Check data connection state - connstat=$(uqmi -s -d "$device" --get-data-status) + connstat=$(uqmi -s -d "$device" -t 1000 --set-client-id wds,"$cid_4" --get-data-status) [ "$connstat" == '"connected"' ] || { echo "No data link!" - uqmi -s -d "$device" --set-client-id wds,"$cid_4" --release-client-id wds > /dev/null 2>&1 + uqmi -s -d "$device" -t 1000 --set-client-id wds,"$cid_4" --release-client-id wds > /dev/null 2>&1 proto_notify_error "$interface" CALL_FAILED return 1 } } [ "$pdptype" = "ipv6" -o "$pdptype" = "ipv4v6" ] && { - cid_6=$(uqmi -s -d "$device" --get-client-id wds) + cid_6=$(uqmi -s -d "$device" -t 1000 --get-client-id wds) if ! [ "$cid_6" -eq "$cid_6" ] 2> /dev/null; then echo "Unable to obtain client ID" proto_notify_error "$interface" NO_CID return 1 fi - uqmi -s -d "$device" --set-client-id wds,"$cid_6" --set-ip-family ipv6 > /dev/null 2>&1 + uqmi -s -d "$device" -t 1000 --set-client-id wds,"$cid_6" --set-ip-family ipv6 > /dev/null 2>&1 + + : "${v6apn:=${apn}}" + : "${v6profile:=${profile}}" - pdh_6=$(uqmi -s -d "$device" --set-client-id wds,"$cid_6" \ + pdh_6=$(uqmi -s -d "$device" -t 5000 --set-client-id wds,"$cid_6" \ --start-network \ - ${apn:+--apn $apn} \ - ${profile:+--profile $profile} \ + ${v6apn:+--apn $v6apn} \ + ${v6profile:+--profile $v6profile} \ ${auth:+--auth-type $auth} \ ${username:+--username $username} \ ${password:+--password $password} \ @@ -314,16 +375,16 @@ proto_qmi_setup() { # pdh_6 is a numeric value on success if ! [ "$pdh_6" -eq "$pdh_6" ] 2> /dev/null; then echo "Unable to connect IPv6" - uqmi -s -d "$device" --set-client-id wds,"$cid_6" --release-client-id wds > /dev/null 2>&1 + uqmi -s -d "$device" -t 1000 --set-client-id wds,"$cid_6" --release-client-id wds > /dev/null 2>&1 proto_notify_error "$interface" CALL_FAILED return 1 fi # Check data connection state - connstat=$(uqmi -s -d "$device" --get-data-status) + connstat=$(uqmi -s -d "$device" -t 1000 --set-client-id wds,"$cid_6" --set-ip-family ipv6 --get-data-status) [ "$connstat" == '"connected"' ] || { echo "No data link!" - uqmi -s -d "$device" --set-client-id wds,"$cid_6" --release-client-id wds > /dev/null 2>&1 + uqmi -s -d "$device" -t 1000 --set-client-id wds,"$cid_6" --release-client-id wds > /dev/null 2>&1 proto_notify_error "$interface" CALL_FAILED return 1 } @@ -348,7 +409,7 @@ proto_qmi_setup() { [ -n "$pdh_6" ] && { if [ -z "$dhcpv6" -o "$dhcpv6" = 0 ]; then - json_load "$(uqmi -s -d $device --set-client-id wds,$cid_6 --get-current-settings)" + json_load "$(uqmi -s -d $device -t 1000 --set-client-id wds,$cid_6 --get-current-settings)" json_select ipv6 json_get_var ip_6 ip json_get_var gateway_6 gateway @@ -376,11 +437,14 @@ proto_qmi_setup() { json_init json_add_string name "${interface}_6" json_add_string ifname "@$interface" + [ "$pdptype" = "ipv4v6" ] && json_add_string iface_464xlat "0" json_add_string proto "dhcpv6" [ -n "$ip6table" ] && json_add_string ip6table "$ip6table" proto_add_dynamic_defaults # RFC 7278: Extend an IPv6 /64 Prefix to LAN json_add_string extendprefix 1 + [ "$delegate" = "0" ] && json_add_boolean delegate "0" + [ "$sourcefilter" = "0" ] && json_add_boolean sourcefilter "0" [ -n "$zone" ] && json_add_string zone "$zone" json_close_object ubus call network add_dynamic "$(json_dump)" @@ -389,7 +453,7 @@ proto_qmi_setup() { [ -n "$pdh_4" ] && { if [ "$dhcp" = 0 ]; then - json_load "$(uqmi -s -d $device --set-client-id wds,$cid_4 --get-current-settings)" + json_load "$(uqmi -s -d $device -t 1000 --set-client-id wds,$cid_4 --get-current-settings)" json_select ipv4 json_get_var ip_4 ip json_get_var gateway_4 gateway @@ -432,16 +496,16 @@ qmi_wds_stop() { [ -n "$cid" ] || return - uqmi -s -d "$device" --set-client-id wds,"$cid" \ + uqmi -s -d "$device" -t 1000 --set-client-id wds,"$cid" \ --stop-network 0xffffffff \ --autoconnect > /dev/null 2>&1 [ -n "$pdh" ] && { - uqmi -s -d "$device" --set-client-id wds,"$cid" \ + uqmi -s -d "$device" -t 1000 --set-client-id wds,"$cid" \ --stop-network "$pdh" > /dev/null 2>&1 } - uqmi -s -d "$device" --set-client-id wds,"$cid" \ + uqmi -s -d "$device" -t 1000 --set-client-id wds,"$cid" \ --release-client-id wds > /dev/null 2>&1 } From 2778ccf7a348e907a55e5dbb9cfda7738aa7cb52 Mon Sep 17 00:00:00 2001 From: coolsnowwolf Date: Sat, 7 Dec 2024 23:35:19 +0800 Subject: [PATCH 2/4] Revert "tools: update versions" This reverts commit ff5046f. --- tools/b43-tools/Makefile | 2 +- tools/cbootimage-configs/Makefile | 2 +- tools/cbootimage/Makefile | 2 +- tools/e2fsprogs/Makefile | 2 +- tools/firmware-utils/Makefile | 2 +- tools/make-ext4fs/Makefile | 2 +- tools/sdimage/Makefile | 2 +- tools/squashfs4/Makefile | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/tools/b43-tools/Makefile b/tools/b43-tools/Makefile index 8ec13309beb898..19918efde4011a 100644 --- a/tools/b43-tools/Makefile +++ b/tools/b43-tools/Makefile @@ -13,7 +13,7 @@ PKG_DATE:=2022-07-05 PKG_SOURCE_PROTO:=git PKG_SOURCE_URL:=https://github.com/mbuesch/b43-tools.git PKG_SOURCE_VERSION:=2fe10ea6690df9a068cb21cde537236bae784a14 -PKG_MIRROR_HASH:=4009d6c1f9ede43102897d6ebf4bd954331f3c4e2a94d4e61c0e5f303f929914 +PKG_MIRROR_HASH:=4f1cde5da35a1e768f6a01d67888549d04512073990769342381af1b2c9e7fd2 include $(INCLUDE_DIR)/host-build.mk diff --git a/tools/cbootimage-configs/Makefile b/tools/cbootimage-configs/Makefile index 586d1efc9df113..cafd4e5a20dd58 100644 --- a/tools/cbootimage-configs/Makefile +++ b/tools/cbootimage-configs/Makefile @@ -12,7 +12,7 @@ PKG_SOURCE_DATE := 2017-04-13 PKG_SOURCE_PROTO := git PKG_SOURCE_URL := https://github.com/NVIDIA/cbootimage-configs.git PKG_SOURCE_VERSION := 7c3b458b93ed6947cd083623f543e93f9103cc0f -PKG_MIRROR_HASH := 6ba2dde907d3cc403720954738a92431b1f40d562db5815c08971c39374d72a1 +PKG_MIRROR_HASH := 1d24421af8cf74ec2d625e237aa8121b1273774c4380ad333e2954e052a5a4fe include $(INCLUDE_DIR)/host-build.mk diff --git a/tools/cbootimage/Makefile b/tools/cbootimage/Makefile index 82be7950d3a411..71fdb5768c29d0 100644 --- a/tools/cbootimage/Makefile +++ b/tools/cbootimage/Makefile @@ -12,7 +12,7 @@ PKG_VERSION := 1.8 PKG_SOURCE_PROTO := git PKG_SOURCE_URL := https://github.com/NVIDIA/cbootimage.git PKG_SOURCE_VERSION := 7c9db585d06cce9efffa2a82245f233233680060 -PKG_MIRROR_HASH := e38b1e9581524fcabc7b24fff1c18d13f7e3a93accf73c55caf33832249bfd03 +PKG_MIRROR_HASH := 84d9abaaa3eddde05f506dc16effe1c9e18eb94727ed59c5e0a879baeb04e0b2 HOST_BUILD_PARALLEL := 1 diff --git a/tools/e2fsprogs/Makefile b/tools/e2fsprogs/Makefile index ec07fa77021340..6774ef8d83849b 100644 --- a/tools/e2fsprogs/Makefile +++ b/tools/e2fsprogs/Makefile @@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=e2fsprogs PKG_CPE_ID:=cpe:/a:e2fsprogs_project:e2fsprogs PKG_VERSION:=1.46.6 -PKG_HASH:=skip +PKG_HASH:=8749efc57cda3b6cfcb16a2d2ccd8b8be676c8827e5bae338aa327219a9c2fc4 PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz diff --git a/tools/firmware-utils/Makefile b/tools/firmware-utils/Makefile index 62222b6dafc2d8..fc198ffca11ef0 100644 --- a/tools/firmware-utils/Makefile +++ b/tools/firmware-utils/Makefile @@ -13,7 +13,7 @@ PKG_SOURCE_PROTO:=git PKG_SOURCE_URL=$(PROJECT_GIT)/project/firmware-utils.git PKG_SOURCE_DATE:=2024-10-20 PKG_SOURCE_VERSION:=4b7638925d3eac03e614e40bc30cb49f5877c46d -PKG_MIRROR_HASH:=ea0e30f2b20211e4153704019ebb3f8789269893a4af6d853a85fae7c091802c +PKG_MIRROR_HASH:=849193bcd9b7be96eada2219f3e8b2d229186cae4e4b7a8746375480fbcd2683 include $(INCLUDE_DIR)/host-build.mk include $(INCLUDE_DIR)/cmake.mk diff --git a/tools/make-ext4fs/Makefile b/tools/make-ext4fs/Makefile index b5616b1bc7a718..77031cdce31c0d 100644 --- a/tools/make-ext4fs/Makefile +++ b/tools/make-ext4fs/Makefile @@ -13,7 +13,7 @@ PKG_SOURCE_URL=$(PROJECT_GIT)/project/make_ext4fs.git PKG_SOURCE_PROTO:=git PKG_SOURCE_DATE:=2020-01-05 PKG_SOURCE_VERSION:=5c201be7d72aff735da27e17c29852e0cefe3e52 -PKG_MIRROR_HASH:=ec8304dc06f94338e14e608a807f48e10d0987bdac4d90f235650b46994dfbd7 +PKG_MIRROR_HASH:=a9b74b7b95acc84a5a5c33d6acf493faad8f161caca3180734d9bd383c9d823f include $(INCLUDE_DIR)/host-build.mk diff --git a/tools/sdimage/Makefile b/tools/sdimage/Makefile index e09b1e01f472d0..532bc481ac4950 100644 --- a/tools/sdimage/Makefile +++ b/tools/sdimage/Makefile @@ -13,7 +13,7 @@ PKG_SOURCE_PROTO:=git PKG_SOURCE_URL:=https://github.com/mhei/fsl-imx-uuc.git PKG_SOURCE_DATE:=2018-11-18 PKG_SOURCE_VERSION:=c6536ac5b4388b33c217bde2c3a76a4e96d64176 -PKG_MIRROR_HASH:=c4487635ea06ea6311a28739c58f7f889b888c91b7ccc0398d225b4bcdeb76a3 +PKG_MIRROR_HASH:=747fb640a0596cab7d516979188e1f85be58c470df85cf1f7e3dcf8a4c1b36e5 PKG_LICENSE:=GPL-2.0+ PKG_LICENSE_FILES:=LICENSE diff --git a/tools/squashfs4/Makefile b/tools/squashfs4/Makefile index 38c3e5233fd0df..ce66a8558069cf 100644 --- a/tools/squashfs4/Makefile +++ b/tools/squashfs4/Makefile @@ -15,7 +15,7 @@ PKG_SOURCE_PROTO:=git PKG_SOURCE_URL:=https://github.com/plougher/squashfs-tools PKG_SOURCE_DATE:=2023-03-26 PKG_SOURCE_VERSION:=d8cb82d9840330f9344ec37b992595b5d7b44184 -PKG_MIRROR_HASH:=e84026de1ab187f3f76d1b781a29259d818f887e1651225f850a62d6f90b1b9e +PKG_MIRROR_HASH:=fc625af657ca284d69fbc32e3bb572d0afd566cf816b7c1c1b66dda0a0c2760a HOST_BUILD_PARALLEL:=1 From 9e010ff34a228db0979df2d87db3f696a710e61c Mon Sep 17 00:00:00 2001 From: coolsnowwolf Date: Fri, 6 Dec 2024 16:45:13 +0800 Subject: [PATCH 3/4] kernel: bump 6.12 to 6.12.3 --- include/kernel-6.12 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/kernel-6.12 b/include/kernel-6.12 index 95eed4678edae5..a9cf4e6ebd625c 100644 --- a/include/kernel-6.12 +++ b/include/kernel-6.12 @@ -1,2 +1,2 @@ -LINUX_VERSION-6.12 = .1 -LINUX_KERNEL_HASH-6.12.1 = 0193b1d86dd372ec891bae799f6da20deef16fc199f30080a4ea9de8cef0c619 +LINUX_VERSION-6.12 = .3 +LINUX_KERNEL_HASH-6.12.3 = c89809cc777d50f1ea484a118630281a26383707a0e752c96fd834f6e765deae From cb4244db53659fa082432521f8ac05bc1af2812c Mon Sep 17 00:00:00 2001 From: coolsnowwolf Date: Fri, 6 Dec 2024 18:13:53 +0800 Subject: [PATCH 4/4] ksmbd: add SMB v1 support --- package/kernel/ksmbd/Makefile | 19 +++++++++++++++++++ .../patches/02-linux-is_dot_dotdot.patch | 2 +- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/package/kernel/ksmbd/Makefile b/package/kernel/ksmbd/Makefile index 74b68b458a33de..1b11c89a5a2ed0 100644 --- a/package/kernel/ksmbd/Makefile +++ b/package/kernel/ksmbd/Makefile @@ -42,8 +42,27 @@ endef # The last two DEPENDS are hacks in order to get CONFIG_ASN1 and CONFIG_OID_REGISTRY # which it seems can't be selected independently. Some bug in either base or upstream. +define KernelPackage/fs-ksmbd/description + Ksmbd is an In-kernel SMBv(1)2/3 fileserver. + It's an implementation of the SMB protocol in kernel space for sharing files and IPC services over network. +endef +define KernelPackage/fs-ksmbd/config +config KSMBD_SMB_INSECURE_SERVER + bool "Support for insecure SMB1/CIFS and SMB2.0 protocols" + depends on PACKAGE_kmod-fs-ksmbd + help + This enables deprecated insecure protocols dialects: SMB1/CIFS and SMB2.0. + default n +endef +ifeq ($(CONFIG_KSMBD_SMB_INSECURE_SERVER),y) +PKG_EXTRA_KCONFIG:=CONFIG_SMB_INSECURE_SERVER=y +EXTRA_CFLAGS += -DCONFIG_SMB_INSECURE_SERVER=1 +endif + define Build/Compile $(KERNEL_MAKE) M="$(PKG_BUILD_DIR)" \ + EXTRA_CFLAGS="$(EXTRA_CFLAGS)" \ + $(PKG_EXTRA_KCONFIG) \ CONFIG_SMB_SERVER=m \ modules endef diff --git a/package/kernel/ksmbd/patches/02-linux-is_dot_dotdot.patch b/package/kernel/ksmbd/patches/02-linux-is_dot_dotdot.patch index 338cb250f7b9db..cba45cdc0dcdba 100644 --- a/package/kernel/ksmbd/patches/02-linux-is_dot_dotdot.patch +++ b/package/kernel/ksmbd/patches/02-linux-is_dot_dotdot.patch @@ -5,7 +5,7 @@ #endif -#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 9, 0) -+#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 60) ++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 1, 110) static inline bool is_dot_dotdot(const char *name, size_t len) { return len && unlikely(name[0] == '.') &&