Update On Thu Feb 19 20:02:35 CET 2026

This commit is contained in:
github-action[bot]
2026-02-19 20:02:36 +01:00
parent a45886a66e
commit a3f5573e84
24 changed files with 810 additions and 723 deletions
+1
View File
@@ -1276,3 +1276,4 @@ Update On Sun Feb 15 19:49:15 CET 2026
Update On Mon Feb 16 19:58:09 CET 2026
Update On Tue Feb 17 20:08:38 CET 2026
Update On Wed Feb 18 20:06:41 CET 2026
Update On Thu Feb 19 20:02:27 CET 2026
+2 -2
View File
@@ -1215,9 +1215,9 @@ checksum = "f4ad8f11f288f48ca24471bbd51ac257aaeaaa07adae295591266b792902ae64"
[[package]]
name = "bumpalo"
version = "3.19.1"
version = "3.20.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510"
checksum = "5c6f81257d10a0f602a294ae4182251151ff97dbb504ef9afcdda4a64b24d9b4"
[[package]]
name = "bytemuck"
@@ -34,7 +34,7 @@
"@radix-ui/react-switch": "1.2.6",
"@radix-ui/react-tooltip": "1.2.8",
"@radix-ui/react-use-controllable-state": "1.2.2",
"@tailwindcss/postcss": "4.1.18",
"@tailwindcss/postcss": "4.2.0",
"@tanstack/react-table": "8.21.3",
"@tanstack/react-virtual": "3.13.18",
"@tanstack/router-zod-adapter": "1.81.5",
@@ -49,8 +49,8 @@
"country-emoji": "1.5.6",
"dayjs": "1.11.19",
"framer-motion": "12.34.2",
"i18next": "25.8.10",
"jotai": "2.17.1",
"i18next": "25.8.11",
"jotai": "2.18.0",
"json-schema": "0.4.0",
"material-react-table": "3.2.1",
"monaco-editor": "0.55.1",
@@ -74,12 +74,12 @@
"@csstools/normalize.css": "12.1.1",
"@emotion/babel-plugin": "11.13.5",
"@emotion/react": "11.14.0",
"@iconify/json": "2.2.440",
"@iconify/json": "2.2.441",
"@monaco-editor/react": "4.7.0",
"@tanstack/react-query": "5.90.21",
"@tanstack/react-router": "1.160.2",
"@tanstack/react-router-devtools": "1.160.2",
"@tanstack/router-plugin": "1.161.0",
"@tanstack/react-router": "1.161.1",
"@tanstack/react-router-devtools": "1.161.1",
"@tanstack/router-plugin": "1.161.1",
"@tauri-apps/plugin-clipboard-manager": "2.3.2",
"@tauri-apps/plugin-dialog": "2.6.0",
"@tauri-apps/plugin-fs": "2.4.5",
+2 -2
View File
@@ -29,7 +29,7 @@
"react-error-boundary": "6.0.0",
"react-i18next": "15.7.4",
"react-use": "17.6.0",
"tailwindcss": "4.1.18",
"tailwindcss": "4.2.0",
"vite": "7.3.1",
"vite-tsconfig-paths": "6.1.1"
},
@@ -39,7 +39,7 @@
"clsx": "2.1.1",
"d3-interpolate-path": "2.3.0",
"sass-embedded": "1.97.3",
"tailwind-merge": "3.4.1",
"tailwind-merge": "3.5.0",
"typescript-plugin-css-modules": "5.2.0",
"vite-plugin-dts": "4.5.4"
}
+4 -4
View File
@@ -56,8 +56,8 @@
"lodash-es": "4.17.23"
},
"devDependencies": {
"@commitlint/cli": "20.4.1",
"@commitlint/config-conventional": "20.4.1",
"@commitlint/cli": "20.4.2",
"@commitlint/config-conventional": "20.4.2",
"@ianvs/prettier-plugin-sort-imports": "4.7.1",
"@tauri-apps/cli": "2.10.0",
"@types/fs-extra": "11.0.4",
@@ -68,7 +68,7 @@
"cross-env": "10.1.0",
"dedent": "1.7.1",
"globals": "17.3.0",
"knip": "5.84.0",
"knip": "5.84.1",
"lint-staged": "16.2.7",
"npm-run-all2": "8.0.4",
"oxlint": "1.48.0",
@@ -87,7 +87,7 @@
"stylelint-declaration-block-no-ignored-properties": "3.0.0",
"stylelint-order": "7.0.1",
"stylelint-scss": "7.0.0",
"tailwindcss": "4.1.18",
"tailwindcss": "4.2.0",
"tsx": "4.21.0",
"typescript": "5.9.3"
},
+256 -256
View File
File diff suppressed because it is too large Load Diff
+13 -18
View File
@@ -1,7 +1,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=mt76
PKG_RELEASE=3
PKG_RELEASE=1
PKG_LICENSE:=GPLv2
PKG_LICENSE_FILES:=
@@ -14,25 +14,19 @@ PKG_SOURCE_DATE:=2022-12-22
PKG_SOURCE_VERSION:=5b509e80384ab019ac11aa90c81ec0dbb5b0d7f2
PKG_MIRROR_HASH:=6fc25df4d28becd010ff4971b23731c08b53e69381a9e4c868091899712f78a9
PATCH_DIR:=./patches-5.4
else ifdef CONFIG_LINUX_6_1
PKG_SOURCE_DATE:=2024-09-29
PKG_SOURCE_VERSION:=ee693260c52191c9c4764915178ce3586e926428
PKG_MIRROR_HASH:=213ca47f3e7ec8a8c6b4ade2e301f62fcc69793ed06d43eb730fc9a500fd5595
PATCH_DIR:=./patches-6.x
else ifdef CONFIG_LINUX_6_6
PKG_SOURCE_DATE:=2024-09-29
PKG_SOURCE_VERSION:=ee693260c52191c9c4764915178ce3586e926428
PKG_MIRROR_HASH:=213ca47f3e7ec8a8c6b4ade2e301f62fcc69793ed06d43eb730fc9a500fd5595
PATCH_DIR:=./patches-6.x
else ifdef CONFIG_LINUX_6_12
PKG_SOURCE_DATE:=2024-09-29
PKG_SOURCE_VERSION:=ee693260c52191c9c4764915178ce3586e926428
PKG_MIRROR_HASH:=213ca47f3e7ec8a8c6b4ade2e301f62fcc69793ed06d43eb730fc9a500fd5595
PATCH_DIR:=./patches-6.x
else
else ifdef CONFIG_LINUX_5_10
PKG_SOURCE_DATE:=2023-09-18
PKG_SOURCE_VERSION:=2afc7285f75dca5a0583fd917285bf33f1429cc6
PKG_MIRROR_HASH:=2c9556b298246277ac2d65415e4449f98e6d5fdb99e0d0a92262f162df772bbc
else ifdef CONFIG_LINUX_5_15
PKG_SOURCE_DATE:=2023-09-18
PKG_SOURCE_VERSION:=2afc7285f75dca5a0583fd917285bf33f1429cc6
PKG_MIRROR_HASH:=2c9556b298246277ac2d65415e4449f98e6d5fdb99e0d0a92262f162df772bbc
else
PKG_SOURCE_DATE:=2024-10-14
PKG_SOURCE_VERSION:=8dfead68c20251fccb39113ee864fbbafc5b7f76
PKG_MIRROR_HASH:=1abbc60039e5eb1b25c678a711b79a92e8b9f39e4db9801610811c76d2928718
PATCH_DIR:=./patches-6.x
endif
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
@@ -387,7 +381,8 @@ define KernelPackage/mt7925-common
$(KernelPackage/mt76-default)
TITLE:=MediaTek MT7925 wireless driver common code
HIDDEN:=1
DEPENDS+=+kmod-mt792x-common +@DRIVER_11AX_SUPPORT +kmod-hwmon-core
DEPENDS+=+kmod-mt792x-common +kmod-hwmon-core \
+@DRIVER_11AX_SUPPORT +@DRIVER_11BE_SUPPORT
FILES:= $(PKG_BUILD_DIR)/mt7925/mt7925-common.ko
endef
@@ -10,11 +10,9 @@ Signed-off-by: DENG Qingfang <dqfext@gmail.com>
mac80211.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/mac80211.c b/mac80211.c
index 766681a4..06aa4228 100644
--- a/mac80211.c
+++ b/mac80211.c
@@ -282,7 +282,7 @@ static void mt76_init_stream_cap(struct mt76_phy *phy,
@@ -293,7 +293,7 @@ static void mt76_init_stream_cap(struct
void mt76_set_stream_caps(struct mt76_phy *phy, bool vht)
{
if (phy->cap.has_2ghz)
@@ -23,7 +21,7 @@ index 766681a4..06aa4228 100644
if (phy->cap.has_5ghz)
mt76_init_stream_cap(phy, &phy->sband_5g.sband, vht);
if (phy->cap.has_6ghz)
@@ -349,13 +349,13 @@ mt76_init_sband(struct mt76_phy *phy, struct mt76_sband *msband,
@@ -360,13 +360,13 @@ mt76_init_sband(struct mt76_phy *phy, st
static int
mt76_init_sband_2g(struct mt76_phy *phy, struct ieee80211_rate *rates,
@@ -39,7 +37,7 @@ index 766681a4..06aa4228 100644
}
static int
@@ -508,7 +508,7 @@ int mt76_register_phy(struct mt76_phy *phy, bool vht,
@@ -524,7 +524,7 @@ int mt76_register_phy(struct mt76_phy *p
return ret;
if (phy->cap.has_2ghz) {
@@ -48,7 +46,7 @@ index 766681a4..06aa4228 100644
if (ret)
return ret;
}
@@ -691,7 +691,7 @@ int mt76_register_device(struct mt76_dev *dev, bool vht,
@@ -710,7 +710,7 @@ int mt76_register_device(struct mt76_dev
return ret;
if (phy->cap.has_2ghz) {
@@ -1,15 +1,6 @@
--- a/Makefile
+++ b/Makefile
@@ -1,5 +1,5 @@
# SPDX-License-Identifier: GPL-2.0-only
-EXTRA_CFLAGS += -Werror -DCONFIG_MT76_LEDS
+EXTRA_CFLAGS += -Werror -Wno-unused-variable -DCONFIG_MT76_LEDS
obj-m := mt76.o
obj-$(CONFIG_MT76_USB) += mt76-usb.o
obj-$(CONFIG_MT76_SDIO) += mt76-sdio.o
--- a/mac80211.c
+++ b/mac80211.c
@@ -1660,8 +1660,8 @@
@@ -1656,8 +1656,8 @@ EXPORT_SYMBOL_GPL(mt76_get_sar_power);
static void
__mt76_csa_finish(void *priv, u8 *mac, struct ieee80211_vif *vif)
{
@@ -20,7 +11,7 @@
}
void mt76_csa_finish(struct mt76_dev *dev)
@@ -1685,7 +1685,7 @@
@@ -1681,7 +1681,7 @@ __mt76_csa_check(void *priv, u8 *mac, st
if (!vif->bss_conf.csa_active)
return;
@@ -29,9 +20,192 @@
}
void mt76_csa_check(struct mt76_dev *dev)
--- a/mt7603/main.c
+++ b/mt7603/main.c
@@ -23,7 +23,7 @@ mt7603_start(struct ieee80211_hw *hw)
}
static void
-mt7603_stop(struct ieee80211_hw *hw, bool suspend)
+mt7603_stop(struct ieee80211_hw *hw)
{
struct mt7603_dev *dev = hw->priv;
@@ -694,10 +694,6 @@ static void mt7603_tx(struct ieee80211_h
}
const struct ieee80211_ops mt7603_ops = {
- .add_chanctx = ieee80211_emulate_add_chanctx,
- .remove_chanctx = ieee80211_emulate_remove_chanctx,
- .change_chanctx = ieee80211_emulate_change_chanctx,
- .switch_vif_chanctx = ieee80211_emulate_switch_vif_chanctx,
.tx = mt7603_tx,
.start = mt7603_start,
.stop = mt7603_stop,
--- a/mt7615/main.c
+++ b/mt7615/main.c
@@ -91,7 +91,7 @@ out:
return ret;
}
-static void mt7615_stop(struct ieee80211_hw *hw, bool suspend)
+static void mt7615_stop(struct ieee80211_hw *hw)
{
struct mt7615_dev *dev = mt7615_hw_dev(hw);
struct mt7615_phy *phy = mt7615_hw_phy(hw);
@@ -1313,10 +1313,6 @@ static void mt7615_set_rekey_data(struct
#endif /* CONFIG_PM */
const struct ieee80211_ops mt7615_ops = {
- .add_chanctx = ieee80211_emulate_add_chanctx,
- .remove_chanctx = ieee80211_emulate_remove_chanctx,
- .change_chanctx = ieee80211_emulate_change_chanctx,
- .switch_vif_chanctx = ieee80211_emulate_switch_vif_chanctx,
.tx = mt7615_tx,
.start = mt7615_start,
.stop = mt7615_stop,
--- a/mt7615/mcu.c
+++ b/mt7615/mcu.c
@@ -353,7 +353,7 @@ static void
mt7615_mcu_csa_finish(void *priv, u8 *mac, struct ieee80211_vif *vif)
{
if (vif->bss_conf.csa_active)
- ieee80211_csa_finish(vif, 0);
+ ieee80211_csa_finish(vif);
}
static void
@@ -394,7 +394,7 @@ mt7615_mcu_rx_radar_detected(struct mt76
if (mt76_phy_dfs_state(mphy) < MT_DFS_STATE_CAC)
return;
- ieee80211_radar_detected(mphy->hw, NULL);
+ ieee80211_radar_detected(mphy->hw);
dev->hw_pattern++;
}
--- a/mt7615/usb.c
+++ b/mt7615/usb.c
@@ -79,7 +79,7 @@ static void mt7663u_copy(struct mt76_dev
mutex_unlock(&usb->usb_ctrl_mtx);
}
-static void mt7663u_stop(struct ieee80211_hw *hw, bool suspend)
+static void mt7663u_stop(struct ieee80211_hw *hw)
{
struct mt7615_phy *phy = mt7615_hw_phy(hw);
struct mt7615_dev *dev = hw->priv;
--- a/mt76x0/pci.c
+++ b/mt76x0/pci.c
@@ -44,7 +44,7 @@ static void mt76x0e_stop_hw(struct mt76x
mt76_clear(dev, MT_WPDMA_GLO_CFG, MT_WPDMA_GLO_CFG_RX_DMA_EN);
}
-static void mt76x0e_stop(struct ieee80211_hw *hw, bool suspend)
+static void mt76x0e_stop(struct ieee80211_hw *hw)
{
struct mt76x02_dev *dev = hw->priv;
@@ -59,10 +59,6 @@ mt76x0e_flush(struct ieee80211_hw *hw, s
}
static const struct ieee80211_ops mt76x0e_ops = {
- .add_chanctx = ieee80211_emulate_add_chanctx,
- .remove_chanctx = ieee80211_emulate_remove_chanctx,
- .change_chanctx = ieee80211_emulate_change_chanctx,
- .switch_vif_chanctx = ieee80211_emulate_switch_vif_chanctx,
.tx = mt76x02_tx,
.start = mt76x0e_start,
.stop = mt76x0e_stop,
--- a/mt76x0/usb.c
+++ b/mt76x0/usb.c
@@ -77,7 +77,7 @@ static void mt76x0u_cleanup(struct mt76x
mt76u_queues_deinit(&dev->mt76);
}
-static void mt76x0u_stop(struct ieee80211_hw *hw, bool suspend)
+static void mt76x0u_stop(struct ieee80211_hw *hw)
{
struct mt76x02_dev *dev = hw->priv;
@@ -118,10 +118,6 @@ static int mt76x0u_start(struct ieee8021
}
static const struct ieee80211_ops mt76x0u_ops = {
- .add_chanctx = ieee80211_emulate_add_chanctx,
- .remove_chanctx = ieee80211_emulate_remove_chanctx,
- .change_chanctx = ieee80211_emulate_change_chanctx,
- .switch_vif_chanctx = ieee80211_emulate_switch_vif_chanctx,
.tx = mt76x02_tx,
.start = mt76x0u_start,
.stop = mt76x0u_stop,
--- a/mt76x02_dfs.c
+++ b/mt76x02_dfs.c
@@ -630,7 +630,7 @@ static void mt76x02_dfs_tasklet(struct t
radar_detected = mt76x02_dfs_check_detection(dev);
if (radar_detected) {
/* sw detector rx radar pattern */
- ieee80211_radar_detected(dev->mt76.hw, NULL);
+ ieee80211_radar_detected(dev->mt76.hw);
mt76x02_dfs_detector_reset(dev);
return;
@@ -658,7 +658,7 @@ static void mt76x02_dfs_tasklet(struct t
/* hw detector rx radar pattern */
dfs_pd->stats[i].hw_pattern++;
- ieee80211_radar_detected(dev->mt76.hw, NULL);
+ ieee80211_radar_detected(dev->mt76.hw);
mt76x02_dfs_detector_reset(dev);
return;
--- a/mt76x2/pci_main.c
+++ b/mt76x2/pci_main.c
@@ -24,7 +24,7 @@ mt76x2_start(struct ieee80211_hw *hw)
}
static void
-mt76x2_stop(struct ieee80211_hw *hw, bool suspend)
+mt76x2_stop(struct ieee80211_hw *hw)
{
struct mt76x02_dev *dev = hw->priv;
@@ -121,10 +121,6 @@ static int mt76x2_set_antenna(struct iee
}
const struct ieee80211_ops mt76x2_ops = {
- .add_chanctx = ieee80211_emulate_add_chanctx,
- .remove_chanctx = ieee80211_emulate_remove_chanctx,
- .change_chanctx = ieee80211_emulate_change_chanctx,
- .switch_vif_chanctx = ieee80211_emulate_switch_vif_chanctx,
.tx = mt76x02_tx,
.start = mt76x2_start,
.stop = mt76x2_stop,
--- a/mt76x2/usb_main.c
+++ b/mt76x2/usb_main.c
@@ -22,7 +22,7 @@ static int mt76x2u_start(struct ieee8021
return 0;
}
-static void mt76x2u_stop(struct ieee80211_hw *hw, bool suspend)
+static void mt76x2u_stop(struct ieee80211_hw *hw)
{
struct mt76x02_dev *dev = hw->priv;
@@ -88,10 +88,6 @@ mt76x2u_config(struct ieee80211_hw *hw,
}
const struct ieee80211_ops mt76x2u_ops = {
- .add_chanctx = ieee80211_emulate_add_chanctx,
- .remove_chanctx = ieee80211_emulate_remove_chanctx,
- .change_chanctx = ieee80211_emulate_change_chanctx,
- .switch_vif_chanctx = ieee80211_emulate_switch_vif_chanctx,
.tx = mt76x02_tx,
.start = mt76x2u_start,
.stop = mt76x2u_stop,
--- a/mt7915/main.c
+++ b/mt7915/main.c
@@ -108,7 +108,7 @@
@@ -108,7 +108,7 @@ static int mt7915_start(struct ieee80211
return ret;
}
@@ -40,7 +214,7 @@
{
struct mt7915_dev *dev = mt7915_hw_dev(hw);
struct mt7915_phy *phy = mt7915_hw_phy(hw);
@@ -1697,10 +1697,6 @@
@@ -1699,10 +1699,6 @@ mt7915_reconfig_complete(struct ieee8021
}
const struct ieee80211_ops mt7915_ops = {
@@ -53,7 +227,7 @@
.stop = mt7915_stop,
--- a/mt7915/mcu.c
+++ b/mt7915/mcu.c
@@ -232,7 +232,7 @@
@@ -253,7 +253,7 @@ mt7915_mcu_csa_finish(void *priv, u8 *ma
if (!vif->bss_conf.csa_active || vif->type == NL80211_IFTYPE_STATION)
return;
@@ -62,7 +236,16 @@
}
static void
@@ -335,7 +335,7 @@
@@ -318,7 +318,7 @@ mt7915_mcu_rx_radar_detected(struct mt79
&dev->rdd2_chandef,
GFP_ATOMIC);
else
- ieee80211_radar_detected(mphy->hw, NULL);
+ ieee80211_radar_detected(mphy->hw);
dev->hw_pattern++;
}
@@ -356,7 +356,7 @@ mt7915_mcu_cca_finish(void *priv, u8 *ma
if (!vif->bss_conf.color_change_active || vif->type == NL80211_IFTYPE_STATION)
return;
@@ -71,7 +254,7 @@
}
static void
@@ -467,10 +467,10 @@
@@ -488,10 +488,10 @@ static bool mt7915_check_he_obss_narrow_
.tolerated = true,
};
@@ -84,22 +267,9 @@
mt7915_check_he_obss_narrow_bw_ru_iter,
&iter_data);
--- a/mt792x_core.c
+++ b/mt792x_core.c
@@ -733,10 +733,6 @@
if (!(*fw_features & MT792x_FW_CAP_CNM)) {
ops->remain_on_channel = NULL;
ops->cancel_remain_on_channel = NULL;
- ops->add_chanctx = ieee80211_emulate_add_chanctx;
- ops->remove_chanctx = ieee80211_emulate_remove_chanctx;
- ops->change_chanctx = ieee80211_emulate_change_chanctx;
- ops->switch_vif_chanctx = ieee80211_emulate_switch_vif_chanctx;
ops->assign_vif_chanctx = NULL;
ops->unassign_vif_chanctx = NULL;
ops->mgd_prepare_tx = NULL;
--- a/mt7921/main.c
+++ b/mt7921/main.c
@@ -268,7 +268,7 @@
@@ -268,7 +268,7 @@ static int mt7921_start(struct ieee80211
return err;
}
@@ -108,7 +278,7 @@
{
struct mt792x_dev *dev = mt792x_hw_dev(hw);
int err = 0;
@@ -281,7 +281,7 @@
@@ -281,7 +281,7 @@ static void mt7921_stop(struct ieee80211
return;
}
@@ -117,51 +287,94 @@
}
static int
--- a/mt7996/main.c
+++ b/mt7996/main.c
@@ -93,7 +93,7 @@
return ret;
}
--- a/mt7925/main.c
+++ b/mt7925/main.c
@@ -995,7 +995,7 @@ mt7925_mac_select_links(struct mt76_dev
continue;
-static void mt7996_stop(struct ieee80211_hw *hw, bool suspend)
+static void mt7996_stop(struct ieee80211_hw *hw)
data[n_data].link_id = link_id;
- data[n_data].band = link_conf->chanreq.oper.chan->band;
+ data[n_data].band = link_conf->chandef.chan->band;
n_data++;
}
rcu_read_unlock();
@@ -1026,7 +1026,7 @@ mt7925_mac_set_links(struct mt76_dev *md
struct mt792x_vif *mvif = (struct mt792x_vif *)vif->drv_priv;
struct ieee80211_bss_conf *link_conf =
mt792x_vif_to_bss_conf(vif, mvif->deflink_id);
- struct cfg80211_chan_def *chandef = &link_conf->chanreq.oper;
+ struct cfg80211_chan_def *chandef = &link_conf->chandef;
enum nl80211_band band = chandef->chan->band, secondary_band;
u16 sel_links = mt7925_mac_select_links(mdev, vif);
@@ -1036,7 +1036,7 @@ mt7925_mac_set_links(struct mt76_dev *md
return;
link_conf = mt792x_vif_to_bss_conf(vif, secondary_link_id);
- secondary_band = link_conf->chanreq.oper.chan->band;
+ secondary_band = link_conf->chandef.chan->band;
if (band == NL80211_BAND_2GHZ ||
(band == NL80211_BAND_5GHZ && secondary_band == NL80211_BAND_6GHZ)) {
--- a/mt7925/mcu.c
+++ b/mt7925/mcu.c
@@ -1166,7 +1166,7 @@ int mt7925_mcu_set_mlo_roc(struct mt792x
if (WARN_ON_ONCE(!link_conf))
return -EPERM;
- links[i].chan = link_conf->chanreq.oper.chan;
+ links[i].chan = link_conf->chandef.chan;
if (WARN_ON_ONCE(!links[i].chan))
return -EPERM;
@@ -1597,7 +1597,7 @@ mt7925_mcu_sta_phy_tlv(struct sk_buff *s
link_conf = mt792x_vif_to_bss_conf(vif, link_sta->link_id);
mconf = mt792x_vif_to_link(mvif, link_sta->link_id);
chandef = mconf->mt76.ctx ? &mconf->mt76.ctx->def :
- &link_conf->chanreq.oper;
+ &link_conf->chandef;
tlv = mt76_connac_mcu_add_tlv(skb, STA_REC_PHY, sizeof(*phy));
phy = (struct sta_rec_phy *)tlv;
@@ -1675,7 +1675,7 @@ mt7925_mcu_sta_rate_ctrl_tlv(struct sk_b
link_conf = mt792x_vif_to_bss_conf(vif, link_sta->link_id);
mconf = mt792x_vif_to_link(mvif, link_sta->link_id);
chandef = mconf->mt76.ctx ? &mconf->mt76.ctx->def :
- &link_conf->chanreq.oper;
+ &link_conf->chandef;
band = chandef->chan->band;
tlv = mt76_connac_mcu_add_tlv(skb, STA_REC_RA, sizeof(*ra_info));
@@ -2169,7 +2169,7 @@ void mt7925_mcu_bss_rlm_tlv(struct sk_bu
struct ieee80211_chanctx_conf *ctx)
{
struct mt7996_dev *dev = mt7996_hw_dev(hw);
struct mt7996_phy *phy = mt7996_hw_phy(hw);
@@ -1448,10 +1448,6 @@
#endif
const struct ieee80211_ops mt7996_ops = {
- .add_chanctx = ieee80211_emulate_add_chanctx,
- .remove_chanctx = ieee80211_emulate_remove_chanctx,
- .change_chanctx = ieee80211_emulate_change_chanctx,
- .switch_vif_chanctx = ieee80211_emulate_switch_vif_chanctx,
.tx = mt7996_tx,
.start = mt7996_start,
.stop = mt7996_stop,
--- a/mt7996/mcu.c
+++ b/mt7996/mcu.c
@@ -353,7 +353,7 @@
if (!vif->bss_conf.csa_active || vif->type == NL80211_IFTYPE_STATION)
return;
- ieee80211_csa_finish(vif, 0);
+ ieee80211_csa_finish(vif);
}
static void
@@ -433,7 +433,7 @@
if (!vif->bss_conf.color_change_active || vif->type == NL80211_IFTYPE_STATION)
return;
- ieee80211_color_change_finish(vif, 0);
+ ieee80211_color_change_finish(vif);
}
static void
struct cfg80211_chan_def *chandef = ctx ? &ctx->def :
- &link_conf->chanreq.oper;
+ &link_conf->chandef;
int freq1 = chandef->center_freq1, freq2 = chandef->center_freq2;
enum nl80211_band band = chandef->chan->band;
struct bss_rlm_tlv *req;
@@ -2309,7 +2309,7 @@ mt7925_mcu_bss_basic_tlv(struct sk_buff
struct ieee80211_vif *vif = link_conf->vif;
struct mt792x_bss_conf *mconf = mt792x_link_conf_to_mconf(link_conf);
struct cfg80211_chan_def *chandef = ctx ? &ctx->def :
- &link_conf->chanreq.oper;
+ &link_conf->chandef;
enum nl80211_band band = chandef->chan->band;
struct mt76_connac_bss_basic_tlv *basic_req;
struct mt792x_link_sta *mlink;
@@ -2436,7 +2436,7 @@ mt7925_mcu_bss_bmc_tlv(struct sk_buff *s
struct ieee80211_bss_conf *link_conf)
{
struct cfg80211_chan_def *chandef = ctx ? &ctx->def :
- &link_conf->chanreq.oper;
+ &link_conf->chandef;
struct mt792x_bss_conf *mconf = mt792x_link_conf_to_mconf(link_conf);
enum nl80211_band band = chandef->chan->band;
struct mt76_vif *mvif = &mconf->mt76;
--- a/mt792x.h
+++ b/mt792x.h
@@ -337,7 +337,7 @@
@@ -337,7 +337,7 @@ static inline bool mt792x_dma_need_reini
#define mt792x_mutex_release(dev) \
mt76_connac_mutex_release(&(dev)->mt76, &(dev)->pm)
@@ -170,7 +383,7 @@
void mt792x_pm_wake_work(struct work_struct *work);
void mt792x_pm_power_save_work(struct work_struct *work);
void mt792x_reset(struct mt76_dev *mdev);
@@ -457,7 +457,7 @@
@@ -457,7 +457,7 @@ void mt792xu_wr(struct mt76_dev *dev, u3
u32 mt792xu_rmw(struct mt76_dev *dev, u32 addr, u32 mask, u32 val);
void mt792xu_copy(struct mt76_dev *dev, u32 offset, const void *data, int len);
void mt792xu_disconnect(struct usb_interface *usb_intf);
@@ -181,7 +394,7 @@
mt792x_skb_add_usb_sdio_hdr(struct mt792x_dev *dev, struct sk_buff *skb,
--- a/mt792x_core.c
+++ b/mt792x_core.c
@@ -117,7 +117,7 @@
@@ -117,7 +117,7 @@ void mt792x_tx(struct ieee80211_hw *hw,
}
EXPORT_SYMBOL_GPL(mt792x_tx);
@@ -190,9 +403,20 @@
{
struct mt792x_dev *dev = mt792x_hw_dev(hw);
struct mt792x_phy *phy = mt792x_hw_phy(hw);
@@ -733,10 +733,6 @@ mt792x_get_mac80211_ops(struct device *d
if (!(*fw_features & MT792x_FW_CAP_CNM)) {
ops->remain_on_channel = NULL;
ops->cancel_remain_on_channel = NULL;
- ops->add_chanctx = ieee80211_emulate_add_chanctx;
- ops->remove_chanctx = ieee80211_emulate_remove_chanctx;
- ops->change_chanctx = ieee80211_emulate_change_chanctx;
- ops->switch_vif_chanctx = ieee80211_emulate_switch_vif_chanctx;
ops->assign_vif_chanctx = NULL;
ops->unassign_vif_chanctx = NULL;
ops->mgd_prepare_tx = NULL;
--- a/mt792x_usb.c
+++ b/mt792x_usb.c
@@ -285,12 +285,12 @@
@@ -285,12 +285,12 @@ int mt792xu_init_reset(struct mt792x_dev
}
EXPORT_SYMBOL_GPL(mt792xu_init_reset);
@@ -207,242 +431,65 @@
}
EXPORT_SYMBOL_GPL(mt792xu_stop);
--- a/mt7925/main.c
+++ b/mt7925/main.c
@@ -995,7 +995,7 @@
continue;
data[n_data].link_id = link_id;
- data[n_data].band = link_conf->chanreq.oper.chan->band;
+ data[n_data].band = link_conf->chandef.chan->band;
n_data++;
}
rcu_read_unlock();
@@ -1026,7 +1026,7 @@
struct mt792x_vif *mvif = (struct mt792x_vif *)vif->drv_priv;
struct ieee80211_bss_conf *link_conf =
mt792x_vif_to_bss_conf(vif, mvif->deflink_id);
- struct cfg80211_chan_def *chandef = &link_conf->chanreq.oper;
+ struct cfg80211_chan_def *chandef = &link_conf->chandef;
enum nl80211_band band = chandef->chan->band, secondary_band;
u16 sel_links = mt7925_mac_select_links(mdev, vif);
@@ -1036,7 +1036,7 @@
return;
link_conf = mt792x_vif_to_bss_conf(vif, secondary_link_id);
- secondary_band = link_conf->chanreq.oper.chan->band;
+ secondary_band = link_conf->chandef.chan->band;
if (band == NL80211_BAND_2GHZ ||
(band == NL80211_BAND_5GHZ && secondary_band == NL80211_BAND_6GHZ)) {
--- a/mt7925/mcu.c
+++ b/mt7925/mcu.c
@@ -1166,7 +1166,7 @@
if (WARN_ON_ONCE(!link_conf))
return -EPERM;
- links[i].chan = link_conf->chanreq.oper.chan;
+ links[i].chan = link_conf->chandef.chan;
if (WARN_ON_ONCE(!links[i].chan))
return -EPERM;
@@ -1597,7 +1597,7 @@
link_conf = mt792x_vif_to_bss_conf(vif, link_sta->link_id);
mconf = mt792x_vif_to_link(mvif, link_sta->link_id);
chandef = mconf->mt76.ctx ? &mconf->mt76.ctx->def :
- &link_conf->chanreq.oper;
+ &link_conf->chandef;
tlv = mt76_connac_mcu_add_tlv(skb, STA_REC_PHY, sizeof(*phy));
phy = (struct sta_rec_phy *)tlv;
@@ -1675,7 +1675,7 @@
link_conf = mt792x_vif_to_bss_conf(vif, link_sta->link_id);
mconf = mt792x_vif_to_link(mvif, link_sta->link_id);
chandef = mconf->mt76.ctx ? &mconf->mt76.ctx->def :
- &link_conf->chanreq.oper;
+ &link_conf->chandef;
band = chandef->chan->band;
tlv = mt76_connac_mcu_add_tlv(skb, STA_REC_RA, sizeof(*ra_info));
@@ -2169,7 +2169,7 @@
struct ieee80211_chanctx_conf *ctx)
{
struct cfg80211_chan_def *chandef = ctx ? &ctx->def :
- &link_conf->chanreq.oper;
+ &link_conf->chandef;
int freq1 = chandef->center_freq1, freq2 = chandef->center_freq2;
enum nl80211_band band = chandef->chan->band;
struct bss_rlm_tlv *req;
@@ -2309,7 +2309,7 @@
struct ieee80211_vif *vif = link_conf->vif;
struct mt792x_bss_conf *mconf = mt792x_link_conf_to_mconf(link_conf);
struct cfg80211_chan_def *chandef = ctx ? &ctx->def :
- &link_conf->chanreq.oper;
+ &link_conf->chandef;
enum nl80211_band band = chandef->chan->band;
struct mt76_connac_bss_basic_tlv *basic_req;
struct mt792x_link_sta *mlink;
@@ -2436,7 +2436,7 @@
struct ieee80211_bss_conf *link_conf)
{
struct cfg80211_chan_def *chandef = ctx ? &ctx->def :
- &link_conf->chanreq.oper;
+ &link_conf->chandef;
struct mt792x_bss_conf *mconf = mt792x_link_conf_to_mconf(link_conf);
enum nl80211_band band = chandef->chan->band;
struct mt76_vif *mvif = &mconf->mt76;
--- a/mt76x0/pci.c
+++ b/mt76x0/pci.c
@@ -44,7 +44,7 @@
mt76_clear(dev, MT_WPDMA_GLO_CFG, MT_WPDMA_GLO_CFG_RX_DMA_EN);
}
-static void mt76x0e_stop(struct ieee80211_hw *hw, bool suspend)
+static void mt76x0e_stop(struct ieee80211_hw *hw)
{
struct mt76x02_dev *dev = hw->priv;
@@ -59,10 +59,6 @@
}
static const struct ieee80211_ops mt76x0e_ops = {
- .add_chanctx = ieee80211_emulate_add_chanctx,
- .remove_chanctx = ieee80211_emulate_remove_chanctx,
- .change_chanctx = ieee80211_emulate_change_chanctx,
- .switch_vif_chanctx = ieee80211_emulate_switch_vif_chanctx,
.tx = mt76x02_tx,
.start = mt76x0e_start,
.stop = mt76x0e_stop,
--- a/mt76x0/usb.c
+++ b/mt76x0/usb.c
@@ -77,7 +77,7 @@
mt76u_queues_deinit(&dev->mt76);
}
-static void mt76x0u_stop(struct ieee80211_hw *hw, bool suspend)
+static void mt76x0u_stop(struct ieee80211_hw *hw)
{
struct mt76x02_dev *dev = hw->priv;
@@ -118,10 +118,6 @@
}
static const struct ieee80211_ops mt76x0u_ops = {
- .add_chanctx = ieee80211_emulate_add_chanctx,
- .remove_chanctx = ieee80211_emulate_remove_chanctx,
- .change_chanctx = ieee80211_emulate_change_chanctx,
- .switch_vif_chanctx = ieee80211_emulate_switch_vif_chanctx,
.tx = mt76x02_tx,
.start = mt76x0u_start,
.stop = mt76x0u_stop,
--- a/mt76x2/pci_main.c
+++ b/mt76x2/pci_main.c
@@ -24,7 +24,7 @@
}
static void
-mt76x2_stop(struct ieee80211_hw *hw, bool suspend)
+mt76x2_stop(struct ieee80211_hw *hw)
{
struct mt76x02_dev *dev = hw->priv;
@@ -121,10 +121,6 @@
}
const struct ieee80211_ops mt76x2_ops = {
- .add_chanctx = ieee80211_emulate_add_chanctx,
- .remove_chanctx = ieee80211_emulate_remove_chanctx,
- .change_chanctx = ieee80211_emulate_change_chanctx,
- .switch_vif_chanctx = ieee80211_emulate_switch_vif_chanctx,
.tx = mt76x02_tx,
.start = mt76x2_start,
.stop = mt76x2_stop,
--- a/mt76x2/usb_main.c
+++ b/mt76x2/usb_main.c
@@ -22,7 +22,7 @@
return 0;
}
-static void mt76x2u_stop(struct ieee80211_hw *hw, bool suspend)
+static void mt76x2u_stop(struct ieee80211_hw *hw)
{
struct mt76x02_dev *dev = hw->priv;
@@ -88,10 +88,6 @@
}
const struct ieee80211_ops mt76x2u_ops = {
- .add_chanctx = ieee80211_emulate_add_chanctx,
- .remove_chanctx = ieee80211_emulate_remove_chanctx,
- .change_chanctx = ieee80211_emulate_change_chanctx,
- .switch_vif_chanctx = ieee80211_emulate_switch_vif_chanctx,
.tx = mt76x02_tx,
.start = mt76x2u_start,
.stop = mt76x2u_stop,
--- a/mt7603/main.c
+++ b/mt7603/main.c
@@ -23,7 +23,7 @@
}
static void
-mt7603_stop(struct ieee80211_hw *hw, bool suspend)
+mt7603_stop(struct ieee80211_hw *hw)
{
struct mt7603_dev *dev = hw->priv;
@@ -694,10 +694,6 @@
}
const struct ieee80211_ops mt7603_ops = {
- .add_chanctx = ieee80211_emulate_add_chanctx,
- .remove_chanctx = ieee80211_emulate_remove_chanctx,
- .change_chanctx = ieee80211_emulate_change_chanctx,
- .switch_vif_chanctx = ieee80211_emulate_switch_vif_chanctx,
.tx = mt7603_tx,
.start = mt7603_start,
.stop = mt7603_stop,
--- a/mt7615/main.c
+++ b/mt7615/main.c
@@ -91,7 +91,7 @@
--- a/mt7996/main.c
+++ b/mt7996/main.c
@@ -93,7 +93,7 @@ static int mt7996_start(struct ieee80211
return ret;
}
-static void mt7615_stop(struct ieee80211_hw *hw, bool suspend)
+static void mt7615_stop(struct ieee80211_hw *hw)
-static void mt7996_stop(struct ieee80211_hw *hw, bool suspend)
+static void mt7996_stop(struct ieee80211_hw *hw)
{
struct mt7615_dev *dev = mt7615_hw_dev(hw);
struct mt7615_phy *phy = mt7615_hw_phy(hw);
@@ -1313,10 +1313,6 @@
#endif /* CONFIG_PM */
struct mt7996_dev *dev = mt7996_hw_dev(hw);
struct mt7996_phy *phy = mt7996_hw_phy(hw);
@@ -1447,10 +1447,6 @@ mt7996_net_fill_forward_path(struct ieee
#endif
const struct ieee80211_ops mt7615_ops = {
const struct ieee80211_ops mt7996_ops = {
- .add_chanctx = ieee80211_emulate_add_chanctx,
- .remove_chanctx = ieee80211_emulate_remove_chanctx,
- .change_chanctx = ieee80211_emulate_change_chanctx,
- .switch_vif_chanctx = ieee80211_emulate_switch_vif_chanctx,
.tx = mt7615_tx,
.start = mt7615_start,
.stop = mt7615_stop,
--- a/mt7615/mcu.c
+++ b/mt7615/mcu.c
@@ -353,7 +353,7 @@
mt7615_mcu_csa_finish(void *priv, u8 *mac, struct ieee80211_vif *vif)
{
if (vif->bss_conf.csa_active)
- ieee80211_csa_finish(vif, 0);
+ ieee80211_csa_finish(vif);
.tx = mt7996_tx,
.start = mt7996_start,
.stop = mt7996_stop,
--- a/mt7996/mcu.c
+++ b/mt7996/mcu.c
@@ -353,7 +353,7 @@ mt7996_mcu_csa_finish(void *priv, u8 *ma
if (!vif->bss_conf.csa_active || vif->type == NL80211_IFTYPE_STATION)
return;
- ieee80211_csa_finish(vif, 0);
+ ieee80211_csa_finish(vif);
}
static void
--- a/mt7615/usb.c
+++ b/mt7615/usb.c
@@ -79,7 +79,7 @@
mutex_unlock(&usb->usb_ctrl_mtx);
@@ -383,7 +383,7 @@ mt7996_mcu_rx_radar_detected(struct mt79
&dev->rdd2_chandef,
GFP_ATOMIC);
else
- ieee80211_radar_detected(mphy->hw, NULL);
+ ieee80211_radar_detected(mphy->hw);
dev->hw_pattern++;
}
-static void mt7663u_stop(struct ieee80211_hw *hw, bool suspend)
+static void mt7663u_stop(struct ieee80211_hw *hw)
{
struct mt7615_phy *phy = mt7615_hw_phy(hw);
struct mt7615_dev *dev = hw->priv;
@@ -433,7 +433,7 @@ mt7996_mcu_cca_finish(void *priv, u8 *ma
if (!vif->bss_conf.color_change_active || vif->type == NL80211_IFTYPE_STATION)
return;
- ieee80211_color_change_finish(vif, 0);
+ ieee80211_color_change_finish(vif);
}
static void
--- a/tx.c
+++ b/tx.c
@@ -350,7 +350,7 @@ mt76_tx(struct mt76_phy *phy, struct iee
info->hw_queue |= FIELD_PREP(MT_TX_HW_QUEUE_PHY, phy->band_idx);
if ((info->flags & IEEE80211_TX_CTL_TX_OFFCHAN) ||
- (info->control.flags & IEEE80211_TX_CTRL_DONT_USE_RATE_MASK))
+ (info->control.flags & IEEE80211_TX_CTRL_SCAN_TX))
head = &wcid->tx_offchannel;
else
head = &wcid->tx_pending;
@@ -1,3 +1,12 @@
--- a/Makefile
+++ b/Makefile
@@ -1,5 +1,5 @@
# SPDX-License-Identifier: GPL-2.0-only
-EXTRA_CFLAGS += -Werror -DCONFIG_MT76_LEDS
+EXTRA_CFLAGS += -Werror -Wno-unused-variable -DCONFIG_MT76_LEDS
obj-m := mt76.o
obj-$(CONFIG_MT76_USB) += mt76-usb.o
obj-$(CONFIG_MT76_SDIO) += mt76-sdio.o
--- a/mac80211.c
+++ b/mac80211.c
@@ -582,7 +582,11 @@ int mt76_create_page_pool(struct mt76_de
@@ -7,11 +7,9 @@ Subject: [PATCH] add tx_power check during eeprom loading for BE14
mt7996/eeprom.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/mt7996/eeprom.c b/mt7996/eeprom.c
index 53dfac02f..a699668ca 100644
--- a/mt7996/eeprom.c
+++ b/mt7996/eeprom.c
@@ -206,6 +206,13 @@ static int mt7996_eeprom_load(struct mt7996_dev *dev)
@@ -206,6 +206,13 @@ static int mt7996_eeprom_load(struct mt7
goto out;
}
}
+3 -3
View File
@@ -6,12 +6,12 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=adguardhome
PKG_VERSION:=0.107.71
PKG_VERSION:=0.107.72
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/AdguardTeam/AdGuardHome/tar.gz/v$(PKG_VERSION)?
PKG_HASH:=f3dde5da6ba48270ac25bd2f501c4ce1af54ddeef93fcd84ef3a8270cec9539f
PKG_HASH:=8f6d1cba4a7b7e986840f2a7dbaeb0dd9af51b60a49fa709cf30b9beba841c76
PKG_BUILD_DIR:=$(BUILD_DIR)/AdGuardHome-$(PKG_VERSION)
PKG_LICENSE:=GPL-3.0-only
@@ -58,7 +58,7 @@ define Download/adguardhome-frontend
URL:=https://github.com/AdguardTeam/AdGuardHome/releases/download/v$(PKG_VERSION)/
URL_FILE:=AdGuardHome_frontend.tar.gz
FILE:=$(FRONTEND_FILE)
HASH:=51b229a5dff010c17bd8894bbf4291907e93708c366801e32181be7f37dd4488
HASH:=bfdedb78b10269d2b263fcea658b24ee7597770be1ca635d56f6419f825dfecc
endef
define Build/Prepare
+1 -1
View File
@@ -1 +1 @@
71a7ecb25823f2f28620f2f94dc9dd3a5c62c717
1a14d2a2f8327c82a9b24f4fdaabae35e1619e94
+24 -24
View File
@@ -27,8 +27,8 @@ require (
github.com/sagernet/asc-go v0.0.0-20241217030726-d563060fe4e1
github.com/sagernet/bbolt v0.0.0-20231014093535-ea5cb2fe9f0a
github.com/sagernet/cors v1.2.1
github.com/sagernet/cronet-go v0.0.0-20260217163133-71a7ecb25823
github.com/sagernet/cronet-go/all v0.0.0-20260217163133-71a7ecb25823
github.com/sagernet/cronet-go v0.0.0-20260218135011-341ab5a7e12b
github.com/sagernet/cronet-go/all v0.0.0-20260218135011-341ab5a7e12b
github.com/sagernet/fswatch v0.1.1
github.com/sagernet/gomobile v0.1.11
github.com/sagernet/gvisor v0.0.0-20250811.0-sing-box-mod.1
@@ -105,28 +105,28 @@ require (
github.com/prometheus-community/pro-bing v0.4.0 // indirect
github.com/quic-go/qpack v0.6.0 // indirect
github.com/safchain/ethtool v0.3.0 // indirect
github.com/sagernet/cronet-go/lib/android_386 v0.0.0-20260217162658-2bfd08238a86 // indirect
github.com/sagernet/cronet-go/lib/android_amd64 v0.0.0-20260217162658-2bfd08238a86 // indirect
github.com/sagernet/cronet-go/lib/android_arm v0.0.0-20260217162658-2bfd08238a86 // indirect
github.com/sagernet/cronet-go/lib/android_arm64 v0.0.0-20260217162658-2bfd08238a86 // indirect
github.com/sagernet/cronet-go/lib/darwin_amd64 v0.0.0-20260217162658-2bfd08238a86 // indirect
github.com/sagernet/cronet-go/lib/darwin_arm64 v0.0.0-20260217162658-2bfd08238a86 // indirect
github.com/sagernet/cronet-go/lib/ios_amd64_simulator v0.0.0-20260217162658-2bfd08238a86 // indirect
github.com/sagernet/cronet-go/lib/ios_arm64 v0.0.0-20260217162658-2bfd08238a86 // indirect
github.com/sagernet/cronet-go/lib/ios_arm64_simulator v0.0.0-20260217162658-2bfd08238a86 // indirect
github.com/sagernet/cronet-go/lib/linux_386 v0.0.0-20260217162658-2bfd08238a86 // indirect
github.com/sagernet/cronet-go/lib/linux_386_musl v0.0.0-20260217162658-2bfd08238a86 // indirect
github.com/sagernet/cronet-go/lib/linux_amd64 v0.0.0-20260217162658-2bfd08238a86 // indirect
github.com/sagernet/cronet-go/lib/linux_amd64_musl v0.0.0-20260217162658-2bfd08238a86 // indirect
github.com/sagernet/cronet-go/lib/linux_arm v0.0.0-20260217162658-2bfd08238a86 // indirect
github.com/sagernet/cronet-go/lib/linux_arm64 v0.0.0-20260217162658-2bfd08238a86 // indirect
github.com/sagernet/cronet-go/lib/linux_arm64_musl v0.0.0-20260217162658-2bfd08238a86 // indirect
github.com/sagernet/cronet-go/lib/linux_arm_musl v0.0.0-20260217162658-2bfd08238a86 // indirect
github.com/sagernet/cronet-go/lib/tvos_amd64_simulator v0.0.0-20260217162658-2bfd08238a86 // indirect
github.com/sagernet/cronet-go/lib/tvos_arm64 v0.0.0-20260217162658-2bfd08238a86 // indirect
github.com/sagernet/cronet-go/lib/tvos_arm64_simulator v0.0.0-20260217162658-2bfd08238a86 // indirect
github.com/sagernet/cronet-go/lib/windows_amd64 v0.0.0-20260217162658-2bfd08238a86 // indirect
github.com/sagernet/cronet-go/lib/windows_arm64 v0.0.0-20260217162658-2bfd08238a86 // indirect
github.com/sagernet/cronet-go/lib/android_386 v0.0.0-20260218134507-0233d9d13e55 // indirect
github.com/sagernet/cronet-go/lib/android_amd64 v0.0.0-20260218134507-0233d9d13e55 // indirect
github.com/sagernet/cronet-go/lib/android_arm v0.0.0-20260218134507-0233d9d13e55 // indirect
github.com/sagernet/cronet-go/lib/android_arm64 v0.0.0-20260218134507-0233d9d13e55 // indirect
github.com/sagernet/cronet-go/lib/darwin_amd64 v0.0.0-20260218134507-0233d9d13e55 // indirect
github.com/sagernet/cronet-go/lib/darwin_arm64 v0.0.0-20260218134507-0233d9d13e55 // indirect
github.com/sagernet/cronet-go/lib/ios_amd64_simulator v0.0.0-20260218134507-0233d9d13e55 // indirect
github.com/sagernet/cronet-go/lib/ios_arm64 v0.0.0-20260218134507-0233d9d13e55 // indirect
github.com/sagernet/cronet-go/lib/ios_arm64_simulator v0.0.0-20260218134507-0233d9d13e55 // indirect
github.com/sagernet/cronet-go/lib/linux_386 v0.0.0-20260218134507-0233d9d13e55 // indirect
github.com/sagernet/cronet-go/lib/linux_386_musl v0.0.0-20260218134507-0233d9d13e55 // indirect
github.com/sagernet/cronet-go/lib/linux_amd64 v0.0.0-20260218134507-0233d9d13e55 // indirect
github.com/sagernet/cronet-go/lib/linux_amd64_musl v0.0.0-20260218134507-0233d9d13e55 // indirect
github.com/sagernet/cronet-go/lib/linux_arm v0.0.0-20260218134507-0233d9d13e55 // indirect
github.com/sagernet/cronet-go/lib/linux_arm64 v0.0.0-20260218134507-0233d9d13e55 // indirect
github.com/sagernet/cronet-go/lib/linux_arm64_musl v0.0.0-20260218134507-0233d9d13e55 // indirect
github.com/sagernet/cronet-go/lib/linux_arm_musl v0.0.0-20260218134507-0233d9d13e55 // indirect
github.com/sagernet/cronet-go/lib/tvos_amd64_simulator v0.0.0-20260218134507-0233d9d13e55 // indirect
github.com/sagernet/cronet-go/lib/tvos_arm64 v0.0.0-20260218134507-0233d9d13e55 // indirect
github.com/sagernet/cronet-go/lib/tvos_arm64_simulator v0.0.0-20260218134507-0233d9d13e55 // indirect
github.com/sagernet/cronet-go/lib/windows_amd64 v0.0.0-20260218134507-0233d9d13e55 // indirect
github.com/sagernet/cronet-go/lib/windows_arm64 v0.0.0-20260218134507-0233d9d13e55 // indirect
github.com/sagernet/netlink v0.0.0-20240612041022-b9a21c07ac6a // indirect
github.com/sagernet/nftables v0.3.0-beta.4 // indirect
github.com/spf13/pflag v1.0.9 // indirect
+48 -48
View File
@@ -150,54 +150,54 @@ github.com/sagernet/bbolt v0.0.0-20231014093535-ea5cb2fe9f0a h1:+NkI2670SQpQWvkk
github.com/sagernet/bbolt v0.0.0-20231014093535-ea5cb2fe9f0a/go.mod h1:63s7jpZqcDAIpj8oI/1v4Izok+npJOHACFCU6+huCkM=
github.com/sagernet/cors v1.2.1 h1:Cv5Z8y9YSD6Gm+qSpNrL3LO4lD3eQVvbFYJSG7JCMHQ=
github.com/sagernet/cors v1.2.1/go.mod h1:O64VyOjjhrkLmQIjF4KGRrJO/5dVXFdpEmCW/eISRAI=
github.com/sagernet/cronet-go v0.0.0-20260217163133-71a7ecb25823 h1:9XbfvBCk5ELnJ3eCLwXpJM0CDBba0ZHJOfmFyhNFCow=
github.com/sagernet/cronet-go v0.0.0-20260217163133-71a7ecb25823/go.mod h1:hwFHBEjjthyEquDULbr4c4ucMedp8Drb6Jvm2kt/0Bw=
github.com/sagernet/cronet-go/all v0.0.0-20260217163133-71a7ecb25823 h1:WxH8uD7xRmmvGb4lRrr2E7NMCXtti2+pQTnUt61BcmY=
github.com/sagernet/cronet-go/all v0.0.0-20260217163133-71a7ecb25823/go.mod h1:eQ7M+vx5EvWIxwhpOowy2uUIKeJrKKgX0rgsV9RK+ug=
github.com/sagernet/cronet-go/lib/android_386 v0.0.0-20260217162658-2bfd08238a86 h1:jkUKjlIJjUGpYbwhZgjEnAe/IJAtnszMH1T08g+DuaM=
github.com/sagernet/cronet-go/lib/android_386 v0.0.0-20260217162658-2bfd08238a86/go.mod h1:XXDwdjX/T8xftoeJxQmbBoYXZp8MAPFR2CwbFuTpEtw=
github.com/sagernet/cronet-go/lib/android_amd64 v0.0.0-20260217162658-2bfd08238a86 h1:ypY9a/AfaGhPGVYdoJ/uQOq0oK8BEI5GPrVfwqvyHrg=
github.com/sagernet/cronet-go/lib/android_amd64 v0.0.0-20260217162658-2bfd08238a86/go.mod h1:iNiUGoLtnr8/JTuVNj7XJbmpOAp2C6+B81KDrPxwaZM=
github.com/sagernet/cronet-go/lib/android_arm v0.0.0-20260217162658-2bfd08238a86 h1:xue0tra/qcrCtxcSng4WYS4q01Dnsww9u6XSoVJA4sg=
github.com/sagernet/cronet-go/lib/android_arm v0.0.0-20260217162658-2bfd08238a86/go.mod h1:19ILNUOGIzRdOqa2mq+iY0JoHxuieB7/lnjYeaA2vEc=
github.com/sagernet/cronet-go/lib/android_arm64 v0.0.0-20260217162658-2bfd08238a86 h1:1RwX26i/6tPMG5/xty16eD7W6gBL1vcOTeZ6hEN6bY4=
github.com/sagernet/cronet-go/lib/android_arm64 v0.0.0-20260217162658-2bfd08238a86/go.mod h1:JxzGyQf94Cr6sBShKqODGDyRUlESfJK/Njcz9Lz6qMQ=
github.com/sagernet/cronet-go/lib/darwin_amd64 v0.0.0-20260217162658-2bfd08238a86 h1:51GT1OcjjWGlTQZJC5GASpOxGHbr8PVs+wJo7znMqjQ=
github.com/sagernet/cronet-go/lib/darwin_amd64 v0.0.0-20260217162658-2bfd08238a86/go.mod h1:KN+9T9TBycGOLzmKU4QdcHAJEj6Nlx48ifnlTvvHMvs=
github.com/sagernet/cronet-go/lib/darwin_arm64 v0.0.0-20260217162658-2bfd08238a86 h1:abnUJ2RSsvhfqL2rAwGL9wt9obNQttOOKVRa+d/lzX0=
github.com/sagernet/cronet-go/lib/darwin_arm64 v0.0.0-20260217162658-2bfd08238a86/go.mod h1:kojvtUc29KKnk8hs2QIANynVR59921SnGWA9kXohHc0=
github.com/sagernet/cronet-go/lib/ios_amd64_simulator v0.0.0-20260217162658-2bfd08238a86 h1:qhrdVZgYGaRuwUXKxYWyXxiM3+upyX0vXbVwvfqsPl4=
github.com/sagernet/cronet-go/lib/ios_amd64_simulator v0.0.0-20260217162658-2bfd08238a86/go.mod h1:hkQzRE5GDbaH1/ioqYh0Taho4L6i0yLRCVEZ5xHz5M0=
github.com/sagernet/cronet-go/lib/ios_arm64 v0.0.0-20260217162658-2bfd08238a86 h1:SemvxwP5Sqxg2V9kcM/ERlXv7qbiNDJXb7gOBmlJ1o0=
github.com/sagernet/cronet-go/lib/ios_arm64 v0.0.0-20260217162658-2bfd08238a86/go.mod h1:tzVJFTOm66UxLxy6K0ZN5Ic2PC79e+sKKnt+V9puEa4=
github.com/sagernet/cronet-go/lib/ios_arm64_simulator v0.0.0-20260217162658-2bfd08238a86 h1:v88k4gE/Nr53Cmx/F3fz+k7izllcnZIg2Y4f7dSkoRE=
github.com/sagernet/cronet-go/lib/ios_arm64_simulator v0.0.0-20260217162658-2bfd08238a86/go.mod h1:M/pN6m3j0HFU6/y83n0HU6GLYys3tYdr/xTE8hVEGMo=
github.com/sagernet/cronet-go/lib/linux_386 v0.0.0-20260217162658-2bfd08238a86 h1:HpAanCJjJwoVandt54XjU6LhH1sVgO51H9aVh4RAt3c=
github.com/sagernet/cronet-go/lib/linux_386 v0.0.0-20260217162658-2bfd08238a86/go.mod h1:cGh5hO6eljCo6KMQ/Cel8Xgq4+etL0awZLRBDVG1EZQ=
github.com/sagernet/cronet-go/lib/linux_386_musl v0.0.0-20260217162658-2bfd08238a86 h1:5LZxdx4X+wG5t8ESxjV41UcxoUM2rS48aprnkY+nTdY=
github.com/sagernet/cronet-go/lib/linux_386_musl v0.0.0-20260217162658-2bfd08238a86/go.mod h1:JFE0/cxaKkx0wqPMZU7MgaplQlU0zudv82dROJjClKU=
github.com/sagernet/cronet-go/lib/linux_amd64 v0.0.0-20260217162658-2bfd08238a86 h1:Pj/ik7Ux5jWEhUiiavILNwO2k4A4KmijJ2yqDEnxJuY=
github.com/sagernet/cronet-go/lib/linux_amd64 v0.0.0-20260217162658-2bfd08238a86/go.mod h1:vU8VftFeSt7fURCa3JXD6+k6ss1YAX+idQjPvHmJ2tI=
github.com/sagernet/cronet-go/lib/linux_amd64_musl v0.0.0-20260217162658-2bfd08238a86 h1:gDlkdfFVjpWmUfVDXLmRkvfOt7UM9M9CNKJLJWfH4oI=
github.com/sagernet/cronet-go/lib/linux_amd64_musl v0.0.0-20260217162658-2bfd08238a86/go.mod h1:vCe4OUuL+XOUge9v3MyTD45BnuAXiH+DkjN9quDXJzQ=
github.com/sagernet/cronet-go/lib/linux_arm v0.0.0-20260217162658-2bfd08238a86 h1:5cgey8hMXnc7oSD6h4qJtGfBSPxCXMoq3vsiuD3lgsE=
github.com/sagernet/cronet-go/lib/linux_arm v0.0.0-20260217162658-2bfd08238a86/go.mod h1:w9amBWrvjtohQzBGCKJ7LCh22LhTIJs4sE7cYaKQzM0=
github.com/sagernet/cronet-go/lib/linux_arm64 v0.0.0-20260217162658-2bfd08238a86 h1:qxl5A0k37PBhCZPkswKFN/Ig2PMYCm/9sCFT6e/gRjc=
github.com/sagernet/cronet-go/lib/linux_arm64 v0.0.0-20260217162658-2bfd08238a86/go.mod h1:TqlsFtcYS/etTeck46kHBeT8Le0Igw1Q/AV88UnMS3s=
github.com/sagernet/cronet-go/lib/linux_arm64_musl v0.0.0-20260217162658-2bfd08238a86 h1:5tKDHiM9rHIpnTm4tIqOrcjWZ9SrU9RTgPLCVy9C1Io=
github.com/sagernet/cronet-go/lib/linux_arm64_musl v0.0.0-20260217162658-2bfd08238a86/go.mod h1:B6Qd0vys8sv9OKVRN6J9RqDzYRGE938Fb2zrYdBDyTQ=
github.com/sagernet/cronet-go/lib/linux_arm_musl v0.0.0-20260217162658-2bfd08238a86 h1:o5hG0iP/xkGx+MkOJwUQp4nkg2Qhz8KIZuON2VcdF4Y=
github.com/sagernet/cronet-go/lib/linux_arm_musl v0.0.0-20260217162658-2bfd08238a86/go.mod h1:3tXMMFY7AHugOVBZ5Al7cL7JKsnFOe5bMVr0hZPk3ow=
github.com/sagernet/cronet-go/lib/tvos_amd64_simulator v0.0.0-20260217162658-2bfd08238a86 h1:ONOmm7KXwv9ArBdw2ozHPcqiiQH5Z2dhE78204iLB5g=
github.com/sagernet/cronet-go/lib/tvos_amd64_simulator v0.0.0-20260217162658-2bfd08238a86/go.mod h1:aaX0YGl8nhGmfRWI8bc3BtDjY8Vzx6O0cS/e1uqxDq4=
github.com/sagernet/cronet-go/lib/tvos_arm64 v0.0.0-20260217162658-2bfd08238a86 h1:9kPYonCM0Jly0vDGWeCM5+rwtujgXjkhimTqDGKhVpo=
github.com/sagernet/cronet-go/lib/tvos_arm64 v0.0.0-20260217162658-2bfd08238a86/go.mod h1:EdzMKA96xITc42QEI+ct4SwqX8Dn3ltKK8wzdkLWpSc=
github.com/sagernet/cronet-go/lib/tvos_arm64_simulator v0.0.0-20260217162658-2bfd08238a86 h1:7j3jZ260pELBZ9F/3pKPiuVlQhJdCqjA3lRWGtaeT14=
github.com/sagernet/cronet-go/lib/tvos_arm64_simulator v0.0.0-20260217162658-2bfd08238a86/go.mod h1:qix4kv1TTAJ5tY4lJ9vjhe9EY4mM+B7H5giOhbxDVcc=
github.com/sagernet/cronet-go/lib/windows_amd64 v0.0.0-20260217162658-2bfd08238a86 h1:/2Ks+eLOFXurh5bF3xPbdhQ+rHYkG27RhGORNSDDHjU=
github.com/sagernet/cronet-go/lib/windows_amd64 v0.0.0-20260217162658-2bfd08238a86/go.mod h1:lm9w/oCCRyBiUa3G8lDQTT8x/ONUvgVR2iV9fVzUZB8=
github.com/sagernet/cronet-go/lib/windows_arm64 v0.0.0-20260217162658-2bfd08238a86 h1:6YzyCGxKTFBOU9PXW2kYLjfxFTwbv0vwYVDTRcNTe3M=
github.com/sagernet/cronet-go/lib/windows_arm64 v0.0.0-20260217162658-2bfd08238a86/go.mod h1:n34YyLgapgjWdKa0IoeczjAFCwD3/dxbsH5sucKw0bw=
github.com/sagernet/cronet-go v0.0.0-20260218135011-341ab5a7e12b h1:C+VmtHpvMdH+lItwBvJmIqrBr3+xxNRiCs+pIRYR4iU=
github.com/sagernet/cronet-go v0.0.0-20260218135011-341ab5a7e12b/go.mod h1:hwFHBEjjthyEquDULbr4c4ucMedp8Drb6Jvm2kt/0Bw=
github.com/sagernet/cronet-go/all v0.0.0-20260218135011-341ab5a7e12b h1:ZV95cJT0nnrxfldjJ377hKpqHYMtPAsq4r/UIgp7/Ws=
github.com/sagernet/cronet-go/all v0.0.0-20260218135011-341ab5a7e12b/go.mod h1:O9ntqK/rqU71lkDTyIw3I3lShG85/Vxd3Q+eiQkbJtc=
github.com/sagernet/cronet-go/lib/android_386 v0.0.0-20260218134507-0233d9d13e55 h1:RPlT6blVhQQ+AUztnAx/JCOGCdR1H1UsAJ2Eg9t7vHs=
github.com/sagernet/cronet-go/lib/android_386 v0.0.0-20260218134507-0233d9d13e55/go.mod h1:XXDwdjX/T8xftoeJxQmbBoYXZp8MAPFR2CwbFuTpEtw=
github.com/sagernet/cronet-go/lib/android_amd64 v0.0.0-20260218134507-0233d9d13e55 h1:F6r8Nnzm6J8IZ+goPGr8yhQ0yPQFSUwQ/WVZyT78NZ8=
github.com/sagernet/cronet-go/lib/android_amd64 v0.0.0-20260218134507-0233d9d13e55/go.mod h1:iNiUGoLtnr8/JTuVNj7XJbmpOAp2C6+B81KDrPxwaZM=
github.com/sagernet/cronet-go/lib/android_arm v0.0.0-20260218134507-0233d9d13e55 h1:qVhvEmTmaaVriSklO0WSOa5k41nxItuZvxhdz3y+4LY=
github.com/sagernet/cronet-go/lib/android_arm v0.0.0-20260218134507-0233d9d13e55/go.mod h1:19ILNUOGIzRdOqa2mq+iY0JoHxuieB7/lnjYeaA2vEc=
github.com/sagernet/cronet-go/lib/android_arm64 v0.0.0-20260218134507-0233d9d13e55 h1:G4qICXcO/B8VeTTV+KlNo007zEkEjLDZfSTb1yDgHVY=
github.com/sagernet/cronet-go/lib/android_arm64 v0.0.0-20260218134507-0233d9d13e55/go.mod h1:JxzGyQf94Cr6sBShKqODGDyRUlESfJK/Njcz9Lz6qMQ=
github.com/sagernet/cronet-go/lib/darwin_amd64 v0.0.0-20260218134507-0233d9d13e55 h1:O63Cn7qxNqfIvmgIFy9ZvKqusc9QP/XZXOadj21N5Eo=
github.com/sagernet/cronet-go/lib/darwin_amd64 v0.0.0-20260218134507-0233d9d13e55/go.mod h1:KN+9T9TBycGOLzmKU4QdcHAJEj6Nlx48ifnlTvvHMvs=
github.com/sagernet/cronet-go/lib/darwin_arm64 v0.0.0-20260218134507-0233d9d13e55 h1:IlqW6FBpDlYxRHVGke4/A9/b4oEGTvPqyM6buqAu9RU=
github.com/sagernet/cronet-go/lib/darwin_arm64 v0.0.0-20260218134507-0233d9d13e55/go.mod h1:kojvtUc29KKnk8hs2QIANynVR59921SnGWA9kXohHc0=
github.com/sagernet/cronet-go/lib/ios_amd64_simulator v0.0.0-20260218134507-0233d9d13e55 h1:4viN3DO5LHz/24kbIfx1sTMQplkZg0FBBpwxmc9QiUY=
github.com/sagernet/cronet-go/lib/ios_amd64_simulator v0.0.0-20260218134507-0233d9d13e55/go.mod h1:hkQzRE5GDbaH1/ioqYh0Taho4L6i0yLRCVEZ5xHz5M0=
github.com/sagernet/cronet-go/lib/ios_arm64 v0.0.0-20260218134507-0233d9d13e55 h1:6wcoqtMnDbfMCnmhld+HeEuz7LcDLQo4YTYEAkJCKCU=
github.com/sagernet/cronet-go/lib/ios_arm64 v0.0.0-20260218134507-0233d9d13e55/go.mod h1:tzVJFTOm66UxLxy6K0ZN5Ic2PC79e+sKKnt+V9puEa4=
github.com/sagernet/cronet-go/lib/ios_arm64_simulator v0.0.0-20260218134507-0233d9d13e55 h1:CUM2txeTIsBucTNXaKNpCapXp/BnYIQVnJRiYKtyZRw=
github.com/sagernet/cronet-go/lib/ios_arm64_simulator v0.0.0-20260218134507-0233d9d13e55/go.mod h1:M/pN6m3j0HFU6/y83n0HU6GLYys3tYdr/xTE8hVEGMo=
github.com/sagernet/cronet-go/lib/linux_386 v0.0.0-20260218134507-0233d9d13e55 h1:RDDuVWP8Jm/9u/EH7af5GvCQRQuT5vA0mxNvnoWTe4E=
github.com/sagernet/cronet-go/lib/linux_386 v0.0.0-20260218134507-0233d9d13e55/go.mod h1:cGh5hO6eljCo6KMQ/Cel8Xgq4+etL0awZLRBDVG1EZQ=
github.com/sagernet/cronet-go/lib/linux_386_musl v0.0.0-20260218134507-0233d9d13e55 h1:hJZ3MMglbom0vg/5kNHawipJfWyZIV1lvATpVAVwwQ0=
github.com/sagernet/cronet-go/lib/linux_386_musl v0.0.0-20260218134507-0233d9d13e55/go.mod h1:JFE0/cxaKkx0wqPMZU7MgaplQlU0zudv82dROJjClKU=
github.com/sagernet/cronet-go/lib/linux_amd64 v0.0.0-20260218134507-0233d9d13e55 h1:wST2ZH1xSXYjI/0HySDVjn/eo55BkFH9OSqwzSZ+WkQ=
github.com/sagernet/cronet-go/lib/linux_amd64 v0.0.0-20260218134507-0233d9d13e55/go.mod h1:vU8VftFeSt7fURCa3JXD6+k6ss1YAX+idQjPvHmJ2tI=
github.com/sagernet/cronet-go/lib/linux_amd64_musl v0.0.0-20260218134507-0233d9d13e55 h1:BIm7F6FmsqsViVFFNmW89UYZEWi1pYcDO7l9odfDwzw=
github.com/sagernet/cronet-go/lib/linux_amd64_musl v0.0.0-20260218134507-0233d9d13e55/go.mod h1:vCe4OUuL+XOUge9v3MyTD45BnuAXiH+DkjN9quDXJzQ=
github.com/sagernet/cronet-go/lib/linux_arm v0.0.0-20260218134507-0233d9d13e55 h1:Iv3xWMuhpZjKoHDTMGfkK+W4cjizkROgp9o72/yoGgg=
github.com/sagernet/cronet-go/lib/linux_arm v0.0.0-20260218134507-0233d9d13e55/go.mod h1:w9amBWrvjtohQzBGCKJ7LCh22LhTIJs4sE7cYaKQzM0=
github.com/sagernet/cronet-go/lib/linux_arm64 v0.0.0-20260218134507-0233d9d13e55 h1:safWOBgqIOgQhqFwdwaqs5jfDoCyas0WefbZT9EAXkE=
github.com/sagernet/cronet-go/lib/linux_arm64 v0.0.0-20260218134507-0233d9d13e55/go.mod h1:TqlsFtcYS/etTeck46kHBeT8Le0Igw1Q/AV88UnMS3s=
github.com/sagernet/cronet-go/lib/linux_arm64_musl v0.0.0-20260218134507-0233d9d13e55 h1:wt0ppRaCchFk4mvqG0ssxO9ghzMWERubZv4aFWW8olI=
github.com/sagernet/cronet-go/lib/linux_arm64_musl v0.0.0-20260218134507-0233d9d13e55/go.mod h1:B6Qd0vys8sv9OKVRN6J9RqDzYRGE938Fb2zrYdBDyTQ=
github.com/sagernet/cronet-go/lib/linux_arm_musl v0.0.0-20260218134507-0233d9d13e55 h1:TOs3sFXM+xBqbfVtrPuGUwZX6wogvr/4pSQJdJ/VtP0=
github.com/sagernet/cronet-go/lib/linux_arm_musl v0.0.0-20260218134507-0233d9d13e55/go.mod h1:3tXMMFY7AHugOVBZ5Al7cL7JKsnFOe5bMVr0hZPk3ow=
github.com/sagernet/cronet-go/lib/tvos_amd64_simulator v0.0.0-20260218134507-0233d9d13e55 h1:hP78IIYoRag8taThZC0GuBIR13MKa+/LI+zf1xt1UUQ=
github.com/sagernet/cronet-go/lib/tvos_amd64_simulator v0.0.0-20260218134507-0233d9d13e55/go.mod h1:aaX0YGl8nhGmfRWI8bc3BtDjY8Vzx6O0cS/e1uqxDq4=
github.com/sagernet/cronet-go/lib/tvos_arm64 v0.0.0-20260218134507-0233d9d13e55 h1:A+NgQiSyPOeTaWU5J3OH1kij7TbMi+jnsIT9ulD0uwA=
github.com/sagernet/cronet-go/lib/tvos_arm64 v0.0.0-20260218134507-0233d9d13e55/go.mod h1:EdzMKA96xITc42QEI+ct4SwqX8Dn3ltKK8wzdkLWpSc=
github.com/sagernet/cronet-go/lib/tvos_arm64_simulator v0.0.0-20260218134507-0233d9d13e55 h1:uVVX7cfmwTIdqX7lePivz0jNhiU1FXp+WTNOXG77US4=
github.com/sagernet/cronet-go/lib/tvos_arm64_simulator v0.0.0-20260218134507-0233d9d13e55/go.mod h1:qix4kv1TTAJ5tY4lJ9vjhe9EY4mM+B7H5giOhbxDVcc=
github.com/sagernet/cronet-go/lib/windows_amd64 v0.0.0-20260218134507-0233d9d13e55 h1:snnlt/MQ0lCurzVyU7Dkk9wggYXfKX5r+L4tdZl6F2M=
github.com/sagernet/cronet-go/lib/windows_amd64 v0.0.0-20260218134507-0233d9d13e55/go.mod h1:lm9w/oCCRyBiUa3G8lDQTT8x/ONUvgVR2iV9fVzUZB8=
github.com/sagernet/cronet-go/lib/windows_arm64 v0.0.0-20260218134507-0233d9d13e55 h1:cXGxX2EbTB9Ovfl5cr/0ZBhaXnLNkKdWAhkfACbrxnU=
github.com/sagernet/cronet-go/lib/windows_arm64 v0.0.0-20260218134507-0233d9d13e55/go.mod h1:n34YyLgapgjWdKa0IoeczjAFCwD3/dxbsH5sucKw0bw=
github.com/sagernet/fswatch v0.1.1 h1:YqID+93B7VRfqIH3PArW/XpJv5H4OLEVWDfProGoRQs=
github.com/sagernet/fswatch v0.1.1/go.mod h1:nz85laH0mkQqJfaOrqPpkwtU1znMFNVTpT/5oRsVz/o=
github.com/sagernet/gomobile v0.1.11 h1:niMQAspvuThup5eRZQpsGcbM76zAvnsGr7RUIpnQMDQ=
+2 -2
View File
@@ -21,13 +21,13 @@ define Download/geoip
HASH:=838ab094bc01b9bafc849ce70c6f439dcb158d0c0dd41441ddb3c38d4d9ef563
endef
GEOSITE_VER:=20260217131649
GEOSITE_VER:=20260219092429
GEOSITE_FILE:=dlc.dat.$(GEOSITE_VER)
define Download/geosite
URL:=https://github.com/v2fly/domain-list-community/releases/download/$(GEOSITE_VER)/
URL_FILE:=dlc.dat
FILE:=$(GEOSITE_FILE)
HASH:=0ad1ae4f118efdcabf2d8127014914f02562408f74c6bb3b035e8c2fc21c8542
HASH:=46dd30312e887a81c2da258cd027664e1bc447612aeaf5f8f62f737cd37f74fd
endef
GEOSITE_IRAN_VER:=202602160057
+2 -2
View File
@@ -6,12 +6,12 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=v2ray-plugin
PKG_VERSION:=5.44.1
PKG_VERSION:=5.45.1
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/teddysun/v2ray-plugin/tar.gz/v$(PKG_VERSION)?
PKG_HASH:=b8b00f576744716b1ab0c461a45b2b5d4195b763a49d296fd2ddfcf23db87fe5
PKG_HASH:=d1ae7cb412b4b58ea74c2e0126df068cc9281e46248540acc5a7ff42a44eea04
PKG_LICENSE:=MIT
PKG_LICENSE_FILES:=LICENSE
+2 -2
View File
@@ -1864,13 +1864,13 @@ The following extractors use this feature:
* `player_skip`: Skip some network requests that are generally needed for robust extraction. One or more of `configs` (skip client configs), `webpage` (skip initial webpage), `js` (skip js player), `initial_data` (skip initial data/next ep request). While these options can help reduce the number of requests needed or avoid some rate-limiting, they could cause issues such as missing formats or metadata. See [#860](https://github.com/yt-dlp/yt-dlp/pull/860) and [#12826](https://github.com/yt-dlp/yt-dlp/issues/12826) for more details
* `webpage_skip`: Skip extraction of embedded webpage data. One or both of `player_response`, `initial_data`. These options are for testing purposes and don't skip any network requests
* `player_params`: YouTube player parameters to use for player requests. Will overwrite any default ones set by yt-dlp.
* `player_js_variant`: The player javascript variant to use for n/sig deciphering. The known variants are: `main`, `tcc`, `tce`, `es5`, `es6`, `tv`, `tv_es6`, `phone`. The default is `tv`, and the others are for debugging purposes. You can use `actual` to go with what is prescribed by the site
* `player_js_variant`: The player javascript variant to use for n/sig deciphering. The known variants are: `main`, `tcc`, `tce`, `es5`, `es6`, `es6_tcc`, `es6_tce`, `tv`, `tv_es6`, `phone`, `house`. The default is `tv`, and the others are for debugging purposes. You can use `actual` to go with what is prescribed by the site
* `player_js_version`: The player javascript version to use for n/sig deciphering, in the format of `signature_timestamp@hash` (e.g. `20348@0004de42`). The default is to use what is prescribed by the site, and can be selected with `actual`
* `comment_sort`: `top` or `new` (default) - choose comment sorting mode (on YouTube's side)
* `max_comments`: Limit the amount of comments to gather. Comma-separated list of integers representing `max-comments,max-parents,max-replies,max-replies-per-thread,max-depth`. Default is `all,all,all,all,all`
* A `max-depth` value of `1` will discard all replies, regardless of the `max-replies` or `max-replies-per-thread` values given
* E.g. `all,all,1000,10,2` will get a maximum of 1000 replies total, with up to 10 replies per thread, and only 2 levels of depth (i.e. top-level comments plus their immediate replies). `1000,all,100` will get a maximum of 1000 comments, with a maximum of 100 replies total
* `formats`: Change the types of formats to return. `dashy` (convert HTTP to DASH), `duplicate` (identical content but different URLs or protocol; includes `dashy`), `incomplete` (cannot be downloaded completely - live dash and post-live m3u8), `missing_pot` (include formats that require a PO Token but are missing one)
* `formats`: Change the types of formats to return. `dashy` (convert HTTP to DASH), `duplicate` (identical content but different URLs or protocol; includes `dashy`), `incomplete` (cannot be downloaded completely - live dash, live adaptive https, and post-live m3u8), `missing_pot` (include formats that require a PO Token but are missing one)
* `innertube_host`: Innertube API host to use for all API requests; e.g. `studio.youtube.com`, `youtubei.googleapis.com`. Note that cookies exported from one subdomain will not work on others
* `innertube_key`: Innertube API key to use for all API requests. By default, no API key is used
* `raise_incomplete_data`: `Incomplete Data Received` raises an error instead of reporting a warning
@@ -33,9 +33,12 @@ class Variant(enum.Enum):
tce = 'player_ias_tce.vflset/en_US/base.js'
es5 = 'player_es5.vflset/en_US/base.js'
es6 = 'player_es6.vflset/en_US/base.js'
es6_tcc = 'player_es6_tcc.vflset/en_US/base.js'
es6_tce = 'player_es6_tce.vflset/en_US/base.js'
tv = 'tv-player-ias.vflset/tv-player-ias.js'
tv_es6 = 'tv-player-es6.vflset/tv-player-es6.js'
phone = 'player-plasma-ias-phone-en_US.vflset/base.js'
house = 'house_brand_player.vflset/en_US/base.js'
@dataclasses.dataclass
+1 -2
View File
@@ -384,8 +384,7 @@ class DailymotionIE(DailymotionBaseInfoExtractor):
last_error = None
for note, kwargs in (
('Downloading m3u8 information', {}),
('Retrying m3u8 download with randomized headers', {
('Downloading m3u8 information with randomized headers', {
'headers': self._generate_blockbuster_headers(),
}),
('Retrying m3u8 download with Chrome impersonation', {
+2 -4
View File
@@ -9,13 +9,13 @@ from ..utils import (
int_or_none,
qualities,
smuggle_url,
traverse_obj,
unescapeHTML,
unified_strdate,
unsmuggle_url,
url_or_none,
urlencode_postdata,
)
from ..utils.traversal import find_element, traverse_obj
class OdnoklassnikiIE(InfoExtractor):
@@ -264,9 +264,7 @@ class OdnoklassnikiIE(InfoExtractor):
note='Downloading desktop webpage',
headers={'Referer': smuggled['referrer']} if smuggled.get('referrer') else {})
error = self._search_regex(
r'[^>]+class="vp_video_stub_txt"[^>]*>([^<]+)<',
webpage, 'error', default=None)
error = traverse_obj(webpage, {find_element(cls='vp_video_stub_txt')})
# Direct link from boosty
if (error == 'The author of this video has not been found or is blocked'
and not smuggled.get('referrer') and mode == 'videoembed'):
+10 -6
View File
@@ -131,11 +131,15 @@ class TwitterBaseIE(InfoExtractor):
video_id, headers=headers, query=query, expected_status=allowed_status,
note=f'Downloading {"GraphQL" if graphql else "legacy API"} JSON')
if result.get('errors'):
errors = ', '.join(set(traverse_obj(result, ('errors', ..., 'message', {str}))))
if errors and 'not authorized' in errors:
self.raise_login_required(remove_end(errors, '.'))
raise ExtractorError(f'Error(s) while querying API: {errors or "Unknown error"}')
if error_msg := ', '.join(set(traverse_obj(result, ('errors', ..., 'message', {str})))):
# Errors with the message 'Dependency: Unspecified' are a false positive
# See https://github.com/yt-dlp/yt-dlp/issues/15963
if error_msg.lower() == 'dependency: unspecified':
self.write_debug(f'Ignoring Twitter API error: "{error_msg}"')
elif 'not authorized' in error_msg.lower():
self.raise_login_required(remove_end(error_msg, '.'))
else:
raise ExtractorError(f'Error(s) while querying API: {error_msg or "Unknown error"}')
return result
@@ -1078,7 +1082,7 @@ class TwitterIE(TwitterBaseIE):
raise ExtractorError(f'Twitter API says: {cause or "Unknown error"}', expected=True)
elif typename == 'TweetUnavailable':
reason = result.get('reason')
if reason == 'NsfwLoggedOut':
if reason in ('NsfwLoggedOut', 'NsfwViewerHasNoStatedAge'):
self.raise_login_required('NSFW tweet requires authentication')
elif reason == 'Protected':
self.raise_login_required('You are not authorized to view this protected tweet')
+31 -7
View File
@@ -1,6 +1,7 @@
import collections
import hashlib
import re
import urllib.parse
from .common import InfoExtractor
from .dailymotion import DailymotionIE
@@ -8,6 +9,7 @@ from .odnoklassniki import OdnoklassnikiIE
from .sibnet import SibnetEmbedIE
from .vimeo import VimeoIE
from .youtube import YoutubeIE
from ..jsinterp import JSInterpreter
from ..utils import (
ExtractorError,
UserNotLive,
@@ -36,16 +38,38 @@ class VKBaseIE(InfoExtractor):
def _download_webpage_handle(self, url_or_request, video_id, *args, fatal=True, **kwargs):
response = super()._download_webpage_handle(url_or_request, video_id, *args, fatal=fatal, **kwargs)
challenge_url, cookie = response[1].url if response else '', None
if challenge_url.startswith('https://vk.com/429.html?'):
cookie = self._get_cookies(challenge_url).get('hash429')
if not cookie:
if response is False:
return response
hash429 = hashlib.md5(cookie.value.encode('ascii')).hexdigest()
webpage, urlh = response
challenge_url = urlh.url
if urllib.parse.urlparse(challenge_url).path != '/challenge.html':
return response
self.to_screen(join_nonempty(
video_id and f'[{video_id}]',
'Received a JS challenge response',
delim=' '))
challenge_hash = traverse_obj(challenge_url, (
{parse_qs}, 'hash429', -1, {require('challenge hash')}))
func_code = self._search_regex(
r'(?s)var\s+salt\s*=\s*\(\s*function\s*\(\)\s*(\{.+?\})\s*\)\(\);\s*var\s+hash',
webpage, 'JS challenge salt function')
jsi = JSInterpreter(f'function salt() {func_code}')
salt = jsi.extract_function('salt')([])
self.write_debug(f'Generated salt with native JS interpreter: {salt}')
key_hash = hashlib.md5(f'{challenge_hash}:{salt}'.encode()).hexdigest()
self.write_debug(f'JS challenge key hash: {key_hash}')
# Request with the challenge key and the response should set a 'solution429' cookie
self._request_webpage(
update_url_query(challenge_url, {'key': hash429}), video_id, fatal=fatal,
note='Resolving WAF challenge', errnote='Failed to bypass WAF challenge')
update_url_query(challenge_url, {'key': key_hash}), video_id,
'Submitting JS challenge solution', 'Unable to solve JS challenge', fatal=True)
return super()._download_webpage_handle(url_or_request, video_id, *args, fatal=True, **kwargs)
def _perform_login(self, username, password):
+35 -24
View File
@@ -139,11 +139,6 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
]
_RETURN_TYPE = 'video' # XXX: How to handle multifeed?
_PLAYER_INFO_RE = (
r'/s/player/(?P<id>[a-zA-Z0-9_-]{8,})/(?:tv-)?player',
r'/(?P<id>[a-zA-Z0-9_-]{8,})/player(?:_ias\.vflset(?:/[a-zA-Z]{2,3}_[a-zA-Z]{2,3})?|-plasma-ias-(?:phone|tablet)-[a-z]{2}_[A-Z]{2}\.vflset)/base\.js$',
r'\b(?P<id>vfl[a-zA-Z0-9_-]+)\b.*?\.js$',
)
_SUBTITLE_FORMATS = ('json3', 'srv1', 'srv2', 'srv3', 'ttml', 'srt', 'vtt')
_DEFAULT_CLIENTS = ('android_vr', 'web', 'web_safari')
_DEFAULT_JSLESS_CLIENTS = ('android_vr',)
@@ -1886,10 +1881,12 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
'tce': 'player_ias_tce.vflset/en_US/base.js',
'es5': 'player_es5.vflset/en_US/base.js',
'es6': 'player_es6.vflset/en_US/base.js',
'es6_tcc': 'player_es6_tcc.vflset/en_US/base.js',
'es6_tce': 'player_es6_tce.vflset/en_US/base.js',
'tv': 'tv-player-ias.vflset/tv-player-ias.js',
'tv_es6': 'tv-player-es6.vflset/tv-player-es6.js',
'phone': 'player-plasma-ias-phone-en_US.vflset/base.js',
'tablet': 'player-plasma-ias-tablet-en_US.vflset/base.js', # Dead since 19712d96 (2025.11.06)
'house': 'house_brand_player.vflset/en_US/base.js', # Used by Google Drive
}
_INVERSE_PLAYER_JS_VARIANT_MAP = {v: k for k, v in _PLAYER_JS_VARIANT_MAP.items()}
@@ -2179,13 +2176,9 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
@classmethod
def _extract_player_info(cls, player_url):
for player_re in cls._PLAYER_INFO_RE:
id_m = re.search(player_re, player_url)
if id_m:
break
else:
raise ExtractorError(f'Cannot identify player {player_url!r}')
return id_m.group('id')
if m := re.search(r'/s/player/(?P<id>[a-fA-F0-9]{8,})/', player_url):
return m.group('id')
raise ExtractorError(f'Cannot identify player {player_url!r}')
def _load_player(self, video_id, player_url, fatal=True):
player_js_key = self._player_js_cache_key(player_url)
@@ -3219,6 +3212,7 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
])
skip_player_js = 'js' in self._configuration_arg('player_skip')
format_types = self._configuration_arg('formats')
skip_bad_formats = 'incomplete' not in format_types
all_formats = 'duplicate' in format_types
if self._configuration_arg('include_duplicate_formats'):
all_formats = True
@@ -3464,7 +3458,8 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
https_fmts = []
for fmt_stream in streaming_formats:
if fmt_stream.get('targetDurationSec'):
# Live adaptive https formats are not supported: skip unless extractor-arg given
if fmt_stream.get('targetDurationSec') and skip_bad_formats:
continue
# FORMAT_STREAM_TYPE_OTF(otf=1) requires downloading the init fragment
@@ -3576,7 +3571,6 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
yield from process_https_formats()
needs_live_processing = self._needs_live_processing(live_status, duration)
skip_bad_formats = 'incomplete' not in format_types
skip_manifests = set(self._configuration_arg('skip'))
if (needs_live_processing == 'is_live' # These will be filtered out by YoutubeDL anyway
@@ -4086,16 +4080,33 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
needs_live_processing = self._needs_live_processing(live_status, duration)
def is_bad_format(fmt):
if needs_live_processing and not fmt.get('is_from_start'):
return True
elif (live_status == 'is_live' and needs_live_processing != 'is_live'
and fmt.get('protocol') == 'http_dash_segments'):
return True
def adjust_incomplete_format(fmt, note_suffix='(Last 2 hours)', pref_adjustment=-10):
fmt['preference'] = (fmt.get('preference') or -1) + pref_adjustment
fmt['format_note'] = join_nonempty(fmt.get('format_note'), note_suffix, delim=' ')
for fmt in filter(is_bad_format, formats):
fmt['preference'] = (fmt.get('preference') or -1) - 10
fmt['format_note'] = join_nonempty(fmt.get('format_note'), '(Last 2 hours)', delim=' ')
# Adjust preference and format note for incomplete live/post-live formats
if live_status in ('is_live', 'post_live'):
for fmt in formats:
protocol = fmt.get('protocol')
# Currently, protocol isn't set for adaptive https formats, but this could change
is_adaptive = protocol in (None, 'http', 'https')
if live_status == 'post_live' and is_adaptive:
# Post-live adaptive formats cause HttpFD to raise "Did not get any data blocks"
# These formats are *only* useful to external applications, so we can hide them
# Set their preference <= -1000 so that FormatSorter flags them as 'hidden'
adjust_incomplete_format(fmt, note_suffix='(ended)', pref_adjustment=-5000)
# Is it live with --live-from-start? Or is it post-live and its duration is >2hrs?
elif needs_live_processing:
if not fmt.get('is_from_start'):
# Post-live m3u8 formats for >2hr streams
adjust_incomplete_format(fmt)
elif live_status == 'is_live':
if protocol == 'http_dash_segments':
# Live DASH formats without --live-from-start
adjust_incomplete_format(fmt)
elif is_adaptive:
# Incomplete live adaptive https formats
adjust_incomplete_format(fmt, note_suffix='(incomplete)', pref_adjustment=-20)
if needs_live_processing:
self._prepare_live_from_start_formats(