From 549292fcfa0109316524c9a192a3c2321eebaf5d Mon Sep 17 00:00:00 2001 From: CN_SZTL Date: Thu, 31 Dec 2020 18:39:15 +0800 Subject: [PATCH 1/8] rtl8192du: fix work under openwrt --- .../patches/020-remove-repeat-flies.patch | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 package/ntlf9t/rtl8192du/patches/020-remove-repeat-flies.patch diff --git a/package/ntlf9t/rtl8192du/patches/020-remove-repeat-flies.patch b/package/ntlf9t/rtl8192du/patches/020-remove-repeat-flies.patch new file mode 100644 index 0000000000..76baf2a24a --- /dev/null +++ b/package/ntlf9t/rtl8192du/patches/020-remove-repeat-flies.patch @@ -0,0 +1,39 @@ +From 9b2b0ec1bc2d31ddf93ed74d63fdfa6044e329a4 Mon Sep 17 00:00:00 2001 +From: Ben Greear +Date: Fri, 9 Nov 2018 16:21:43 -0800 +Subject: [PATCH] Fix build against openwrt backports tree. + +Like breaks builds elsewhere, can fix it up later. + +Signed-off-by: Ben Greear +--- + include/drv_conf.h | 4 +++- + .../{wireless.h => old_unused_rtl_wireless.h} | 0 + include/{autoconf.h => rtl_autoconf.h} | 0 + 3 files changed, 3 insertions(+), 1 deletions(-) + rename include/linux/{wireless.h => old_unused_rtl_wireless.h} (100%) + rename include/{autoconf.h => rtl_autoconf.h} (100%) + +diff --git a/include/drv_conf.h b/include/drv_conf.h +index 0d20a7e..f0a9f88 100644 +--- a/include/drv_conf.h ++++ b/include/drv_conf.h +@@ -14,7 +14,9 @@ + *****************************************************************************/ + #ifndef __DRV_CONF_H__ + #define __DRV_CONF_H__ +-#include "autoconf.h" ++ ++#include ++#include "rtl_autoconf.h" + #include "hal_ic_cfg.h" + + #if defined(PLATFORM_LINUX) && defined (PLATFORM_WINDOWS) +diff --git a/include/linux/wireless.h b/include/linux/old_unused_rtl_wireless.h +similarity index 100% +rename from include/linux/wireless.h +rename to include/linux/old_unused_rtl_wireless.h +diff --git a/include/autoconf.h b/include/rtl_autoconf.h +similarity index 100% +rename from include/autoconf.h +rename to include/rtl_autoconf.h From 74664e8fba54d77bef3d6d67bd6a5f33fbf62134 Mon Sep 17 00:00:00 2001 From: CN_SZTL Date: Thu, 31 Dec 2020 19:23:51 +0800 Subject: [PATCH 2/8] bpytop: bump to 1.0.53 --- package/ctcgfw/bpytop/Makefile | 39 ++++++++++++++++++++-------------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/package/ctcgfw/bpytop/Makefile b/package/ctcgfw/bpytop/Makefile index d4c882891d..2908832451 100644 --- a/package/ctcgfw/bpytop/Makefile +++ b/package/ctcgfw/bpytop/Makefile @@ -8,39 +8,46 @@ include $(TOPDIR)/rules.mk PKG_NAME:=bpytop -PKG_VERSION:=1.0.52 +PKG_VERSION:=1.0.53 PKG_RELEASE:=1 -PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz -PKG_SOURCE_URL:=https://codeload.github.com/aristocratos/bpytop/tar.gz/v$(PKG_VERSION)? -PKG_HASH:=15ef1bd094d945b9145343566c2596bb34922870e6be56c3cc028b33aff056fa -PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION) +PYPI_NAME:=bpytop +PKG_HASH:=d08b8120444e7f35fe032b33495ca551b5890702130c45ad8a56c1fa978fc358 PKG_LICENSE:=Apache-2.0 PKG_LICENSE_FILES:=LICENSE +include $(TOPDIR)/feeds/packages/lang/python/pypi.mk include $(INCLUDE_DIR)/package.mk +include $(TOPDIR)/feeds/packages/lang/python/python3-package.mk -define Package/$(PKG_NAME) +define Package/bpytop SECTION:=admin CATEGORY:=Administration TITLE:=Python port of bashtop URL:=https://github.com/aristocratos/bpytop - DEPENDS:=+python3-distutils +python3-logging +python3-openssl \ - +python3-psutil +python3-urllib + DEPENDS:=+python3-psutil +python3-setuptools endef -define Package/$(PKG_NAME)/description +define Package/bpytop/description Resource monitor that shows usage and stats for processor, memory, disks, network and processes. endef -define Package/$(PKG_NAME)/install - $(INSTALL_DIR) $(1)/usr/bin - $(INSTALL_BIN) $(PKG_BUILD_DIR)/bpytop.py $(1)/usr/bin/bpytop - $(INSTALL_DIR) $(1)/usr/share/bpytop - $(CP) -pr $(PKG_BUILD_DIR)/themes $(1)/usr/share/bpytop - chmod 755 $(1)/usr/bin/bpytop +define Package/bpytop/install + $(call Py3Package/$(1)/install,$(1)) + $(call Py3Package/ProcessFilespec,$(1),$(PKG_INSTALL_DIR),$(1)) + $(FIND) $(1) -name '*.exe' -delete + $(call Python3/CompileAll,$(1)) + $(call Python3/DeleteSourceFiles,$(1)) + $(call Python3/DeleteEmptyDirs,$(1)) + if [ -d "$(1)/usr/bin" ]; then \ + $(call Python3/FixShebang,$(1)/usr/bin/*) ; \ + fi + $(INSTALL_DIR) $(PKG_INSTALL_DIR)/usr/share/bpytop + $(CP) $(PKG_BUILD_DIR)/bpytop-themes/* $(PKG_INSTALL_DIR)/usr/share/bpytop/ endef -$(eval $(call BuildPackage,$(PKG_NAME))) +$(eval $(call Py3Package,bpytop)) +$(eval $(call BuildPackage,bpytop)) +#$(eval $(call BuildPackage,bpytop-src)) From 26c8762bafe9931b05cb16a8bc57308ee9f7f577 Mon Sep 17 00:00:00 2001 From: CN_SZTL Date: Thu, 31 Dec 2020 19:41:54 +0800 Subject: [PATCH 3/8] luci-app-jd-dailybonus: bump to 0.8.9 --- .../ctcgfw/luci-app-jd-dailybonus/Makefile | 4 +- .../htdocs/jd-dailybonus/JDCookie.crx | Bin 20445 -> 0 bytes .../htdocs/jd-dailybonus/JDCookie.zip | Bin 20296 -> 20108 bytes .../view/jd-dailybonus/cookie_tools.htm | 5 +- .../view/jd-dailybonus/update_service.htm | 17 +- .../po/zh-cn/jd-dailybonus.po | 9 +- .../usr/share/jd-dailybonus/JD_DailyBonus.js | 317 ++++++++---------- .../root/usr/share/jd-dailybonus/newapp.sh | 14 +- 8 files changed, 155 insertions(+), 211 deletions(-) delete mode 100644 package/ctcgfw/luci-app-jd-dailybonus/htdocs/jd-dailybonus/JDCookie.crx diff --git a/package/ctcgfw/luci-app-jd-dailybonus/Makefile b/package/ctcgfw/luci-app-jd-dailybonus/Makefile index 2a4e56245a..b8a76bbd41 100644 --- a/package/ctcgfw/luci-app-jd-dailybonus/Makefile +++ b/package/ctcgfw/luci-app-jd-dailybonus/Makefile @@ -12,8 +12,8 @@ LUCI_DEPENDS:=+node +node-request +coreutils +coreutils-nohup +wget LUCI_PKGARCH:=all PKG_NAME:=luci-app-jd-dailybonus -PKG_VERSION:=0.8.8 -PKG_RELEASE:=20201204 +PKG_VERSION:=0.8.9 +PKG_RELEASE:=20201230 include $(TOPDIR)/feeds/luci/luci.mk diff --git a/package/ctcgfw/luci-app-jd-dailybonus/htdocs/jd-dailybonus/JDCookie.crx b/package/ctcgfw/luci-app-jd-dailybonus/htdocs/jd-dailybonus/JDCookie.crx deleted file mode 100644 index c061b9c83c1c206497267eb28a44b06c06c8eb19..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20445 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 diff --git a/package/ctcgfw/luci-app-jd-dailybonus/htdocs/jd-dailybonus/JDCookie.zip b/package/ctcgfw/luci-app-jd-dailybonus/htdocs/jd-dailybonus/JDCookie.zip index 412f30d8f1287321f38be9c1dc07e8a4fa9000fd..54bcf0cd5cbf8c89b0b335508eb1f17ff0c753c5 100644 GIT binary patch literal 20108 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 literal 20296 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

E1{wyFK0ea5qUy-|d<@6_>a^B|yG zU0R(2*Ra|vT$FsmnbFEy$?+UM^`&nN%U2&&AK(n<%QD zlbB1q-Bi8Ri+u@mFf=LN5Ag>O|1rY%vREUPwi*87l?uIN0=xW?<$unO1R<|s;y)Nt5)S?BA_GF1VZ5ofo-6F zSU zK;5Wv_{9AK2{L1>ZnEs9+LXZ34<>s0T$1g+2=INU1Pg(st_&w7Qgf2vPL1n4=mB}D z809%k?}HiGTV78wI_uJ7U+3AMUV1MVT0(Lank}2)778abv%W=ph|Ez3N*xVCB36R` z7dggx>W7|P)aUXaZ}blWw!a?{5?m*+egH0R;20(RrAe123eNiHrO!No{}ogAtMpkN zp40o^w(CDa%Pw+O=>7-{yfI4nOZ!^I|K?ug{2uyrk)ud_f%7W@>LMcDLj2*`(D~#f z{x1DXFCuvD37<=$<%= translate("Cookie Tools") %>

- - +
帮助 - <%= translate("Click to Install copy cookie tools,And click the jd link below. if you can't install the crx extensions,please download the JDCookie.zip,unzip it,and use load Unpacked extensions to install.link:[chrome://extensions/]")%> + <%= translate("Click to download the JDCookie.zip,unzip it,and use load Unpacked extensions to install.link:[chrome://extensions/]")%>
diff --git a/package/ctcgfw/luci-app-jd-dailybonus/luasrc/view/jd-dailybonus/update_service.htm b/package/ctcgfw/luci-app-jd-dailybonus/luasrc/view/jd-dailybonus/update_service.htm index 26790dbbca..947f9d5057 100644 --- a/package/ctcgfw/luci-app-jd-dailybonus/luasrc/view/jd-dailybonus/update_service.htm +++ b/package/ctcgfw/luci-app-jd-dailybonus/luasrc/view/jd-dailybonus/update_service.htm @@ -213,11 +213,12 @@ //更新脚本 $("#update_script").click(function () { - if (!needUpdate) { - //获取远端脚本版本 check_version() - } else { - $("#update_script").attr("disabled", true); + return false; + }); + + function updateS(){ + $("#update_script").attr("disabled", true); $("#update_script").val(UPDATING_TEXT); //console.log(data); var data = { @@ -230,7 +231,6 @@ data: data, success: function (d) { if (d.error == 0) { - $("#update_script").val(NEW_VERSION); $(".cbi-value-version").text("v" + newVersion); } else { @@ -239,10 +239,7 @@ } } }); - } - - return false; - }); + } function get_realtime_log() { @@ -292,7 +289,7 @@ $("#update_script").val(UPDATE_TEXT + " v" + data.new_version); $("#update_script").attr("data-version", data.new_version); newVersion = data.new_version; - needUpdate = true; + updateS(); } else { $("#update_script").val(NEW_VERSION + " v" + data.new_version); } diff --git a/package/ctcgfw/luci-app-jd-dailybonus/po/zh-cn/jd-dailybonus.po b/package/ctcgfw/luci-app-jd-dailybonus/po/zh-cn/jd-dailybonus.po index e58389ae04..22daa12df6 100644 --- a/package/ctcgfw/luci-app-jd-dailybonus/po/zh-cn/jd-dailybonus.po +++ b/package/ctcgfw/luci-app-jd-dailybonus/po/zh-cn/jd-dailybonus.po @@ -22,6 +22,9 @@ msgstr "基本设置" msgid "Cookie Tools" msgstr "Cookie 工具" +msgid "JDCookie Tools" +msgstr "获取京东cookie扩展工具" + msgid "Source Update Url" msgstr "更新源地址" @@ -31,14 +34,14 @@ msgstr "主账号Cookie" msgid "Second Cookie" msgstr "第二账号Cookie" -msgid "Click to Install copy cookie tools,And click the jd link below. if you can't install the crx extensions,please download the JDCookie.zip,unzip it,and use load Unpacked extensions to install.link:[chrome://extensions/]" -msgstr "点击上面的按钮安装Cookie工具,然后点击下面的京东链接。如果浏览器禁止安装crx扩展,请下载第二个 JDCookie.zip,解压后在[chrome://extensions/]中使用加载已解压的扩展程序进行安装。 " +msgid "Click to download the JDCookie.zip,unzip it,and use load Unpacked extensions to install.link:[chrome://extensions/]")" +msgstr "点击上面的按钮安装下载JDCookie.zip(获取京东cookie扩展工具),解压后在[chrome://extensions/]中使用加载已解压的扩展程序进行安装。 " msgid "JD Url" msgstr "京东链接" msgid "Sign in ,then click JDCookie button.you will copy JD cookies, paste the cookie below." -msgstr "登录后点击JDCookie 扩展工具复制cookie,然后粘贴到下面输入框中。" +msgstr "登录后点击JDCookie 扩展工具复制cookie,然后粘贴到下面输入框中。(请使用F12调试工具,进入模拟手机浏览器模式)" msgid "Auto Update Script Service" msgstr "自动更新脚本服务" diff --git a/package/ctcgfw/luci-app-jd-dailybonus/root/usr/share/jd-dailybonus/JD_DailyBonus.js b/package/ctcgfw/luci-app-jd-dailybonus/root/usr/share/jd-dailybonus/JD_DailyBonus.js index 53c3585f1f..c6d411f1fc 100644 --- a/package/ctcgfw/luci-app-jd-dailybonus/root/usr/share/jd-dailybonus/JD_DailyBonus.js +++ b/package/ctcgfw/luci-app-jd-dailybonus/root/usr/share/jd-dailybonus/JD_DailyBonus.js @@ -2,7 +2,7 @@ 京东多合一签到脚本 -更新时间: 2020.12.03 17:00 v1.87 +更新时间: 2020.12.25 17:50 v1.89 有效接口: 40+ 脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js 电报频道: @NobyDa @@ -50,7 +50,7 @@ BoxJs订阅地址: https://raw.githubusercontent.com/NobyDa/Script/master/NobyDa ************************* [Script] -京东多合一签到 = type=cron,cronexp=5 0 * * *,wake-system=1,timeout=20,script-path=https://raw.githubusercontent.com/NobyDa/Script/master/JD-DailyBonus/JD_DailyBonus.js +京东多合一签到 = type=cron,cronexp=5 0 * * *,wake-system=1,timeout=60,script-path=https://raw.githubusercontent.com/NobyDa/Script/master/JD-DailyBonus/JD_DailyBonus.js 获取京东Cookie = type=http-request,pattern=https:\/\/api\.m\.jd\.com\/client\.action.*functionId=signBean,script-path=https://raw.githubusercontent.com/NobyDa/Script/master/JD-DailyBonus/JD_DailyBonus.js @@ -123,18 +123,17 @@ async function all() { JingDongShake(stop), //京东摇一摇 JDSecKilling(stop), //京东秒杀 JRLuckyLottery(stop), //金融抽奖顶部签到 - JingDongBuyCar(stop), //京东汽车 + JingDongBuyCar(stop, '5fc3c1f2e91f46f09ab2b722e10d92bf'), //京东汽车 + JingRongDoll(stop, 'JRDoll', '京东金融-签壹', '4D25A6F482'), JingRongDoll(stop, 'JRTwoDoll', '京东金融-签贰', '3A3E839252'), JingRongDoll(stop, 'JRThreeDoll', '京东金融-签叁', '69F5EC743C'), JingRongDoll(stop, 'JRFourDoll', '京东金融-签肆', '30C4F86264'), JingRongDoll(stop, 'JRFiveDoll', '京东金融-签伍', '1D06AA3B0F') ]); await Promise.all([ - // JDUserSignPre(stop, 'JDComputer', '京东电脑-数码', '31HbNBjr6YLyZfJtR5biFFc9ZYXN'), //京东电脑数码馆 + JDUserSignPre(stop, 'JDClothing', '京东商城-服饰', '4RBT3H9jmgYg1k2kBnHF8NAHm7m8'), //京东服饰 JDUserSignPre(stop, 'JDUnderwear', '京东商城-内衣', '4PgpL1xqPSW1sVXCJ3xopDbB1f69'), //京东内衣馆 - // JDUserSignPre(stop, 'JDToyMusic', '京东商城-乐器', '4N6RzwtBZdtdcgodvdsK7ZEzkUbZ'), //京东玩具乐器馆 JDUserSignPre(stop, 'JDShoes', '京东商城-鞋靴', '4RXyb1W4Y986LJW8ToqMK14BdTD'), //京东鞋靴 - // JDUserSignPre(stop, 'JDEsports', '京东商城-电竞', 'CHdHQhA5AYDXXQN9FLt3QUAPRsB'), //京东电竞 JDUserSignPre(stop, 'JDCalendar', '京东日历-翻牌', '36V2Qw59VPNsuLxY84vCFtxFzrFs'), //京东日历翻牌 JDUserSignPre(stop, 'JDChild', '京东商城-童装', '3Af6mZNcf5m795T8dtDVfDwWVNhJ'), //京东童装馆 JDUserSignPre(stop, 'JDBaby', '京东商城-母婴', '3BbAVGQPDd6vTyHYjmAutXrKAos6'), //京东母婴馆 @@ -143,11 +142,12 @@ async function all() { JDUserSignPre(stop, 'JDDrug', '京东商城-医药', '3tqTG5sF1xCUyC6vgEF5CLCxGn7w'), //京东医药馆 JDUserSignPre(stop, 'JDWomen', '京东商城-女装', 'DpSh7ma8JV7QAxSE2gJNro8Q2h9'), //京东女装馆 JDUserSignPre(stop, 'JDFineWine', '京东商城-酒饮', 'zGwAUzL3pVGjptBBGeYfpKjYdtX'), //京东酒饮馆 - JDUserSignPre(stop, 'JDBook', '京东商城-图书', '3SC6rw5iBg66qrXPGmZMqFDwcyXi') //京东图书 + JDUserSignPre(stop, 'JDBook', '京东商城-图书', '3SC6rw5iBg66qrXPGmZMqFDwcyXi'), //京东图书 + JingRongDoll(stop, 'JTDouble', '京东金贴-双签', '1DF13833F7'), //京东金融 金贴双签 + JingRongDoll(stop, 'XJDouble', '金融现金-双签', 'F68B2C3E71', '', '', '', 'xianjin') //京东金融 现金双签 ]); await Promise.all([ JDUserSignPre(stop, 'JDSuitcase', '京东商城-箱包', 'ZrH7gGAcEkY2gH8wXqyAPoQgk6t'), //京东箱包馆 - // JDUserSignPre(stop, 'JDConstell', '京东商城-京鱼', '3BPdJHCESW5cfak79ZRz37wTKbuV'), //京东京鱼座 JDUserSignPre(stop, 'JDSchool', '京东商城-校园', '4812pn2PAcUyfNdWr7Cvpww5MCyW'), //京东校园 JDUserSignPre(stop, 'JDHealth', '京东商城-健康', 'w2oeK5yLdHqHvwef7SMMy4PL8LF'), //京东健康 JDUserSignPre(stop, 'JDPet', '京东商城-宠物', '37ta5sh5ocrMZF3Fz5UMJbTsL42'), //京东宠物馆 @@ -157,15 +157,10 @@ async function all() { JDUserSignPre(stop, 'JDJewels', '京东商城-珠宝', 'zHUHpTHNTaztSRfNBFNVZscyFZU'), //京东珠宝馆 JDUserSignPre(stop, 'JDClocks', '京东商城-钟表', '2BcJPCVVzMEtMUynXkPscCSsx68W'), //京东钟表馆 JDUserSignPre(stop, 'JDMakeup', '京东商城-美妆', '2smCxzLNuam5L14zNJHYu43ovbAP'), //京东美妆馆 - JDUserSignPre(stop, 'JDVege', '京东商城-菜场', 'Wcu2LVCFMkBP3HraRvb7pgSpt64'), //京东菜场 - // JDUserSignPre(stop, 'JDFood', '京东商城-美食', '4PzvVmLSBq5K63oq4oxKcDtFtzJo') //京东美食馆 + JDUserSignPre(stop, 'JDVege', '京东商城-菜场', 'Wcu2LVCFMkBP3HraRvb7pgSpt64') //京东菜场 ]); - await Promise.all([ - JingRongDoll(stop, 'JRSixDoll', '金融现金-双签', 'F68B2C3E71'), //京东金融 现金双签 - JDJTDoubleSign(stop), //京东金融 金贴双签 - JRDoubleSign(stop), //京东金融 京豆双签 - JingDongSpeedUp(stop) //京东天天加速 - ]) + await JingDongSpeedUp(stop); //京东天天加速 + await JingRongDoll(stop, 'JDDouble', '金融京豆-双签', 'F68B2C3E71', '', '', '', 'jingdou'); //京东金融 京豆双签 break; default: await JingDongBean(stop); //京东京豆 @@ -184,20 +179,20 @@ async function all() { await JingDongShake(stop); //京东摇一摇 await JDSecKilling(stop); //京东秒杀 await JRLuckyLottery(stop); //金融抽奖顶部签到 - await JingDongBuyCar(stop); //京东汽车 + await JingDongBuyCar(stop, '5fc3c1f2e91f46f09ab2b722e10d92bf'); //京东汽车 await JingRongDoll(stop, 'JRTwoDoll', '京东金融-签贰', '3A3E839252'); await JingRongDoll(stop, 'JRThreeDoll', '京东金融-签叁', '69F5EC743C'); await JingRongDoll(stop, 'JRFourDoll', '京东金融-签肆', '30C4F86264'); await JingRongDoll(stop, 'JRFiveDoll', '京东金融-签伍', '1D06AA3B0F'); + await JingRongDoll(stop, 'JRDoll', '京东金融-签壹', '4D25A6F482'); + await JingRongDoll(stop, 'XJDouble', '金融现金-双签', 'F68B2C3E71', '', '', '', 'xianjin'); //京东金融 现金双签 + await JingRongDoll(stop, 'JTDouble', '京东金贴-双签', '1DF13833F7'); //京东金融 金贴双签 await JDUserSignPre(stop, 'JDUnderwear', '京东商城-内衣', '4PgpL1xqPSW1sVXCJ3xopDbB1f69'); //京东内衣馆 await JDUserSignPre(stop, 'JDSuitcase', '京东商城-箱包', 'ZrH7gGAcEkY2gH8wXqyAPoQgk6t'); //京东箱包馆 - // await JDUserSignPre(stop, 'JDComputer', '京东电脑-数码', '31HbNBjr6YLyZfJtR5biFFc9ZYXN'); //京东电脑数码馆 - // await JDUserSignPre(stop, 'JDConstell', '京东商城-京鱼', '3BPdJHCESW5cfak79ZRz37wTKbuV'); //京东京鱼座 - // await JDUserSignPre(stop, 'JDToyMusic', '京东商城-乐器', '4N6RzwtBZdtdcgodvdsK7ZEzkUbZ'); //京东玩具乐器馆 + await JDUserSignPre(stop, 'JDClothing', '京东商城-服饰', '4RBT3H9jmgYg1k2kBnHF8NAHm7m8'); //京东服饰 await JDUserSignPre(stop, 'JDSchool', '京东商城-校园', '4812pn2PAcUyfNdWr7Cvpww5MCyW'); //京东校园 await JDUserSignPre(stop, 'JDHealth', '京东商城-健康', 'w2oeK5yLdHqHvwef7SMMy4PL8LF'); //京东健康 await JDUserSignPre(stop, 'JDShoes', '京东商城-鞋靴', '4RXyb1W4Y986LJW8ToqMK14BdTD'); //京东鞋靴 - // await JDUserSignPre(stop, 'JDEsports', '京东商城-电竞', 'CHdHQhA5AYDXXQN9FLt3QUAPRsB'); //京东电竞 await JDUserSignPre(stop, 'JDCalendar', '京东日历-翻牌', '36V2Qw59VPNsuLxY84vCFtxFzrFs'); //京东日历翻牌 await JDUserSignPre(stop, 'JDChild', '京东商城-童装', '3Af6mZNcf5m795T8dtDVfDwWVNhJ'); //京东童装馆 await JDUserSignPre(stop, 'JDBaby', '京东商城-母婴', '3BbAVGQPDd6vTyHYjmAutXrKAos6'); //京东母婴馆 @@ -212,13 +207,10 @@ async function all() { await JDUserSignPre(stop, 'JDMakeup', '京东商城-美妆', '2smCxzLNuam5L14zNJHYu43ovbAP'); //京东美妆馆 await JDUserSignPre(stop, 'JDFineWine', '京东商城-酒饮', 'zGwAUzL3pVGjptBBGeYfpKjYdtX'); //京东酒饮馆 await JDUserSignPre(stop, 'JDVege', '京东商城-菜场', 'Wcu2LVCFMkBP3HraRvb7pgSpt64'); //京东菜场 - // await JDUserSignPre(stop, 'JDFood', '京东商城-美食', '4PzvVmLSBq5K63oq4oxKcDtFtzJo'); //京东美食馆 await JDUserSignPre(stop, 'JDClean', '京东商城-清洁', '2Tjm6ay1ZbZ3v7UbriTj6kHy9dn6'); //京东清洁馆 await JDUserSignPre(stop, 'JDCare', '京东商城-个护', 'NJ1kd1PJWhwvhtim73VPsD1HwY3'); //京东个人护理馆 await JDUserSignPre(stop, 'JDJewels', '京东商城-珠宝', 'zHUHpTHNTaztSRfNBFNVZscyFZU'); //京东珠宝馆 - await JingRongDoll(stop, 'JRSixDoll', '金融现金-双签', 'F68B2C3E71'); //京东金融 现金双签 - await JDJTDoubleSign(stop); //京东金融 金贴双签 - await JRDoubleSign(stop); //京东金融 京豆双签 + await JingRongDoll(stop, 'JDDouble', '金融京豆-双签', 'F68B2C3E71', '', '', '', 'jingdou'); //京东金融 京豆双签 await JingDongSpeedUp(stop); //京东天天加速 break; } @@ -256,10 +248,10 @@ function notify() { notify += merge[i].notify ? "\n" + merge[i].notify : "" } var Cash = merge.TotalCash && merge.TotalCash.TCash ? `${merge.TotalCash.TCash}红包` : "" - var Steel = merge.TotalSteel && merge.TotalSteel.TSteel ? `${merge.TotalSteel.TSteel}钢镚${Cash?`, `:``}` : `` - var beans = merge.TotalBean && merge.TotalBean.Qbear ? `${merge.TotalBean.Qbear}京豆${Steel||Cash?`, `:``}` : "" - var Money = merge.TotalMoney && merge.TotalMoney.TMoney ? `${merge.TotalMoney.TMoney}现金` : "" - var Subsidy = merge.TotalSubsidy && merge.TotalSubsidy.TSubsidy ? `${merge.TotalSubsidy.TSubsidy}金贴${Money?", ":""}` : "" + var Steel = merge.TotalSteel && merge.TotalSteel.TSteel ? `${merge.TotalSteel.TSteel}钢镚` : `` + var beans = merge.TotalBean && merge.TotalBean.Qbear ? `${merge.TotalBean.Qbear}京豆${Steel?`, `:``}` : "" + var Money = merge.TotalMoney && merge.TotalMoney.TMoney ? `${merge.TotalMoney.TMoney}现金${Cash?`, `:``}` : "" + var Subsidy = merge.TotalSubsidy && merge.TotalSubsidy.TSubsidy ? `${merge.TotalSubsidy.TSubsidy}金贴${Money||Cash?", ":""}` : "" var Tbean = bean ? `${bean.toFixed(0)}京豆${steel?", ":""}` : "" var TSteel = steel ? `${steel.toFixed(2)}钢镚` : "" var TCash = cash ? `${cash.toFixed(2)}红包${subsidy||money?", ":""}` : "" @@ -271,12 +263,17 @@ function notify() { var one = `【签到概览】: ${Ts+Tf+Te}${Ts||Tf||Te?`\n`:`获取失败\n`}` var two = Tbean || TSteel ? `【签到奖励】: ${Tbean+TSteel}\n` : `` var three = TCash || TSubsidy || TMoney ? `【其他奖励】: ${TCash+TSubsidy+TMoney}\n` : `` - var four = `【账号总计】: ${beans+Steel+Cash}${beans||Steel||Cash?`\n`:`获取失败\n`}` - var five = `【其他总计】: ${Subsidy+Money}${Subsidy||Money?`\n`:`获取失败\n`}` - var disa = $nobyda.disable ? "\n检测到上次执行意外崩溃, 已为您自动禁用相关接口. 如需开启请前往BoxJs ‼️‼️\n" : "" + var four = `【账号总计】: ${beans+Steel}${beans||Steel?`\n`:`获取失败\n`}` + var five = `【其他总计】: ${Subsidy+Money+Cash}${Subsidy||Money||Cash?`\n`:`获取失败\n`}` var DName = merge.TotalBean && merge.TotalBean.nickname ? merge.TotalBean.nickname : "获取失败" var Name = add ? DualAccount ? `【签到号一】: ${DName}\n` : `【签到号二】: ${DName}\n` : "" - console.log("\n" + Name + one + two + three + four + five + disa + notify) + const disables = $nobyda.read("JD_DailyBonusDisables") + const amount = disables ? disables.split(",").length : 0 + const disa = !notify || amount ? `【温馨提示】: 检测到${$nobyda.disable?`上次执行意外崩溃, `:``}已禁用${notify?`${amount}个`:`所有`}接口, 如需开启请前往BoxJs或查看脚本内第99行注释.\n` : `` + $nobyda.notify("", "", Name + one + two + three + four + five + disa + notify, { + 'media-url': $nobyda.headUrl || 'https://cdn.jsdelivr.net/gh/Orz-3/task@master/jd.png' + }); + $nobyda.headUrl = null; if ($nobyda.isJSBox) { if (add && DualAccount) { Shortcut = Name + one + two + three + "\n" @@ -286,7 +283,6 @@ function notify() { $intents.finish(Shortcut + Name + one + two + three) } } - if (!$nobyda.isNode) $nobyda.notify("", "", Name + one + two + three + four + five + disa + notify); if (DualAccount) { double(); } else { @@ -652,64 +648,6 @@ function JingRongSteel(s) { }); } -function JRDoubleSign(s) { - merge.JRDSign = {}; - return new Promise(resolve => { - if (disable("JRDSign")) return resolve() - setTimeout(() => { - const JRDSUrl = { - url: 'https://nu.jr.jd.com/gw/generic/jrm/h5/m/process?', - headers: { - Cookie: KEY - }, - body: "reqData=%7B%22actCode%22%3A%22FBBFEC496C%22%2C%22type%22%3A3%2C%22riskDeviceParam%22%3A%22%22%7D" - }; - $nobyda.post(JRDSUrl, function(error, response, data) { - try { - if (error) { - throw new Error(error) - } else { - const Details = LogDetails ? "response:\n" + data : ''; - if (data.match(/\"resultCode\":0/)) { - if (data.match(/\"count\":\d+/)) { - console.log("\n" + "京东金融-双签签到成功 " + Details) - merge.JRDSign.bean = data.match(/\"count\":(\d+)/)[1] - merge.JRDSign.notify = "京东金融-双签: 成功, 明细: " + merge.JRDSign.bean + "京豆 🐶" - merge.JRDSign.success = 1 - } else { - if (data.match(/已领取/)) { - merge.JRDSign.notify = "京东金融-双签: 失败, 原因: 已签过 ⚠️" - } else if (data.match(/未在/)) { - merge.JRDSign.notify = "京东金融-双签: 失败, 未在京东签到 ⚠️" - } else if (data.match(/303sq|400sq|重复提交/)) { - return - } else { - merge.JRDSign.notify = "京东金融-双签: 失败, 原因: 无奖励 ⚠️" - } - console.log("\n" + "京东金融-双签签到失败 " + Details) - merge.JRDSign.fail = 1 - } - } else { - console.log("\n" + "京东金融-双签签到失败 " + Details) - merge.JRDSign.fail = 1 - if (data.match(/(\"resultCode\":3|请先登录)/)) { - merge.JRDSign.notify = "京东金融-双签: 失败, 原因: Cookie失效‼️" - } else { - merge.JRDSign.notify = "京东金融-双签: 失败, 原因: 未知 ⚠️" - } - } - } - } catch (eor) { - $nobyda.AnError("京东金融-双签", "JRDSign", eor, response, data) - } finally { - resolve() - } - }) - }, s) - if (out) setTimeout(resolve, out + s) - }); -} - function JingDongShake(s) { if (!merge.JDShake) merge.JDShake = {}, merge.JDShake.success = 0, merge.JDShake.bean = 0, merge.JDShake.notify = ''; return new Promise(resolve => { @@ -1312,7 +1250,7 @@ function JingDongSpeedUp(s, id) { if (!$nobyda.isAllEvents) await JDSpaceEvent(s); //处理太空事件 if (!$nobyda.isAlltasks) await JDQueryTask(s); //处理太空任务 var step3 = await JDQueryTaskID(s); //查询道具ID - var step4 = await JDUseProps(s, step3); //使用道具 + var step4 = await JDUseProps(1000 + s, step3); //使用道具 if (step4 && $nobyda.ItemIsUsed) { //如果使用了道具, 则再次检查任务 await JingDongSpeedUp(s) } else { @@ -1583,47 +1521,45 @@ function JDQueryTaskID(s) { } function JDUseProps(s, PropID) { - return new Promise(resolve => { - if (PropID) { - setTimeout(() => { - var PropCount = 0 - var PropNumTask = 0 - for (var i = 0; i < PropID.length; i++) { - const PropUrl = { - url: 'https://api.m.jd.com/?appid=memberTaskCenter&functionId=energyProp_use&body=%7B%22source%22%3A%22game%22%2C%22energy_id%22%3A%22' + PropID[i] + '%22%7D', - headers: { - Referer: 'https://h5.m.jd.com/babelDiy/Zeus/6yCQo2eDJPbyPXrC3eMCtMWZ9ey/index.html', - Cookie: KEY - } - }; - $nobyda.get(PropUrl, function(error, response, data) { - try { - PropCount++ + return new Promise(async (resolve) => { + $nobyda.PropCount = 0 + $nobyda.PropNumTask = 0 + if (!PropID) return resolve() + for (var i = 0; i < PropID.length; i++) { + const sep = await new Promise(resolve => { + $nobyda.get({ + url: `https://api.m.jd.com/?appid=memberTaskCenter&functionId=energyProp_use&body=%7B%22source%22%3A%22game%22%2C%22energy_id%22%3A%22${PropID[i]}%22%7D`, + headers: { + Referer: 'https://h5.m.jd.com/babelDiy/Zeus/6yCQo2eDJPbyPXrC3eMCtMWZ9ey/index.html', + Cookie: KEY + } + }, (error, response, data) => { + try { + $nobyda.PropCount++ if (error) { throw new Error(error) } else { const cc = JSON.parse(data) const Details = LogDetails ? "response:\n" + data : ''; - console.log("\n天天加速-尝试使用第" + PropCount + "个道具 " + Details) + console.log(`\n天天加速-尝试使用第${$nobyda.PropCount}个道具 (${s/1000}s)${Details}`) if (cc.message == 'success' && cc.success == true) { - PropNumTask += 1 + $nobyda.PropNumTask += 1 } } - } catch (eor) { - $nobyda.AnError("使用道具-加速", "SpeedUp", eor, response, data) - } finally { - if (PropID.length == PropCount) { - console.log("\n天天加速-已成功使用" + PropNumTask + "个道具") - if (PropNumTask) $nobyda.ItemIsUsed = true; - resolve(PropNumTask) - } + } catch (eor) { + $nobyda.AnError("使用道具-加速", "SpeedUp", eor, response, data) + } finally { + if (PropID.length == $nobyda.PropCount) { + if ($nobyda.PropNumTask) $nobyda.ItemIsUsed = true; + console.log(`\n天天加速-已成功使用${$nobyda.PropNumTask}个道具`) + resolve(true) + } else { + setTimeout(resolve, s) } - }) - } - }, s) - if (out) setTimeout(resolve, out + s) - } else { - resolve() + } + }) + }) + if (sep) resolve($nobyda.PropNumTask); } }); } @@ -1646,16 +1582,16 @@ function JingDongSubsidy(s) { throw new Error(error) } else { const Details = LogDetails ? "response:\n" + data : ''; - if (data.match(/\"msg\":\"操作成功\"/)) { + const cc = JSON.parse(data) + if (cc.resultCode == 0 && cc.resultData.data.thisAmount) { console.log("\n" + "京东商城-金贴签到成功 " + Details) - const qt = data.match(/\"thisAmountStr\":\"(.+?)\"/) - merge.subsidy.subsidy = qt ? qt[1] : 0; - merge.subsidy.notify = `京东商城-金贴: 成功, 明细: ${qt?qt[1]:`无`}金贴 💰` + merge.subsidy.subsidy = cc.resultData.data.thisAmountStr + merge.subsidy.notify = `京东商城-金贴: 成功, 明细: ${merge.subsidy.subsidy||`无`}金贴 💰` merge.subsidy.success = 1 } else { console.log("\n" + "京东商城-金贴签到失败 " + Details) merge.subsidy.fail = 1 - if (data.match(/已存在/)) { + if (data.match(/已存在|"thisAmount":0/)) { merge.subsidy.notify = "京东商城-金贴: 失败, 原因: 已签过 ⚠️" } else if (data.match(/请先登录/)) { merge.subsidy.notify = "京东商城-金贴: 失败, 原因: Cookie失效‼️" @@ -1675,7 +1611,7 @@ function JingDongSubsidy(s) { }); } -function JingRongDoll(s, key, title, code, type, num, award) { +function JingRongDoll(s, key, title, code, type, num, award, belong) { merge[key] = {}; return new Promise(resolve => { if (disable(key)) return resolve() @@ -1685,7 +1621,7 @@ function JingRongDoll(s, key, title, code, type, num, award) { headers: { Cookie: KEY }, - body: `reqData=${encodeURIComponent(`{"actCode":"${code}","type":${type?type:`3`}${code=='F68B2C3E71'?`,"frontParam":{"belong":"xianjin"}`:``}}`)}` + body: `reqData=${encodeURIComponent(`{"actCode":"${code}","type":${type?type:`3`}${code=='F68B2C3E71'?`,"frontParam":{"belong":"${belong}"}`:code==`1DF13833F7`?`,"frontParam":{"channel":"JR","belong":4}`:``}}`)}` }; $nobyda.post(DollUrl, async function(error, response, data) { try { @@ -1706,11 +1642,27 @@ function JingRongDoll(s, key, title, code, type, num, award) { merge[key].success = 1 merge[key].notify = `${title}: 成功, 明细: 无奖励 🐶` } - } else if (cc.resultData.data.businessData.businessCode === '000sq' && code === 'F68B2C3E71') { - const ct = data.match(/"count":(\d+),/) - merge[key].success = 1 - merge[key].Money = ct ? ct[1] > 9 ? `0.${ct[1]}` : `0.0${ct[1]}` : 0 - merge[key].notify = `${title}: 成功, 明细: ${merge[key].Money||`无`}现金 💰` + } else if (code == 'F68B2C3E71' || code == '1DF13833F7') { + if (!data.match(/"businessCode":"30\dss?q"/)) { + merge[key].success = 1 + const ct = data.match(/\"count\":\"?(\d.*?)\"?,/) + if (code == 'F68B2C3E71' && belong == 'xianjin') { + merge[key].Money = ct ? ct[1] > 9 ? `0.${ct[1]}` : `0.0${ct[1]}` : 0 + merge[key].notify = `${title}: 成功, 明细: ${merge[key].Money||`无`}现金 💰` + } else if (code == 'F68B2C3E71' && belong == 'jingdou') { + merge[key].bean = ct ? ct[1] : 0; + merge[key].notify = `${title}: 成功, 明细: ${merge[key].bean||`无`}京豆 🐶` + } else if (code == '1DF13833F7') { + merge[key].subsidy = ct ? ct[1] : 0; + merge[key].notify = `${title}: 成功, 明细: ${merge[key].subsidy||`无`}金贴 💰` + } + } else { + const es = cc.resultData.data.businessMsg + const ep = cc.resultData.data.businessData.businessMsg + const tp = data.match(/已领取|300ss?q/) ? `已签过` : `${ep||es||cc.resultMsg||`未知`}` + merge[key].notify = `${title}: 失败, 原因: ${tp} ⚠️` + merge[key].fail = 1 + } } else { merge[key].notify = `${title}: 失败, 原因: 已签过 ⚠️`; merge[key].fail = 1 @@ -2033,46 +1985,6 @@ function JDSecKilling(s) { }, () => {}); } -function JDJTDoubleSign(s) { - merge.JTDouble = {}; - return new Promise(resolve => { - if (disable("JTDouble")) return resolve(); - setTimeout(() => { - $nobyda.post({ - url: 'https://nu.jr.jd.com/gw/generic/jrm/h5/m/process', - headers: { - Cookie: KEY - }, - body: `reqData=${encodeURIComponent('{"type":3,"frontParam":{"channel":"JR","belong":4},"actCode":"1DF13833F7"}')}` - }, (error, response, data) => { - try { - if (error) throw new Error(error); - const cc = JSON.parse(data); - const Details = LogDetails ? "response:\n" + data : ''; - if (cc.resultCode == 0 && cc.resultData.data.businessCode == '000ssq') { - console.log(`\n京东金贴-双签签到成功 ${Details}`) - const qt = data.match(/\"count\":\"?(\d.*?)\"?,/); - merge.JTDouble.success = 1; - merge.JTDouble.subsidy = qt ? qt[1] : 0; - merge.JTDouble.notify = `京东金贴-双签: 成功, 明细: ${merge.JTDouble.subsidy||`无`}金贴 💰`; - } else { - console.log(`\n京东金贴-双签签到失败 ${Details}`) - const es = cc.resultData && cc.resultData.data ? cc.resultData.data.businessMsg : null - const tp = data.match(/已领取|300ssq/) ? `已签过` : cc.resultCode == 3 ? `Cookie失效` : `${es||cc.resultMsg||`未知`}` - merge.JTDouble.notify = `京东金贴-双签: 失败, 原因: ${tp}${cc.resultCode==3?`‼️`:` ⚠️`}` - merge.JTDouble.fail = 1 - } - } catch (eor) { - $nobyda.AnError("京东金贴-双签", "JTDouble", eor, response, data) - } finally { - resolve() - } - }) - }, s) - if (out) setTimeout(resolve, out + s) - }); -} - function JRLuckyLottery(s) { //https://jdda.jd.com/app/hd/#/turntable merge.JRLottery = {}; return new Promise(resolve => { @@ -2111,7 +2023,7 @@ function JRLuckyLottery(s) { //https://jdda.jd.com/app/hd/#/turntable }); } -function JingDongBuyCar(s) { +function JingDongBuyCar(s, ActId) { merge.JDBuyCar = {}; return new Promise((resolve, reject) => { if (disable("JDBuyCar")) return reject(); @@ -2120,7 +2032,7 @@ function JingDongBuyCar(s) { url: 'https://cgame-stadium.jd.com/api/v1/first/login', headers: { Cookie: KEY, - ActivityId: `f4f998e5b91d48ce957983fe61b0ae90` + ActivityId: ActId } }, (error, response, data) => { try { @@ -2149,7 +2061,7 @@ function JingDongBuyCar(s) { url: 'https://cgame-stadium.jd.com/api/v1/sign', headers: { Cookie: KEY, - ActivityId: `f4f998e5b91d48ce957983fe61b0ae90` + ActivityId: ActId } }, (error, response, data) => { try { @@ -2221,6 +2133,7 @@ function TotalBean() { if (error) throw new Error(error); const Details = LogDetails ? "response:\n" + data : ''; const cc = JSON.parse(data) + $nobyda.headUrl = cc.base.headImageUrl if (cc.base.jdNum != 0) { console.log("\n" + "京东-总京豆查询成功 " + Details) merge.TotalBean.Qbear = cc.base.jdNum @@ -2438,10 +2351,46 @@ function nobyda() { return (null) } })() - const notify = (title, subtitle, message) => { - if (isQuanX) $notify(title, subtitle, message) - if (isSurge) $notification.post(title, subtitle, message) - if (isNode) console.log(`${title}\n${subtitle}\n${message}`) + const notify = (title, subtitle, message, rawopts) => { + const Opts = (rawopts) => { //Modified from https://github.com/chavyleung/scripts/blob/master/Env.js + if (!rawopts) return rawopts + if (typeof rawopts === 'string') { + if (isLoon) return rawopts + else if (isQuanX) return { + 'open-url': rawopts + } + else if (isSurge) return { + url: rawopts + } + else return undefined + } else if (typeof rawopts === 'object') { + if (isLoon) { + let openUrl = rawopts.openUrl || rawopts.url || rawopts['open-url'] + let mediaUrl = rawopts.mediaUrl || rawopts['media-url'] + return { + openUrl, + mediaUrl + } + } else if (isQuanX) { + let openUrl = rawopts['open-url'] || rawopts.url || rawopts.openUrl + let mediaUrl = rawopts['media-url'] || rawopts.mediaUrl + return { + 'open-url': openUrl, + 'media-url': mediaUrl + } + } else if (isSurge) { + let openUrl = rawopts.url || rawopts.openUrl || rawopts['open-url'] + return { + url: openUrl + } + } + } else { + return undefined + } + } + console.log(`${title}\n${subtitle}\n${message}`) + if (isQuanX) $notify(title, subtitle, message, Opts(rawopts)) + if (isSurge) $notification.post(title, subtitle, message, Opts(rawopts)) if (isJSBox) $push.schedule({ title: title, body: subtitle ? subtitle + "\n" + message : message diff --git a/package/ctcgfw/luci-app-jd-dailybonus/root/usr/share/jd-dailybonus/newapp.sh b/package/ctcgfw/luci-app-jd-dailybonus/root/usr/share/jd-dailybonus/newapp.sh index ade596c959..938461c032 100755 --- a/package/ctcgfw/luci-app-jd-dailybonus/root/usr/share/jd-dailybonus/newapp.sh +++ b/package/ctcgfw/luci-app-jd-dailybonus/root/usr/share/jd-dailybonus/newapp.sh @@ -155,15 +155,11 @@ update() { local_ver=0 fi remote_ver=$(get_ver $TEMP_SCRIPT) - if [ $(expr "$local_ver" \< "$remote_ver") -eq 1 ]; then - cp -r $TEMP_SCRIPT $JD_SCRIPT - fill_cookie - uci set jd-dailybonus.@global[0].version=$remote_ver - uci commit jd-dailybonus - cancel "0" - else - cancel "101" - fi + cp -r $TEMP_SCRIPT $JD_SCRIPT + fill_cookie + uci set jd-dailybonus.@global[0].version=$remote_ver + uci commit jd-dailybonus + cancel "0" } while getopts ":alnruswh" arg; do From ed2d813126069bb0d4b790b48b848200f073032e Mon Sep 17 00:00:00 2001 From: Derry Date: Wed, 30 Dec 2020 08:10:50 -0800 Subject: [PATCH 4/8] OpenAppFilter: bump to latest git HEAD --- package/ctcgfw/oaf/Makefile | 6 +++--- package/ctcgfw/open-app-filter/files/feature.cfg | 5 +++++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/package/ctcgfw/oaf/Makefile b/package/ctcgfw/oaf/Makefile index a019a3f6db..883dd1735a 100644 --- a/package/ctcgfw/oaf/Makefile +++ b/package/ctcgfw/oaf/Makefile @@ -6,10 +6,10 @@ PKG_VERSION:=3.0 PKG_RELEASE:=2 PKG_SOURCE_URL:=https://github.com/destan19/OpenAppFilter.git -PKG_MIRROR_HASH:=d8d71c8dcdd6e130d2e1b4cddf37781fb95c5d1b8e7090fe49c0e761490be324 PKG_SOURCE_PROTO:=git -PKG_SOURCE_DATE:=2020-10-20 -PKG_SOURCE_VERSION:=b235da54c45ac4cd16ec96e1ec832d3851a247da +PKG_SOURCE_DATE:=2020-12-31 +PKG_SOURCE_VERSION:=5ac03f15728ad69805123637227a7777f0a50c7e +PKG_MIRROR_HASH:=d8d71c8dcdd6e130d2e1b4cddf37781fb95c5d1b8e7090fe49c0e761490be324 include $(INCLUDE_DIR)/package.mk diff --git a/package/ctcgfw/open-app-filter/files/feature.cfg b/package/ctcgfw/open-app-filter/files/feature.cfg index a9e39c490a..65dec5a9ca 100644 --- a/package/ctcgfw/open-app-filter/files/feature.cfg +++ b/package/ctcgfw/open-app-filter/files/feature.cfg @@ -41,6 +41,11 @@ 3014 哔哩哔哩:[tcp;;;bilivideo;;,tcp;;480;;upgcxcode;] 3016 芒果tv:[tcp;;443;mgtv;;,tcp;;80;mgtv;;,tcp;;443;hitv;;] 3017 西瓜视频:[tcp;;;xg.ixigua;;,tcp;;443;snsdk;;,tcp;;;xg-p.ixigua;;] +3018 搜狐视频:[tcp;;;aty.sohu.com;;,tcp;;;tv.itc.cn;;] +3019 播聊:[tcp;;80;randlove.cn;;,tcp;;;mob.com;;,tcp;;;yueliao;;,tcp;;;5glive;;] +3020 咪咕视频:[tcp;;;miguvideo;;,tcp;;;migu.cn;;] +3021 韩剧TV:[tcp;;;hanju.koudaibaobao;;] +3022 人人视频:[tcp;;;rr.tv;;] #class shopping 4001 淘宝:[tcp;;;taobao;;,tcp;;;alicdn.com;;,tcp;;;tmall.com;;,tcp;;;;;00:d3|01:00,,tcp;;;;;00:d4|01:00,,tcp;;;;;00:d3|01:00] From 74969cab1526ab7ade4dcf201b10a11905122c10 Mon Sep 17 00:00:00 2001 From: CN_SZTL Date: Thu, 31 Dec 2020 20:56:25 +0800 Subject: [PATCH 5/8] kernel: bump to 4.9.249, 4.14.213, 4.19.164 Remove upstreamed: - generic/pending-4.14/499-mtd-parser-cmdline-Fix-parsing-of-part-names-with-co.patch - generic/pending-4.9/499-mtd-parser-cmdline-Fix-parsing-of-part-names-with-co.patch - ipq806x/patches-4.14/0071-2-PCI-qcom-Fixed-IPQ806x-PCIE-reset-changes.patch - ipq806x/patches-4.19/0071-2-PCI-qcom-Fixed-IPQ806x-PCIE-reset-changes.patch Resolve conflicted: - generic/pending-4.19/611-netfilter_match_bypass_default_table.patch - ipq40xx/patches-4.19/995-ipq40xx-unlock-cpu-frequency.patch Signed-off-by: CN_SZTL --- include/kernel-version.mk | 12 +-- ...support-for-boot-console-with-arbitr.patch | 2 +- ...support-for-boot-console-with-arbitr.patch | 2 +- .../ath25/patches-4.14/130-watchdog.patch | 2 +- ...support-for-boot-console-with-arbitr.patch | 2 +- .../910-unaligned_access_hacks.patch | 2 +- ...i_h5-Don-t-send-conf_req-when-ACTIVE.patch | 2 +- ...e-GPIO-CSs-honour-the-SPI_NO_CS-flag.patch | 2 +- .../905-BCM53573-minor-hacks.patch | 2 +- .../905-BCM53573-minor-hacks.patch | 2 +- .../patches-4.14/831-old_gpio_wdt.patch | 2 +- .../patches-4.19/831-old_gpio_wdt.patch | 2 +- .../patches-4.19/075-spi_support.patch | 2 +- ...tcp-allow-drivers-to-tweak-TSQ-logic.patch | 4 +- ...ption-fix-dwm-158-3g-modem-interface.patch | 2 +- ...initial-support-for-Toshiba-TC58CVG2.patch | 2 +- ...dd-support-for-GigaDevice-GD5FxGQ4xA.patch | 2 +- ...-Add-support-for-two-byte-device-IDs.patch | 2 +- ...initial-support-for-Paragon-PN26G0xA.patch | 2 +- ...tsq-add-shortcut-in-tcp_tasklet_func.patch | 2 +- ...-a-shortcut-in-tcp_small_queue_check.patch | 2 +- ...cp_mtu_probe-is-likely-to-exit-early.patch | 2 +- ...ove-tsq_flags-close-to-sk_wmem_alloc.patch | 6 +- ...tcp-allow-drivers-to-tweak-TSQ-logic.patch | 4 +- ...90-net-generalize-napi_complete_done.patch | 2 +- .../998-usb-serial-option-add-u9300.patch | 4 +- .../hack-4.19/207-disable-modorder.patch | 4 +- .../generic/hack-4.19/220-gc_sections.patch | 2 +- .../998-usb-serial-option-add-u9300.patch | 4 +- ...ne-Fix-parsing-of-part-names-with-co.patch | 61 ------------- ..._value_cansleep-for-setting-chipsele.patch | 2 +- ...etfilter_match_bypass_default_checks.patch | 2 +- ...netfilter_match_bypass_default_table.patch | 4 +- ..._value_cansleep-for-setting-chipsele.patch | 2 +- ...ne-Fix-parsing-of-part-names-with-co.patch | 61 ------------- .../995-ipq40xx-unlock-cpu-frequency.patch | 12 ++- ...I-qcom-Fixed-IPQ806x-specific-clocks.patch | 8 +- ...com-Fixed-IPQ806x-PCIE-reset-changes.patch | 85 ------------------- ...qcom-Fixed-IPQ806x-PCIE-init-changes.patch | 2 +- .../0071-6-PCI-qcom-Force-GEN1-support.patch | 4 +- ...7-pcie-Set-PCIE-MRRS-and-MPS-to-256B.patch | 2 +- ...qcom-Fixed-pcie_phy_clk-branch-issue.patch | 4 +- ...I-qcom-Fixed-IPQ806x-specific-clocks.patch | 8 +- ...com-Fixed-IPQ806x-PCIE-reset-changes.patch | 62 -------------- ...qcom-Fixed-pcie_phy_clk-branch-issue.patch | 4 +- .../patches-4.9/160-delayed_uart_io.patch | 4 +- .../701-dpaa2-dpio-support-layerscape.patch | 20 ++--- .../0303-mtd-spinand-disable-on-die-ECC.patch | 4 +- .../102-mt7621-fix-cpu-clk-add-clkdev.patch | 5 +- 49 files changed, 86 insertions(+), 352 deletions(-) delete mode 100644 target/linux/generic/pending-4.14/499-mtd-parser-cmdline-Fix-parsing-of-part-names-with-co.patch delete mode 100644 target/linux/generic/pending-4.9/499-mtd-parser-cmdline-Fix-parsing-of-part-names-with-co.patch delete mode 100644 target/linux/ipq806x/patches-4.14/0071-2-PCI-qcom-Fixed-IPQ806x-PCIE-reset-changes.patch delete mode 100644 target/linux/ipq806x/patches-4.19/0071-2-PCI-qcom-Fixed-IPQ806x-PCIE-reset-changes.patch diff --git a/include/kernel-version.mk b/include/kernel-version.mk index 180f66f759..e5e67bf421 100644 --- a/include/kernel-version.mk +++ b/include/kernel-version.mk @@ -6,13 +6,13 @@ ifdef CONFIG_TESTING_KERNEL KERNEL_PATCHVER:=$(KERNEL_TESTING_PATCHVER) endif -LINUX_VERSION-4.9 = .248 -LINUX_VERSION-4.14 = .212 -LINUX_VERSION-4.19 = .163 +LINUX_VERSION-4.9 = .249 +LINUX_VERSION-4.14 = .213 +LINUX_VERSION-4.19 = .164 -LINUX_KERNEL_HASH-4.9.248 = 4687268061c9933c298b30d28e4bf1a30dfbab7c0da4bee194968e4f81ffeccf -LINUX_KERNEL_HASH-4.14.212 = 0e1bc32c4842c3bbee3a15454408f528acd4d3c5e83312b93008d5ee2e9a0c79 -LINUX_KERNEL_HASH-4.19.163 = 3eeec4e5eb8a129be3536357ecb028fae7d82fac933dcfac0b6089ee398fc5fc +LINUX_KERNEL_HASH-4.9.249 = b1f38696ff5bce89e1d8248126aa2a8ce5b19100efdd68f1d335a9f736e04c4e +LINUX_KERNEL_HASH-4.14.213 = fd7bcedb79feb1378b89b257e68bfb86cb0aeb23380808c6a7e84a12e8ec2a1d +LINUX_KERNEL_HASH-4.19.164 = e5fa3ab5364d4080cfcf7e0cfb054ade124f20e185fd7809506424dc3c74aaaa remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1)))) sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1))))))) diff --git a/target/linux/ar71xx/patches-4.14/821-serial-core-add-support-for-boot-console-with-arbitr.patch b/target/linux/ar71xx/patches-4.14/821-serial-core-add-support-for-boot-console-with-arbitr.patch index 23b6d73959..3c33cd19cc 100644 --- a/target/linux/ar71xx/patches-4.14/821-serial-core-add-support-for-boot-console-with-arbitr.patch +++ b/target/linux/ar71xx/patches-4.14/821-serial-core-add-support-for-boot-console-with-arbitr.patch @@ -30,7 +30,7 @@ Signed-off-by: Sungbo Eo uport->cons->cflag = 0; } /* -@@ -2072,8 +2074,10 @@ uart_set_options(struct uart_port *port, +@@ -2076,8 +2078,10 @@ uart_set_options(struct uart_port *port, * Allow the setting of the UART parameters with a NULL console * too: */ diff --git a/target/linux/ar71xx/patches-4.9/821-serial-core-add-support-for-boot-console-with-arbitr.patch b/target/linux/ar71xx/patches-4.9/821-serial-core-add-support-for-boot-console-with-arbitr.patch index bd7a10d015..14c94d18b5 100644 --- a/target/linux/ar71xx/patches-4.9/821-serial-core-add-support-for-boot-console-with-arbitr.patch +++ b/target/linux/ar71xx/patches-4.9/821-serial-core-add-support-for-boot-console-with-arbitr.patch @@ -30,7 +30,7 @@ Signed-off-by: Sungbo Eo uport->cons->cflag = 0; } /* -@@ -2055,8 +2057,10 @@ uart_set_options(struct uart_port *port, +@@ -2059,8 +2061,10 @@ uart_set_options(struct uart_port *port, * Allow the setting of the UART parameters with a NULL console * too: */ diff --git a/target/linux/ath25/patches-4.14/130-watchdog.patch b/target/linux/ath25/patches-4.14/130-watchdog.patch index 01904d69a5..ac55711670 100644 --- a/target/linux/ath25/patches-4.14/130-watchdog.patch +++ b/target/linux/ath25/patches-4.14/130-watchdog.patch @@ -212,7 +212,7 @@ +MODULE_ALIAS("platform:" DRIVER_NAME); --- a/drivers/watchdog/Kconfig +++ b/drivers/watchdog/Kconfig -@@ -1647,6 +1647,13 @@ config PIC32_DMT +@@ -1648,6 +1648,13 @@ config PIC32_DMT To compile this driver as a loadable module, choose M here. The module will be called pic32-dmt. diff --git a/target/linux/ath79/patches-4.14/921-serial-core-add-support-for-boot-console-with-arbitr.patch b/target/linux/ath79/patches-4.14/921-serial-core-add-support-for-boot-console-with-arbitr.patch index 23b6d73959..3c33cd19cc 100644 --- a/target/linux/ath79/patches-4.14/921-serial-core-add-support-for-boot-console-with-arbitr.patch +++ b/target/linux/ath79/patches-4.14/921-serial-core-add-support-for-boot-console-with-arbitr.patch @@ -30,7 +30,7 @@ Signed-off-by: Sungbo Eo uport->cons->cflag = 0; } /* -@@ -2072,8 +2074,10 @@ uart_set_options(struct uart_port *port, +@@ -2076,8 +2078,10 @@ uart_set_options(struct uart_port *port, * Allow the setting of the UART parameters with a NULL console * too: */ diff --git a/target/linux/ath79/patches-4.19/910-unaligned_access_hacks.patch b/target/linux/ath79/patches-4.19/910-unaligned_access_hacks.patch index 5656507367..466442bbd4 100644 --- a/target/linux/ath79/patches-4.19/910-unaligned_access_hacks.patch +++ b/target/linux/ath79/patches-4.19/910-unaligned_access_hacks.patch @@ -728,7 +728,7 @@ EXPORT_SYMBOL(xfrm_parse_spi); --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c -@@ -3907,14 +3907,16 @@ static bool tcp_parse_aligned_timestamp( +@@ -3908,14 +3908,16 @@ static bool tcp_parse_aligned_timestamp( { const __be32 *ptr = (const __be32 *)(th + 1); diff --git a/target/linux/bcm27xx/patches-4.19/950-0090-hci_h5-Don-t-send-conf_req-when-ACTIVE.patch b/target/linux/bcm27xx/patches-4.19/950-0090-hci_h5-Don-t-send-conf_req-when-ACTIVE.patch index 756fd3a507..65f7d9438d 100644 --- a/target/linux/bcm27xx/patches-4.19/950-0090-hci_h5-Don-t-send-conf_req-when-ACTIVE.patch +++ b/target/linux/bcm27xx/patches-4.19/950-0090-hci_h5-Don-t-send-conf_req-when-ACTIVE.patch @@ -11,7 +11,7 @@ other with conf_req and conf_rsp messages, in a demented game of tag. --- a/drivers/bluetooth/hci_h5.c +++ b/drivers/bluetooth/hci_h5.c -@@ -352,7 +352,8 @@ static void h5_handle_internal_rx(struct +@@ -355,7 +355,8 @@ static void h5_handle_internal_rx(struct h5_link_control(hu, conf_req, 3); } else if (memcmp(data, conf_req, 2) == 0) { h5_link_control(hu, conf_rsp, 2); diff --git a/target/linux/bcm27xx/patches-4.19/950-0144-spi-Make-GPIO-CSs-honour-the-SPI_NO_CS-flag.patch b/target/linux/bcm27xx/patches-4.19/950-0144-spi-Make-GPIO-CSs-honour-the-SPI_NO_CS-flag.patch index d1d5c0a051..0ebcd43027 100644 --- a/target/linux/bcm27xx/patches-4.19/950-0144-spi-Make-GPIO-CSs-honour-the-SPI_NO_CS-flag.patch +++ b/target/linux/bcm27xx/patches-4.19/950-0144-spi-Make-GPIO-CSs-honour-the-SPI_NO_CS-flag.patch @@ -19,7 +19,7 @@ Signed-off-by: Phil Elwell --- a/drivers/spi/spi.c +++ b/drivers/spi/spi.c -@@ -745,7 +745,9 @@ static void spi_set_cs(struct spi_device +@@ -746,7 +746,9 @@ static void spi_set_cs(struct spi_device enable = !enable; if (gpio_is_valid(spi->cs_gpio)) { diff --git a/target/linux/bcm53xx/patches-4.14/905-BCM53573-minor-hacks.patch b/target/linux/bcm53xx/patches-4.14/905-BCM53573-minor-hacks.patch index 39f4cf7662..4762505708 100644 --- a/target/linux/bcm53xx/patches-4.14/905-BCM53573-minor-hacks.patch +++ b/target/linux/bcm53xx/patches-4.14/905-BCM53573-minor-hacks.patch @@ -61,7 +61,7 @@ Signed-off-by: Rafał Miłecki #include #include #include -@@ -836,6 +837,16 @@ static void arch_timer_of_configure_rate +@@ -845,6 +846,16 @@ static void arch_timer_of_configure_rate if (of_property_read_u32(np, "clock-frequency", &arch_timer_rate)) arch_timer_rate = rate; diff --git a/target/linux/bcm53xx/patches-4.19/905-BCM53573-minor-hacks.patch b/target/linux/bcm53xx/patches-4.19/905-BCM53573-minor-hacks.patch index 470b17a5ff..ca0bfb79b1 100644 --- a/target/linux/bcm53xx/patches-4.19/905-BCM53573-minor-hacks.patch +++ b/target/linux/bcm53xx/patches-4.19/905-BCM53573-minor-hacks.patch @@ -61,7 +61,7 @@ Signed-off-by: Rafał Miłecki #include #include #include -@@ -919,6 +920,16 @@ static void arch_timer_of_configure_rate +@@ -928,6 +929,16 @@ static void arch_timer_of_configure_rate if (of_property_read_u32(np, "clock-frequency", &arch_timer_rate)) arch_timer_rate = rate; diff --git a/target/linux/brcm47xx/patches-4.14/831-old_gpio_wdt.patch b/target/linux/brcm47xx/patches-4.14/831-old_gpio_wdt.patch index 88f472e63c..8b4ce63c64 100644 --- a/target/linux/brcm47xx/patches-4.14/831-old_gpio_wdt.patch +++ b/target/linux/brcm47xx/patches-4.14/831-old_gpio_wdt.patch @@ -4,7 +4,7 @@ Signed-off-by: Mathias Adam --- a/drivers/watchdog/Kconfig +++ b/drivers/watchdog/Kconfig -@@ -1473,6 +1473,15 @@ config WDT_MTX1 +@@ -1474,6 +1474,15 @@ config WDT_MTX1 Hardware driver for the MTX-1 boards. This is a watchdog timer that will reboot the machine after a 100 seconds timer expired. diff --git a/target/linux/brcm47xx/patches-4.19/831-old_gpio_wdt.patch b/target/linux/brcm47xx/patches-4.19/831-old_gpio_wdt.patch index 5c2c21ddb0..6d9d8b530e 100644 --- a/target/linux/brcm47xx/patches-4.19/831-old_gpio_wdt.patch +++ b/target/linux/brcm47xx/patches-4.19/831-old_gpio_wdt.patch @@ -4,7 +4,7 @@ Signed-off-by: Mathias Adam --- a/drivers/watchdog/Kconfig +++ b/drivers/watchdog/Kconfig -@@ -1498,6 +1498,15 @@ config WDT_MTX1 +@@ -1499,6 +1499,15 @@ config WDT_MTX1 Hardware driver for the MTX-1 boards. This is a watchdog timer that will reboot the machine after a 100 seconds timer expired. diff --git a/target/linux/cns3xxx/patches-4.19/075-spi_support.patch b/target/linux/cns3xxx/patches-4.19/075-spi_support.patch index b66bea0290..bf18b2a4d2 100644 --- a/target/linux/cns3xxx/patches-4.19/075-spi_support.patch +++ b/target/linux/cns3xxx/patches-4.19/075-spi_support.patch @@ -39,7 +39,7 @@ /** --- a/drivers/spi/spi.c +++ b/drivers/spi/spi.c -@@ -1032,6 +1032,9 @@ static int spi_transfer_one_message(stru +@@ -1033,6 +1033,9 @@ static int spi_transfer_one_message(stru list_for_each_entry(xfer, &msg->transfers, transfer_list) { trace_spi_transfer_start(msg, xfer); diff --git a/target/linux/generic/backport-4.14/025-tcp-allow-drivers-to-tweak-TSQ-logic.patch b/target/linux/generic/backport-4.14/025-tcp-allow-drivers-to-tweak-TSQ-logic.patch index 51ed9517aa..39a3964af7 100644 --- a/target/linux/generic/backport-4.14/025-tcp-allow-drivers-to-tweak-TSQ-logic.patch +++ b/target/linux/generic/backport-4.14/025-tcp-allow-drivers-to-tweak-TSQ-logic.patch @@ -65,7 +65,7 @@ Cc: Kir Kolyshkin * Before updating sk_refcnt, we must commit prior changes to memory --- a/net/ipv4/tcp_output.c +++ b/net/ipv4/tcp_output.c -@@ -1699,7 +1699,7 @@ u32 tcp_tso_autosize(const struct sock * +@@ -1700,7 +1700,7 @@ u32 tcp_tso_autosize(const struct sock * { u32 bytes, segs; @@ -74,7 +74,7 @@ Cc: Kir Kolyshkin sk->sk_gso_max_size - 1 - MAX_TCP_HEADER); /* Goal is to send at least one packet per ms, -@@ -2217,7 +2217,7 @@ static bool tcp_small_queue_check(struct +@@ -2218,7 +2218,7 @@ static bool tcp_small_queue_check(struct { unsigned int limit; diff --git a/target/linux/generic/backport-4.14/030-USB-serial-option-fix-dwm-158-3g-modem-interface.patch b/target/linux/generic/backport-4.14/030-USB-serial-option-fix-dwm-158-3g-modem-interface.patch index 4315b8d6bb..ecef1a4b2b 100644 --- a/target/linux/generic/backport-4.14/030-USB-serial-option-fix-dwm-158-3g-modem-interface.patch +++ b/target/linux/generic/backport-4.14/030-USB-serial-option-fix-dwm-158-3g-modem-interface.patch @@ -30,7 +30,7 @@ Signed-off-by: Johan Hovold --- a/drivers/usb/serial/option.c +++ b/drivers/usb/serial/option.c -@@ -2012,7 +2012,8 @@ static const struct usb_device_id option +@@ -2015,7 +2015,8 @@ static const struct usb_device_id option { USB_DEVICE_INTERFACE_CLASS(0x2001, 0x7d01, 0xff) }, /* D-Link DWM-156 (variant) */ { USB_DEVICE_INTERFACE_CLASS(0x2001, 0x7d02, 0xff) }, { USB_DEVICE_INTERFACE_CLASS(0x2001, 0x7d03, 0xff) }, diff --git a/target/linux/generic/backport-4.19/451-v5.0-mtd-spinand-Add-initial-support-for-Toshiba-TC58CVG2.patch b/target/linux/generic/backport-4.19/451-v5.0-mtd-spinand-Add-initial-support-for-Toshiba-TC58CVG2.patch index 288fdbf267..6a988ec5b5 100644 --- a/target/linux/generic/backport-4.19/451-v5.0-mtd-spinand-Add-initial-support-for-Toshiba-TC58CVG2.patch +++ b/target/linux/generic/backport-4.19/451-v5.0-mtd-spinand-Add-initial-support-for-Toshiba-TC58CVG2.patch @@ -28,7 +28,7 @@ Signed-off-by: Miquel Raynal obj-$(CONFIG_MTD_SPI_NAND) += spinand.o --- a/drivers/mtd/nand/spi/core.c +++ b/drivers/mtd/nand/spi/core.c -@@ -762,6 +762,7 @@ static const struct nand_ops spinand_ops +@@ -766,6 +766,7 @@ static const struct nand_ops spinand_ops static const struct spinand_manufacturer *spinand_manufacturers[] = { ¯onix_spinand_manufacturer, µn_spinand_manufacturer, diff --git a/target/linux/generic/backport-4.19/452-v5.0-mtd-spinand-add-support-for-GigaDevice-GD5FxGQ4xA.patch b/target/linux/generic/backport-4.19/452-v5.0-mtd-spinand-add-support-for-GigaDevice-GD5FxGQ4xA.patch index d3ded95ccb..003ff02711 100644 --- a/target/linux/generic/backport-4.19/452-v5.0-mtd-spinand-add-support-for-GigaDevice-GD5FxGQ4xA.patch +++ b/target/linux/generic/backport-4.19/452-v5.0-mtd-spinand-add-support-for-GigaDevice-GD5FxGQ4xA.patch @@ -25,7 +25,7 @@ Signed-off-by: Miquel Raynal obj-$(CONFIG_MTD_SPI_NAND) += spinand.o --- a/drivers/mtd/nand/spi/core.c +++ b/drivers/mtd/nand/spi/core.c -@@ -760,6 +760,7 @@ static const struct nand_ops spinand_ops +@@ -764,6 +764,7 @@ static const struct nand_ops spinand_ops }; static const struct spinand_manufacturer *spinand_manufacturers[] = { diff --git a/target/linux/generic/backport-4.19/461-v5.3-mtd-spinand-Add-support-for-two-byte-device-IDs.patch b/target/linux/generic/backport-4.19/461-v5.3-mtd-spinand-Add-support-for-two-byte-device-IDs.patch index ee81f97f4e..209dc1d4a8 100644 --- a/target/linux/generic/backport-4.19/461-v5.3-mtd-spinand-Add-support-for-two-byte-device-IDs.patch +++ b/target/linux/generic/backport-4.19/461-v5.3-mtd-spinand-Add-support-for-two-byte-device-IDs.patch @@ -17,7 +17,7 @@ Signed-off-by: Miquel Raynal --- a/drivers/mtd/nand/spi/core.c +++ b/drivers/mtd/nand/spi/core.c -@@ -851,7 +851,7 @@ spinand_select_op_variant(struct spinand +@@ -855,7 +855,7 @@ spinand_select_op_variant(struct spinand */ int spinand_match_and_init(struct spinand_device *spinand, const struct spinand_info *table, diff --git a/target/linux/generic/backport-4.19/463-v5.3-mtd-spinand-Add-initial-support-for-Paragon-PN26G0xA.patch b/target/linux/generic/backport-4.19/463-v5.3-mtd-spinand-Add-initial-support-for-Paragon-PN26G0xA.patch index d30abdc143..6e3ade3461 100644 --- a/target/linux/generic/backport-4.19/463-v5.3-mtd-spinand-Add-initial-support-for-Paragon-PN26G0xA.patch +++ b/target/linux/generic/backport-4.19/463-v5.3-mtd-spinand-Add-initial-support-for-Paragon-PN26G0xA.patch @@ -33,7 +33,7 @@ ADOPTED FROM UPSTREAM due to upstream commit 377e517b5fa5 in Linux 5.2 obj-$(CONFIG_MTD_SPI_NAND) += spinand.o --- a/drivers/mtd/nand/spi/core.c +++ b/drivers/mtd/nand/spi/core.c -@@ -763,6 +763,7 @@ static const struct spinand_manufacturer +@@ -767,6 +767,7 @@ static const struct spinand_manufacturer &gigadevice_spinand_manufacturer, ¯onix_spinand_manufacturer, µn_spinand_manufacturer, diff --git a/target/linux/generic/backport-4.9/024-3-tcp-tsq-add-shortcut-in-tcp_tasklet_func.patch b/target/linux/generic/backport-4.9/024-3-tcp-tsq-add-shortcut-in-tcp_tasklet_func.patch index 77826176fd..7b723867b4 100644 --- a/target/linux/generic/backport-4.9/024-3-tcp-tsq-add-shortcut-in-tcp_tasklet_func.patch +++ b/target/linux/generic/backport-4.9/024-3-tcp-tsq-add-shortcut-in-tcp_tasklet_func.patch @@ -60,7 +60,7 @@ Signed-off-by: David S. Miller nval = cmpxchg(&tp->tsq_flags, oval, nval); if (nval != oval) continue; -@@ -2239,6 +2239,8 @@ static bool tcp_write_xmit(struct sock * +@@ -2240,6 +2240,8 @@ static bool tcp_write_xmit(struct sock * unlikely(tso_fragment(sk, skb, limit, mss_now, gfp))) break; diff --git a/target/linux/generic/backport-4.9/024-5-tcp-tsq-add-a-shortcut-in-tcp_small_queue_check.patch b/target/linux/generic/backport-4.9/024-5-tcp-tsq-add-a-shortcut-in-tcp_small_queue_check.patch index a2d7680536..76567805e5 100644 --- a/target/linux/generic/backport-4.9/024-5-tcp-tsq-add-a-shortcut-in-tcp_small_queue_check.patch +++ b/target/linux/generic/backport-4.9/024-5-tcp-tsq-add-a-shortcut-in-tcp_small_queue_check.patch @@ -19,7 +19,7 @@ Signed-off-by: David S. Miller --- a/net/ipv4/tcp_output.c +++ b/net/ipv4/tcp_output.c -@@ -2144,6 +2144,15 @@ static bool tcp_small_queue_check(struct +@@ -2145,6 +2145,15 @@ static bool tcp_small_queue_check(struct limit <<= factor; if (atomic_read(&sk->sk_wmem_alloc) > limit) { diff --git a/target/linux/generic/backport-4.9/024-6-tcp-tcp_mtu_probe-is-likely-to-exit-early.patch b/target/linux/generic/backport-4.9/024-6-tcp-tcp_mtu_probe-is-likely-to-exit-early.patch index 75118deb86..de7fcc4cbb 100644 --- a/target/linux/generic/backport-4.9/024-6-tcp-tcp_mtu_probe-is-likely-to-exit-early.patch +++ b/target/linux/generic/backport-4.9/024-6-tcp-tcp_mtu_probe-is-likely-to-exit-early.patch @@ -17,7 +17,7 @@ Signed-off-by: David S. Miller --- a/net/ipv4/tcp_output.c +++ b/net/ipv4/tcp_output.c -@@ -1976,26 +1976,26 @@ static bool tcp_can_coalesce_send_queue_ +@@ -1977,26 +1977,26 @@ static bool tcp_can_coalesce_send_queue_ */ static int tcp_mtu_probe(struct sock *sk) { diff --git a/target/linux/generic/backport-4.9/024-8-tcp-tsq-move-tsq_flags-close-to-sk_wmem_alloc.patch b/target/linux/generic/backport-4.9/024-8-tcp-tsq-move-tsq_flags-close-to-sk_wmem_alloc.patch index 3ebf2755a2..19daabf639 100644 --- a/target/linux/generic/backport-4.9/024-8-tcp-tsq-move-tsq_flags-close-to-sk_wmem_alloc.patch +++ b/target/linux/generic/backport-4.9/024-8-tcp-tsq-move-tsq_flags-close-to-sk_wmem_alloc.patch @@ -114,7 +114,7 @@ Signed-off-by: David S. Miller if (nval != oval) continue; -@@ -2153,7 +2153,7 @@ static bool tcp_small_queue_check(struct +@@ -2154,7 +2154,7 @@ static bool tcp_small_queue_check(struct skb->prev == sk->sk_write_queue.next) return false; @@ -123,7 +123,7 @@ Signed-off-by: David S. Miller /* It is possible TX completion already happened * before we set TSQ_THROTTLED, so we must * test again the condition. -@@ -2251,8 +2251,8 @@ static bool tcp_write_xmit(struct sock * +@@ -2252,8 +2252,8 @@ static bool tcp_write_xmit(struct sock * unlikely(tso_fragment(sk, skb, limit, mss_now, gfp))) break; @@ -134,7 +134,7 @@ Signed-off-by: David S. Miller if (tcp_small_queue_check(sk, skb, 0)) break; -@@ -3574,8 +3574,6 @@ void __tcp_send_ack(struct sock *sk, u32 +@@ -3577,8 +3577,6 @@ void __tcp_send_ack(struct sock *sk, u32 /* We do not want pure acks influencing TCP Small Queues or fq/pacing * too much. * SKB_TRUESIZE(max(1 .. 66, MAX_TCP_HEADER)) is unfortunately ~784 diff --git a/target/linux/generic/backport-4.9/025-tcp-allow-drivers-to-tweak-TSQ-logic.patch b/target/linux/generic/backport-4.9/025-tcp-allow-drivers-to-tweak-TSQ-logic.patch index 6884a4da17..a7fe3c0d08 100644 --- a/target/linux/generic/backport-4.9/025-tcp-allow-drivers-to-tweak-TSQ-logic.patch +++ b/target/linux/generic/backport-4.9/025-tcp-allow-drivers-to-tweak-TSQ-logic.patch @@ -65,7 +65,7 @@ Cc: Kir Kolyshkin * Before updating sk_refcnt, we must commit prior changes to memory --- a/net/ipv4/tcp_output.c +++ b/net/ipv4/tcp_output.c -@@ -1609,7 +1609,7 @@ u32 tcp_tso_autosize(const struct sock * +@@ -1610,7 +1610,7 @@ u32 tcp_tso_autosize(const struct sock * { u32 bytes, segs; @@ -74,7 +74,7 @@ Cc: Kir Kolyshkin sk->sk_gso_max_size - 1 - MAX_TCP_HEADER); /* Goal is to send at least one packet per ms, -@@ -2140,7 +2140,7 @@ static bool tcp_small_queue_check(struct +@@ -2141,7 +2141,7 @@ static bool tcp_small_queue_check(struct { unsigned int limit; diff --git a/target/linux/generic/backport-4.9/090-net-generalize-napi_complete_done.patch b/target/linux/generic/backport-4.9/090-net-generalize-napi_complete_done.patch index 027bf673d1..dcd2bf5698 100644 --- a/target/linux/generic/backport-4.9/090-net-generalize-napi_complete_done.patch +++ b/target/linux/generic/backport-4.9/090-net-generalize-napi_complete_done.patch @@ -1095,7 +1095,7 @@ Signed-off-by: David S. Miller dma_intr_ena = smsc9420_reg_read(pd, DMAC_INTR_ENA); --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c -@@ -2702,7 +2702,7 @@ static int stmmac_poll(struct napi_struc +@@ -2704,7 +2704,7 @@ static int stmmac_poll(struct napi_struc work_done = stmmac_rx(priv, budget); if (work_done < budget) { diff --git a/target/linux/generic/hack-4.14/998-usb-serial-option-add-u9300.patch b/target/linux/generic/hack-4.14/998-usb-serial-option-add-u9300.patch index ed7a8b5272..54f7cc8dd8 100644 --- a/target/linux/generic/hack-4.14/998-usb-serial-option-add-u9300.patch +++ b/target/linux/generic/hack-4.14/998-usb-serial-option-add-u9300.patch @@ -18,7 +18,7 @@ /* 4G Systems products */ /* This is the 4G XS Stick W14 a.k.a. Mobilcom Debitel Surf-Stick * -@@ -578,6 +579,16 @@ static void option_instat_callback(struc +@@ -581,6 +582,16 @@ static void option_instat_callback(struc /* Device needs ZLP */ #define ZLP BIT(17) @@ -35,7 +35,7 @@ static const struct usb_device_id option_ids[] = { { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) }, -@@ -612,6 +623,8 @@ static const struct usb_device_id option +@@ -615,6 +626,8 @@ static const struct usb_device_id option { USB_DEVICE(QUANTA_VENDOR_ID, QUANTA_PRODUCT_GLE) }, { USB_DEVICE(QUANTA_VENDOR_ID, 0xea42), .driver_info = RSVD(4) }, diff --git a/target/linux/generic/hack-4.19/207-disable-modorder.patch b/target/linux/generic/hack-4.19/207-disable-modorder.patch index b655660732..82c953369c 100644 --- a/target/linux/generic/hack-4.19/207-disable-modorder.patch +++ b/target/linux/generic/hack-4.19/207-disable-modorder.patch @@ -15,7 +15,7 @@ Signed-off-by: Felix Fietkau --- a/Makefile +++ b/Makefile -@@ -1260,7 +1260,6 @@ endif +@@ -1263,7 +1263,6 @@ endif PHONY += modules modules: $(vmlinux-dirs) $(if $(KBUILD_BUILTIN),vmlinux) modules.builtin @@ -23,7 +23,7 @@ Signed-off-by: Felix Fietkau @$(kecho) ' Building modules, stage 2.'; $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost -@@ -1289,7 +1288,6 @@ _modinst_: +@@ -1292,7 +1291,6 @@ _modinst_: rm -f $(MODLIB)/build ; \ ln -s $(CURDIR) $(MODLIB)/build ; \ fi diff --git a/target/linux/generic/hack-4.19/220-gc_sections.patch b/target/linux/generic/hack-4.19/220-gc_sections.patch index f5d5962207..0f4c020581 100644 --- a/target/linux/generic/hack-4.19/220-gc_sections.patch +++ b/target/linux/generic/hack-4.19/220-gc_sections.patch @@ -33,7 +33,7 @@ Signed-off-by: Gabor Juhos # Read KERNELRELEASE from include/config/kernel.release (if it exists) KERNELRELEASE = $(shell cat include/config/kernel.release 2> /dev/null) KERNELVERSION = $(VERSION)$(if $(PATCHLEVEL),.$(PATCHLEVEL)$(if $(SUBLEVEL),.$(SUBLEVEL)))$(EXTRAVERSION) -@@ -792,11 +797,6 @@ ifdef CONFIG_DEBUG_SECTION_MISMATCH +@@ -795,11 +800,6 @@ ifdef CONFIG_DEBUG_SECTION_MISMATCH KBUILD_CFLAGS += $(call cc-option, -fno-inline-functions-called-once) endif diff --git a/target/linux/generic/hack-4.19/998-usb-serial-option-add-u9300.patch b/target/linux/generic/hack-4.19/998-usb-serial-option-add-u9300.patch index ad594257fd..e31650c18b 100644 --- a/target/linux/generic/hack-4.19/998-usb-serial-option-add-u9300.patch +++ b/target/linux/generic/hack-4.19/998-usb-serial-option-add-u9300.patch @@ -18,7 +18,7 @@ /* 4G Systems products */ /* This is the 4G XS Stick W14 a.k.a. Mobilcom Debitel Surf-Stick * -@@ -575,6 +576,16 @@ static void option_instat_callback(struc +@@ -578,6 +579,16 @@ static void option_instat_callback(struc /* Device needs ZLP */ #define ZLP BIT(17) @@ -35,7 +35,7 @@ static const struct usb_device_id option_ids[] = { { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) }, -@@ -609,6 +620,8 @@ static const struct usb_device_id option +@@ -612,6 +623,8 @@ static const struct usb_device_id option { USB_DEVICE(QUANTA_VENDOR_ID, QUANTA_PRODUCT_GLE) }, { USB_DEVICE(QUANTA_VENDOR_ID, 0xea42), .driver_info = RSVD(4) }, diff --git a/target/linux/generic/pending-4.14/499-mtd-parser-cmdline-Fix-parsing-of-part-names-with-co.patch b/target/linux/generic/pending-4.14/499-mtd-parser-cmdline-Fix-parsing-of-part-names-with-co.patch deleted file mode 100644 index 9fad2663ea..0000000000 --- a/target/linux/generic/pending-4.14/499-mtd-parser-cmdline-Fix-parsing-of-part-names-with-co.patch +++ /dev/null @@ -1,61 +0,0 @@ -From: Sven Eckelmann -Date: Sun, 22 Nov 2020 00:48:33 +0100 -Subject: [PATCH RFC] mtd: parser: cmdline: Fix parsing of part-names with colons - -Some devices (especially QCA ones) are already using hardcoded partition -names with colons in it. The OpenMesh A62 for example provides following -mtd relevant information via cmdline: - - root=31:11 mtdparts=spi0.0:256k(0:SBL1),128k(0:MIBIB),384k(0:QSEE),64k(0:CDT),64k(0:DDRPARAMS),64k(0:APPSBLENV),512k(0:APPSBL),64k(0:ART),64k(custom),64k(0:KEYS),0x002b0000(kernel),0x00c80000(rootfs),15552k(inactive) rootfsname=rootfs rootwait - -The change to split only on the last colon between mtd-id and partitions -will cause newpart to see following string for the first partition: - - KEYS),0x002b0000(kernel),0x00c80000(rootfs),15552k(inactive) - -Such a partition list cannot be parsed and thus the device fails to boot. - -Avoid this behavior by making sure that the start of the first part-name -("(") will also be the last byte the mtd-id split algorithm is using for -its colon search. - -Forwarded: https://patchwork.ozlabs.org/project/linux-mtd/patch/20201122001533.985641-1-sven@narfation.org/ -Fixes: eb13fa022741 ("mtd: parser: cmdline: Support MTD names containing one or more colons") -Signed-off-by: Sven Eckelmann - ---- a/drivers/mtd/cmdlinepart.c -+++ b/drivers/mtd/cmdlinepart.c -@@ -228,7 +228,7 @@ static int mtdpart_setup_real(char *s) - struct cmdline_mtd_partition *this_mtd; - struct mtd_partition *parts; - int mtd_id_len, num_parts; -- char *p, *mtd_id, *semicol; -+ char *p, *mtd_id, *semicol, *open_parenth; - - /* - * Replace the first ';' by a NULL char so strrchr can work -@@ -238,6 +238,13 @@ static int mtdpart_setup_real(char *s) - if (semicol) - *semicol = '\0'; - -+ /* make sure that part-names with ":" will not be handled as -+ * part of the mtd-id with an ":" -+ */ -+ open_parenth = strchr(s, '('); -+ if (open_parenth) -+ *open_parenth = '\0'; -+ - mtd_id = s; - - /* -@@ -247,6 +254,10 @@ static int mtdpart_setup_real(char *s) - */ - p = strrchr(s, ':'); - -+ /* Restore the '(' now. */ -+ if (open_parenth) -+ *open_parenth = '('; -+ - /* Restore the ';' now. */ - if (semicol) - *semicol = ';'; diff --git a/target/linux/generic/pending-4.19/131-spi-use-gpio_set_value_cansleep-for-setting-chipsele.patch b/target/linux/generic/pending-4.19/131-spi-use-gpio_set_value_cansleep-for-setting-chipsele.patch index 252b06ac8f..640814df89 100644 --- a/target/linux/generic/pending-4.19/131-spi-use-gpio_set_value_cansleep-for-setting-chipsele.patch +++ b/target/linux/generic/pending-4.19/131-spi-use-gpio_set_value_cansleep-for-setting-chipsele.patch @@ -9,7 +9,7 @@ Signed-off-by: Felix Fietkau --- a/drivers/spi/spi.c +++ b/drivers/spi/spi.c -@@ -745,7 +745,7 @@ static void spi_set_cs(struct spi_device +@@ -746,7 +746,7 @@ static void spi_set_cs(struct spi_device enable = !enable; if (gpio_is_valid(spi->cs_gpio)) { diff --git a/target/linux/generic/pending-4.19/610-netfilter_match_bypass_default_checks.patch b/target/linux/generic/pending-4.19/610-netfilter_match_bypass_default_checks.patch index 1691146825..d7a47305cf 100644 --- a/target/linux/generic/pending-4.19/610-netfilter_match_bypass_default_checks.patch +++ b/target/linux/generic/pending-4.19/610-netfilter_match_bypass_default_checks.patch @@ -69,7 +69,7 @@ Signed-off-by: Felix Fietkau return -ENOMEM; @@ -821,6 +849,7 @@ copy_entries_to_user(unsigned int total_ - const struct xt_table_info *private = table->private; + const struct xt_table_info *private = xt_table_get_private_protected(table); int ret = 0; const void *loc_cpu_entry; + u8 flags; diff --git a/target/linux/generic/pending-4.19/611-netfilter_match_bypass_default_table.patch b/target/linux/generic/pending-4.19/611-netfilter_match_bypass_default_table.patch index ba976b0751..3c586d08cc 100644 --- a/target/linux/generic/pending-4.19/611-netfilter_match_bypass_default_table.patch +++ b/target/linux/generic/pending-4.19/611-netfilter_match_bypass_default_table.patch @@ -48,7 +48,7 @@ Signed-off-by: Felix Fietkau /* Initialization */ + WARN_ON(!(table->valid_hooks & (1 << hook))); + local_bh_disable(); -+ private = READ_ONCE(table->private); /* Address dependency. */ ++ private = rcu_access_pointer(table->private); + cpu = smp_processor_id(); + table_base = private->entries; + @@ -80,7 +80,7 @@ Signed-off-by: Felix Fietkau - WARN_ON(!(table->valid_hooks & (1 << hook))); - local_bh_disable(); addend = xt_write_recseq_begin(); -- private = READ_ONCE(table->private); /* Address dependency. */ +- private = rcu_access_pointer(table->private); - cpu = smp_processor_id(); - table_base = private->entries; jumpstack = (struct ipt_entry **)private->jumpstack[cpu]; diff --git a/target/linux/generic/pending-4.9/131-spi-use-gpio_set_value_cansleep-for-setting-chipsele.patch b/target/linux/generic/pending-4.9/131-spi-use-gpio_set_value_cansleep-for-setting-chipsele.patch index 8c2d68b9db..b98e8c52cc 100644 --- a/target/linux/generic/pending-4.9/131-spi-use-gpio_set_value_cansleep-for-setting-chipsele.patch +++ b/target/linux/generic/pending-4.9/131-spi-use-gpio_set_value_cansleep-for-setting-chipsele.patch @@ -9,7 +9,7 @@ Signed-off-by: Felix Fietkau --- a/drivers/spi/spi.c +++ b/drivers/spi/spi.c -@@ -700,7 +700,7 @@ static void spi_set_cs(struct spi_device +@@ -712,7 +712,7 @@ static void spi_set_cs(struct spi_device enable = !enable; if (gpio_is_valid(spi->cs_gpio)) diff --git a/target/linux/generic/pending-4.9/499-mtd-parser-cmdline-Fix-parsing-of-part-names-with-co.patch b/target/linux/generic/pending-4.9/499-mtd-parser-cmdline-Fix-parsing-of-part-names-with-co.patch deleted file mode 100644 index 9fad2663ea..0000000000 --- a/target/linux/generic/pending-4.9/499-mtd-parser-cmdline-Fix-parsing-of-part-names-with-co.patch +++ /dev/null @@ -1,61 +0,0 @@ -From: Sven Eckelmann -Date: Sun, 22 Nov 2020 00:48:33 +0100 -Subject: [PATCH RFC] mtd: parser: cmdline: Fix parsing of part-names with colons - -Some devices (especially QCA ones) are already using hardcoded partition -names with colons in it. The OpenMesh A62 for example provides following -mtd relevant information via cmdline: - - root=31:11 mtdparts=spi0.0:256k(0:SBL1),128k(0:MIBIB),384k(0:QSEE),64k(0:CDT),64k(0:DDRPARAMS),64k(0:APPSBLENV),512k(0:APPSBL),64k(0:ART),64k(custom),64k(0:KEYS),0x002b0000(kernel),0x00c80000(rootfs),15552k(inactive) rootfsname=rootfs rootwait - -The change to split only on the last colon between mtd-id and partitions -will cause newpart to see following string for the first partition: - - KEYS),0x002b0000(kernel),0x00c80000(rootfs),15552k(inactive) - -Such a partition list cannot be parsed and thus the device fails to boot. - -Avoid this behavior by making sure that the start of the first part-name -("(") will also be the last byte the mtd-id split algorithm is using for -its colon search. - -Forwarded: https://patchwork.ozlabs.org/project/linux-mtd/patch/20201122001533.985641-1-sven@narfation.org/ -Fixes: eb13fa022741 ("mtd: parser: cmdline: Support MTD names containing one or more colons") -Signed-off-by: Sven Eckelmann - ---- a/drivers/mtd/cmdlinepart.c -+++ b/drivers/mtd/cmdlinepart.c -@@ -228,7 +228,7 @@ static int mtdpart_setup_real(char *s) - struct cmdline_mtd_partition *this_mtd; - struct mtd_partition *parts; - int mtd_id_len, num_parts; -- char *p, *mtd_id, *semicol; -+ char *p, *mtd_id, *semicol, *open_parenth; - - /* - * Replace the first ';' by a NULL char so strrchr can work -@@ -238,6 +238,13 @@ static int mtdpart_setup_real(char *s) - if (semicol) - *semicol = '\0'; - -+ /* make sure that part-names with ":" will not be handled as -+ * part of the mtd-id with an ":" -+ */ -+ open_parenth = strchr(s, '('); -+ if (open_parenth) -+ *open_parenth = '\0'; -+ - mtd_id = s; - - /* -@@ -247,6 +254,10 @@ static int mtdpart_setup_real(char *s) - */ - p = strrchr(s, ':'); - -+ /* Restore the '(' now. */ -+ if (open_parenth) -+ *open_parenth = '('; -+ - /* Restore the ';' now. */ - if (semicol) - *semicol = ';'; diff --git a/target/linux/ipq40xx/patches-4.19/995-ipq40xx-unlock-cpu-frequency.patch b/target/linux/ipq40xx/patches-4.19/995-ipq40xx-unlock-cpu-frequency.patch index cd1fa50a4a..fdfe2108e4 100644 --- a/target/linux/ipq40xx/patches-4.19/995-ipq40xx-unlock-cpu-frequency.patch +++ b/target/linux/ipq40xx/patches-4.19/995-ipq40xx-unlock-cpu-frequency.patch @@ -10,38 +10,42 @@ Signed-off-by: William --- --- a/arch/arm/boot/dts/qcom-ipq4019.dtsi +++ b/arch/arm/boot/dts/qcom-ipq4019.dtsi -@@ -114,20 +114,24 @@ - +@@ -121,23 +121,28 @@ opp-48000000 { opp-hz = /bits/ 64 <48000000>; + opp-microvolt = <1100000>; - clock-latency-ns = <256000>; + clock-latency-ns = <100000>; }; opp-200000000 { opp-hz = /bits/ 64 <200000000>; + opp-microvolt = <1100000>; - clock-latency-ns = <256000>; + clock-latency-ns = <100000>; }; opp-500000000 { opp-hz = /bits/ 64 <500000000>; + opp-microvolt = <1100000>; - clock-latency-ns = <256000>; + clock-latency-ns = <100000>; }; opp-716000000 { opp-hz = /bits/ 64 <716000000>; + opp-microvolt = <1100000>; - clock-latency-ns = <256000>; + clock-latency-ns = <100000>; }; + opp-896000000 { + opp-hz = /bits/ 64 <896000000>; ++ opp-microvolt = <1100000>; + clock-latency-ns = <100000>; + }; }; - memory { + pmu { --- a/drivers/clk/qcom/gcc-ipq4019.c +++ b/drivers/clk/qcom/gcc-ipq4019.c -@@ -579,6 +579,9 @@ static const struct freq_tbl ftbl_gcc_ap +@@ -587,6 +587,9 @@ static const struct freq_tbl ftbl_gcc_ap F(632000000, P_DDRPLLAPSS, 1, 0, 0), F(672000000, P_DDRPLLAPSS, 1, 0, 0), F(716000000, P_DDRPLLAPSS, 1, 0, 0), diff --git a/target/linux/ipq806x/patches-4.14/0071-1-PCI-qcom-Fixed-IPQ806x-specific-clocks.patch b/target/linux/ipq806x/patches-4.14/0071-1-PCI-qcom-Fixed-IPQ806x-specific-clocks.patch index b9f6e33be6..fd766028d9 100644 --- a/target/linux/ipq806x/patches-4.14/0071-1-PCI-qcom-Fixed-IPQ806x-specific-clocks.patch +++ b/target/linux/ipq806x/patches-4.14/0071-1-PCI-qcom-Fixed-IPQ806x-specific-clocks.patch @@ -20,7 +20,7 @@ Signed-off-by: Sham Muthayyan struct reset_control *pci_reset; struct reset_control *axi_reset; struct reset_control *ahb_reset; -@@ -249,6 +251,14 @@ static int qcom_pcie_get_resources_2_1_0 +@@ -250,6 +252,14 @@ static int qcom_pcie_get_resources_2_1_0 if (IS_ERR(res->phy_clk)) return PTR_ERR(res->phy_clk); @@ -35,7 +35,7 @@ Signed-off-by: Sham Muthayyan res->pci_reset = devm_reset_control_get_exclusive(dev, "pci"); if (IS_ERR(res->pci_reset)) return PTR_ERR(res->pci_reset); -@@ -281,6 +291,8 @@ static void qcom_pcie_deinit_2_1_0(struc +@@ -287,6 +297,8 @@ static void qcom_pcie_deinit_2_1_0(struc clk_disable_unprepare(res->iface_clk); clk_disable_unprepare(res->core_clk); clk_disable_unprepare(res->phy_clk); @@ -44,7 +44,7 @@ Signed-off-by: Sham Muthayyan regulator_disable(res->vdda); regulator_disable(res->vdda_phy); regulator_disable(res->vdda_refclk); -@@ -324,16 +336,28 @@ static int qcom_pcie_init_2_1_0(struct q +@@ -330,16 +342,28 @@ static int qcom_pcie_init_2_1_0(struct q goto err_assert_ahb; } @@ -76,7 +76,7 @@ Signed-off-by: Sham Muthayyan } ret = reset_control_deassert(res->ahb_reset); -@@ -389,10 +413,14 @@ static int qcom_pcie_init_2_1_0(struct q +@@ -401,10 +425,14 @@ static int qcom_pcie_init_2_1_0(struct q return 0; err_deassert_ahb: diff --git a/target/linux/ipq806x/patches-4.14/0071-2-PCI-qcom-Fixed-IPQ806x-PCIE-reset-changes.patch b/target/linux/ipq806x/patches-4.14/0071-2-PCI-qcom-Fixed-IPQ806x-PCIE-reset-changes.patch deleted file mode 100644 index 8b9e5ff5d1..0000000000 --- a/target/linux/ipq806x/patches-4.14/0071-2-PCI-qcom-Fixed-IPQ806x-PCIE-reset-changes.patch +++ /dev/null @@ -1,85 +0,0 @@ -From 490d103232287eb51c92c49a4ef8865fd0a9d59e Mon Sep 17 00:00:00 2001 -From: Sham Muthayyan -Date: Tue, 19 Jul 2016 18:58:18 +0530 -Subject: PCI: qcom: Fixed IPQ806x PCIE reset changes - -Change-Id: Ia6590e960b9754b1e8b7a51f318788cd63e9e321 -Signed-off-by: Sham Muthayyan ---- - drivers/pci/host/pcie-qcom.c | 24 +++++++++++++++++++----- - 1 file changed, 19 insertions(+), 5 deletions(-) - ---- a/drivers/pci/dwc/pcie-qcom.c -+++ b/drivers/pci/dwc/pcie-qcom.c -@@ -98,6 +98,7 @@ struct qcom_pcie_resources_2_1_0 { - struct reset_control *ahb_reset; - struct reset_control *por_reset; - struct reset_control *phy_reset; -+ struct reset_control *ext_reset; - struct regulator *vdda; - struct regulator *vdda_phy; - struct regulator *vdda_refclk; -@@ -275,6 +276,10 @@ static int qcom_pcie_get_resources_2_1_0 - if (IS_ERR(res->por_reset)) - return PTR_ERR(res->por_reset); - -+ res->ext_reset = devm_reset_control_get(dev, "ext"); -+ if (IS_ERR(res->ext_reset)) -+ return PTR_ERR(res->ext_reset); -+ - res->phy_reset = devm_reset_control_get_exclusive(dev, "phy"); - return PTR_ERR_OR_ZERO(res->phy_reset); - } -@@ -288,6 +293,7 @@ static void qcom_pcie_deinit_2_1_0(struc - reset_control_assert(res->ahb_reset); - reset_control_assert(res->por_reset); - reset_control_assert(res->pci_reset); -+ reset_control_assert(res->ext_reset); - clk_disable_unprepare(res->iface_clk); - clk_disable_unprepare(res->core_clk); - clk_disable_unprepare(res->phy_clk); -@@ -306,6 +312,12 @@ static int qcom_pcie_init_2_1_0(struct q - u32 val; - int ret; - -+ ret = reset_control_assert(res->ahb_reset); -+ if (ret) { -+ dev_err(dev, "cannot assert ahb reset\n"); -+ return ret; -+ } -+ - ret = regulator_enable(res->vdda); - if (ret) { - dev_err(dev, "cannot enable vdda regulator\n"); -@@ -324,16 +336,16 @@ static int qcom_pcie_init_2_1_0(struct q - goto err_vdda_phy; - } - -- ret = reset_control_assert(res->ahb_reset); -+ ret = reset_control_deassert(res->ext_reset); - if (ret) { -- dev_err(dev, "cannot assert ahb reset\n"); -- goto err_assert_ahb; -+ dev_err(dev, "cannot assert ext reset\n"); -+ goto err_reset_ext; - } - - ret = clk_prepare_enable(res->iface_clk); - if (ret) { - dev_err(dev, "cannot prepare/enable iface clock\n"); -- goto err_assert_ahb; -+ goto err_iface; - } - - ret = clk_prepare_enable(res->core_clk); -@@ -422,7 +434,9 @@ err_clk_phy: - clk_disable_unprepare(res->core_clk); - err_clk_core: - clk_disable_unprepare(res->iface_clk); --err_assert_ahb: -+err_iface: -+ reset_control_assert(res->ext_reset); -+err_reset_ext: - regulator_disable(res->vdda_phy); - err_vdda_phy: - regulator_disable(res->vdda_refclk); diff --git a/target/linux/ipq806x/patches-4.14/0071-3-PCI-qcom-Fixed-IPQ806x-PCIE-init-changes.patch b/target/linux/ipq806x/patches-4.14/0071-3-PCI-qcom-Fixed-IPQ806x-PCIE-init-changes.patch index 57ee082c83..f8e65020a7 100644 --- a/target/linux/ipq806x/patches-4.14/0071-3-PCI-qcom-Fixed-IPQ806x-PCIE-init-changes.patch +++ b/target/linux/ipq806x/patches-4.14/0071-3-PCI-qcom-Fixed-IPQ806x-PCIE-init-changes.patch @@ -87,7 +87,7 @@ Signed-off-by: Sham Muthayyan - u32 val; int ret; - ret = reset_control_assert(res->ahb_reset); + ret = regulator_enable(res->vdda); @@ -378,15 +410,26 @@ static int qcom_pcie_init_2_1_0(struct q goto err_deassert_ahb; } diff --git a/target/linux/ipq806x/patches-4.14/0071-6-PCI-qcom-Force-GEN1-support.patch b/target/linux/ipq806x/patches-4.14/0071-6-PCI-qcom-Force-GEN1-support.patch index 5dea084bfa..b9c5010b74 100644 --- a/target/linux/ipq806x/patches-4.14/0071-6-PCI-qcom-Force-GEN1-support.patch +++ b/target/linux/ipq806x/patches-4.14/0071-6-PCI-qcom-Force-GEN1-support.patch @@ -40,7 +40,7 @@ Signed-off-by: Sham Muthayyan /* Set the Max TLP size to 2K, instead of using default of 4K */ -@@ -1382,6 +1390,8 @@ static int qcom_pcie_probe(struct platfo +@@ -1380,6 +1388,8 @@ static int qcom_pcie_probe(struct platfo struct dw_pcie *pci; struct qcom_pcie *pcie; int ret; @@ -49,7 +49,7 @@ Signed-off-by: Sham Muthayyan pcie = devm_kzalloc(dev, sizeof(*pcie), GFP_KERNEL); if (!pcie) -@@ -1403,6 +1413,9 @@ static int qcom_pcie_probe(struct platfo +@@ -1401,6 +1411,9 @@ static int qcom_pcie_probe(struct platfo if (IS_ERR(pcie->reset)) return PTR_ERR(pcie->reset); diff --git a/target/linux/ipq806x/patches-4.14/0071-7-pcie-Set-PCIE-MRRS-and-MPS-to-256B.patch b/target/linux/ipq806x/patches-4.14/0071-7-pcie-Set-PCIE-MRRS-and-MPS-to-256B.patch index c7dfd53cb1..166d6ac1a9 100644 --- a/target/linux/ipq806x/patches-4.14/0071-7-pcie-Set-PCIE-MRRS-and-MPS-to-256B.patch +++ b/target/linux/ipq806x/patches-4.14/0071-7-pcie-Set-PCIE-MRRS-and-MPS-to-256B.patch @@ -31,7 +31,7 @@ Signed-off-by: Gokul Sriram Palanisamy struct qcom_pcie_resources_2_1_0 { struct clk *iface_clk; struct clk *core_clk; -@@ -1472,6 +1480,35 @@ static int qcom_pcie_probe(struct platfo +@@ -1470,6 +1478,35 @@ static int qcom_pcie_probe(struct platfo return 0; } diff --git a/target/linux/ipq806x/patches-4.14/0071-8-pcie-qcom-Fixed-pcie_phy_clk-branch-issue.patch b/target/linux/ipq806x/patches-4.14/0071-8-pcie-qcom-Fixed-pcie_phy_clk-branch-issue.patch index 88bd7730c1..c2e66655a8 100644 --- a/target/linux/ipq806x/patches-4.14/0071-8-pcie-qcom-Fixed-pcie_phy_clk-branch-issue.patch +++ b/target/linux/ipq806x/patches-4.14/0071-8-pcie-qcom-Fixed-pcie_phy_clk-branch-issue.patch @@ -47,14 +47,14 @@ Signed-off-by: Abhishek Sahu reset_control_assert(res->axi_reset); reset_control_assert(res->ahb_reset); @@ -415,7 +416,6 @@ static void qcom_pcie_deinit_2_1_0(struc - reset_control_assert(res->ext_reset); + reset_control_assert(res->pci_reset); clk_disable_unprepare(res->iface_clk); clk_disable_unprepare(res->core_clk); - clk_disable_unprepare(res->phy_clk); clk_disable_unprepare(res->aux_clk); clk_disable_unprepare(res->ref_clk); regulator_disable(res->vdda); -@@ -472,12 +472,6 @@ static int qcom_pcie_init_2_1_0(struct q +@@ -466,12 +466,6 @@ static int qcom_pcie_init_2_1_0(struct q goto err_clk_core; } diff --git a/target/linux/ipq806x/patches-4.19/0071-1-PCI-qcom-Fixed-IPQ806x-specific-clocks.patch b/target/linux/ipq806x/patches-4.19/0071-1-PCI-qcom-Fixed-IPQ806x-specific-clocks.patch index 3591326d59..677e5cb664 100644 --- a/target/linux/ipq806x/patches-4.19/0071-1-PCI-qcom-Fixed-IPQ806x-specific-clocks.patch +++ b/target/linux/ipq806x/patches-4.19/0071-1-PCI-qcom-Fixed-IPQ806x-specific-clocks.patch @@ -18,7 +18,7 @@ Signed-off-by: Sham Muthayyan struct reset_control *pci_reset; struct reset_control *axi_reset; struct reset_control *ahb_reset; -@@ -253,6 +255,14 @@ static int qcom_pcie_get_resources_2_1_0 +@@ -254,6 +256,14 @@ static int qcom_pcie_get_resources_2_1_0 if (IS_ERR(res->phy_clk)) return PTR_ERR(res->phy_clk); @@ -33,7 +33,7 @@ Signed-off-by: Sham Muthayyan res->pci_reset = devm_reset_control_get_exclusive(dev, "pci"); if (IS_ERR(res->pci_reset)) return PTR_ERR(res->pci_reset); -@@ -285,6 +295,8 @@ static void qcom_pcie_deinit_2_1_0(struc +@@ -291,6 +301,8 @@ static void qcom_pcie_deinit_2_1_0(struc clk_disable_unprepare(res->iface_clk); clk_disable_unprepare(res->core_clk); clk_disable_unprepare(res->phy_clk); @@ -42,7 +42,7 @@ Signed-off-by: Sham Muthayyan regulator_bulk_disable(ARRAY_SIZE(res->supplies), res->supplies); } -@@ -315,16 +327,28 @@ static int qcom_pcie_init_2_1_0(struct q +@@ -321,16 +333,28 @@ static int qcom_pcie_init_2_1_0(struct q goto err_assert_ahb; } @@ -74,7 +74,7 @@ Signed-off-by: Sham Muthayyan } ret = reset_control_deassert(res->ahb_reset); -@@ -400,10 +424,14 @@ static int qcom_pcie_init_2_1_0(struct q +@@ -412,10 +436,14 @@ static int qcom_pcie_init_2_1_0(struct q return 0; err_deassert_ahb: diff --git a/target/linux/ipq806x/patches-4.19/0071-2-PCI-qcom-Fixed-IPQ806x-PCIE-reset-changes.patch b/target/linux/ipq806x/patches-4.19/0071-2-PCI-qcom-Fixed-IPQ806x-PCIE-reset-changes.patch deleted file mode 100644 index 37413757bf..0000000000 --- a/target/linux/ipq806x/patches-4.19/0071-2-PCI-qcom-Fixed-IPQ806x-PCIE-reset-changes.patch +++ /dev/null @@ -1,62 +0,0 @@ -From 490d103232287eb51c92c49a4ef8865fd0a9d59e Mon Sep 17 00:00:00 2001 -From: Sham Muthayyan -Date: Tue, 19 Jul 2016 18:58:18 +0530 -Subject: PCI: qcom: Fixed IPQ806x PCIE reset changes - -Change-Id: Ia6590e960b9754b1e8b7a51f318788cd63e9e321 -Signed-off-by: Sham Muthayyan ---- - ---- a/drivers/pci/controller/dwc/pcie-qcom.c -+++ b/drivers/pci/controller/dwc/pcie-qcom.c -@@ -110,6 +110,7 @@ struct qcom_pcie_resources_2_1_0 { - struct reset_control *ahb_reset; - struct reset_control *por_reset; - struct reset_control *phy_reset; -+ struct reset_control *ext_reset; - struct regulator_bulk_data supplies[QCOM_PCIE_2_1_0_MAX_SUPPLY]; - }; - -@@ -279,6 +280,10 @@ static int qcom_pcie_get_resources_2_1_0 - if (IS_ERR(res->por_reset)) - return PTR_ERR(res->por_reset); - -+ res->ext_reset = devm_reset_control_get(dev, "ext"); -+ if (IS_ERR(res->ext_reset)) -+ return PTR_ERR(res->ext_reset); -+ - res->phy_reset = devm_reset_control_get_exclusive(dev, "phy"); - return PTR_ERR_OR_ZERO(res->phy_reset); - } -@@ -292,6 +297,7 @@ static void qcom_pcie_deinit_2_1_0(struc - reset_control_assert(res->ahb_reset); - reset_control_assert(res->por_reset); - reset_control_assert(res->pci_reset); -+ reset_control_assert(res->ext_reset); - clk_disable_unprepare(res->iface_clk); - clk_disable_unprepare(res->core_clk); - clk_disable_unprepare(res->phy_clk); -@@ -309,15 +315,21 @@ static int qcom_pcie_init_2_1_0(struct q - u32 val; - int ret; - -+ ret = reset_control_assert(res->ahb_reset); -+ if (ret) { -+ dev_err(dev, "cannot assert ahb reset\n"); -+ return ret; -+ } -+ - ret = regulator_bulk_enable(ARRAY_SIZE(res->supplies), res->supplies); - if (ret < 0) { - dev_err(dev, "cannot enable regulators\n"); - return ret; - } - -- ret = reset_control_assert(res->ahb_reset); -+ ret = reset_control_deassert(res->ext_reset); - if (ret) { -- dev_err(dev, "cannot assert ahb reset\n"); -+ dev_err(dev, "cannot assert ext reset\n"); - goto err_assert_ahb; - } - diff --git a/target/linux/ipq806x/patches-4.19/0071-8-pcie-qcom-Fixed-pcie_phy_clk-branch-issue.patch b/target/linux/ipq806x/patches-4.19/0071-8-pcie-qcom-Fixed-pcie_phy_clk-branch-issue.patch index 37f493dd5b..b5797c820f 100644 --- a/target/linux/ipq806x/patches-4.19/0071-8-pcie-qcom-Fixed-pcie_phy_clk-branch-issue.patch +++ b/target/linux/ipq806x/patches-4.19/0071-8-pcie-qcom-Fixed-pcie_phy_clk-branch-issue.patch @@ -47,14 +47,14 @@ Signed-off-by: Abhishek Sahu reset_control_assert(res->axi_reset); reset_control_assert(res->ahb_reset); @@ -386,7 +387,6 @@ static void qcom_pcie_deinit_2_1_0(struc - reset_control_assert(res->ext_reset); + reset_control_assert(res->pci_reset); clk_disable_unprepare(res->iface_clk); clk_disable_unprepare(res->core_clk); - clk_disable_unprepare(res->phy_clk); clk_disable_unprepare(res->aux_clk); clk_disable_unprepare(res->ref_clk); regulator_bulk_disable(ARRAY_SIZE(res->supplies), res->supplies); -@@ -431,12 +431,6 @@ static int qcom_pcie_init_2_1_0(struct q +@@ -425,12 +425,6 @@ static int qcom_pcie_init_2_1_0(struct q goto err_clk_core; } diff --git a/target/linux/ixp4xx/patches-4.9/160-delayed_uart_io.patch b/target/linux/ixp4xx/patches-4.9/160-delayed_uart_io.patch index 7565901ac4..9241f633f8 100644 --- a/target/linux/ixp4xx/patches-4.9/160-delayed_uart_io.patch +++ b/target/linux/ixp4xx/patches-4.9/160-delayed_uart_io.patch @@ -18,7 +18,7 @@ uart->capabilities = up->capabilities; --- a/drivers/tty/serial/serial_core.c +++ b/drivers/tty/serial/serial_core.c -@@ -2259,6 +2259,7 @@ uart_report_port(struct uart_driver *drv +@@ -2263,6 +2263,7 @@ uart_report_port(struct uart_driver *drv snprintf(address, sizeof(address), "I/O 0x%lx offset 0x%x", port->iobase, port->hub6); break; @@ -26,7 +26,7 @@ case UPIO_MEM: case UPIO_MEM16: case UPIO_MEM32: -@@ -2932,6 +2933,7 @@ int uart_match_port(struct uart_port *po +@@ -2936,6 +2937,7 @@ int uart_match_port(struct uart_port *po case UPIO_HUB6: return (port1->iobase == port2->iobase) && (port1->hub6 == port2->hub6); diff --git a/target/linux/layerscape/patches-4.14/701-dpaa2-dpio-support-layerscape.patch b/target/linux/layerscape/patches-4.14/701-dpaa2-dpio-support-layerscape.patch index ce5dfdbe86..9f3b3ba79a 100644 --- a/target/linux/layerscape/patches-4.14/701-dpaa2-dpio-support-layerscape.patch +++ b/target/linux/layerscape/patches-4.14/701-dpaa2-dpio-support-layerscape.patch @@ -371,7 +371,7 @@ Signed-off-by: Youri Querry static irqreturn_t dpio_irq_handler(int irq_num, void *arg) { struct device *dev = (struct device *)arg; -@@ -113,7 +91,7 @@ static int dpaa2_dpio_probe(struct fsl_m +@@ -110,7 +88,7 @@ static int dpaa2_dpio_probe(struct fsl_m struct dpio_priv *priv; int err = -ENOMEM; struct device *dev = &dpio_dev->dev; @@ -380,7 +380,7 @@ Signed-off-by: Youri Querry priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL); if (!priv) -@@ -135,6 +113,12 @@ static int dpaa2_dpio_probe(struct fsl_m +@@ -132,6 +110,12 @@ static int dpaa2_dpio_probe(struct fsl_m goto err_open; } @@ -393,7 +393,7 @@ Signed-off-by: Youri Querry err = dpio_get_attributes(dpio_dev->mc_io, 0, dpio_dev->mc_handle, &dpio_attrs); if (err) { -@@ -155,26 +139,35 @@ static int dpaa2_dpio_probe(struct fsl_m +@@ -152,26 +136,35 @@ static int dpaa2_dpio_probe(struct fsl_m desc.dpio_id = dpio_dev->obj_desc.id; /* get the cpu to use for the affinity hint */ @@ -444,7 +444,7 @@ Signed-off-by: Youri Querry err = fsl_mc_allocate_irqs(dpio_dev); if (err) { -@@ -186,7 +179,7 @@ static int dpaa2_dpio_probe(struct fsl_m +@@ -183,7 +176,7 @@ static int dpaa2_dpio_probe(struct fsl_m if (err) goto err_register_dpio_irq; @@ -453,7 +453,7 @@ Signed-off-by: Youri Querry if (!priv->io) { dev_err(dev, "dpaa2_io_create failed\n"); goto err_dpaa2_io_create; -@@ -196,7 +189,6 @@ static int dpaa2_dpio_probe(struct fsl_m +@@ -193,7 +186,6 @@ static int dpaa2_dpio_probe(struct fsl_m dev_dbg(dev, " receives_notifications = %d\n", desc.receives_notifications); dpio_close(dpio_dev->mc_io, 0, dpio_dev->mc_handle); @@ -461,7 +461,7 @@ Signed-off-by: Youri Querry return 0; -@@ -207,6 +199,7 @@ err_register_dpio_irq: +@@ -204,6 +196,7 @@ err_register_dpio_irq: err_allocate_irqs: dpio_disable(dpio_dev->mc_io, 0, dpio_dev->mc_handle); err_get_attr: @@ -469,7 +469,7 @@ Signed-off-by: Youri Querry dpio_close(dpio_dev->mc_io, 0, dpio_dev->mc_handle); err_open: fsl_mc_portal_free(dpio_dev->mc_io); -@@ -227,7 +220,7 @@ static int dpaa2_dpio_remove(struct fsl_ +@@ -224,7 +217,7 @@ static int dpaa2_dpio_remove(struct fsl_ { struct device *dev; struct dpio_priv *priv; @@ -478,7 +478,7 @@ Signed-off-by: Youri Querry dev = &dpio_dev->dev; priv = dev_get_drvdata(dev); -@@ -236,11 +229,8 @@ static int dpaa2_dpio_remove(struct fsl_ +@@ -233,11 +226,8 @@ static int dpaa2_dpio_remove(struct fsl_ dpio_teardown_irqs(dpio_dev); @@ -492,7 +492,7 @@ Signed-off-by: Youri Querry err = dpio_open(dpio_dev->mc_io, 0, dpio_dev->obj_desc.id, &dpio_dev->mc_handle); -@@ -261,7 +251,7 @@ static int dpaa2_dpio_remove(struct fsl_ +@@ -258,7 +248,7 @@ static int dpaa2_dpio_remove(struct fsl_ err_open: fsl_mc_portal_free(dpio_dev->mc_io); @@ -501,7 +501,7 @@ Signed-off-by: Youri Querry return err; } -@@ -285,11 +275,16 @@ static struct fsl_mc_driver dpaa2_dpio_d +@@ -282,11 +272,16 @@ static struct fsl_mc_driver dpaa2_dpio_d static int dpio_driver_init(void) { diff --git a/target/linux/mediatek/patches-4.19/0303-mtd-spinand-disable-on-die-ECC.patch b/target/linux/mediatek/patches-4.19/0303-mtd-spinand-disable-on-die-ECC.patch index cdf214688c..9082073ee5 100644 --- a/target/linux/mediatek/patches-4.19/0303-mtd-spinand-disable-on-die-ECC.patch +++ b/target/linux/mediatek/patches-4.19/0303-mtd-spinand-disable-on-die-ECC.patch @@ -11,7 +11,7 @@ Signed-off-by: Xiangsheng Hou --- a/drivers/mtd/nand/spi/core.c +++ b/drivers/mtd/nand/spi/core.c -@@ -552,7 +552,7 @@ static int spinand_mtd_read(struct mtd_i +@@ -556,7 +556,7 @@ static int spinand_mtd_read(struct mtd_i int ret = 0; if (ops->mode != MTD_OPS_RAW && spinand->eccinfo.ooblayout) @@ -20,7 +20,7 @@ Signed-off-by: Xiangsheng Hou mutex_lock(&spinand->lock); -@@ -600,7 +600,7 @@ static int spinand_mtd_write(struct mtd_ +@@ -604,7 +604,7 @@ static int spinand_mtd_write(struct mtd_ int ret = 0; if (ops->mode != MTD_OPS_RAW && mtd->ooblayout) diff --git a/target/linux/ramips/patches-4.14/102-mt7621-fix-cpu-clk-add-clkdev.patch b/target/linux/ramips/patches-4.14/102-mt7621-fix-cpu-clk-add-clkdev.patch index be878642ef..e0143dd98e 100644 --- a/target/linux/ramips/patches-4.14/102-mt7621-fix-cpu-clk-add-clkdev.patch +++ b/target/linux/ramips/patches-4.14/102-mt7621-fix-cpu-clk-add-clkdev.patch @@ -65,7 +65,7 @@ #define MT7621_GPIO_MODE_UART1 1 #define MT7621_GPIO_MODE_I2C 2 #define MT7621_GPIO_MODE_UART3_MASK 0x3 -@@ -111,49 +111,98 @@ static struct rt2880_pmx_group mt7621_pi +@@ -113,49 +113,98 @@ static struct rt2880_pmx_group mt7621_pi { 0 } }; @@ -152,7 +152,6 @@ - } else { - /* 20Mhz Xtal */ - cpu_clk = 20 * fbdiv * 1000 * 1000; -- } + pll = rt_memc_r32(MEMC_REG_CPU_PLL); + if ((pll & 0x7f0) == 0x2b0) { + volatile u32 i; @@ -162,7 +161,7 @@ + pll |= 0x312; + rt_memc_w32(pll, MEMC_REG_CPU_PLL); + for (i = 0; i < 1000; i++); -+ } + } + fbdiv = (pll >> CPU_PLL_FBDIV_SHIFT) & CPU_PLL_FBDIV_MASK; + prediv = (pll >> CPU_PLL_PREDIV_SHIFT) & CPU_PLL_PREDIV_MASK; + cpu_clk = ((fbdiv + 1) * xtal_clk) >> prediv_tbl[prediv]; From 28f76a53b1e0f5ed404322b029e142293270c8f0 Mon Sep 17 00:00:00 2001 From: CN_SZTL Date: Thu, 31 Dec 2020 21:25:51 +0800 Subject: [PATCH 6/8] qBittorrent-Enhanced-Edition: bump to 4.3.2.10 --- .../qBittorrent-Enhanced-Edition/Makefile | 15 +- .../files/ipfilter.dat | 293 ------------------ package/lean/qt5/Makefile | 7 +- 3 files changed, 10 insertions(+), 305 deletions(-) delete mode 100644 package/lean/qBittorrent-Enhanced-Edition/files/ipfilter.dat diff --git a/package/lean/qBittorrent-Enhanced-Edition/Makefile b/package/lean/qBittorrent-Enhanced-Edition/Makefile index 9889179d0c..056bd5796e 100644 --- a/package/lean/qBittorrent-Enhanced-Edition/Makefile +++ b/package/lean/qBittorrent-Enhanced-Edition/Makefile @@ -1,12 +1,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=qBittorrent-Enhanced-Edition -PKG_VERSION:=4.2.5.16 +PKG_VERSION:=4.3.2.10 PKG_RELEASE=1 PKG_SOURCE:=$(PKG_NAME)-release-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://codeload.github.com/c0re100/qBittorrent-Enhanced-Edition/tar.gz/release-$(PKG_VERSION)? -PKG_HASH:=ebae940c93bca2cdaf4fc353f1fe7177006e4ac25a921b42403b6296d4dc9d3e +PKG_HASH:=204da95489e6e6959561ea43fb1e16fe562d217932ae3b63a172db389f0c102e PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-release-$(PKG_VERSION) @@ -15,7 +15,6 @@ PKG_LICENSE_FILES:=COPYING PKG_BUILD_PARALLEL:=1 PKG_INSTALL:=1 -PKG_USE_MIPS16:=0 include $(INCLUDE_DIR)/package.mk @@ -25,14 +24,14 @@ define Package/$(PKG_NAME) CATEGORY:=Network TITLE:=bittorrent client programmed in C++ / Qt URL:=https://github.com/c0re100/qBittorrent-Enhanced-Edition - DEPENDS:=+qt5-core +qt5-network +qt5-xml +libtorrent-rasterbar +python3 +boost-system + DEPENDS:=+boost-system +libtorrent-rasterbar +python3 +qt5-core +qt5-network +qt5-sql +qt5-xml endef define Package/$(PKG_NAME)/description -qBittorrent is a bittorrent client programmed in C++ / Qt that uses +qBittorrent is a bittorrent client programmed in C++ / Qt that uses libtorrent (sometimes called libtorrent-rasterbar) by Arvid Norberg. -It aims to be a good alternative to all other bittorrent clients out -there. qBittorrent is fast, stable and provides unicode support as +It aims to be a good alternative to all other bittorrent clients out +there. qBittorrent is fast, stable and provides unicode support as well as many features. endef @@ -56,8 +55,6 @@ endef define Package/$(PKG_NAME)/install $(INSTALL_DIR) $(1)/usr/bin $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/qbittorrent-nox $(1)/usr/bin - $(INSTALL_DIR) $(1)/etc/qBittorrent - $(INSTALL_DATA) ./files/ipfilter.dat $(1)/etc/qBittorrent/ipfilter.dat endef $(eval $(call BuildPackage,$(PKG_NAME))) diff --git a/package/lean/qBittorrent-Enhanced-Edition/files/ipfilter.dat b/package/lean/qBittorrent-Enhanced-Edition/files/ipfilter.dat deleted file mode 100644 index 4cb41cd5db..0000000000 --- a/package/lean/qBittorrent-Enhanced-Edition/files/ipfilter.dat +++ /dev/null @@ -1,293 +0,0 @@ -14.17.29.0 - 14.17.44.255 , 0 , Tencent Offline -14.17.101.0 - 14.17.101.255 , 0 , Baidu Offline -14.29.92.0 - 14.29.92.255 , 0 , Xunlei Offline -14.215.177.0 - 14.215.177.255 , 0 , Baidu Offline -23.3.68.0 - 23.3.68.255 , 0 , Tencent Offline -27.221.20.0 - 27.221.21.255 , 0 , 360 -27.221.36.0 - 27.221.38.255 , 0 , Baidu Offline -36.110.198.0 - 36.110.198.255 , 0 , Baidu Offline -36.248.6.0 - 36.248.6.255 , 0 , Baidu Offline -36.250.0.0 - 36.250.0.255 , 0 , Baidu Offline -36.251.188.0 - 36.251.188.255 , 0 , Baidu Offline -42.56.64.0 - 42.56.65.255 , 0 , Tencent Offline -42.236.4.0 - 42.236.7.255 , 0 , Baidu Offline -45.113.68.0 - 45.113.71.255 , 0 , Tencent Offline -49.4.0.0 - 49.4.127.255 , 0 , HUAWEI -49.51.0.0 - 49.51.31.255 , 0 , Tencent Offline -58.48.212.0 - 58.48.212.255 , 0 , Tencent Offline -58.51.144.0 - 58.51.144.255 , 0 , Xunlei Offline -58.61.39.0 - 58.61.152.255 , 0 , Xunlei Offline -58.67.137.0 - 58.67.137.255 , 0 , Xunlei Offline -58.198.42.0 - 58.198.42.255 , 0 , Tencent Offline -58.215.118.0 - 58.215.123.255 , 0 , Baidu Offline -58.217.200.0 - 58.217.222.255 , 0 , Baidu Offline -58.220.12.0 - 58.220.12.255 , 0 , Xunlei Offline -58.222.18.0 - 58.222.25.255 , 0 , Baidu Offline -58.251.57.0 - 58.251.61.255 , 0 , Xunlei Offline -58.252.209.0 - 58.252.209.255 , 0 , Xunlei Offline -58.254.134.0 - 58.254.134.255 , 0 , Xunlei Offline -58.255.249.0 - 58.255.253.255 , 0 , Xunlei Offline -59.45.75.0 - 59.45.75.255 , 0 , Baidu Offline -59.51.81.0 - 59.51.81.255 , 0 , Baidu Offline -59.53.69.0 - 59.53.69.255 , 0 , Baidu Offline -59.53.86.0 - 59.53.86.255 , 0 , Tencent Offline -59.74.44.0 - 59.74.45.255 , 0 , Tencent Offline -60.2.237.0 - 60.2.237.255 , 0 , Tencent Offline -60.18.146.0 - 60.18.147.255 , 0 , Xunlei Offline -60.19.64.0 - 60.19.64.255 , 0 , Xunlei Offline -60.21.219.0 - 60.21.219.255 , 0 , Xunlei Offline -60.28.9.0 - 60.28.22.255 , 0 , Baidu Offline -60.160.190.0 - 60.160.190.255 , 0 , Xunlei Offline -60.211.226.0 - 60.211.226.255 , 0 , Baidu Offline -60.214.64.0 - 60.214.64.255 , 0 , Xunlei Offline -60.217.235.0 - 60.217.236.255 , 0 , Xunlei Offline -60.220.197.0 - 60.220.197.255 , 0 , Xunlei Offline -60.221.254.0 - 60.221.254.255 , 0 , Xunlei Offline -61.54.12.0 - 61.54.24.255 , 0 , Xunlei Offline -61.54.47.0 - 61.54.47.255 , 0 , Baidu Offline -61.132.226.0 - 61.132.226.255 , 0 , Baidu Offline -61.135.145.0 - 61.135.191.255 , 0 , Baidu Offline -61.137.90.0 - 61.137.90.255 , 0 , MNDISK Offline -61.137.191.0 - 61.137.191.255 , 0 , Xunlei Offline -61.138.131.0 - 61.138.131.255 , 0 , Tencent Offline -61.138.177.0 - 61.138.177.255 , 0 , Xunlei Offline -61.139.103.0 - 61.139.103.255 , 0 , Xunlei Offline -61.147.76.0 - 61.147.94.255 , 0 , Xunlei Offline -61.152.105.0 - 61.152.105.255 , 0 , Xunlei Offline -61.153.56.0 - 61.153.56.255 , 0 , Baidu Offline -61.155.149.0 - 61.155.165.255 , 0 , Baidu Offline -61.155.183.0 - 61.155.183.255 , 0 , Xunlei Offline -61.155.220.0 - 61.155.220.255 , 0 , Tencent Offline -61.160.224.0 - 61.160.224.255 , 0 , 360 -61.160.230.0 - 61.160.231.255 , 0 , Tencent Offline -61.160.253.0 - 61.160.253.255 , 0 , Tencent Offline -61.164.120.0 - 61.164.120.255 , 0 , Tencent Offline -61.164.155.0 - 61.164.155.255 , 0 , Baidu Offline -61.173.85.0 - 61.173.85.255 , 0 , Xunlei Offline -61.178.227.0 - 61.178.227.255 , 0 , Xunlei Offline -61.179.109.0 - 61.179.109.255 , 0 , Baidu Offline -61.182.137.0 - 61.182.137.255 , 0 , Baidu Offline -61.183.55.0 - 61.183.55.255 , 0 , Xunlei Offline -61.188.190.0 - 61.188.190.255 , 0 , Xunlei Offline -61.235.71.0 - 61.235.71.255 , 0 , Xunlei Offline -61.240.144.0 - 61.240.144.255 , 0 , 360 -64.251.96.0 - 64.251.111.255 , 0 , 360 -101.4.60.0 - 101.4.61.255 , 0 , 360 -101.64.181.0 - 101.64.181.255 , 0 , Baidu Offline -101.69.162.0 - 101.69.162.255 , 0 , Baidu Offline -101.71.56.0 - 101.71.56.255 , 0 , Baidu Offline -101.198.0.0 - 101.199.255.255 , 0 , 360 -101.226.4.0 - 101.226.4.255 , 0 , 360 -101.226.63.0 - 101.226.76.255 , 0 , Tencent Offline -101.226.180.0 - 101.226.180.255 , 0 , Xunlei Offline -101.227.130.0 - 101.227.143.255 , 0 , Tencent Offline -103.7.28.0 - 103.7.31.255 , 0 , Tencent Offline -103.28.8.0 - 103.28.11.255 , 0 , 360 -103.31.200.0 - 103.31.203.255 , 0 , HUAWEI -106.38.179.0 - 106.38.179.255 , 0 , Baidu Offline -106.120.159.0 - 106.120.159.255 , 0 , Baidu Offline -110.18.246.0 - 110.18.246.255 , 0 , Baidu Offline -110.188.3.0 - 110.188.3.255 , 0 , Tencent Offline -111.13.12.0 - 111.13.113.255 , 0 , Baidu Offline -111.30.135.0 - 111.30.135.255 , 0 , Tencent Offline -111.161.24.0 - 111.161.24.255 , 0 , Xunlei Offline -111.206.36.0 - 111.206.76.255 , 0 , Baidu Offline -112.25.34.0 - 112.25.34.255 , 0 , 115 Offline -112.25.60.0 - 112.25.60.255 , 0 , 360 -112.80.23.0 - 112.80.23.255 , 0 , Xunlei Offline -112.80.248.0 - 112.80.255.255 , 0 , Baidu Offline -112.87.43.0 - 112.87.43.227 , 0 , Xunlei Offline -112.90.17.0 - 112.90.17.255 , 0 , Xunlei Offline -112.117.217.0 - 112.117.217.255 , 0 , Xunlei Offline -112.253.12.0 - 112.253.12.255 , 0 , Baidu Offline -113.105.143.0 - 113.105.143.255 , 0 , 115 Offline -113.105.148.81 - 113.105.148.255 , 0 , Baidu Offline -113.107.248.0 - 113.107.248.255 , 0 , Baidu Offline -113.108.29.0 - 113.108.29.255 , 0 , Tencent Offline -113.115.10.0 - 113.115.10.255 , 0 , Tencent Offline -113.142.0.0 - 113.142.31.255 , 0 , Tencent Offline -113.200.90.0 - 113.200.90.255 , 0 , Tencent Offline -114.80.183.0 - 114.80.255.255 , 0 , Xunlei Offline -114.112.202.0 - 114.112.202.255 , 0 , Xunlei Offline -115.159.0.0 - 115.159.255.255 , 0 , Tencent Offline -115.231.38.0 - 115.231.45.255 , 0 , Xunlei Offline -115.236.96.0 - 115.236.153.255 , 0 , Tencent Offline -115.238.230.0 - 115.238.243.255 , 0 , UC Offline -115.239.210.0 - 115.239.212.255 , 0 , Baidu Offline -116.10.186.0 - 116.10.186.255 , 0 , Xunlei Offline -116.31.127.0 - 116.31.127.255 , 0 , Baidu Offline -116.55.230.0 - 116.55.255.255 , 0 , Xunlei Offline -116.57.183.0 - 116.57.255.255 , 0 , Tencent Offline -116.211.117.0 - 116.211.117.255 , 0 , Baidu Offline -116.253.190.0 - 116.253.190.255 , 0 , Tencent Offline -117.21.185.0 - 117.21.185.255 , 0 , Tencent Offline -117.25.132.0 - 117.25.132.255 , 0 , Tencent Offline -117.27.148.0 - 117.27.149.255 , 0 , Baidu Offline -117.34.6.0 - 117.34.6.255 , 0 , Tencent Offline -117.34.28.0 - 117.34.37.255 , 0 , Baidu Offline -117.34.91.0 - 117.34.91.255 , 0 , Xunlei Offline -117.34.112.0 - 117.34.112.255 , 0 , Baidu Offline -117.78.0.0 - 117.78.23.255 , 0 , HUAWEI -118.122.36.0 - 118.122.88.255 , 0 , Xunlei Offline -118.123.97.0 - 118.123.97.255 , 0 , Tencent Offline -118.123.116.0 - 118.123.223.255 , 0 , Baidu Offline -118.180.6.0 - 118.180.6.255 , 0 , Baidu Offline -119.75.208.0 - 119.75.223.255 , 0 , Baidu Offline -119.84.11.0 - 119.84.11.255 , 0 , Xunlei Offline -119.84.72.0 - 119.84.72.255 , 0 , Tencent Offline -119.84.110.0 - 119.84.114.255 , 0 , Xunlei Offline -119.97.178.0 - 119.97.183.255 , 0 , Xunlei Offline -119.120.94.0 - 119.120.94.255 , 0 , Xunlei Offline -119.134.253.0 - 119.134.253.255 , 0 , Baidu Offline -119.144.9.0 - 119.144.9.255 , 0 , Xunlei Offline -119.147.15.0 - 119.147.41.255 , 0 , Tencent Offline -119.147.99.0 - 119.147.249.255 , 0 , 115 Offline -119.167.241.0 - 119.167.241.255 , 0 , Tencent Offline -119.167.246.0 - 119.167.246.255 , 0 , Baidu Offline -119.178.12.0 - 119.178.12.255 , 0 , Xunlei Offline -119.188.11.0 - 119.188.132.255 , 0 , Xunlei Offline -119.189.1.0 - 119.189.1.255 , 0 , Xunlei Offline -120.52.114.0 - 120.52.114.255 , 0 , Baidu Offline -121.9.209.0 - 121.9.255.255 , 0 , Xunlei Offline -121.10.24.0 - 121.10.137.255 , 0 , Xunlei Offline -121.11.68.0 - 121.11.68.255 , 0 , Tencent Offline -121.12.94.0 - 121.12.94.255 , 0 , Baidu Offline -121.14.35.0 - 121.14.35.255 , 0 , Baidu Offline -121.14.82.0 - 121.14.97.255 , 0 , Xunlei Offline -121.14.131.0 - 121.14.131.255 , 0 , Tencent Offline -121.14.222.0 - 121.14.228.255 , 0 , Xunlei Offline -122.70.142.0 - 122.70.142.255 , 0 , Baidu Offline -122.136.46.0 - 122.136.46.255 , 0 , Baidu Offline -122.141.227.0 - 122.141.235.255 , 0 , Xunlei Offline -122.143.1.0 - 122.143.6.255 , 0 , Xunlei Offline -122.143.15.0 - 122.143.15.255 , 0 , 360 -122.192.32.0 - 122.192.32.255 , 0 , Tencent Offline -122.193.41.0 - 122.193.41.255 , 0 , Baidu Offline -122.224.10.0 - 122.224.10.255 , 0 , Baidu Offline -122.227.15.0 - 122.227.15.255 , 0 , Tencent Offline -122.228.218.0 - 122.228.234.255 , 0 , Baidu Offline -122.228.241.0 - 122.228.255.255 , 0 , Xunlei Offline -123.66.33.0 - 123.66.33.255 , 0 , Xunlei Offline -123.125.64.0 - 123.125.115.255 , 0 , Baidu Offline -123.125.160.0 - 123.125.161.255 , 0 , 360 -123.129.219.0 - 123.129.255.255 , 0 , Xunlei Offline -123.138.102.0 - 123.138.239.255 , 0 , Tencent Offline -123.151.44.0 - 123.151.138.255 , 0 , Tencent Offline -123.162.190.0 - 123.162.191.255 , 0 , Xunlei Offline -123.183.223.0 - 123.183.223.255 , 0 , Xunlei Offline -124.89.102.0 - 124.89.103.255 , 0 , Tencent Offline -124.95.156.0 - 124.95.174.255 , 0 , Xunlei Offline -124.115.1.0 - 124.115.14.255 , 0 , Tencent Offline -124.115.215.0 - 124.115.215.255 , 0 , Baidu Offline -124.160.163.0 - 124.160.171.255 , 0 , Tencent Offline -124.161.23.0 - 124.161.23.255 , 0 , Tencent Offline -124.165.216.0 - 124.165.216.255 , 0 , Baidu Offline -124.193.227.0 - 124.193.227.255 , 0 , Baidu Offline -124.225.122.0 - 124.225.122.255 , 0 , Tencent Offline -124.228.42.0 - 124.228.42.255 , 0 , Tencent Offline -124.232.148.0 - 124.232.148.255 , 0 , Xunlei Offline -124.238.238.0 - 124.238.238.255 , 0 , Baidu Offline -125.39.72.0 - 125.39.79.255 , 0 , Xunlei Offline -125.39.126.0 - 125.39.255.255 , 0 , Tencent Offline -125.46.42.0 - 125.46.42.255 , 0 , Xunlei Offline -125.78.242.0 - 125.78.247.255 , 0 , Xunlei Offline -125.218.29.0 - 125.218.29.255 , 0 , Tencent Offline -125.221.46.0 - 125.221.46.255 , 0 , Xunlei Offline -140.206.165.0 - 140.206.165.255 , 0 , Tencent Offline -159.226.50.0 - 159.226.50.255 , 0 , Baidu Offline -162.105.207.0 - 162.105.207.255 , 0 , Baidu Offline -171.111.152.0 - 171.112.96.255 , 0 , Baidu Offline -175.155.115.0 - 175.155.116.255 , 0 , Tencent Offline -180.76.0.0 - 180.76.255.255 , 0 , Baidu Offline -180.96.0.0 - 180.96.1.255 , 0 , Tencent Offline -180.97.7.0 - 180.97.7.255 , 0 , Tencent Offline -180.97.33.0 - 180.97.34.255 , 0 , Baidu Offline -180.97.151.0 - 180.97.152.255 , 0 , Xunlei Offline -180.149.131.0 - 180.149.145.255 , 0 , Baidu Offline -180.153.91.0 - 180.153.115.255 , 0 , Xunlei Offline -180.153.235.0 - 180.153.235.255 , 0 , 360 -182.86.197.0 - 182.86.197.255 , 0 , Baidu Offline -182.118.13.0 - 182.118.125.255 , 0 , Xunlei Offline -182.130.10.0 - 182.130.11.255 , 0 , Tencent Offline -182.131.8.0 - 182.131.11.255 , 0 , Tencent Offline -182.140.134.0 - 182.140.177.255 , 0 , Tencent Offline -182.140.227.0 - 182.140.227.255 , 0 , 360 -182.150.1.0 - 182.150.1.255 , 0 , Baidu Offline -182.247.251.0 - 182.247.251.255 , 0 , Xunlei Offline -182.254.0.0 - 182.254.255.255 , 0 , Tencent Offline -183.60.15.0 - 183.60.15.255 , 0 , Tencent Offline -183.60.131.0 - 183.60.131.255 , 0 , Baidu Offline -183.60.139.0 - 183.60.139.255 , 0 , 115 Offline -183.60.208.0 - 183.60.209.255 , 0 , Xunlei Offline -183.60.211.0 - 183.60.211.255 , 0 , 360 -183.60.235.0 - 183.60.235.255 , 0 , Baidu Offline -183.61.49.0 - 183.61.49.255 , 0 , Tencent Offline -183.61.133.0 - 183.61.133.255 , 0 , Baidu Offline -183.63.33.0 - 183.63.33.255 , 0 , Xunlei Offline -183.94.216.0 - 183.94.239.255 , 0 , Xunlei Offline -183.131.32.0 - 183.131.39.255 , 0 , Baidu Offline -183.136.133.0 - 183.136.133.255 , 0 , 360 -183.136.156.0 - 183.136.158.255 , 0 , Xunlei Offline -183.136.218.0 - 183.136.218.255 , 0 , Baidu Offline -183.157.36.0 - 183.157.36.255 , 0 , Xunlei Offline -183.221.245.0 - 183.221.245.255 , 0 , Baidu Offline -183.232.22.0 - 183.232.22.255 , 0 , Baidu Offline -202.38.194.0 - 202.38.194.255 , 0 , Tencent Offline -202.100.78.0 - 202.100.78.255 , 0 , Tencent Offline -202.105.139.0 - 202.105.139.255 , 0 , Xunlei Offline -202.105.182.0 - 202.105.182.255 , 0 , Tencent Offline -202.108.11.0 - 202.108.250.255 , 0 , Baidu Offline -203.195.64.0 - 203.195.95.255 , 0 , Tencent Offline -203.195.128.0 - 203.195.255.255 , 0 , Tencent Offline -203.205.128.0 - 203.205.255.255 , 0 , Tencent Offline -210.38.3.0 - 210.38.3.255 , 0 , Tencent Offline -210.39.2.0 - 210.39.2.255 , 0 , Tencent Offline -211.90.25.0 - 211.90.25.255 , 0 , Baidu Offline -211.98.168.0 - 211.98.171.255 , 0 , Xunlei Offline -211.137.100.0 - 211.137.100.255 , 0 , Xunlei Offline -211.151.210.0 - 211.151.210.255 , 0 , 115 Offline -211.162.73.0 - 211.162.73.255 , 0 , Xunlei Offline -218.6.13.0 - 218.6.13.255 , 0 , Xunlei Offline -218.8.242.0 - 218.8.242.255 , 0 , Tencent Offline -218.21.68.0 - 218.21.68.255 , 0 , Xunlei Offline -218.22.90.0 - 218.22.90.255 , 0 , Tencent Offline -218.26.232.0 - 218.26.232.255 , 0 , Xunlei Offline -218.30.73.0 - 218.30.73.255 , 0 , Tencent Offline -218.59.144.0 - 218.59.144.255 , 0 , Xunlei Offline -218.60.11.0 - 218.60.11.255 , 0 , Tencent Offline -218.75.140.0 - 218.75.140.255 , 0 , Baidu Offline -218.75.172.0 - 218.75.172.255 , 0 , Xunlei Offline -218.199.46.0 - 218.199.46.255 , 0 , Tencent Offline -219.129.83.0 - 219.129.83.255 , 0 , Xunlei Offline -219.134.132.0 - 219.134.132.255 , 0 , Xunlei Offline -219.151.4.0 - 219.151.4.255 , 0 , Tencent Offline -219.159.248.0 - 219.159.248.255 , 0 , MNDISK Offline -220.113.9.0 - 220.113.9.255 , 0 , Xunlei Offline -220.115.240.0 - 220.115.240.255 , 0 , Xunlei Offline -220.161.209.0 - 220.161.209.255 , 0 , Baidu Offline -220.170.192.0 - 220.170.192.255 , 0 , Tencent Offline -220.181.5.0 - 220.181.167.255 , 0 , Baidu Offline -220.249.103.0 - 220.249.103.255 , 0 , Xunlei Offline -221.4.246.0 - 221.4.246.255 , 0 , Xunlei Offline -221.5.8.0 - 221.5.8.255 , 0 , Xunlei Offline -221.203.176.0 - 221.204.232.255 , 0 , Xunlei Offline -221.215.87.0 - 221.215.87.255 , 0 , Xunlei Offline -221.233.79.0 - 221.233.79.255 , 0 , Baidu Offline -221.235.189.0 - 221.235.205.255 , 0 , Xunlei Offline -221.236.21.0 - 221.236.30.255 , 0 , Tencent Offline -221.238.25.0 - 221.238.25.255 , 0 , Xunlei Offline -222.24.133.0 - 222.24.133.255 , 0 , Tencent Offline -222.28.155.0 - 222.28.155.255 , 0 , Tencent Offline -222.73.49.0 - 222.73.133.255 , 0 , Xunlei Offline -222.73.183.0 - 222.73.183.255 , 0 , Tencent Offline -222.133.46.0 - 222.133.46.255 , 0 , Baidu Offline -222.141.53.0 - 222.141.53.255 , 0 , Xunlei Offline -222.141.220.0 - 222.141.220.255 , 0 , Tencent Offline -222.161.212.0 - 222.161.255.255 , 0 , Xunlei Offline -222.186.17.0 - 222.186.19.255 , 0 , Xunlei Offline -222.186.55.0 - 222.186.55.255 , 0 , Baidu Offline -222.199.144.0 - 222.199.191.255 , 0 , Baidu Offline -222.211.64.0 - 222.211.64.255 , 0 , Baidu Offline -222.215.119.0 - 222.215.119.255 , 0 , Tencent Offline -222.216.190.0 - 222.216.190.255 , 0 , Baidu Offline -222.218.45.0 - 222.218.45.255 , 0 , Baidu Offline diff --git a/package/lean/qt5/Makefile b/package/lean/qt5/Makefile index 43903c4e91..77571ee58e 100644 --- a/package/lean/qt5/Makefile +++ b/package/lean/qt5/Makefile @@ -24,11 +24,12 @@ PKG_SOURCE_URL:=https://mirrors.cloud.tencent.com/qt/archive/qt/$(QT5_VERSION_MA http://download.qt-project.org/archive/qt/$(QT5_VERSION_MAJOR_MINOR)/$(PKG_VERSION)/single/ PKG_HASH:=55e8273536be41f4f63064a79e552a22133848bb419400b6fa8e9fc0dc05de08 +PKG_BUILD_DIR=$(BUILD_DIR)/qt-everywhere-src-$(PKG_VERSION) + +PKG_BUILD_DEPENDS:=libdouble-conversion pcre2 zlib PKG_BUILD_PARALLEL:=1 PKG_USE_MIPS16:=0 -PKG_BUILD_DIR=$(BUILD_DIR)/qt-everywhere-src-$(PKG_VERSION) - include $(INCLUDE_DIR)/package.mk ifndef CONFIG_USE_GLIBC @@ -194,7 +195,7 @@ define Package/qt5-xml/install $(CP) $(PKG_BUILD_DIR)/qtbase/lib/libQt5Xml.so* $(1)/usr/lib endef -$(eval $(call BuildPackage,qt5-core,+zlib,+libpcre2-16,+libdouble-conversion)) +$(eval $(call BuildPackage,qt5-core)) $(eval $(call BuildPackage,qt5-network)) $(eval $(call BuildPackage,qt5-sql)) $(eval $(call BuildPackage,qt5-xml)) From 5f68e0fa9a7c05b5a85c8e0fd51ac134fbaedf4a Mon Sep 17 00:00:00 2001 From: CN_SZTL Date: Thu, 31 Dec 2020 21:32:34 +0800 Subject: [PATCH 7/8] luci-app-ssr-plus: dont reset config automatically --- .../lean/luci-app-ssr-plus/luasrc/controller/shadowsocksr.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/lean/luci-app-ssr-plus/luasrc/controller/shadowsocksr.lua b/package/lean/luci-app-ssr-plus/luasrc/controller/shadowsocksr.lua index 2fe43138a8..09c63309c6 100644 --- a/package/lean/luci-app-ssr-plus/luasrc/controller/shadowsocksr.lua +++ b/package/lean/luci-app-ssr-plus/luasrc/controller/shadowsocksr.lua @@ -4,7 +4,7 @@ module("luci.controller.shadowsocksr", package.seeall) function index() if not nixio.fs.access("/etc/config/shadowsocksr") then - call("act_reset") + return end entry({"admin", "services", "shadowsocksr"}, alias("admin", "services", "shadowsocksr", "client"), _("ShadowSocksR Plus+"), 10).dependent = true entry({"admin", "services", "shadowsocksr", "client"}, cbi("shadowsocksr/client"), _("SSR Client"), 10).leaf = true From e0bbfe7bbaac36cdb41bf3f16fb80546f549d142 Mon Sep 17 00:00:00 2001 From: CN_SZTL Date: Thu, 31 Dec 2020 21:35:43 +0800 Subject: [PATCH 8/8] Core/LuCI: Update to Mod 21.01 Signed-off-by: CN_SZTL --- package/lean/default-settings/files/openwrt_banner | 2 +- package/lean/default-settings/files/zzz-default-settings | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package/lean/default-settings/files/openwrt_banner b/package/lean/default-settings/files/openwrt_banner index 399213dc2e..7fc51eddb3 100644 --- a/package/lean/default-settings/files/openwrt_banner +++ b/package/lean/default-settings/files/openwrt_banner @@ -8,5 +8,5 @@ │ # │ │ " │ │─────────────────────────────────────────────────│ -│ OpenWrt 18.06 by Lean | Mod 20.12 By CTCGFW │ +│ OpenWrt 18.06 by Lean | Mod 21.01 By CTCGFW │ └─────────────────────────────────────────────────┘ diff --git a/package/lean/default-settings/files/zzz-default-settings b/package/lean/default-settings/files/zzz-default-settings index 2fa75ee818..c0d6548af4 100755 --- a/package/lean/default-settings/files/zzz-default-settings +++ b/package/lean/default-settings/files/zzz-default-settings @@ -42,14 +42,14 @@ sed -i '/set wireless.radio${devidx}.disabled/d' /lib/wifi/mac80211.sh # NEVER DROP THE EXISTING AUTHORS INFO | 禁止删除现有作者信息 sed -i '/DISTRIB_REVISION/d' /etc/openwrt_release -echo "DISTRIB_REVISION='| Mod 20.12 by CTCGFW'" >> /etc/openwrt_release +echo "DISTRIB_REVISION='| Mod 21.01 by CTCGFW'" >> /etc/openwrt_release sed -i '/DISTRIB_DESCRIPTION/d' /etc/openwrt_release echo "DISTRIB_DESCRIPTION='OpenWrt 18.06 by Lean '" >> /etc/openwrt_release # NEVER DROP THE EXISTING AUTHORS INFO | 禁止删除现有作者信息 sed -i 's/LuCI openwrt-18.06 branch/LuCI 18.06 by Lean/g' /usr/lib/lua/luci/version.lua sed -i '/luciversion/d' /usr/lib/lua/luci/version.lua -echo 'luciversion = "Mod 20.12 by CTCGFW"' >> /usr/lib/lua/luci/version.lua +echo 'luciversion = "Mod 21.01 by CTCGFW"' >> /usr/lib/lua/luci/version.lua sed -i '/log-facility/d' /etc/dnsmasq.conf echo "log-facility=/dev/null" >> /etc/dnsmasq.conf