Merge Lean's source

This commit is contained in:
CN_SZTL 2020-03-10 22:18:01 +08:00
commit 93f4e20f3f
No known key found for this signature in database
GPG Key ID: 6850B6345C862176
70 changed files with 569 additions and 2995 deletions

View File

@ -12,17 +12,3 @@
#define HTT_RX_RING_SIZE HTT_RX_RING_SIZE_MAX
#define HTT_RX_RING_FILL_LEVEL (((HTT_RX_RING_SIZE) / 2) - 1)
#define HTT_RX_RING_FILL_LEVEL_DUAL_MAC (HTT_RX_RING_SIZE - 1)
--- a/ath10k-5.2/htt.h
+++ b/ath10k-5.2/htt.h
@@ -225,7 +225,11 @@ enum htt_rx_ring_flags {
};
#define HTT_RX_RING_SIZE_MIN 128
+#ifndef CONFIG_ATH10K_SMALLBUFFERS
#define HTT_RX_RING_SIZE_MAX 2048
+#else
+#define HTT_RX_RING_SIZE_MAX 512
+#endif
#define HTT_RX_RING_SIZE HTT_RX_RING_SIZE_MAX
#define HTT_RX_RING_FILL_LEVEL (((HTT_RX_RING_SIZE) / 2) - 1)
#define HTT_RX_RING_FILL_LEVEL_DUAL_MAC (HTT_RX_RING_SIZE - 1)

View File

@ -48,53 +48,3 @@
.recv_cb = ath10k_pci_pktlog_rx_cb,
},
--- a/ath10k-5.2/pci.c
+++ b/ath10k-5.2/pci.c
@@ -131,7 +131,11 @@ static struct ce_attr host_ce_config_wla
.flags = CE_ATTR_FLAGS,
.src_nentries = 0,
.src_sz_max = 2048,
+#ifndef CONFIG_ATH10K_SMALLBUFFERS
.dest_nentries = 512,
+#else
+ .dest_nentries = 128,
+#endif
.recv_cb = ath10k_pci_htt_htc_rx_cb,
},
@@ -140,7 +144,11 @@ static struct ce_attr host_ce_config_wla
.flags = CE_ATTR_FLAGS,
.src_nentries = 0,
.src_sz_max = 2048,
+#ifndef CONFIG_ATH10K_SMALLBUFFERS
.dest_nentries = 128,
+#else
+ .dest_nentries = 64,
+#endif
.recv_cb = ath10k_pci_htc_rx_cb,
},
@@ -167,7 +175,11 @@ static struct ce_attr host_ce_config_wla
.flags = CE_ATTR_FLAGS,
.src_nentries = 0,
.src_sz_max = 512,
+#ifndef CONFIG_ATH10K_SMALLBUFFERS
.dest_nentries = 512,
+#else
+ .dest_nentries = 128,
+#endif
.recv_cb = ath10k_pci_htt_rx_cb,
},
@@ -192,7 +204,11 @@ static struct ce_attr host_ce_config_wla
.flags = CE_ATTR_FLAGS,
.src_nentries = 0,
.src_sz_max = 2048,
+#ifndef CONFIG_ATH10K_SMALLBUFFERS
.dest_nentries = 128,
+#else
+ .dest_nentries = 96,
+#endif
.recv_cb = ath10k_pci_pktlog_rx_cb,
},

View File

@ -162,7 +162,7 @@ endef
define KernelPackage/airo
$(call KernelPackage/mac80211/Default)
TITLE:=Cisco Aironet driver
DEPENDS+=@PCI_SUPPORT +@DRIVER_WEXT_SUPPORT +kmod-cfg80211 @TARGET_x86
DEPENDS+=@PCI_SUPPORT +@DRIVER_WEXT_SUPPORT +kmod-cfg80211 @TARGET_x86 @BROKEN
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/cisco/airo.ko
AUTOLOAD:=$(call AutoProbe,airo)
endef

View File

@ -262,8 +262,8 @@ define KernelPackage/ath10k/config
depends on PACKAGE_kmod-ath10k
config ATH10K_THERMAL
bool "Enable thermal sensors and throttling support"
default y
bool "Enable thermal sensors and throttling support"
depends on PACKAGE_kmod-ath10k
endef

View File

@ -1,11 +0,0 @@
--- a/drivers/net/wireless/ath/ath10k/htt.h
+++ b/drivers/net/wireless/ath/ath10k/htt.h
@@ -238,7 +238,7 @@ enum htt_rx_ring_flags {
};
#define HTT_RX_RING_SIZE_MIN 128
-#define HTT_RX_RING_SIZE_MAX 2048
+#define HTT_RX_RING_SIZE_MAX 512
#define HTT_RX_RING_SIZE HTT_RX_RING_SIZE_MAX
#define HTT_RX_RING_FILL_LEVEL (((HTT_RX_RING_SIZE) / 2) - 1)
#define HTT_RX_RING_FILL_LEVEL_DUAL_MAC (HTT_RX_RING_SIZE - 1)

View File

@ -1,38 +0,0 @@
--- a/drivers/net/wireless/ath/ath10k/pci.c
+++ b/drivers/net/wireless/ath/ath10k/pci.c
@@ -142,7 +142,7 @@ static struct ce_attr host_ce_config_wla
.flags = CE_ATTR_FLAGS,
.src_nentries = 0,
.src_sz_max = 2048,
- .dest_nentries = 512,
+ .dest_nentries = 128,
.recv_cb = ath10k_pci_htt_htc_rx_cb,
},
@@ -151,7 +151,7 @@ static struct ce_attr host_ce_config_wla
.flags = CE_ATTR_FLAGS,
.src_nentries = 0,
.src_sz_max = 2048,
- .dest_nentries = 128,
+ .dest_nentries = 64,
.recv_cb = ath10k_pci_htc_rx_cb,
},
@@ -178,7 +178,7 @@ static struct ce_attr host_ce_config_wla
.flags = CE_ATTR_FLAGS,
.src_nentries = 0,
.src_sz_max = 512,
- .dest_nentries = 512,
+ .dest_nentries = 128,
.recv_cb = ath10k_pci_htt_rx_cb,
},
@@ -203,7 +203,7 @@ static struct ce_attr host_ce_config_wla
.flags = CE_ATTR_FLAGS,
.src_nentries = 0,
.src_sz_max = 2048,
- .dest_nentries = 128,
+ .dest_nentries = 96,
.recv_cb = ath10k_pci_pktlog_rx_cb,
},

View File

@ -0,0 +1,30 @@
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
Date: Mon, 18 Nov 2019 13:35:20 +0100
Subject: [PATCH 5.5] brcmfmac: remove monitor interface when detaching
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This fixes a minor WARNING in the cfg80211:
[ 130.658034] ------------[ cut here ]------------
[ 130.662805] WARNING: CPU: 1 PID: 610 at net/wireless/core.c:954 wiphy_unregister+0xb4/0x198 [cfg80211]
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
---
drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c | 5 +++++
1 file changed, 5 insertions(+)
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
@@ -1371,6 +1371,11 @@ void brcmf_detach(struct device *dev)
brcmf_fweh_detach(drvr);
brcmf_proto_detach(drvr);
+ if (drvr->mon_if) {
+ brcmf_net_detach(drvr->mon_if->ndev, false);
+ drvr->mon_if = NULL;
+ }
+
/* make sure primary interface removed last */
for (i = BRCMF_MAX_IFS - 1; i > -1; i--) {
if (drvr->iflist[i])

View File

@ -1,28 +0,0 @@
From 1524cbf3621576c639405e7aabeac415f9617c8d Mon Sep 17 00:00:00 2001
From: Adrian Ratiu <adrian.ratiu@collabora.com>
Date: Wed, 25 Sep 2019 16:44:57 +0300
Subject: [PATCH] brcmfmac: don't WARN when there are no requests
When n_reqs == 0 there is nothing to do so it doesn't make sense to
search for requests and issue a warning because none is found.
Signed-off-by: Martyn Welch <martyn.welch@collabora.com>
Signed-off-by: Adrian Ratiu <adrian.ratiu@collabora.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
---
drivers/net/wireless/broadcom/brcm80211/brcmfmac/pno.c | 4 ++++
1 file changed, 4 insertions(+)
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pno.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pno.c
@@ -57,6 +57,10 @@ static int brcmf_pno_remove_request(stru
mutex_lock(&pi->req_lock);
+ /* Nothing to do if we have no requests */
+ if (pi->n_reqs == 0)
+ goto done;
+
/* find request */
for (i = 0; i < pi->n_reqs; i++) {
if (pi->reqs[i]->reqid == reqid)

View File

@ -1,109 +0,0 @@
From e0ae4bac22effbd644add326f658a3aeeb8d45ee Mon Sep 17 00:00:00 2001
From: Adrian Ratiu <adrian.ratiu@collabora.com>
Date: Wed, 25 Sep 2019 16:44:58 +0300
Subject: [PATCH] brcmfmac: fix suspend/resume when power is cut off
brcmfmac assumed the wifi device always remains powered on and thus
hardcoded the MMC_PM_KEEP_POWER flag expecting the wifi device to
remain on even during suspend/resume cycles.
This is not always the case, some appliances cut power to everything
connected via SDIO for efficiency reasons and this leads to wifi not
being usable after coming out of suspend because the device was not
correctly reinitialized.
So we check for the keep_power capability and if it's not present then
we remove the device and probe it again during resume to mirror what's
happening in hardware and ensure correct reinitialization in the case
when MMC_PM_KEEP_POWER is not supported.
Suggested-by: Gustavo Padovan <gustavo.padovan@collabora.com>
Signed-off-by: Adrian Ratiu <adrian.ratiu@collabora.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
---
.../broadcom/brcm80211/brcmfmac/bcmsdh.c | 53 ++++++++++++++-----
1 file changed, 39 insertions(+), 14 deletions(-)
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
@@ -1097,7 +1097,8 @@ static int brcmf_ops_sdio_suspend(struct
struct sdio_func *func;
struct brcmf_bus *bus_if;
struct brcmf_sdio_dev *sdiodev;
- mmc_pm_flag_t sdio_flags;
+ mmc_pm_flag_t pm_caps, sdio_flags;
+ int ret = 0;
func = container_of(dev, struct sdio_func, dev);
brcmf_dbg(SDIO, "Enter: F%d\n", func->num);
@@ -1108,19 +1109,33 @@ static int brcmf_ops_sdio_suspend(struct
bus_if = dev_get_drvdata(dev);
sdiodev = bus_if->bus_priv.sdio;
- brcmf_sdiod_freezer_on(sdiodev);
- brcmf_sdio_wd_timer(sdiodev->bus, 0);
+ pm_caps = sdio_get_host_pm_caps(func);
- sdio_flags = MMC_PM_KEEP_POWER;
- if (sdiodev->wowl_enabled) {
- if (sdiodev->settings->bus.sdio.oob_irq_supported)
- enable_irq_wake(sdiodev->settings->bus.sdio.oob_irq_nr);
- else
- sdio_flags |= MMC_PM_WAKE_SDIO_IRQ;
+ if (pm_caps & MMC_PM_KEEP_POWER) {
+ /* preserve card power during suspend */
+ brcmf_sdiod_freezer_on(sdiodev);
+ brcmf_sdio_wd_timer(sdiodev->bus, 0);
+
+ sdio_flags = MMC_PM_KEEP_POWER;
+ if (sdiodev->wowl_enabled) {
+ if (sdiodev->settings->bus.sdio.oob_irq_supported)
+ enable_irq_wake(sdiodev->settings->bus.sdio.oob_irq_nr);
+ else
+ sdio_flags |= MMC_PM_WAKE_SDIO_IRQ;
+ }
+
+ if (sdio_set_host_pm_flags(sdiodev->func1, sdio_flags))
+ brcmf_err("Failed to set pm_flags %x\n", sdio_flags);
+
+ } else {
+ /* power will be cut so remove device, probe again in resume */
+ brcmf_sdiod_intr_unregister(sdiodev);
+ ret = brcmf_sdiod_remove(sdiodev);
+ if (ret)
+ brcmf_err("Failed to remove device on suspend\n");
}
- if (sdio_set_host_pm_flags(sdiodev->func1, sdio_flags))
- brcmf_err("Failed to set pm_flags %x\n", sdio_flags);
- return 0;
+
+ return ret;
}
static int brcmf_ops_sdio_resume(struct device *dev)
@@ -1128,13 +1143,23 @@ static int brcmf_ops_sdio_resume(struct
struct brcmf_bus *bus_if = dev_get_drvdata(dev);
struct brcmf_sdio_dev *sdiodev = bus_if->bus_priv.sdio;
struct sdio_func *func = container_of(dev, struct sdio_func, dev);
+ mmc_pm_flag_t pm_caps = sdio_get_host_pm_caps(func);
+ int ret = 0;
brcmf_dbg(SDIO, "Enter: F%d\n", func->num);
if (func->num != 2)
return 0;
- brcmf_sdiod_freezer_off(sdiodev);
- return 0;
+ if (!(pm_caps & MMC_PM_KEEP_POWER)) {
+ /* bus was powered off and device removed, probe again */
+ ret = brcmf_sdiod_probe(sdiodev);
+ if (ret)
+ brcmf_err("Failed to probe device on resume\n");
+ } else {
+ brcmf_sdiod_freezer_off(sdiodev);
+ }
+
+ return ret;
}
static const struct dev_pm_ops brcmf_sdio_pm_ops = {

View File

@ -1,58 +0,0 @@
From 7af496b9eb0433bc4cb478c9a46f85509cdb5541 Mon Sep 17 00:00:00 2001
From: zhengbin <zhengbin13@huawei.com>
Date: Sat, 16 Nov 2019 15:22:47 +0800
Subject: [PATCH] brcmfmac: remove set but not used variable
'mpnum','nsp','nmp'
Fixes gcc '-Wunused-but-set-variable' warning:
drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c: In function brcmf_chip_dmp_get_regaddr:
drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c:790:5: warning: variable mpnum set but not used [-Wunused-but-set-variable]
drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c: In function brcmf_chip_dmp_erom_scan:
drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c:866:10: warning: variable nsp set but not used [-Wunused-but-set-variable]
drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c: In function brcmf_chip_dmp_erom_scan:
drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c:866:5: warning: variable nmp set but not used [-Wunused-but-set-variable]
Reported-by: Hulk Robot <hulkci@huawei.com>
Signed-off-by: zhengbin <zhengbin13@huawei.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
---
drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c | 6 +-----
1 file changed, 1 insertion(+), 5 deletions(-)
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
@@ -778,7 +778,6 @@ static int brcmf_chip_dmp_get_regaddr(st
{
u8 desc;
u32 val, szdesc;
- u8 mpnum = 0;
u8 stype, sztype, wraptype;
*regbase = 0;
@@ -786,7 +785,6 @@ static int brcmf_chip_dmp_get_regaddr(st
val = brcmf_chip_dmp_get_desc(ci, eromaddr, &desc);
if (desc == DMP_DESC_MASTER_PORT) {
- mpnum = (val & DMP_MASTER_PORT_NUM) >> DMP_MASTER_PORT_NUM_S;
wraptype = DMP_SLAVE_TYPE_MWRAP;
} else if (desc == DMP_DESC_ADDRESS) {
/* revert erom address */
@@ -854,7 +852,7 @@ int brcmf_chip_dmp_erom_scan(struct brcm
u8 desc_type = 0;
u32 val;
u16 id;
- u8 nmp, nsp, nmw, nsw, rev;
+ u8 nmw, nsw, rev;
u32 base, wrap;
int err;
@@ -880,8 +878,6 @@ int brcmf_chip_dmp_erom_scan(struct brcm
return -EFAULT;
/* only look at cores with master port(s) */
- nmp = (val & DMP_COMP_NUM_MPORT) >> DMP_COMP_NUM_MPORT_S;
- nsp = (val & DMP_COMP_NUM_SPORT) >> DMP_COMP_NUM_SPORT_S;
nmw = (val & DMP_COMP_NUM_MWRAP) >> DMP_COMP_NUM_MWRAP_S;
nsw = (val & DMP_COMP_NUM_SWRAP) >> DMP_COMP_NUM_SWRAP_S;
rev = (val & DMP_COMP_REVISION) >> DMP_COMP_REVISION_S;

View File

@ -1,29 +0,0 @@
From 5cc509aa83c6acd2c5cd94f99065c39d2bd0a490 Mon Sep 17 00:00:00 2001
From: Navid Emamdoost <navid.emamdoost@gmail.com>
Date: Fri, 22 Nov 2019 13:19:48 -0600
Subject: [PATCH] brcmfmac: Fix memory leak in brcmf_p2p_create_p2pdev()
In the implementation of brcmf_p2p_create_p2pdev() the allocated memory
for p2p_vif is leaked when the mac address is the same as primary
interface. To fix this, go to error path to release p2p_vif via
brcmf_free_vif().
Fixes: cb746e47837a ("brcmfmac: check p2pdev mac address uniqueness")
Signed-off-by: Navid Emamdoost <navid.emamdoost@gmail.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
---
drivers/net/wireless/broadcom/brcm80211/brcmfmac/p2p.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/p2p.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/p2p.c
@@ -2092,7 +2092,8 @@ static struct wireless_dev *brcmf_p2p_cr
/* firmware requires unique mac address for p2pdev interface */
if (addr && ether_addr_equal(addr, pri_ifp->mac_addr)) {
bphy_err(drvr, "discovery vif must be different from primary interface\n");
- return ERR_PTR(-EINVAL);
+ err = -EINVAL;
+ goto fail;
}
brcmf_p2p_generate_bss_mac(p2p, addr);

View File

@ -1,31 +0,0 @@
From 216b44000ada87a63891a8214c347e05a4aea8fe Mon Sep 17 00:00:00 2001
From: Dan Carpenter <dan.carpenter@oracle.com>
Date: Tue, 3 Dec 2019 12:58:55 +0300
Subject: [PATCH] brcmfmac: Fix use after free in brcmf_sdio_readframes()
The brcmu_pkt_buf_free_skb() function frees "pkt" so it leads to a
static checker warning:
drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c:1974 brcmf_sdio_readframes()
error: dereferencing freed memory 'pkt'
It looks like there was supposed to be a continue after we free "pkt".
Fixes: 4754fceeb9a6 ("brcmfmac: streamline SDIO read frame routine")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Acked-by: Franky Lin <franky.lin@broadcom.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
---
drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 1 +
1 file changed, 1 insertion(+)
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
@@ -1935,6 +1935,7 @@ static uint brcmf_sdio_readframes(struct
BRCMF_SDIO_FT_NORMAL)) {
rd->len = 0;
brcmu_pkt_buf_free_skb(pkt);
+ continue;
}
bus->sdcnt.rx_readahead_cnt++;
if (rd->len != roundup(rd_new.len, 16)) {

View File

@ -1,29 +0,0 @@
From 8d9627b05b2c33e4468e65739eb7caf9c3f274d8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
Date: Tue, 10 Dec 2019 12:35:55 +0100
Subject: [PATCH] brcmfmac: set interface carrier to off by default
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
It's important as brcmfmac creates one main interface for each PHY and
doesn't allow deleting it. Not setting carrier could result in other
subsystems misbehaving (e.g. LEDs "netdev" trigger turning LED on).
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
---
drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c | 2 ++
1 file changed, 2 insertions(+)
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
@@ -678,6 +678,8 @@ int brcmf_net_attach(struct brcmf_if *if
goto fail;
}
+ netif_carrier_off(ndev);
+
netdev_set_priv_destructor(ndev, brcmf_cfg80211_free_netdev);
brcmf_dbg(INFO, "%s: Broadcom Dongle Host Driver\n", ndev->name);
return 0;

View File

@ -1,40 +0,0 @@
From 3428fbcd6e6c0850b1a8b2a12082b7b2aabb3da3 Mon Sep 17 00:00:00 2001
From: Johan Hovold <johan@kernel.org>
Date: Tue, 10 Dec 2019 12:44:22 +0100
Subject: [PATCH] brcmfmac: fix interface sanity check
Make sure to use the current alternate setting when verifying the
interface descriptors to avoid binding to an invalid interface.
Failing to do so could cause the driver to misbehave or trigger a WARN()
in usb_submit_urb() that kernels with panic_on_warn set would choke on.
Fixes: 71bb244ba2fd ("brcm80211: fmac: add USB support for bcm43235/6/8 chipsets")
Cc: stable <stable@vger.kernel.org> # 3.4
Cc: Arend van Spriel <arend@broadcom.com>
Signed-off-by: Johan Hovold <johan@kernel.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
---
drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
@@ -1348,7 +1348,7 @@ brcmf_usb_probe(struct usb_interface *in
goto fail;
}
- desc = &intf->altsetting[0].desc;
+ desc = &intf->cur_altsetting->desc;
if ((desc->bInterfaceClass != USB_CLASS_VENDOR_SPEC) ||
(desc->bInterfaceSubClass != 2) ||
(desc->bInterfaceProtocol != 0xff)) {
@@ -1361,7 +1361,7 @@ brcmf_usb_probe(struct usb_interface *in
num_of_eps = desc->bNumEndpoints;
for (ep = 0; ep < num_of_eps; ep++) {
- endpoint = &intf->altsetting[0].endpoint[ep].desc;
+ endpoint = &intf->cur_altsetting->endpoint[ep].desc;
endpoint_num = usb_endpoint_num(endpoint);
if (!usb_endpoint_xfer_bulk(endpoint))
continue;

View File

@ -1,121 +0,0 @@
From 1b8d2e0a9e4221b99eea375c079507ce8ef655f5 Mon Sep 17 00:00:00 2001
From: Wright Feng <wright.feng@cypress.com>
Date: Thu, 12 Dec 2019 00:52:45 +0100
Subject: [PATCH 1/7] brcmfmac: reset two D11 cores if chip has two D11 cores
There are two D11 cores in RSDB chips like 4359. We have to reset two
D11 cores simutaneously before firmware download, or the firmware may
not be initialized correctly and cause "fw initialized failed" error.
Signed-off-by: Wright Feng <wright.feng@cypress.com>
Signed-off-by: Soeren Moch <smoch@web.de>
Reviewed-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
---
.../broadcom/brcm80211/brcmfmac/chip.c | 50 +++++++++++++++++++
.../broadcom/brcm80211/brcmfmac/chip.h | 1 +
.../broadcom/brcm80211/brcmfmac/pcie.c | 2 +-
3 files changed, 52 insertions(+), 1 deletion(-)
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
@@ -433,11 +433,25 @@ static void brcmf_chip_ai_resetcore(stru
{
struct brcmf_chip_priv *ci;
int count;
+ struct brcmf_core *d11core2 = NULL;
+ struct brcmf_core_priv *d11priv2 = NULL;
ci = core->chip;
+ /* special handle two D11 cores reset */
+ if (core->pub.id == BCMA_CORE_80211) {
+ d11core2 = brcmf_chip_get_d11core(&ci->pub, 1);
+ if (d11core2) {
+ brcmf_dbg(INFO, "found two d11 cores, reset both\n");
+ d11priv2 = container_of(d11core2,
+ struct brcmf_core_priv, pub);
+ }
+ }
+
/* must disable first to work for arbitrary current core state */
brcmf_chip_ai_coredisable(core, prereset, reset);
+ if (d11priv2)
+ brcmf_chip_ai_coredisable(d11priv2, prereset, reset);
count = 0;
while (ci->ops->read32(ci->ctx, core->wrapbase + BCMA_RESET_CTL) &
@@ -449,9 +463,30 @@ static void brcmf_chip_ai_resetcore(stru
usleep_range(40, 60);
}
+ if (d11priv2) {
+ count = 0;
+ while (ci->ops->read32(ci->ctx,
+ d11priv2->wrapbase + BCMA_RESET_CTL) &
+ BCMA_RESET_CTL_RESET) {
+ ci->ops->write32(ci->ctx,
+ d11priv2->wrapbase + BCMA_RESET_CTL,
+ 0);
+ count++;
+ if (count > 50)
+ break;
+ usleep_range(40, 60);
+ }
+ }
+
ci->ops->write32(ci->ctx, core->wrapbase + BCMA_IOCTL,
postreset | BCMA_IOCTL_CLK);
ci->ops->read32(ci->ctx, core->wrapbase + BCMA_IOCTL);
+
+ if (d11priv2) {
+ ci->ops->write32(ci->ctx, d11priv2->wrapbase + BCMA_IOCTL,
+ postreset | BCMA_IOCTL_CLK);
+ ci->ops->read32(ci->ctx, d11priv2->wrapbase + BCMA_IOCTL);
+ }
}
char *brcmf_chip_name(u32 id, u32 rev, char *buf, uint len)
@@ -1109,6 +1144,21 @@ void brcmf_chip_detach(struct brcmf_chip
kfree(chip);
}
+struct brcmf_core *brcmf_chip_get_d11core(struct brcmf_chip *pub, u8 unit)
+{
+ struct brcmf_chip_priv *chip;
+ struct brcmf_core_priv *core;
+
+ chip = container_of(pub, struct brcmf_chip_priv, pub);
+ list_for_each_entry(core, &chip->cores, list) {
+ if (core->pub.id == BCMA_CORE_80211) {
+ if (unit-- == 0)
+ return &core->pub;
+ }
+ }
+ return NULL;
+}
+
struct brcmf_core *brcmf_chip_get_core(struct brcmf_chip *pub, u16 coreid)
{
struct brcmf_chip_priv *chip;
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.h
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.h
@@ -74,6 +74,7 @@ struct brcmf_chip *brcmf_chip_attach(voi
const struct brcmf_buscore_ops *ops);
void brcmf_chip_detach(struct brcmf_chip *chip);
struct brcmf_core *brcmf_chip_get_core(struct brcmf_chip *chip, u16 coreid);
+struct brcmf_core *brcmf_chip_get_d11core(struct brcmf_chip *pub, u8 unit);
struct brcmf_core *brcmf_chip_get_chipcommon(struct brcmf_chip *chip);
struct brcmf_core *brcmf_chip_get_pmu(struct brcmf_chip *pub);
bool brcmf_chip_iscoreup(struct brcmf_core *core);
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
@@ -78,7 +78,7 @@ static const struct brcmf_firmware_mappi
BRCMF_FW_ENTRY(BRCM_CC_4371_CHIP_ID, 0xFFFFFFFF, 4371),
};
-#define BRCMF_PCIE_FW_UP_TIMEOUT 2000 /* msec */
+#define BRCMF_PCIE_FW_UP_TIMEOUT 5000 /* msec */
#define BRCMF_PCIE_REG_MAP_SIZE (32 * 1024)

View File

@ -1,79 +0,0 @@
From 172f6854551d48d1c9530f84513b421db944e714 Mon Sep 17 00:00:00 2001
From: Chung-Hsien Hsu <stanley.hsu@cypress.com>
Date: Thu, 12 Dec 2019 00:52:46 +0100
Subject: [PATCH 2/7] brcmfmac: set F2 blocksize and watermark for 4359
Set F2 blocksize to 256 bytes and watermark to 0x40 for 4359. Also
enable and configure F1 MesBusyCtrl. It fixes DMA error while having
UDP bi-directional traffic.
Signed-off-by: Chung-Hsien Hsu <stanley.hsu@cypress.com>
[slightly adapted for rebase on mainline linux]
Signed-off-by: Soeren Moch <smoch@web.de>
Reviewed-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
---
.../wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c | 6 +++++-
.../wireless/broadcom/brcm80211/brcmfmac/sdio.c | 15 +++++++++++++++
2 files changed, 20 insertions(+), 1 deletion(-)
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
@@ -43,6 +43,7 @@
#define SDIO_FUNC1_BLOCKSIZE 64
#define SDIO_FUNC2_BLOCKSIZE 512
+#define SDIO_4359_FUNC2_BLOCKSIZE 256
/* Maximum milliseconds to wait for F2 to come up */
#define SDIO_WAIT_F2RDY 3000
@@ -892,6 +893,7 @@ static void brcmf_sdiod_host_fixup(struc
static int brcmf_sdiod_probe(struct brcmf_sdio_dev *sdiodev)
{
int ret = 0;
+ unsigned int f2_blksz = SDIO_FUNC2_BLOCKSIZE;
sdio_claim_host(sdiodev->func1);
@@ -901,7 +903,9 @@ static int brcmf_sdiod_probe(struct brcm
sdio_release_host(sdiodev->func1);
goto out;
}
- ret = sdio_set_block_size(sdiodev->func2, SDIO_FUNC2_BLOCKSIZE);
+ if (sdiodev->func2->device == SDIO_DEVICE_ID_BROADCOM_4359)
+ f2_blksz = SDIO_4359_FUNC2_BLOCKSIZE;
+ ret = sdio_set_block_size(sdiodev->func2, f2_blksz);
if (ret) {
brcmf_err("Failed to set F2 blocksize\n");
sdio_release_host(sdiodev->func1);
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
@@ -42,6 +42,8 @@
#define DEFAULT_F2_WATERMARK 0x8
#define CY_4373_F2_WATERMARK 0x40
#define CY_43012_F2_WATERMARK 0x60
+#define CY_4359_F2_WATERMARK 0x40
+#define CY_4359_F1_MESBUSYCTRL (CY_4359_F2_WATERMARK | SBSDIO_MESBUSYCTRL_ENAB)
#ifdef DEBUG
@@ -4210,6 +4212,19 @@ static void brcmf_sdio_firmware_callback
brcmf_sdiod_writeb(sdiod, SBSDIO_DEVICE_CTL, devctl,
&err);
break;
+ case SDIO_DEVICE_ID_BROADCOM_4359:
+ brcmf_dbg(INFO, "set F2 watermark to 0x%x*4 bytes\n",
+ CY_4359_F2_WATERMARK);
+ brcmf_sdiod_writeb(sdiod, SBSDIO_WATERMARK,
+ CY_4359_F2_WATERMARK, &err);
+ devctl = brcmf_sdiod_readb(sdiod, SBSDIO_DEVICE_CTL,
+ &err);
+ devctl |= SBSDIO_DEVCTL_F2WM_ENAB;
+ brcmf_sdiod_writeb(sdiod, SBSDIO_DEVICE_CTL, devctl,
+ &err);
+ brcmf_sdiod_writeb(sdiod, SBSDIO_FUNC1_MESBUSYCTRL,
+ CY_4359_F1_MESBUSYCTRL, &err);
+ break;
default:
brcmf_sdiod_writeb(sdiod, SBSDIO_WATERMARK,
DEFAULT_F2_WATERMARK, &err);

View File

@ -1,34 +0,0 @@
From 6647274ed995a172369cb04754eb5f8b85f68f6d Mon Sep 17 00:00:00 2001
From: Soeren Moch <smoch@web.de>
Date: Thu, 12 Dec 2019 00:52:47 +0100
Subject: [PATCH 3/7] brcmfmac: fix rambase for 4359/9
Newer 4359 chip revisions need a different rambase address.
This fixes firmware download on such devices which fails otherwise.
Signed-off-by: Soeren Moch <smoch@web.de>
Acked-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
---
drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
@@ -712,7 +712,6 @@ static u32 brcmf_chip_tcm_rambase(struct
case BRCM_CC_43569_CHIP_ID:
case BRCM_CC_43570_CHIP_ID:
case BRCM_CC_4358_CHIP_ID:
- case BRCM_CC_4359_CHIP_ID:
case BRCM_CC_43602_CHIP_ID:
case BRCM_CC_4371_CHIP_ID:
return 0x180000;
@@ -722,6 +721,8 @@ static u32 brcmf_chip_tcm_rambase(struct
case BRCM_CC_4366_CHIP_ID:
case BRCM_CC_43664_CHIP_ID:
return 0x200000;
+ case BRCM_CC_4359_CHIP_ID:
+ return (ci->pub.chiprev < 9) ? 0x180000 : 0x160000;
case CY_CC_4373_CHIP_ID:
return 0x160000;
default:

View File

@ -1,42 +0,0 @@
From c12c8913d79c49ceccb38f42714d25b783833758 Mon Sep 17 00:00:00 2001
From: Soeren Moch <smoch@web.de>
Date: Thu, 12 Dec 2019 00:52:48 +0100
Subject: [PATCH 4/7] brcmfmac: make errors when setting roaming parameters
non-fatal
4359 dongles do not support setting roaming parameters (error -52).
Do not fail the 80211 configuration in this case.
Signed-off-by: Soeren Moch <smoch@web.de>
Acked-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
---
.../wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | 10 ++++------
1 file changed, 4 insertions(+), 6 deletions(-)
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
@@ -5936,19 +5936,17 @@ static s32 brcmf_dongle_roam(struct brcm
roamtrigger[1] = cpu_to_le32(BRCM_BAND_ALL);
err = brcmf_fil_cmd_data_set(ifp, BRCMF_C_SET_ROAM_TRIGGER,
(void *)roamtrigger, sizeof(roamtrigger));
- if (err) {
+ if (err)
bphy_err(drvr, "WLC_SET_ROAM_TRIGGER error (%d)\n", err);
- goto roam_setup_done;
- }
roam_delta[0] = cpu_to_le32(WL_ROAM_DELTA);
roam_delta[1] = cpu_to_le32(BRCM_BAND_ALL);
err = brcmf_fil_cmd_data_set(ifp, BRCMF_C_SET_ROAM_DELTA,
(void *)roam_delta, sizeof(roam_delta));
- if (err) {
+ if (err)
bphy_err(drvr, "WLC_SET_ROAM_DELTA error (%d)\n", err);
- goto roam_setup_done;
- }
+
+ return 0;
roam_setup_done:
return err;

View File

@ -1,75 +0,0 @@
From d4aef159394d5940bd7158ab789969dab82f7c76 Mon Sep 17 00:00:00 2001
From: Soeren Moch <smoch@web.de>
Date: Thu, 12 Dec 2019 00:52:49 +0100
Subject: [PATCH 5/7] brcmfmac: add support for BCM4359 SDIO chipset
BCM4359 is a 2x2 802.11 abgn+ac Dual-Band HT80 combo chip and it
supports Real Simultaneous Dual Band feature.
Based on a similar patch by: Wright Feng <wright.feng@cypress.com>
Signed-off-by: Soeren Moch <smoch@web.de>
Acked-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
Acked-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
---
drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c | 2 ++
drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c | 1 +
drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 2 ++
include/linux/mmc/sdio_ids.h | 2 ++
4 files changed, 7 insertions(+)
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
@@ -962,8 +962,10 @@ static const struct sdio_device_id brcmf
BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_43455),
BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_4354),
BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_4356),
+ BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_4359),
BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_CYPRESS_4373),
BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_CYPRESS_43012),
+ BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_CYPRESS_89359),
{ /* end: all zeroes */ }
};
MODULE_DEVICE_TABLE(sdio, brcmf_sdmmc_ids);
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
@@ -1408,6 +1408,7 @@ bool brcmf_chip_sr_capable(struct brcmf_
addr = CORE_CC_REG(base, sr_control0);
reg = chip->ops->read32(chip->ctx, addr);
return (reg & CC_SR_CTL0_ENABLE_MASK) != 0;
+ case BRCM_CC_4359_CHIP_ID:
case CY_CC_43012_CHIP_ID:
addr = CORE_CC_REG(pmu->base, retention_ctl);
reg = chip->ops->read32(chip->ctx, addr);
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
@@ -616,6 +616,7 @@ BRCMF_FW_DEF(43455, "brcmfmac43455-sdio"
BRCMF_FW_DEF(43456, "brcmfmac43456-sdio");
BRCMF_FW_DEF(4354, "brcmfmac4354-sdio");
BRCMF_FW_DEF(4356, "brcmfmac4356-sdio");
+BRCMF_FW_DEF(4359, "brcmfmac4359-sdio");
BRCMF_FW_DEF(4373, "brcmfmac4373-sdio");
BRCMF_FW_DEF(43012, "brcmfmac43012-sdio");
@@ -638,6 +639,7 @@ static const struct brcmf_firmware_mappi
BRCMF_FW_ENTRY(BRCM_CC_4345_CHIP_ID, 0xFFFFFDC0, 43455),
BRCMF_FW_ENTRY(BRCM_CC_4354_CHIP_ID, 0xFFFFFFFF, 4354),
BRCMF_FW_ENTRY(BRCM_CC_4356_CHIP_ID, 0xFFFFFFFF, 4356),
+ BRCMF_FW_ENTRY(BRCM_CC_4359_CHIP_ID, 0xFFFFFFFF, 4359),
BRCMF_FW_ENTRY(CY_CC_4373_CHIP_ID, 0xFFFFFFFF, 4373),
BRCMF_FW_ENTRY(CY_CC_43012_CHIP_ID, 0xFFFFFFFF, 43012)
};
--- a/include/linux/mmc/sdio_ids.h
+++ b/include/linux/mmc/sdio_ids.h
@@ -41,8 +41,10 @@
#define SDIO_DEVICE_ID_BROADCOM_43455 0xa9bf
#define SDIO_DEVICE_ID_BROADCOM_4354 0x4354
#define SDIO_DEVICE_ID_BROADCOM_4356 0x4356
+#define SDIO_DEVICE_ID_BROADCOM_4359 0x4359
#define SDIO_DEVICE_ID_CYPRESS_4373 0x4373
#define SDIO_DEVICE_ID_CYPRESS_43012 43012
+#define SDIO_DEVICE_ID_CYPRESS_89359 0x4355
#define SDIO_VENDOR_ID_INTEL 0x0089
#define SDIO_DEVICE_ID_INTEL_IWMC3200WIMAX 0x1402

View File

@ -1,130 +0,0 @@
From 837482e69a3f0d7cbc73922020012f83635f5ddb Mon Sep 17 00:00:00 2001
From: Wright Feng <wright.feng@cypress.com>
Date: Thu, 12 Dec 2019 00:52:50 +0100
Subject: [PATCH 6/7] brcmfmac: add RSDB condition when setting interface
combinations
With firmware RSDB feature
1. The maximum support interface is four.
2. The maximum difference channel is two.
3. The maximum interfaces of {station/p2p client/AP} are two.
4. The maximum interface of p2p device is one.
Signed-off-by: Wright Feng <wright.feng@cypress.com>
Signed-off-by: Soeren Moch <smoch@web.de>
Reviewed-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
---
.../broadcom/brcm80211/brcmfmac/cfg80211.c | 54 ++++++++++++++++---
1 file changed, 46 insertions(+), 8 deletions(-)
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
@@ -6444,6 +6444,9 @@ brcmf_txrx_stypes[NUM_NL80211_IFTYPES] =
* #STA <= 1, #AP <= 1, channels = 1, 2 total
* #AP <= 4, matching BI, channels = 1, 4 total
*
+ * no p2p and rsdb:
+ * #STA <= 2, #AP <= 2, channels = 2, 4 total
+ *
* p2p, no mchan, and mbss:
*
* #STA <= 1, #P2P-DEV <= 1, #{P2P-CL, P2P-GO} <= 1, channels = 1, 3 total
@@ -6455,6 +6458,10 @@ brcmf_txrx_stypes[NUM_NL80211_IFTYPES] =
* #STA <= 1, #P2P-DEV <= 1, #{P2P-CL, P2P-GO} <= 1, channels = 2, 3 total
* #STA <= 1, #P2P-DEV <= 1, #AP <= 1, #P2P-CL <= 1, channels = 1, 4 total
* #AP <= 4, matching BI, channels = 1, 4 total
+ *
+ * p2p, rsdb, and no mbss:
+ * #STA <= 2, #P2P-DEV <= 1, #{P2P-CL, P2P-GO} <= 2, AP <= 2,
+ * channels = 2, 4 total
*/
static int brcmf_setup_ifmodes(struct wiphy *wiphy, struct brcmf_if *ifp)
{
@@ -6462,13 +6469,14 @@ static int brcmf_setup_ifmodes(struct wi
struct ieee80211_iface_limit *c0_limits = NULL;
struct ieee80211_iface_limit *p2p_limits = NULL;
struct ieee80211_iface_limit *mbss_limits = NULL;
- bool mbss, p2p;
+ bool mbss, p2p, rsdb;
int i, c, n_combos;
mbss = brcmf_feat_is_enabled(ifp, BRCMF_FEAT_MBSS);
p2p = brcmf_feat_is_enabled(ifp, BRCMF_FEAT_P2P);
+ rsdb = brcmf_feat_is_enabled(ifp, BRCMF_FEAT_RSDB);
- n_combos = 1 + !!p2p + !!mbss;
+ n_combos = 1 + !!(p2p && !rsdb) + !!mbss;
combo = kcalloc(n_combos, sizeof(*combo), GFP_KERNEL);
if (!combo)
goto err;
@@ -6479,16 +6487,36 @@ static int brcmf_setup_ifmodes(struct wi
c = 0;
i = 0;
- c0_limits = kcalloc(p2p ? 3 : 2, sizeof(*c0_limits), GFP_KERNEL);
+ if (p2p && rsdb)
+ c0_limits = kcalloc(4, sizeof(*c0_limits), GFP_KERNEL);
+ else if (p2p)
+ c0_limits = kcalloc(3, sizeof(*c0_limits), GFP_KERNEL);
+ else
+ c0_limits = kcalloc(2, sizeof(*c0_limits), GFP_KERNEL);
if (!c0_limits)
goto err;
- c0_limits[i].max = 1;
- c0_limits[i++].types = BIT(NL80211_IFTYPE_STATION);
- if (p2p) {
+ if (p2p && rsdb) {
+ combo[c].num_different_channels = 2;
+ wiphy->interface_modes |= BIT(NL80211_IFTYPE_P2P_CLIENT) |
+ BIT(NL80211_IFTYPE_P2P_GO) |
+ BIT(NL80211_IFTYPE_P2P_DEVICE);
+ c0_limits[i].max = 2;
+ c0_limits[i++].types = BIT(NL80211_IFTYPE_STATION);
+ c0_limits[i].max = 1;
+ c0_limits[i++].types = BIT(NL80211_IFTYPE_P2P_DEVICE);
+ c0_limits[i].max = 2;
+ c0_limits[i++].types = BIT(NL80211_IFTYPE_P2P_CLIENT) |
+ BIT(NL80211_IFTYPE_P2P_GO);
+ c0_limits[i].max = 2;
+ c0_limits[i++].types = BIT(NL80211_IFTYPE_AP);
+ combo[c].max_interfaces = 5;
+ } else if (p2p) {
if (brcmf_feat_is_enabled(ifp, BRCMF_FEAT_MCHAN))
combo[c].num_different_channels = 2;
else
combo[c].num_different_channels = 1;
+ c0_limits[i].max = 1;
+ c0_limits[i++].types = BIT(NL80211_IFTYPE_STATION);
wiphy->interface_modes |= BIT(NL80211_IFTYPE_P2P_CLIENT) |
BIT(NL80211_IFTYPE_P2P_GO) |
BIT(NL80211_IFTYPE_P2P_DEVICE);
@@ -6497,16 +6525,26 @@ static int brcmf_setup_ifmodes(struct wi
c0_limits[i].max = 1;
c0_limits[i++].types = BIT(NL80211_IFTYPE_P2P_CLIENT) |
BIT(NL80211_IFTYPE_P2P_GO);
+ combo[c].max_interfaces = i;
+ } else if (rsdb) {
+ combo[c].num_different_channels = 2;
+ c0_limits[i].max = 2;
+ c0_limits[i++].types = BIT(NL80211_IFTYPE_STATION);
+ c0_limits[i].max = 2;
+ c0_limits[i++].types = BIT(NL80211_IFTYPE_AP);
+ combo[c].max_interfaces = 3;
} else {
combo[c].num_different_channels = 1;
c0_limits[i].max = 1;
+ c0_limits[i++].types = BIT(NL80211_IFTYPE_STATION);
+ c0_limits[i].max = 1;
c0_limits[i++].types = BIT(NL80211_IFTYPE_AP);
+ combo[c].max_interfaces = i;
}
- combo[c].max_interfaces = i;
combo[c].n_limits = i;
combo[c].limits = c0_limits;
- if (p2p) {
+ if (p2p && !rsdb) {
c++;
i = 0;
p2p_limits = kcalloc(4, sizeof(*p2p_limits), GFP_KERNEL);

View File

@ -1,38 +0,0 @@
From 2635853ce4ab7654a77ab7080fb56de83408606b Mon Sep 17 00:00:00 2001
From: Wright Feng <wright.feng@cypress.com>
Date: Thu, 12 Dec 2019 00:52:51 +0100
Subject: [PATCH 7/7] brcmfmac: not set mbss in vif if firmware does not
support MBSS
With RSDB mode, FMAC and firmware are able to create 2 or more AP,
so we should not set mbss in vif structure if firmware does not
support MBSS feature.
Signed-off-by: Wright Feng <wright.feng@cypress.com>
Signed-off-by: Soeren Moch <smoch@web.de>
Reviewed-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
---
drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
@@ -5293,6 +5293,7 @@ struct brcmf_cfg80211_vif *brcmf_alloc_v
struct brcmf_cfg80211_vif *vif_walk;
struct brcmf_cfg80211_vif *vif;
bool mbss;
+ struct brcmf_if *ifp = brcmf_get_ifp(cfg->pub, 0);
brcmf_dbg(TRACE, "allocating virtual interface (size=%zu)\n",
sizeof(*vif));
@@ -5305,7 +5306,8 @@ struct brcmf_cfg80211_vif *brcmf_alloc_v
brcmf_init_prof(&vif->profile);
- if (type == NL80211_IFTYPE_AP) {
+ if (type == NL80211_IFTYPE_AP &&
+ brcmf_feat_is_enabled(ifp, BRCMF_FEAT_MBSS)) {
mbss = false;
list_for_each_entry(vif_walk, &cfg->vif_list, list) {
if (vif_walk->wdev.iftype == NL80211_IFTYPE_AP) {

View File

@ -1,26 +0,0 @@
From 4282dc057d750c6a7dd92953564b15c26b54c22c Mon Sep 17 00:00:00 2001
From: Navid Emamdoost <navid.emamdoost@gmail.com>
Date: Sat, 14 Dec 2019 19:51:14 -0600
Subject: [PATCH] brcmfmac: Fix memory leak in brcmf_usbdev_qinit
In the implementation of brcmf_usbdev_qinit() the allocated memory for
reqs is leaking if usb_alloc_urb() fails. Release reqs in the error
handling path.
Fixes: 71bb244ba2fd ("brcm80211: fmac: add USB support for bcm43235/6/8 chipsets")
Signed-off-by: Navid Emamdoost <navid.emamdoost@gmail.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
---
drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c | 1 +
1 file changed, 1 insertion(+)
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
@@ -430,6 +430,7 @@ fail:
usb_free_urb(req->urb);
list_del(q->next);
}
+ kfree(reqs);
return NULL;
}

View File

@ -1,66 +0,0 @@
From a32de68edab7b73ded850bcf76cdf6858e92a7e5 Mon Sep 17 00:00:00 2001
From: Dmitry Osipenko <digetx@gmail.com>
Date: Sun, 15 Dec 2019 21:42:24 +0300
Subject: [PATCH] brcmfmac: Keep OOB wake-interrupt disabled when it shouldn't
be enabled
NVIDIA Tegra SoCs do not like when OOB wake is enabled and WiFi interface
is in DOWN state during suspend. This results in a CPU hang on programming
OOB wake-up state of the GPIO controller during of system's suspend.
The solution is trivial: don't enable wake for the OOB interrupt when it
should be disabled.
This fixes hang on Tegra20 (Acer A500) and Tegra30 (Nexus 7) devices which
are using BCM4329 and BCM4330 WiFi chips respectively.
Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
---
.../net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c | 10 +++++-----
.../net/wireless/broadcom/brcm80211/brcmfmac/sdio.h | 1 -
2 files changed, 5 insertions(+), 6 deletions(-)
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
@@ -120,7 +120,7 @@ int brcmf_sdiod_intr_register(struct brc
brcmf_err("enable_irq_wake failed %d\n", ret);
return ret;
}
- sdiodev->irq_wake = true;
+ disable_irq_wake(pdata->oob_irq_nr);
sdio_claim_host(sdiodev->func1);
@@ -179,10 +179,6 @@ void brcmf_sdiod_intr_unregister(struct
sdio_release_host(sdiodev->func1);
sdiodev->oob_irq_requested = false;
- if (sdiodev->irq_wake) {
- disable_irq_wake(pdata->oob_irq_nr);
- sdiodev->irq_wake = false;
- }
free_irq(pdata->oob_irq_nr, &sdiodev->func1->dev);
sdiodev->irq_en = false;
sdiodev->oob_irq_requested = false;
@@ -1162,6 +1158,10 @@ static int brcmf_ops_sdio_resume(struct
if (ret)
brcmf_err("Failed to probe device on resume\n");
} else {
+ if (sdiodev->wowl_enabled &&
+ sdiodev->settings->bus.sdio.oob_irq_supported)
+ disable_irq_wake(sdiodev->settings->bus.sdio.oob_irq_nr);
+
brcmf_sdiod_freezer_off(sdiodev);
}
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.h
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.h
@@ -178,7 +178,6 @@ struct brcmf_sdio_dev {
bool sd_irq_requested;
bool irq_en; /* irq enable flags */
spinlock_t irq_en_lock;
- bool irq_wake; /* irq wake enable flags */
bool sg_support;
uint max_request_size;
ushort max_segment_count;

View File

@ -1,27 +0,0 @@
From b92c017deda819e45a0f054f6df6b53e645d7fe4 Mon Sep 17 00:00:00 2001
From: zhengbin <zhengbin13@huawei.com>
Date: Tue, 24 Dec 2019 22:16:06 +0800
Subject: [PATCH] brcmfmac: use true,false for bool variable
Fixes coccicheck warning:
drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c:911:2-24: WARNING: Assignment of 0/1 to bool variable
Reported-by: Hulk Robot <hulkci@huawei.com>
Signed-off-by: zhengbin <zhengbin13@huawei.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
---
drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c
@@ -908,7 +908,7 @@ static u8 brcmf_fws_hdrpush(struct brcmf
wlh += wlh[1] + 2;
if (entry->send_tim_signal) {
- entry->send_tim_signal = 0;
+ entry->send_tim_signal = false;
wlh[0] = BRCMF_FWS_TYPE_PENDING_TRAFFIC_BMP;
wlh[1] = BRCMF_FWS_TYPE_PENDING_TRAFFIC_BMP_LEN;
wlh[2] = entry->mac_handle;

View File

@ -1,57 +0,0 @@
From 8c8e60fb86a90a30721bbd797f58f96b3980dcc1 Mon Sep 17 00:00:00 2001
From: Jean-Philippe Brucker <jean-philippe@linaro.org>
Date: Thu, 26 Dec 2019 10:20:33 +0100
Subject: [PATCH] brcmfmac: sdio: Fix OOB interrupt initialization on brcm43362
Commit 262f2b53f679 ("brcmfmac: call brcmf_attach() just before calling
brcmf_bus_started()") changed the initialization order of the brcmfmac
SDIO driver. Unfortunately since brcmf_sdiod_intr_register() is now
called before the sdiodev->bus_if initialization, it reads the wrong
chip ID and fails to initialize the GPIO on brcm43362. Thus the chip
cannot send interrupts and fails to probe:
[ 12.517023] brcmfmac: brcmf_sdio_bus_rxctl: resumed on timeout
[ 12.531214] ieee80211 phy0: brcmf_bus_started: failed: -110
[ 12.536976] ieee80211 phy0: brcmf_attach: dongle is not responding: err=-110
[ 12.566467] brcmfmac: brcmf_sdio_firmware_callback: brcmf_attach failed
Initialize the bus interface earlier to ensure that
brcmf_sdiod_intr_register() properly sets up the OOB interrupt.
BugLink: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=908438
Fixes: 262f2b53f679 ("brcmfmac: call brcmf_attach() just before calling brcmf_bus_started()")
Signed-off-by: Jean-Philippe Brucker <jean-philippe@linaro.org>
Reviewed-by: Arend van Spriel <arend.vanspriel@broadcom.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
---
.../net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
@@ -4247,6 +4247,12 @@ static void brcmf_sdio_firmware_callback
}
if (err == 0) {
+ /* Assign bus interface call back */
+ sdiod->bus_if->dev = sdiod->dev;
+ sdiod->bus_if->ops = &brcmf_sdio_bus_ops;
+ sdiod->bus_if->chip = bus->ci->chip;
+ sdiod->bus_if->chiprev = bus->ci->chiprev;
+
/* Allow full data communication using DPC from now on. */
brcmf_sdiod_change_state(bus->sdiodev, BRCMF_SDIOD_DATA);
@@ -4263,12 +4269,6 @@ static void brcmf_sdio_firmware_callback
sdio_release_host(sdiod->func1);
- /* Assign bus interface call back */
- sdiod->bus_if->dev = sdiod->dev;
- sdiod->bus_if->ops = &brcmf_sdio_bus_ops;
- sdiod->bus_if->chip = bus->ci->chip;
- sdiod->bus_if->chiprev = bus->ci->chiprev;
-
err = brcmf_alloc(sdiod->dev, sdiod->settings);
if (err) {
brcmf_err("brcmf_alloc failed\n");

View File

@ -1,103 +0,0 @@
From 24332f8068ff6df7f16aefee45d514de1de4de80 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
Date: Thu, 26 Dec 2019 14:30:49 +0100
Subject: [PATCH] brcmfmac: simplify building interface combinations
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Move similar/duplicated code out of combination specific code blocks.
This simplifies code a bit and allows adding more combinations later.
A list of combinations remains unchanged.
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
---
.../broadcom/brcm80211/brcmfmac/cfg80211.c | 43 ++++++-------------
1 file changed, 14 insertions(+), 29 deletions(-)
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
@@ -6471,12 +6471,13 @@ static int brcmf_setup_ifmodes(struct wi
struct ieee80211_iface_limit *c0_limits = NULL;
struct ieee80211_iface_limit *p2p_limits = NULL;
struct ieee80211_iface_limit *mbss_limits = NULL;
- bool mbss, p2p, rsdb;
+ bool mbss, p2p, rsdb, mchan;
int i, c, n_combos;
mbss = brcmf_feat_is_enabled(ifp, BRCMF_FEAT_MBSS);
p2p = brcmf_feat_is_enabled(ifp, BRCMF_FEAT_P2P);
rsdb = brcmf_feat_is_enabled(ifp, BRCMF_FEAT_RSDB);
+ mchan = brcmf_feat_is_enabled(ifp, BRCMF_FEAT_MCHAN);
n_combos = 1 + !!(p2p && !rsdb) + !!mbss;
combo = kcalloc(n_combos, sizeof(*combo), GFP_KERNEL);
@@ -6486,6 +6487,10 @@ static int brcmf_setup_ifmodes(struct wi
wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION) |
BIT(NL80211_IFTYPE_ADHOC) |
BIT(NL80211_IFTYPE_AP);
+ if (p2p)
+ wiphy->interface_modes |= BIT(NL80211_IFTYPE_P2P_CLIENT) |
+ BIT(NL80211_IFTYPE_P2P_GO) |
+ BIT(NL80211_IFTYPE_P2P_DEVICE);
c = 0;
i = 0;
@@ -6497,48 +6502,28 @@ static int brcmf_setup_ifmodes(struct wi
c0_limits = kcalloc(2, sizeof(*c0_limits), GFP_KERNEL);
if (!c0_limits)
goto err;
- if (p2p && rsdb) {
- combo[c].num_different_channels = 2;
- wiphy->interface_modes |= BIT(NL80211_IFTYPE_P2P_CLIENT) |
- BIT(NL80211_IFTYPE_P2P_GO) |
- BIT(NL80211_IFTYPE_P2P_DEVICE);
- c0_limits[i].max = 2;
- c0_limits[i++].types = BIT(NL80211_IFTYPE_STATION);
+
+ combo[c].num_different_channels = 1 + (rsdb || (p2p && mchan));
+ c0_limits[i].max = 1 + rsdb;
+ c0_limits[i++].types = BIT(NL80211_IFTYPE_STATION);
+ if (p2p) {
c0_limits[i].max = 1;
c0_limits[i++].types = BIT(NL80211_IFTYPE_P2P_DEVICE);
- c0_limits[i].max = 2;
+ c0_limits[i].max = 1 + rsdb;
c0_limits[i++].types = BIT(NL80211_IFTYPE_P2P_CLIENT) |
BIT(NL80211_IFTYPE_P2P_GO);
+ }
+ if (p2p && rsdb) {
c0_limits[i].max = 2;
c0_limits[i++].types = BIT(NL80211_IFTYPE_AP);
combo[c].max_interfaces = 5;
} else if (p2p) {
- if (brcmf_feat_is_enabled(ifp, BRCMF_FEAT_MCHAN))
- combo[c].num_different_channels = 2;
- else
- combo[c].num_different_channels = 1;
- c0_limits[i].max = 1;
- c0_limits[i++].types = BIT(NL80211_IFTYPE_STATION);
- wiphy->interface_modes |= BIT(NL80211_IFTYPE_P2P_CLIENT) |
- BIT(NL80211_IFTYPE_P2P_GO) |
- BIT(NL80211_IFTYPE_P2P_DEVICE);
- c0_limits[i].max = 1;
- c0_limits[i++].types = BIT(NL80211_IFTYPE_P2P_DEVICE);
- c0_limits[i].max = 1;
- c0_limits[i++].types = BIT(NL80211_IFTYPE_P2P_CLIENT) |
- BIT(NL80211_IFTYPE_P2P_GO);
combo[c].max_interfaces = i;
} else if (rsdb) {
- combo[c].num_different_channels = 2;
- c0_limits[i].max = 2;
- c0_limits[i++].types = BIT(NL80211_IFTYPE_STATION);
c0_limits[i].max = 2;
c0_limits[i++].types = BIT(NL80211_IFTYPE_AP);
combo[c].max_interfaces = 3;
} else {
- combo[c].num_different_channels = 1;
- c0_limits[i].max = 1;
- c0_limits[i++].types = BIT(NL80211_IFTYPE_STATION);
c0_limits[i].max = 1;
c0_limits[i++].types = BIT(NL80211_IFTYPE_AP);
combo[c].max_interfaces = i;

View File

@ -1,345 +0,0 @@
From 20f2c5fa3af060401c72e444999470a4cab641cf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
Date: Thu, 26 Dec 2019 14:30:50 +0100
Subject: [PATCH] brcmfmac: add initial support for monitor mode
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Report monitor interface availability using cfg80211 and support it in
the add_virtual_intf() and del_virtual_intf() callbacks. This new
feature is conditional and depends on firmware flagging monitor packets.
Receiving monitor frames is already handled by the brcmf_netif_mon_rx().
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
---
.../broadcom/brcm80211/brcmfmac/cfg80211.c | 112 ++++++++++++++++--
.../broadcom/brcm80211/brcmfmac/core.c | 68 ++++++++++-
.../broadcom/brcm80211/brcmfmac/core.h | 2 +
.../broadcom/brcm80211/brcmfmac/feature.c | 1 +
.../broadcom/brcm80211/brcmfmac/feature.h | 2 +
.../broadcom/brcm80211/brcmfmac/fwil.h | 2 +
6 files changed, 174 insertions(+), 13 deletions(-)
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
@@ -11,6 +11,7 @@
#include <linux/vmalloc.h>
#include <net/cfg80211.h>
#include <net/netlink.h>
+#include <uapi/linux/if_arp.h>
#include <brcmu_utils.h>
#include <defs.h>
@@ -619,6 +620,82 @@ static bool brcmf_is_ibssmode(struct brc
return vif->wdev.iftype == NL80211_IFTYPE_ADHOC;
}
+/**
+ * brcmf_mon_add_vif() - create monitor mode virtual interface
+ *
+ * @wiphy: wiphy device of new interface.
+ * @name: name of the new interface.
+ */
+static struct wireless_dev *brcmf_mon_add_vif(struct wiphy *wiphy,
+ const char *name)
+{
+ struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy);
+ struct brcmf_cfg80211_vif *vif;
+ struct net_device *ndev;
+ struct brcmf_if *ifp;
+ int err;
+
+ if (cfg->pub->mon_if) {
+ err = -EEXIST;
+ goto err_out;
+ }
+
+ vif = brcmf_alloc_vif(cfg, NL80211_IFTYPE_MONITOR);
+ if (IS_ERR(vif)) {
+ err = PTR_ERR(vif);
+ goto err_out;
+ }
+
+ ndev = alloc_netdev(sizeof(*ifp), name, NET_NAME_UNKNOWN, ether_setup);
+ if (!ndev) {
+ err = -ENOMEM;
+ goto err_free_vif;
+ }
+ ndev->type = ARPHRD_IEEE80211_RADIOTAP;
+ ndev->ieee80211_ptr = &vif->wdev;
+ ndev->needs_free_netdev = true;
+ ndev->priv_destructor = brcmf_cfg80211_free_netdev;
+ SET_NETDEV_DEV(ndev, wiphy_dev(cfg->wiphy));
+
+ ifp = netdev_priv(ndev);
+ ifp->vif = vif;
+ ifp->ndev = ndev;
+ ifp->drvr = cfg->pub;
+
+ vif->ifp = ifp;
+ vif->wdev.netdev = ndev;
+
+ err = brcmf_net_mon_attach(ifp);
+ if (err) {
+ brcmf_err("Failed to attach %s device\n", ndev->name);
+ free_netdev(ndev);
+ goto err_free_vif;
+ }
+
+ cfg->pub->mon_if = ifp;
+
+ return &vif->wdev;
+
+err_free_vif:
+ brcmf_free_vif(vif);
+err_out:
+ return ERR_PTR(err);
+}
+
+static int brcmf_mon_del_vif(struct wiphy *wiphy, struct wireless_dev *wdev)
+{
+ struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy);
+ struct net_device *ndev = wdev->netdev;
+
+ ndev->netdev_ops->ndo_stop(ndev);
+
+ brcmf_net_detach(ndev, true);
+
+ cfg->pub->mon_if = NULL;
+
+ return 0;
+}
+
static struct wireless_dev *brcmf_cfg80211_add_iface(struct wiphy *wiphy,
const char *name,
unsigned char name_assign_type,
@@ -641,9 +718,10 @@ static struct wireless_dev *brcmf_cfg802
case NL80211_IFTYPE_STATION:
case NL80211_IFTYPE_AP_VLAN:
case NL80211_IFTYPE_WDS:
- case NL80211_IFTYPE_MONITOR:
case NL80211_IFTYPE_MESH_POINT:
return ERR_PTR(-EOPNOTSUPP);
+ case NL80211_IFTYPE_MONITOR:
+ return brcmf_mon_add_vif(wiphy, name);
case NL80211_IFTYPE_AP:
wdev = brcmf_ap_add_vif(wiphy, name, params);
break;
@@ -826,9 +904,10 @@ int brcmf_cfg80211_del_iface(struct wiph
case NL80211_IFTYPE_STATION:
case NL80211_IFTYPE_AP_VLAN:
case NL80211_IFTYPE_WDS:
- case NL80211_IFTYPE_MONITOR:
case NL80211_IFTYPE_MESH_POINT:
return -EOPNOTSUPP;
+ case NL80211_IFTYPE_MONITOR:
+ return brcmf_mon_del_vif(wiphy, wdev);
case NL80211_IFTYPE_AP:
return brcmf_cfg80211_del_ap_iface(wiphy, wdev);
case NL80211_IFTYPE_P2P_CLIENT:
@@ -6471,9 +6550,10 @@ static int brcmf_setup_ifmodes(struct wi
struct ieee80211_iface_limit *c0_limits = NULL;
struct ieee80211_iface_limit *p2p_limits = NULL;
struct ieee80211_iface_limit *mbss_limits = NULL;
- bool mbss, p2p, rsdb, mchan;
- int i, c, n_combos;
+ bool mon_flag, mbss, p2p, rsdb, mchan;
+ int i, c, n_combos, n_limits;
+ mon_flag = brcmf_feat_is_enabled(ifp, BRCMF_FEAT_MONITOR_FLAG);
mbss = brcmf_feat_is_enabled(ifp, BRCMF_FEAT_MBSS);
p2p = brcmf_feat_is_enabled(ifp, BRCMF_FEAT_P2P);
rsdb = brcmf_feat_is_enabled(ifp, BRCMF_FEAT_RSDB);
@@ -6487,6 +6567,8 @@ static int brcmf_setup_ifmodes(struct wi
wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION) |
BIT(NL80211_IFTYPE_ADHOC) |
BIT(NL80211_IFTYPE_AP);
+ if (mon_flag)
+ wiphy->interface_modes |= BIT(NL80211_IFTYPE_MONITOR);
if (p2p)
wiphy->interface_modes |= BIT(NL80211_IFTYPE_P2P_CLIENT) |
BIT(NL80211_IFTYPE_P2P_GO) |
@@ -6494,18 +6576,18 @@ static int brcmf_setup_ifmodes(struct wi
c = 0;
i = 0;
- if (p2p && rsdb)
- c0_limits = kcalloc(4, sizeof(*c0_limits), GFP_KERNEL);
- else if (p2p)
- c0_limits = kcalloc(3, sizeof(*c0_limits), GFP_KERNEL);
- else
- c0_limits = kcalloc(2, sizeof(*c0_limits), GFP_KERNEL);
+ n_limits = 1 + mon_flag + (p2p ? 2 : 0) + (rsdb || !p2p);
+ c0_limits = kcalloc(n_limits, sizeof(*c0_limits), GFP_KERNEL);
if (!c0_limits)
goto err;
combo[c].num_different_channels = 1 + (rsdb || (p2p && mchan));
c0_limits[i].max = 1 + rsdb;
c0_limits[i++].types = BIT(NL80211_IFTYPE_STATION);
+ if (mon_flag) {
+ c0_limits[i].max = 1;
+ c0_limits[i++].types = BIT(NL80211_IFTYPE_MONITOR);
+ }
if (p2p) {
c0_limits[i].max = 1;
c0_limits[i++].types = BIT(NL80211_IFTYPE_P2P_DEVICE);
@@ -6554,14 +6636,20 @@ static int brcmf_setup_ifmodes(struct wi
if (mbss) {
c++;
i = 0;
- mbss_limits = kcalloc(1, sizeof(*mbss_limits), GFP_KERNEL);
+ n_limits = 1 + mon_flag;
+ mbss_limits = kcalloc(n_limits, sizeof(*mbss_limits),
+ GFP_KERNEL);
if (!mbss_limits)
goto err;
mbss_limits[i].max = 4;
mbss_limits[i++].types = BIT(NL80211_IFTYPE_AP);
+ if (mon_flag) {
+ mbss_limits[i].max = 1;
+ mbss_limits[i++].types = BIT(NL80211_IFTYPE_MONITOR);
+ }
combo[c].beacon_int_infra_match = true;
combo[c].num_different_channels = 1;
- combo[c].max_interfaces = 4;
+ combo[c].max_interfaces = 4 + mon_flag;
combo[c].n_limits = i;
combo[c].limits = mbss_limits;
}
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
@@ -690,7 +690,7 @@ fail:
return -EBADE;
}
-static void brcmf_net_detach(struct net_device *ndev, bool rtnl_locked)
+void brcmf_net_detach(struct net_device *ndev, bool rtnl_locked)
{
if (ndev->reg_state == NETREG_REGISTERED) {
if (rtnl_locked)
@@ -703,6 +703,72 @@ static void brcmf_net_detach(struct net_
}
}
+static int brcmf_net_mon_open(struct net_device *ndev)
+{
+ struct brcmf_if *ifp = netdev_priv(ndev);
+ struct brcmf_pub *drvr = ifp->drvr;
+ u32 monitor;
+ int err;
+
+ brcmf_dbg(TRACE, "Enter\n");
+
+ err = brcmf_fil_cmd_int_get(ifp, BRCMF_C_GET_MONITOR, &monitor);
+ if (err) {
+ bphy_err(drvr, "BRCMF_C_GET_MONITOR error (%d)\n", err);
+ return err;
+ } else if (monitor) {
+ bphy_err(drvr, "Monitor mode is already enabled\n");
+ return -EEXIST;
+ }
+
+ monitor = 3;
+ err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_SET_MONITOR, monitor);
+ if (err)
+ bphy_err(drvr, "BRCMF_C_SET_MONITOR error (%d)\n", err);
+
+ return err;
+}
+
+static int brcmf_net_mon_stop(struct net_device *ndev)
+{
+ struct brcmf_if *ifp = netdev_priv(ndev);
+ struct brcmf_pub *drvr = ifp->drvr;
+ u32 monitor;
+ int err;
+
+ brcmf_dbg(TRACE, "Enter\n");
+
+ monitor = 0;
+ err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_SET_MONITOR, monitor);
+ if (err)
+ bphy_err(drvr, "BRCMF_C_SET_MONITOR error (%d)\n", err);
+
+ return err;
+}
+
+static const struct net_device_ops brcmf_netdev_ops_mon = {
+ .ndo_open = brcmf_net_mon_open,
+ .ndo_stop = brcmf_net_mon_stop,
+};
+
+int brcmf_net_mon_attach(struct brcmf_if *ifp)
+{
+ struct brcmf_pub *drvr = ifp->drvr;
+ struct net_device *ndev;
+ int err;
+
+ brcmf_dbg(TRACE, "Enter\n");
+
+ ndev = ifp->ndev;
+ ndev->netdev_ops = &brcmf_netdev_ops_mon;
+
+ err = register_netdevice(ndev);
+ if (err)
+ bphy_err(drvr, "Failed to register %s device\n", ndev->name);
+
+ return err;
+}
+
void brcmf_net_setcarrier(struct brcmf_if *ifp, bool on)
{
struct net_device *ndev;
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.h
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.h
@@ -210,6 +210,8 @@ void brcmf_txflowblock_if(struct brcmf_i
void brcmf_txfinalize(struct brcmf_if *ifp, struct sk_buff *txp, bool success);
void brcmf_netif_rx(struct brcmf_if *ifp, struct sk_buff *skb);
void brcmf_netif_mon_rx(struct brcmf_if *ifp, struct sk_buff *skb);
+void brcmf_net_detach(struct net_device *ndev, bool rtnl_locked);
+int brcmf_net_mon_attach(struct brcmf_if *ifp);
void brcmf_net_setcarrier(struct brcmf_if *ifp, bool on);
int __init brcmf_core_init(void);
void __exit brcmf_core_exit(void);
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c
@@ -38,6 +38,7 @@ static const struct brcmf_feat_fwcap brc
{ BRCMF_FEAT_MCHAN, "mchan" },
{ BRCMF_FEAT_P2P, "p2p" },
{ BRCMF_FEAT_MONITOR, "monitor" },
+ { BRCMF_FEAT_MONITOR_FLAG, "rtap" },
{ BRCMF_FEAT_MONITOR_FMT_RADIOTAP, "rtap" },
{ BRCMF_FEAT_DOT11H, "802.11h" }
};
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.h
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.h
@@ -23,6 +23,7 @@
* GSCAN: enhanced scan offload feature.
* FWSUP: Firmware supplicant.
* MONITOR: firmware can pass monitor packets to host.
+ * MONITOR_FLAG: firmware flags monitor packets.
* MONITOR_FMT_RADIOTAP: firmware provides monitor packets with radiotap header
* MONITOR_FMT_HW_RX_HDR: firmware provides monitor packets with hw/ucode header
* DOT11H: firmware supports 802.11h
@@ -43,6 +44,7 @@
BRCMF_FEAT_DEF(GSCAN) \
BRCMF_FEAT_DEF(FWSUP) \
BRCMF_FEAT_DEF(MONITOR) \
+ BRCMF_FEAT_DEF(MONITOR_FLAG) \
BRCMF_FEAT_DEF(MONITOR_FMT_RADIOTAP) \
BRCMF_FEAT_DEF(MONITOR_FMT_HW_RX_HDR) \
BRCMF_FEAT_DEF(DOT11H)
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwil.h
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwil.h
@@ -49,6 +49,8 @@
#define BRCMF_C_GET_PM 85
#define BRCMF_C_SET_PM 86
#define BRCMF_C_GET_REVINFO 98
+#define BRCMF_C_GET_MONITOR 107
+#define BRCMF_C_SET_MONITOR 108
#define BRCMF_C_GET_CURR_RATESET 114
#define BRCMF_C_GET_AP 117
#define BRCMF_C_SET_AP 118

View File

@ -1,24 +0,0 @@
From 627b0d094240c38393b2f2d40626c33a8fff6103 Mon Sep 17 00:00:00 2001
From: yuehaibing <yuehaibing@huawei.com>
Date: Wed, 8 Jan 2020 21:57:48 +0800
Subject: [PATCH] brcmfmac: Remove always false 'idx < 0' statement
idx is declared as u32, it will never less than 0.
Signed-off-by: yuehaibing <yuehaibing@huawei.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
---
drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c
@@ -365,7 +365,7 @@ brcmf_msgbuf_get_pktid(struct device *de
struct brcmf_msgbuf_pktid *pktid;
struct sk_buff *skb;
- if (idx < 0 || idx >= pktids->array_size) {
+ if (idx >= pktids->array_size) {
brcmf_err("Invalid packet id %d (max %d)\n", idx,
pktids->array_size);
return NULL;

View File

@ -13,7 +13,7 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
@@ -1545,6 +1545,7 @@ int __init brcmf_core_init(void)
@@ -1477,6 +1477,7 @@ int __init brcmf_core_init(void)
{
if (!schedule_work(&brcmf_driver_work))
return -EBUSY;

View File

@ -10,7 +10,7 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
@@ -705,8 +705,36 @@ static struct wireless_dev *brcmf_cfg802
@@ -628,8 +628,36 @@ static struct wireless_dev *brcmf_cfg802
struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy);
struct brcmf_pub *drvr = cfg->pub;
struct wireless_dev *wdev;

View File

@ -14,7 +14,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
@@ -2866,6 +2866,10 @@ brcmf_cfg80211_set_power_mgmt(struct wip
@@ -2787,6 +2787,10 @@ brcmf_cfg80211_set_power_mgmt(struct wip
* preference in cfg struct to apply this to
* FW later while initializing the dongle
*/

View File

@ -1,24 +0,0 @@
From: Hauke Mehrtens <hauke@hauke-m.de>
Date: Fri, 27 Sep 2019 23:12:08 +0200
Subject: [PATCH] backports: pci: Include linux/pci-aspm.h
In upstream commit 7ce2e76a0420 linux/pci-aspm.h was removed and the
content included into pci.h. Add an include to have the functions
defined in linux/pci-aspm.h available when linux/pci.h is included.
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
---
--- a/backport-include/linux/pci.h
+++ b/backport-include/linux/pci.h
@@ -3,6 +3,10 @@
#include_next <linux/pci.h>
#include <linux/version.h>
+#if LINUX_VERSION_IS_LESS(5,4,0)
+#include <linux/pci-aspm.h>
+#endif
+
#ifndef module_pci_driver
/**
* module_pci_driver() - Helper macro for registering a PCI driver

View File

@ -1,43 +0,0 @@
From: Felix Fietkau <nbd@nbd.name>
Date: Mon, 28 Oct 2019 15:20:40 +0100
Subject: [PATCH] backport: add pci_disable_link_state wrapper with return code
The signature of pci_disable_link_state was changed to indicate if the state
was successfully disabled. Since the old version did not have this, add a
wrapper which checks the pcie register to determine the return code
Signed-off-by: Felix Fietkau <nbd@nbd.name>
---
--- a/backport-include/linux/pci.h
+++ b/backport-include/linux/pci.h
@@ -236,4 +236,29 @@ static inline struct pci_dev *pcie_find_
(PCI_IRQ_LEGACY | PCI_IRQ_MSI | PCI_IRQ_MSIX)
#endif
+#if defined(CONFIG_PCI) && LINUX_VERSION_IS_LESS(5,3,0)
+
+static inline int
+LINUX_BACKPORT(pci_disable_link_state)(struct pci_dev *pdev, int state)
+{
+ u16 aspmc;
+
+ pci_disable_link_state(pdev, state);
+
+ pcie_capability_read_word(pdev, PCI_EXP_LNKCTL, &aspmc);
+ if ((state & PCIE_LINK_STATE_L0S) &&
+ (aspmc & PCI_EXP_LNKCTL_ASPM_L0S))
+ return -EPERM;
+
+ if ((state & PCIE_LINK_STATE_L1) &&
+ (aspmc & PCI_EXP_LNKCTL_ASPM_L1))
+ return -EPERM;
+
+ return 0;
+}
+
+#define pci_disable_link_state LINUX_BACKPORT(pci_disable_link_state)
+
+#endif
+
#endif /* _BACKPORT_LINUX_PCI_H */

View File

@ -1,44 +0,0 @@
From: David Bauer <mail@david-bauer.net>
Date: Mon, 16 Dec 2019 20:47:06 +0100
Subject: [PATCH] rt2x00: add throughput LED trigger
This adds a (currently missing) throughput LED trigger for the rt2x00
driver. Previously, LED triggers had to be assigned to the netdev, which
was limited to a single VAP.
Signed-off-by: David Bauer <mail@david-bauer.net>
Tested-by: Christoph Krapp <achterin@googlemail.com>
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
@@ -1140,6 +1140,19 @@ static void rt2x00lib_remove_hw(struct r
kfree(rt2x00dev->spec.channels_info);
}
+static const struct ieee80211_tpt_blink rt2x00_tpt_blink[] = {
+ { .throughput = 0 * 1024, .blink_time = 334 },
+ { .throughput = 1 * 1024, .blink_time = 260 },
+ { .throughput = 2 * 1024, .blink_time = 220 },
+ { .throughput = 5 * 1024, .blink_time = 190 },
+ { .throughput = 10 * 1024, .blink_time = 170 },
+ { .throughput = 25 * 1024, .blink_time = 150 },
+ { .throughput = 54 * 1024, .blink_time = 130 },
+ { .throughput = 120 * 1024, .blink_time = 110 },
+ { .throughput = 265 * 1024, .blink_time = 80 },
+ { .throughput = 586 * 1024, .blink_time = 50 },
+};
+
static int rt2x00lib_probe_hw(struct rt2x00_dev *rt2x00dev)
{
struct hw_mode_spec *spec = &rt2x00dev->spec;
@@ -1222,6 +1235,10 @@ static int rt2x00lib_probe_hw(struct rt2
#undef RT2X00_TASKLET_INIT
+ ieee80211_create_tpt_led_trigger(rt2x00dev->hw,
+ IEEE80211_TPT_LEDTRIG_FL_RADIO, rt2x00_tpt_blink,
+ ARRAY_SIZE(rt2x00_tpt_blink));
+
/*
* Register HW.
*/

View File

@ -1,77 +0,0 @@
From: Felix Fietkau <nbd@nbd.name>
Date: Wed, 28 Aug 2019 12:13:55 +0200
Subject: [PATCH] cfg80211: add local BSS receive time to survey information
This is useful for checking how much airtime is being used up by other
transmissions on the channel, e.g. by calculating (time_rx - time_bss_rx)
or (time_busy - time_bss_rx - time_tx)
Signed-off-by: Felix Fietkau <nbd@nbd.name>
---
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -668,6 +668,7 @@ ieee80211_chandef_max_power(struct cfg80
* @SURVEY_INFO_TIME_RX: receive time was filled in
* @SURVEY_INFO_TIME_TX: transmit time was filled in
* @SURVEY_INFO_TIME_SCAN: scan time was filled in
+ * @SURVEY_INFO_TIME_BSS_RX: local BSS receive time was filled in
*
* Used by the driver to indicate which info in &struct survey_info
* it has filled in during the get_survey().
@@ -681,6 +682,7 @@ enum survey_info_flags {
SURVEY_INFO_TIME_RX = BIT(5),
SURVEY_INFO_TIME_TX = BIT(6),
SURVEY_INFO_TIME_SCAN = BIT(7),
+ SURVEY_INFO_TIME_BSS_RX = BIT(8),
};
/**
@@ -697,6 +699,7 @@ enum survey_info_flags {
* @time_rx: amount of time the radio spent receiving data
* @time_tx: amount of time the radio spent transmitting data
* @time_scan: amount of time the radio spent for scanning
+ * @time_bss_rx: amount of time the radio spent receiving data on a local BSS
*
* Used by dump_survey() to report back per-channel survey information.
*
@@ -711,6 +714,7 @@ struct survey_info {
u64 time_rx;
u64 time_tx;
u64 time_scan;
+ u64 time_bss_rx;
u32 filled;
s8 noise;
};
--- a/include/uapi/linux/nl80211.h
+++ b/include/uapi/linux/nl80211.h
@@ -3693,6 +3693,8 @@ enum nl80211_user_reg_hint_type {
* @NL80211_SURVEY_INFO_TIME_SCAN: time the radio spent for scan
* (on this channel or globally)
* @NL80211_SURVEY_INFO_PAD: attribute used for padding for 64-bit alignment
+ * @NL80211_SURVEY_INFO_TIME_BSS_RX: amount of time the radio spent
+ * receiving local BSS data
* @NL80211_SURVEY_INFO_MAX: highest survey info attribute number
* currently defined
* @__NL80211_SURVEY_INFO_AFTER_LAST: internal use
@@ -3709,6 +3711,7 @@ enum nl80211_survey_info {
NL80211_SURVEY_INFO_TIME_TX,
NL80211_SURVEY_INFO_TIME_SCAN,
NL80211_SURVEY_INFO_PAD,
+ NL80211_SURVEY_INFO_TIME_BSS_RX,
/* keep last */
__NL80211_SURVEY_INFO_AFTER_LAST,
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -8367,6 +8367,10 @@ static int nl80211_send_survey(struct sk
nla_put_u64_64bit(msg, NL80211_SURVEY_INFO_TIME_SCAN,
survey->time_scan, NL80211_SURVEY_INFO_PAD))
goto nla_put_failure;
+ if ((survey->filled & SURVEY_INFO_TIME_BSS_RX) &&
+ nla_put_u64_64bit(msg, NL80211_SURVEY_INFO_TIME_BSS_RX,
+ survey->time_bss_rx, NL80211_SURVEY_INFO_PAD))
+ goto nla_put_failure;
nla_nest_end(msg, infoattr);

View File

@ -1,6 +1,6 @@
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -2972,6 +2972,7 @@ struct cfg80211_external_auth_params {
@@ -2968,6 +2968,7 @@ struct cfg80211_external_auth_params {
* (as advertised by the nl80211 feature flag.)
* @get_tx_power: store the current TX power into the dbm variable;
* return 0 if successful
@ -8,7 +8,7 @@
*
* @set_wds_peer: set the WDS peer for a WDS interface
*
@@ -3272,6 +3273,7 @@ struct cfg80211_ops {
@@ -3268,6 +3269,7 @@ struct cfg80211_ops {
enum nl80211_tx_power_setting type, int mbm);
int (*get_tx_power)(struct wiphy *wiphy, struct wireless_dev *wdev,
int *dbm);

View File

@ -8,9 +8,9 @@ PKG_LICENSE_FILES:=
PKG_SOURCE_URL:=https://github.com/openwrt/mt76
PKG_SOURCE_PROTO:=git
PKG_SOURCE_DATE:=2020-01-04
PKG_SOURCE_VERSION:=8a78567983a16869b77a0254b4917027df4a7ad9
PKG_MIRROR_HASH:=0cc48bc7093b99dc7f43a5a83a3a00d205709326f529b91b0b14fe0d89cb783d
PKG_SOURCE_DATE:=2019-08-22
PKG_SOURCE_VERSION:=2a0edbb4473b71dfaa4756f7189abf6cb7f7be8b
PKG_MIRROR_HASH:=a37975c179b929716c40d19fdcd5b131386d7f497eb8cd5d848be74e76d50d21
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
PKG_BUILD_PARALLEL:=1
@ -246,12 +246,12 @@ define KernelPackage/mt7603/install
endef
define KernelPackage/mt7615e/install
$(INSTALL_DIR) $(1)/lib/firmware/mediatek
$(INSTALL_DIR) $(1)/lib/firmware
cp \
$(PKG_BUILD_DIR)/firmware/mt7615_cr4.bin \
$(PKG_BUILD_DIR)/firmware/mt7615_n9.bin \
$(PKG_BUILD_DIR)/firmware/mt7615_rom_patch.bin \
$(1)/lib/firmware/mediatek
$(1)/lib/firmware
endef
$(eval $(call KernelPackage,mt76-core))

View File

@ -2,11 +2,11 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=UnblockNeteaseMusic-Go
PKG_VERSION:=0.1.9
PKG_RELEASE:=7
PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/cnsilvan/UnblockNeteaseMusic.git
PKG_SOURCE_VERSION:=8dd3f9779fcdaa271414a85b80f43f11300e08d3
PKG_SOURCE_VERSION:=d0ca5dcef952ba77ba1abaf3d0f659e600c8c1f1
PKG_MAINTAINER:=Silvan <cnsilvan@gmail.com>
PKG_SOURCE_SUBDIR:=$(PKG_NAME)

View File

@ -9,13 +9,13 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=UnblockNeteaseMusic
PKG_VERSION:=0.24.1
PKG_RELEASE:=2
PKG_RELEASE:=3
PKG_LICENSE:=MIT
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/nondanee/UnblockNeteaseMusic.git
PKG_SOURCE_VERSION:=0bc075540bca3c41bb6243cecdb5fc8a7c13a986
PKG_SOURCE_VERSION:=91e631db87920c67f92161a724a2d96472ad33cd
PKG_SOURCE_SUBDIR:=$(PKG_NAME)
PKG_SOURCE:=$(PKG_SOURCE_SUBDIR)-$(PKG_VERSION).tar.gz

View File

@ -8,7 +8,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=adbyby
PKG_VERSION:=2.7
PKG_RELEASE:=20200308
PKG_RELEASE:=20200310
include $(INCLUDE_DIR)/package.mk
@ -61,8 +61,6 @@ endef
define Package/$(PKG_NAME)/install
$(INSTALL_DIR) $(1)/usr/share/adbyby
$(INSTALL_BIN) ./files/adbyby.sh $(1)/usr/share/adbyby/
$(INSTALL_BIN) ./files/adbybyfirst.sh $(1)/usr/share/adbyby/
$(INSTALL_BIN) ./files/adbybyupdate.sh $(1)/usr/share/adbyby/
$(INSTALL_CONF) ./files/adhook.ini $(1)/usr/share/adbyby/
$(INSTALL_CONF) ./files/user.action $(1)/usr/share/adbyby/

View File

@ -1,11 +0,0 @@
#!/bin/sh
PROG_PATH=/usr/share/adbyby
if [ -z "$(dnsmasq --version | grep no-ipset)" ]; then
[ $(uci get adbyby.@adbyby[-1].wan_mode) -ne 2 ] && \
[ $(awk -F= '/^ipset/{print $2}' $PROG_PATH/adhook.ini) -eq 1 ] && \
{
sed -i 's/adbyby_list/adbyby_wan/' /tmp/adbyby_host.conf
echo conf-file=/tmp/adbyby_host.conf >> /etc/dnsmasq.conf
/etc/init.d/dnsmasq restart
}
fi

View File

@ -1,11 +0,0 @@
#!/bin/sh
PROG_PATH=/usr/share/adbyby
if [ -z "$(dnsmasq --version | grep no-ipset)" ]; then
[ $(uci get adbyby.@adbyby[-1].wan_mode) -ne 2 ] && \
[ $(awk -F= '/^ipset/{print $2}' $PROG_PATH/adhook.ini) -eq 1 ] && \
{
sed -i 's/adbyby_list/adbyby_wan/' /tmp/adbyby_host.conf
ipset -F adbyby_wan 2>/dev/null
/etc/init.d/dnsmasq restart
}
fi

View File

@ -1,3 +1,4 @@
<<<<<<< HEAD
#
# Copyright (C) 2019 Xingwang Liao
#
@ -66,3 +67,73 @@ $(foreach component,$(FRP_COMPONENTS), \
$(eval $(call GoBinPackage,$(component))) \
$(eval $(call BuildPackage,$(component))) \
)
=======
#
# Copyright (C) 2019 Xingwang Liao
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
PKG_NAME:=frp
PKG_VERSION:=0.31.2
PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/fatedier/frp/tar.gz/v$(PKG_VERSION)?
PKG_HASH:=790a18f5651cc645a3d73fc147c719f5b212fc21db0c51c620011ee836b7a28f
PKG_LICENSE:=Apache-2.0
PKG_LICENSE_FILES:=LICENSE
PKG_MAINTAINER:=Xingwang Liao <kuoruan@gmail.com>
PKG_BUILD_DEPENDS:=golang/host
PKG_BUILD_PARALLEL:=1
PKG_USE_MIPS16:=0
GO_PKG:=github.com/fatedier/frp
GO_PKG_BUILD_PKG:=github.com/fatedier/frp/cmd/...
GO_PKG_LDFLAGS:=-s -w
include $(INCLUDE_DIR)/package.mk
include $(TOPDIR)/feeds/packages/lang/golang/golang-package.mk
define frp/templates
define Package/$(1)
TITLE:=A fast reverse proxy ($(1))
URL:=https://github.com/fatedier/frp
SECTION:=net
CATEGORY:=Network
SUBMENU:=Web Servers/Proxies
DEPENDS:=$$(GO_ARCH_DEPENDS)
endef
define Package/$(1)/description
frp is a fast reverse proxy to help you expose a local server behind a NAT or firewall
to the internet. As of now, it supports tcp & udp, as well as http and https protocols,
where requests can be forwarded to internal services by domain name.
This package contains the $(1).
endef
define Package/$(1)/install
$$(call GoPackage/Package/Install/Bin,$$(PKG_INSTALL_DIR))
$$(INSTALL_DIR) $$(1)/usr/bin
$$(INSTALL_BIN) $$(PKG_INSTALL_DIR)/usr/bin/$(1) $$(1)/usr/bin/
$(STAGING_DIR_HOST)/bin/upx --lzma --best $$(1)/usr/bin/$(1)
endef
endef
FRP_COMPONENTS:=frpc frps
$(foreach component,$(FRP_COMPONENTS), \
$(eval $(call frp/templates,$(component))) \
$(eval $(call GoBinPackage,$(component))) \
$(eval $(call BuildPackage,$(component))) \
)
>>>>>>> 252c766ae3fcf52e1610d534056f17d556ec3c99

View File

@ -10,7 +10,7 @@ LUCI_DEPENDS:=+adbyby +wget +ipset +dnsmasq-full
LUCI_PKGARCH:=all
PKG_NAME:=luci-app-adbyby-plus
PKG_VERSION:=2.0
PKG_RELEASE:=46
PKG_RELEASE:=58
include $(TOPDIR)/feeds/luci/luci.mk

View File

@ -6,8 +6,18 @@ function index()
return
end
entry({"admin", "services", "adbyby"}, cbi("adbyby"), _("ADBYBY Plus +"), 10).dependent = true
entry({"admin","services","adbyby","status"},call("act_status")).leaf=true
entry({"admin", "services", "adbyby"}, alias("admin", "services", "adbyby", "base"),_("ADBYBY Plus +"), 9).dependent = true
entry({"admin", "services", "adbyby", "base"}, cbi("adbyby/base"), _("Base Setting"), 10).leaf=true
entry({"admin", "services", "adbyby", "advanced"}, cbi("adbyby/advanced"), _("Advance Setting"), 20).leaf=true
entry({"admin", "services", "adbyby", "help"}, form("adbyby/help"), _("Plus+ Domain List"), 30).leaf=true
entry({"admin", "services", "adbyby", "esc"}, form("adbyby/esc"), _("Bypass Domain List"), 40).leaf=true
entry({"admin", "services", "adbyby", "black"}, form("adbyby/black"), _("Block Domain List"), 50).leaf=true
entry({"admin", "services", "adbyby", "block"}, form("adbyby/block"), _("Block IP List"), 60).leaf=true
entry({"admin", "services", "adbyby", "user"}, form("adbyby/user"), _("User-defined Rule"), 70).leaf=true
entry({"admin", "services", "adbyby", "refresh"}, call("refresh_data"))
entry({"admin","services","adbyby","run"},call("act_status")).leaf=true
end
function act_status()
@ -16,3 +26,46 @@ function act_status()
luci.http.prepare_content("application/json")
luci.http.write_json(e)
end
function refresh_data()
local set =luci.http.formvalue("set")
local icount =0
if set == "gfw_data" then
retstring ="0"
elseif set == "ip_data" then
retstring ="0"
else
refresh_cmd="wget-ssl -q --no-check-certificate -O - 'https://easylist-downloads.adblockplus.org/easylistchina+easylist.txt' > /tmp/adnew.conf"
sret=luci.sys.call(refresh_cmd .. " 2>/dev/null")
if sret== 0 then
luci.sys.call("/usr/share/adbyby/ad-update")
icount = luci.sys.exec("cat /tmp/ad.conf | wc -l")
if tonumber(icount)>0 then
if nixio.fs.access("/usr/share/adbyby/dnsmasq.adblock") then
oldcount=luci.sys.exec("cat /usr/share/adbyby/dnsmasq.adblock | wc -l")
else
oldcount=0
end
if tonumber(icount) ~= tonumber(oldcount) then
luci.sys.exec("cp -f /tmp/ad.conf /usr/share/adbyby/dnsmasq.adblock")
luci.sys.exec("cp -f /tmp/ad.conf /tmp/etc/dnsmasq-adbyby.d/adblock")
luci.sys.exec("/etc/init.d/dnsmasq reload")
retstring=tostring(math.ceil(tonumber(icount)))
else
retstring ="0"
end
else
retstring ="-1"
end
luci.sys.exec("rm -f /tmp/ad.conf")
else
retstring ="-1"
end
end
luci.http.prepare_content("application/json")
luci.http.write_json({ ret=retstring ,retcount=icount})
end

View File

@ -1,167 +0,0 @@
local NXFS = require "nixio.fs"
local SYS = require "luci.sys"
local HTTP = require "luci.http"
local DISP = require "luci.dispatcher"
local DL = SYS.exec("head -1 /tmp/adbyby/data/lazy.txt | awk -F' ' '{print $3,$4}'") or ""
local DV = SYS.exec("head -1 /tmp/adbyby/data/video.txt | awk -F' ' '{print $3,$4}'") or ""
local NR = SYS.exec("grep -v '^!' /usr/share/adbyby/data/rules.txt | wc -l")
local NU = SYS.exec("cat /usr/share/adbyby/data/user.txt | wc -l")
local UD = NXFS.readfile("/tmp/adbyby.updated") or "1970-01-01 00:00:00"
local ND = SYS.exec("cat /usr/share/adbyby/dnsmasq.adblock | wc -l")
m = Map("adbyby")
m.title = translate("Adbyby Plus +")
m.description = translate("Adbyby Plus + can filter all kinds of banners, popups, video ads, and prevent tracking, privacy theft and a variety of malicious websites<br /><font color=\"red\">Plus + version combination mode can operation with Adblock Plus Hostfiltering ads without losing bandwidth</font>")
m:section(SimpleSection).template = "adbyby/adbyby_status"
s = m:section(TypedSection, "adbyby")
s.anonymous = true
s:tab("basic", translate("Base Setting"))
o = s:taboption("basic", Flag, "enable")
o.title = translate("Enable")
o.default = 0
o.rmempty = false
o = s:taboption("basic", ListValue, "wan_mode")
o.title = translate("Running Mode")
o:value("0", translate("Global ModeThe slowest, the best effects"))
o:value("1", translate("Plus + ModeFilter domain name list and blacklist website.Recommended"))
o:value("2", translate("No filter Mode (Must set in Client Filter Mode Settings manually)"))
o.default = 1
o.rmempty = false
o = s:taboption("basic", Button, "restart")
o.title = translate("Adbyby and Rule state")
o.inputtitle = translate("Restart Adbyby")
o.description = string.format("<strong>"..translate("Last Update Checked").."</strong> %s<br /><strong>"..translate("Lazy Rule").."</strong>%s <br /><strong>"..translate("Video Rule").."</strong>%s", UD, DL, DV)
o.inputstyle = "reload"
o.write = function()
SYS.call("rm -rf /tmp/adbyby.updated && /usr/share/adbyby/admem.sh > /tmp/adupdate.log 2>&1 &")
SYS.call("sleep 5")
HTTP.redirect(DISP.build_url("admin", "services", "adbyby"))
end
s:tab("advanced", translate("Advance Setting"))
o = s:taboption("advanced", Flag, "cron_mode")
o.title = translate("Update the rule at 6 a.m. every morning and restart adbyby")
o.default = 0
o.rmempty = false
o.description = translate(string.format("<strong><font color=blue>Adblock Plus Host List</font></strong> %s Lines<br /><br />", ND))
updatead = s:taboption("advanced", Button, "updatead", translate("Manually force update<br />Adblock Plus Host List"), translate("Note: It needs to download and convert the rules. The background process may takes 60-120 seconds to run. <br / > After completed it would automatically refresh, please do not duplicate click!"))
updatead.inputtitle = translate("Manually force update")
updatead.inputstyle = "apply"
updatead.write = function()
SYS.call("nohup sh /usr/share/adbyby/adblock.sh > /tmp/adupdate.log 2>&1 &")
end
o = s:taboption("advanced", Flag, "block_ios")
o.title = translate("Block Apple iOS OTA update")
o.default = 0
o.rmempty = false
s:tab("help", translate("Plus+ Domain List"))
local conf = "/usr/share/adbyby/adhost.conf"
o = s:taboption("help", TextValue, "conf")
o.description = translate("!Note that you should fill to the domain name ONLY. For example, http://www.baidu.com only needs to write to baidu.com. One line for each")
o.rows = 13
o.wrap = "off"
o.cfgvalue = function(self, section)
return NXFS.readfile(conf) or ""
end
o.write = function(self, section, value)
NXFS.writefile(conf, value:gsub("\r\n", "\n"))
--SYS.call("/etc/init.d/adbyby restart")
end
s:tab("esc", translate("Bypass Domain List"))
local escconf = "/usr/share/adbyby/adesc.conf"
o = s:taboption("esc", TextValue, "escconf")
o.description = translate("!Will Never filter these Domain")
o.rows = 13
o.wrap = "off"
o.cfgvalue = function(self, section)
return NXFS.readfile(escconf) or ""
end
o.write = function(self, section, value)
NXFS.writefile(escconf, value:gsub("\r\n", "\n"))
--SYS.call("/etc/init.d/adbyby restart")
end
s:tab("black", translate("Black Domain List"))
local blackconf = "/usr/share/adbyby/adblack.conf"
o = s:taboption("black", TextValue, "blackconf")
o.description = translate("!Will Always block these Domain")
o.rows = 13
o.wrap = "off"
o.cfgvalue = function(self, section)
return NXFS.readfile(blackconf) or ""
end
o.write = function(self, section, value)
NXFS.writefile(blackconf, value:gsub("\r\n", "\n"))
--SYS.call("/etc/init.d/adbyby restart")
end
s:tab("block", translate("Black IP List"))
local blockconf = "/usr/share/adbyby/blockip.conf"
o = s:taboption("block", TextValue, "blockconf")
o.description = translate("!Will Always block these IP")
o.rows = 13
o.wrap = "off"
o.cfgvalue = function(self, section)
return NXFS.readfile(blockconf) or " "
end
o.write = function(self, section, value)
NXFS.writefile(blockconf, value:gsub("\r\n", "\n"))
--SYS.call("/etc/init.d/adbyby restart")
end
s:tab("user", translate("User-defined Rule"))
local file = "/usr/share/adbyby/rules.txt"
o = s:taboption("user", TextValue, "rules")
o.description = translate("Each line of the beginning exclamation mark is considered an annotation.")
o.rows = 13
o.wrap = "off"
o.cfgvalue = function(self, section)
return NXFS.readfile(file) or ""
end
o.write = function(self, section, value)
NXFS.writefile(file, value:gsub("\r\n", "\n"))
end
t=m:section(TypedSection,"acl_rule",translate("<strong>Client Filter Mode Settings</strong>"),
translate("Filter mode settings can be set to specific LAN clients ( <font color=blue> No filter , Global filter </font> ) . Does not need to be set by default."))
t.template="cbi/tblsection"
t.sortable=true
t.anonymous=true
t.addremove=true
e=t:option(Value,"ipaddr",translate("IP Address"))
e.width="40%"
e.datatype="ip4addr"
e.placeholder="0.0.0.0/0"
luci.ip.neighbors({ family = 4 }, function(entry)
if entry.reachable then
e:value(entry.dest:string())
end
end)
e=t:option(ListValue,"filter_mode",translate("Filter Mode"))
e.width="40%"
e.default="disable"
e.rmempty=false
e:value("disable",translate("No filter"))
e:value("global",translate("Global filter"))
return m

View File

@ -0,0 +1,30 @@
local SYS = require "luci.sys"
local ND = SYS.exec("cat /usr/share/adbyby/dnsmasq.adblock | wc -l")
local ad_count=0
if nixio.fs.access("/usr/share/adbyby/dnsmasq.adblock") then
ad_count=tonumber(SYS.exec("cat /usr/share/adbyby/dnsmasq.adblock | wc -l"))
end
m = Map("adbyby")
s = m:section(TypedSection, "adbyby")
s.anonymous = true
o = s:option(Flag, "cron_mode")
o.title = translate("Update the rule at 6 a.m. every morning and restart adbyby")
o.default = 0
o.rmempty = false
o=s:option(DummyValue,"ad_data",translate("Adblock Plus Data"))
o.rawhtml = true
o.template = "adbyby/refresh"
o.value =ad_count .. " " .. translate("Records")
o = s:option(Flag, "block_ios")
o.title = translate("Block Apple iOS OTA update")
o.default = 0
o.rmempty = false
return m

View File

@ -0,0 +1,70 @@
local NXFS = require "nixio.fs"
local SYS = require "luci.sys"
local HTTP = require "luci.http"
local DISP = require "luci.dispatcher"
local DL = SYS.exec("head -1 /tmp/adbyby/data/lazy.txt | awk -F' ' '{print $3,$4}'") or ""
local DV = SYS.exec("head -1 /tmp/adbyby/data/video.txt | awk -F' ' '{print $3,$4}'") or ""
local NR = SYS.exec("grep -v '^!' /usr/share/adbyby/data/rules.txt | wc -l")
local NU = SYS.exec("cat /usr/share/adbyby/data/user.txt | wc -l")
local UD = NXFS.readfile("/tmp/adbyby.updated") or "1970-01-01 00:00:00"
local ND = SYS.exec("cat /usr/share/adbyby/dnsmasq.adblock | wc -l")
m = Map("adbyby")
m.title = translate("Adbyby Plus +")
m.description = translate("Adbyby Plus + can filter all kinds of banners, popups, video ads, and prevent tracking, privacy theft and a variety of malicious websites<br /><font color=\"red\">Plus + version combination mode can operation with Adblock Plus Host,filtering ads without losing bandwidth</font>")
m:section(SimpleSection).template = "adbyby/adbyby_status"
s = m:section(TypedSection, "adbyby")
s.anonymous = true
o = s:option(Flag, "enable")
o.title = translate("Enable")
o.default = 0
o.rmempty = false
o = s:option(ListValue, "wan_mode")
o.title = translate("Running Mode")
o:value("0", translate("Global Mode (The slowest and the best effects)"))
o:value("1", translate("Plus + Mode (Filter domain name list and blacklist website.Recommended)"))
o:value("2", translate("No filter Mode (Must set in Client Filter Mode Settings manually)"))
o.default = 1
o.rmempty = false
o = s:option(Button, "restart")
o.title = translate("Adbyby and Rule state")
o.inputtitle = translate("Update Adbyby Rules Manually")
o.description = string.format("<strong>"..translate("Last Update Checked")..":</strong> %s<br /><strong>"..translate("Lazy Rule")..":</strong>%s <br /><strong>"..translate("Video Rule")..":</strong>%s", UD, DL, DV)
o.inputstyle = "reload"
o.write = function()
SYS.call("rm -rf /tmp/adbyby.updated /tmp/adbyby/admd5.json && /usr/share/adbyby/adbybyupdate.sh > /tmp/adupdate.log 2>&1 &")
SYS.call("sleep 5")
HTTP.redirect(DISP.build_url("admin", "services", "adbyby"))
end
t=m:section(TypedSection,"acl_rule",translate("<strong>Client Filter Mode Settings</strong>"),
translate("Filter mode settings can be set to specific LAN clients ( <font color=blue> No filter , Global filter </font> ) . Does not need to be set by default."))
t.template="cbi/tblsection"
t.sortable=true
t.anonymous=true
t.addremove=true
e=t:option(Value,"ipaddr",translate("IP Address"))
e.width="40%"
e.datatype="ip4addr"
e.placeholder="0.0.0.0/0"
luci.ip.neighbors({ family = 4 }, function(entry)
if entry.reachable then
e:value(entry.dest:string())
end
end)
e=t:option(ListValue,"filter_mode",translate("Filter Mode"))
e.width="40%"
e.default="disable"
e.rmempty=false
e:value("disable",translate("No filter"))
e:value("global",translate("Global filter"))
return m

View File

@ -0,0 +1,24 @@
local fs = require "nixio.fs"
local conffile = "/usr/share/adbyby/adblack.conf"
f = SimpleForm("custom")
t = f:field(TextValue, "conf")
t.rmempty = true
t.rows = 13
function t.cfgvalue()
return fs.readfile(conffile) or ""
end
function f.handle(self, state, data)
if state == FORM_VALID then
if data.conf then
fs.writefile(conffile, data.conf:gsub("\r\n", "\n"))
luci.sys.call("/etc/init.d/adbyby restart")
end
end
return true
end
return f

View File

@ -0,0 +1,24 @@
local fs = require "nixio.fs"
local conffile = "/usr/share/adbyby/blockip.conf"
f = SimpleForm("custom")
t = f:field(TextValue, "conf")
t.rmempty = true
t.rows = 13
function t.cfgvalue()
return fs.readfile(conffile) or ""
end
function f.handle(self, state, data)
if state == FORM_VALID then
if data.conf then
fs.writefile(conffile, data.conf:gsub("\r\n", "\n"))
luci.sys.call("/etc/init.d/adbyby restart")
end
end
return true
end
return f

View File

@ -0,0 +1,24 @@
local fs = require "nixio.fs"
local conffile = "/usr/share/adbyby/adesc.conf"
f = SimpleForm("custom")
t = f:field(TextValue, "conf")
t.rmempty = true
t.rows = 13
function t.cfgvalue()
return fs.readfile(conffile) or ""
end
function f.handle(self, state, data)
if state == FORM_VALID then
if data.conf then
fs.writefile(conffile, data.conf:gsub("\r\n", "\n"))
luci.sys.call("/etc/init.d/adbyby restart")
end
end
return true
end
return f

View File

@ -0,0 +1,24 @@
local fs = require "nixio.fs"
local conffile = "/usr/share/adbyby/adhost.conf"
f = SimpleForm("custom")
t = f:field(TextValue, "conf")
t.rmempty = true
t.rows = 13
function t.cfgvalue()
return fs.readfile(conffile) or ""
end
function f.handle(self, state, data)
if state == FORM_VALID then
if data.conf then
fs.writefile(conffile, data.conf:gsub("\r\n", "\n"))
luci.sys.call("/etc/init.d/adbyby restart")
end
end
return true
end
return f

View File

@ -0,0 +1,24 @@
local fs = require "nixio.fs"
local conffile = "/usr/share/adbyby/rules.txt"
f = SimpleForm("custom")
t = f:field(TextValue, "conf")
t.rmempty = true
t.rows = 13
function t.cfgvalue()
return fs.readfile(conffile) or ""
end
function f.handle(self, state, data)
if state == FORM_VALID then
if data.conf then
fs.writefile(conffile, data.conf:gsub("\r\n", "\n"))
luci.sys.call("/etc/init.d/adbyby restart")
end
end
return true
end
return f

View File

@ -1,5 +1,5 @@
<script type="text/javascript">//<![CDATA[
XHR.poll(3, '<%=url([[admin]], [[services]], [[adbyby]], [[status]])%>', null,
XHR.poll(3, '<%=url([[admin]], [[services]], [[adbyby]], [[run]])%>', null,
function(x, data) {
var tb = document.getElementById('adbyby_status');
if (data && tb) {

View File

@ -0,0 +1,35 @@
<%+cbi/valueheader%>
<script type="text/javascript">//<![CDATA[
function refresh_data(btn,dataname)
{
btn.disabled = true;
btn.value = '<%:Refresh...%> ';
murl=dataname;
XHR.get('<%=luci.dispatcher.build_url("admin", "services", "adbyby","refresh")%>',
{ set:murl },
function(x,rv)
{
var s = document.getElementById(dataname+'-status');
if (s)
{
if (rv.ret=="0")
s.innerHTML ="<font color='green'>"+"<%:No new data!%> "+"</font>";
else if(rv.ret=="-1")
{
s.innerHTML ="<font color='red'>"+"<%:Refresh Error!%> "+"</font>";
}
else
{
s.innerHTML ="<font color='green'>"+"<%:Refresh OK!%> "+"<%:Total Records:%>"+rv.ret+"</font>";
}
}
btn.disabled = false;
btn.value = '<%:Refresh Data %>';
}
);
return false;
}
//]]></script>
<input type="button" class="cbi-button cbi-input-reload" value="<%:Refresh Data%> " onclick="return refresh_data(this,'<%=self.option%>')" />
<span id="<%=self.option%>-status"><em><%=self.value%></em></span>
<%+cbi/valuefooter%>

View File

@ -7,7 +7,7 @@ msgstr "<strong><font color=\"green\">广告屏蔽大师 Plus + 正在运行</fo
msgid "<strong><font color=\"red\">Adbyby Plus + is Not Running</font></strong>"
msgstr "<strong><font color=\"red\">广告屏蔽大师 Plus + 没有运行</font></strong>"
msgid "Adbyby Plus + can filter all kinds of banners, popups, video ads, and prevent tracking, privacy theft and a variety of malicious websites<br /><font color=\"red\">Plus + version combination mode can operation with Adblock Plus Hostfiltering ads without losing bandwidth</font>"
msgid "Adbyby Plus + can filter all kinds of banners, popups, video ads, and prevent tracking, privacy theft and a variety of malicious websites<br /><font color=\"red\">Plus + version combination mode can operation with Adblock Plus Host,filtering ads without losing bandwidth</font>"
msgstr "广告屏蔽大师 Plus + 可以全面过滤各种横幅、弹窗、视频广告,同时阻止跟踪、隐私窃取及各种恶意网站<br /><font color=\"red\">Plus + 版本可以和 Adblock Plus Host 结合方式运行,过滤广告不损失带宽</font>"
msgid "Adbyby Plus +"
@ -19,10 +19,10 @@ msgstr "基本设置"
msgid "Running Mode"
msgstr "运行模式"
msgid "Global ModeThe slowest, the best effects"
msgid "Global Mode (The slowest and the best effects)"
msgstr "全局模式(最慢, 效果最好)"
msgid "Plus + ModeFilter domain name list and blacklist website.Recommended"
msgid "Plus + Mode (Filter domain name list and blacklist website.Recommended)"
msgstr "Plus + 模式只过滤列表内域名结合ABP名单。推荐"
msgid "No filter Mode (Must set in Client Filter Mode Settings manually)"
@ -62,11 +62,17 @@ msgstr "高级设置"
msgid "Update the rule at 6 a.m. every morning and restart adbyby"
msgstr "每天凌晨6点更新规则并重启"
msgid "ADP Host List"
msgstr "Adblock Plus Hosts 记录数"
msgid "Adblock Plus Data"
msgstr "Adblock Plus 规则数据库"
msgid "Manually force update<br />Adblock Plus Host List"
msgstr "手动强制更新<br />Adblock Plus Host List"
msgid "Manually force update"
msgstr "手动强制更新"
msgid "Update Adbyby Rules Manually"
msgstr "手动更新规则"
msgid "Block Apple iOS OTA update"
msgstr "拦截 Apple iOS 的OTA更新"
@ -135,3 +141,9 @@ msgstr "视频规则版本"
msgid "Adblock Plus Host List"
msgstr "广告屏蔽大师 Plus 规则列表"
msgid "Block Domain List"
msgstr "域名黑名单"
msgid "Block IP List"
msgstr "IP黑名单"

View File

@ -1,8 +1,10 @@
#!/bin/sh /etc/rc.common
START=99
START=98
STOP=10
USE_PROCD=1
EXTRA_COMMANDS="add_rule del_rule reload_rule"
PROG_PATH=/usr/share/adbyby
DATA_PATH=$PROG_PATH/data
@ -11,12 +13,26 @@ CRON_FILE=/etc/crontabs/root
CONFIG=adbyby
ipt_n="iptables -t nat"
uci_get_by_name() {
local ret=$(uci get $CONFIG.$1.$2 2>/dev/null)
echo ${ret:=$3}
}
uci_get_by_type() {
local index=0
if [ -n $4 ]; then
index=$4
fi
local ret=$(uci get $CONFIG.@$1[$index].$2 2>/dev/null)
echo ${ret:=$3}
}
get_config()
{
config_get_bool enable $1 enable
config_get_bool cron_mode $1 cron_mode
config_get wan_mode $1 wan_mode
config_get_bool enable $1 enable 0
config_get_bool cron_mode $1 cron_mode 1
config_get wan_mode $1 wan_mode 1
config_get_bool block_ios $1 block_ios 0
config_get_bool mem_mode $1 mem_mode 1
}
@ -130,10 +146,13 @@ add_rule()
$ipt_n -A ADBYBY -d 240.0.0.0/4 -j RETURN
ip_rule
if [ $(ipset list music -name -quiet | grep music) ]; then
$ipt_n -A ADBYBY -m set --match-set music dst -j RETURN
$ipt_n -A ADBYBY -m set --match-set music dst -j RETURN 2>/dev/null
fi
$ipt_n -A ADBYBY -p tcp -j REDIRECT --to-ports 8118
$ipt_n -I PREROUTING -p tcp --dport 80 -j ADBYBY
$ipt_n -A ADBYBY -p tcp -j REDIRECT --to-ports 8118 2>/dev/null
$ipt_n -I PREROUTING -p tcp --dport 80 -j ADBYBY 2>/dev/null
mkdir -p /var/etc
echo -e "/etc/init.d/adbyby restart" > "/var/etc/adbyby.include"
}
del_rule()
@ -156,35 +175,41 @@ reload_rule()
config_load adbyby
config_foreach get_config adbyby
del_rule
iptables-save | grep ADBYBY >/dev/null || \
add_rule
[ $enable -eq 0 ] && exit 0
iptables-save | grep ADBYBY >/dev/null || add_rule
}
start()
start_service()
{
config_load adbyby
config_foreach get_config adbyby
[ $enable -eq 0 ] && exit 0
add_cron
[ ! -d "/tmp/adbyby/data" ] && cp -a /usr/share/adbyby /tmp/ && rm -f /tmp/adbyby.updated
/usr/share/adbyby/admem.sh &>/dev/null &
add_rules
/tmp/adbyby/adbyby &>/dev/null &
add_dns
iptables-save | grep ADBYBY >/dev/null || \
add_rule
/etc/init.d/dnsmasq reload
if [ $enable -ne 0 ]; then
add_cron
[ ! -d "/tmp/adbyby/data" ] && cp -a /usr/share/adbyby /tmp/ && rm -f /tmp/adbyby.updated
add_rules
procd_open_instance
procd_set_param command '/tmp/adbyby/adbyby'
procd_append_param command '--no-daemon'
procd_set_param respawn
procd_set_param stderr 1
procd_close_instance
add_dns
iptables-save | grep ADBYBY >/dev/null || \
add_rule
/etc/init.d/dnsmasq reload
fi
}
stop()
stop_service()
{
config_load adbyby
config_foreach get_config adbyby
del_rule
del_cron
del_dns
kill -9 $(ps | grep 'admem.sh' | grep -v grep | awk '{print $1}') >/dev/null 2>&1
kill -9 $(ps | grep '/tmp/adbyby/adbyby' | grep -v grep | awk '{print $1}') >/dev/null 2>&1
/etc/init.d/dnsmasq reload
}
@ -195,18 +220,4 @@ boot()
}
uci_get_by_name() {
local ret=$(uci get $CONFIG.$1.$2 2>/dev/null)
echo ${ret:=$3}
}
uci_get_by_type() {
local index=0
if [ -n $4 ]; then
index=$4
fi
local ret=$(uci get $CONFIG.@$1[$index].$2 2>/dev/null)
echo ${ret:=$3}
}

View File

@ -1,3 +0,0 @@
#!/bin/sh
sleep 40 && /etc/init.d/adbyby restart

View File

@ -8,7 +8,7 @@ uci -q batch <<-EOF >/dev/null
delete firewall.adbyby
set firewall.adbyby=include
set firewall.adbyby.type=script
set firewall.adbyby.path=/usr/share/adbyby/firewall.include
set firewall.adbyby.path=/var/etc/adbyby.include
set firewall.adbyby.reload=1
delete firewall.adblock
add firewall rule

View File

@ -0,0 +1,11 @@
#!/bin/sh -e
if [ -f /tmp/adnew.conf ]; then
if (grep -wq "address=" /tmp/adnew.conf) ; then
cp /tmp/adnew.conf /tmp/ad.conf
elif (grep -wq "0.0.0.0" /tmp/adnew.conf) ; then
cp /tmp/adnew.conf /tmp/ad.conf
else
cat /tmp/adnew.conf | grep ^\|\|[^\*]*\^$ | sed -e 's:||:address\=\/:' -e 's:\^:/0\.0\.0\.0:' > /tmp/ad.conf
fi
fi
rm -f /tmp/adnew.conf

View File

@ -0,0 +1,4 @@
#!/bin/sh
PROG_PATH=$(pwd)
$PROG_PATH/adbybyupdate.sh

View File

@ -0,0 +1,48 @@
#!/bin/sh
if [ ! -f "/tmp/adbyby.updated" ];then
wget_ok="0"
while [ "$wget_ok" = "0" ]
do
wget-ssl --spider --quiet --tries=1 --timeout=3 www.baidu.com
if [ "$?" == "0" ]; then
wget_ok="1"
touch /tmp/md5.json && wget-ssl --no-check-certificate -t 1 -T 10 -O /tmp/md5.json https://adbyby.coding.net/p/xwhyc-rules/d/xwhyc-rules/git/raw/master/md5.json
adm5=$(md5sum /tmp/md5.json | awk -F' ' '{print $1}')
touch /tmp/adbyby/admd5.json && bmd5=$(md5sum /tmp/adbyby/admd5.json | awk -F' ' '{print $1}')
if [ "$adm5" == "$bmd5" ];then
echo "Rules MD5 are the same!"
echo $(date "+%Y-%m-%d %H:%M:%S") > /tmp/adbyby.updated
exit 0
else
touch /tmp/lazy.txt && wget-ssl --no-check-certificate -t 1 -T 10 -O /tmp/lazy.txt https://adbyby.coding.net/p/xwhyc-rules/d/xwhyc-rules/git/raw/master/lazy.txt
touch /tmp/video.txt && wget-ssl --no-check-certificate -t 1 -T 10 -O /tmp/video.txt https://adbyby.coding.net/p/xwhyc-rules/d/xwhyc-rules/git/raw/master/video.txt
touch /tmp/local-md5.json && md5sum /tmp/lazy.txt /tmp/video.txt > /tmp/local-md5.json
lazy_local=$(grep 'lazy' /tmp/local-md5.json | awk -F' ' '{print $1}')
video_local=$(grep 'video' /tmp/local-md5.json | awk -F' ' '{print $1}')
lazy_online=$(sed 's/":"/\n/g' /tmp/md5.json | sed 's/","/\n/g' | sed -n '2p')
video_online=$(sed 's/":"/\n/g' /tmp/md5.json | sed 's/","/\n/g' | sed -n '4p')
if [ "$lazy_online"x == "$lazy_local"x -a "$video_online"x == "$video_local"x ]; then
echo "adbyby rules MD5 OK!"
mv /tmp/lazy.txt /tmp/adbyby/data/lazy.txt
mv /tmp/video.txt /tmp/adbyby/data/video.txt
mv /tmp/md5.json /tmp/adbyby/admd5.json
echo $(date "+%Y-%m-%d %H:%M:%S") > /tmp/adbyby.updated
fi
fi
else
sleep 10
fi
done
rm -f /tmp/adbyby/data/*.bak
kill -9 $(busybox ps -w | grep "adbyby --no-daemon" | grep -v grep | awk '{print $1}') >/dev/null 2>&1
fi

View File

@ -1,940 +0,0 @@
address=/a.youdao.com/0.0.0.0
address=/adrs.sdo.com/0.0.0.0
address=/hiad.myweb.hinet.net/0.0.0.0
address=/log.interest.mix.sina.com.cn/0.0.0.0
address=/tuiguang.178.com/0.0.0.0
address=/0xxd.com/0.0.0.0
address=/104.195.62.12/0.0.0.0
address=/111.175.219.7/0.0.0.0
address=/111111qb.com/0.0.0.0
address=/112.124.98.75/0.0.0.0
address=/116.55.227.242/0.0.0.0
address=/122.227.254.195/0.0.0.0
address=/123hala.com/0.0.0.0
address=/139.159.32.82/0.0.0.0
address=/182.92.81.104/0.0.0.0
address=/1l1.cc/0.0.0.0
address=/201071.com/0.0.0.0
address=/2012ui.com/0.0.0.0
address=/211.167.105.131/0.0.0.0
address=/220.115.251.25/0.0.0.0
address=/221.204.213.222/0.0.0.0
address=/2m2n.com/0.0.0.0
address=/360baidus.com/0.0.0.0
address=/365bibi.com/0.0.0.0
address=/365safego.com/0.0.0.0
address=/366safego.com/0.0.0.0
address=/36pn.com/0.0.0.0
address=/3g.990.net/0.0.0.0
address=/52kmk.com/0.0.0.0
address=/58.215.179.159/0.0.0.0
address=/61.152.223.15/0.0.0.0
address=/68665565.com/0.0.0.0
address=/6dvip.com/0.0.0.0
address=/71sem.com/0.0.0.0
address=/77power.com/0.0.0.0
address=/7wen.cn/0.0.0.0
address=/7xz3.com/0.0.0.0
address=/81c.cn/0.0.0.0
address=/85tgw.com/0.0.0.0
address=/88rpg.net/0.0.0.0
address=/892155.com/0.0.0.0
address=/91ysa.com/0.0.0.0
address=/91zgm.com/0.0.0.0
address=/9377co.com/0.0.0.0
address=/9377os.com/0.0.0.0
address=/a907907.com/0.0.0.0
address=/ad000000.com/0.0.0.0
address=/adm-cnzz.net/0.0.0.0
address=/ads.uc.cn/0.0.0.0
address=/ajaxcdn.org/0.0.0.0
address=/aliyuncss.com/0.0.0.0
address=/aliyunxin.com/0.0.0.0
address=/amazingmagics.com/0.0.0.0
address=/aralego.com/0.0.0.0
address=/at98.com/0.0.0.0
address=/cangnews.com/0.0.0.0
address=/caob5.info/0.0.0.0
address=/cb.baidu.com/0.0.0.0
address=/cbjs.baidu.com/0.0.0.0
address=/cnxad.net/0.0.0.0
address=/cnzz.com.so/0.0.0.0
address=/code668.com/0.0.0.0
address=/cpcv.cc/0.0.0.0
address=/cpms.cc/0.0.0.0
address=/cpro.baidu.com/0.0.0.0
address=/cpro.baidustatic.com/0.0.0.0
address=/cpv6.com/0.0.0.0
address=/cpva.cc/0.0.0.0
address=/crdrjs.info/0.0.0.0
address=/csqiulong.com/0.0.0.0
address=/ctsywy.com/0.0.0.0
address=/cyacc.com/0.0.0.0
address=/czpush.com/0.0.0.0
address=/dashet.com/0.0.0.0
address=/datafastguru.info/0.0.0.0
address=/dou777.com/0.0.0.0
address=/drmcmm.baidu.com/0.0.0.0
address=/duiwai.baidu.com/0.0.0.0
address=/dvr8.com/0.0.0.0
address=/dw998.com/0.0.0.0
address=/dxssiyi.com/0.0.0.0
address=/e701.net/0.0.0.0
address=/e70123.com/0.0.0.0
address=/e708.net/0.0.0.0
address=/e719.net/0.0.0.0
address=/ecuc123.net/0.0.0.0
address=/eiv.baidu.com/0.0.0.0
address=/f1190.com/0.0.0.0
address=/f6ce.com/0.0.0.0
address=/f70123.com/0.0.0.0
address=/fd7c.com/0.0.0.0
address=/fjmeyer.com/0.0.0.0
address=/fu68.com/0.0.0.0
address=/fv99.com/0.0.0.0
address=/gf108.com/0.0.0.0
address=/gf1352.com/0.0.0.0
address=/gm682.com/0.0.0.0
address=/guduopu.com/0.0.0.0
address=/gzmjnx.cn/0.0.0.0
address=/gzqudou.com/0.0.0.0
address=/hao123rt.com/0.0.0.0
address=/haohaowan8.com/0.0.0.0
address=/haolew.com/0.0.0.0
address=/hfjuki.com/0.0.0.0
address=/hmp33.com/0.0.0.0
address=/hr44.com/0.0.0.0
address=/humanding.com/0.0.0.0
address=/i3818.com/0.0.0.0
address=/ihualun.com/0.0.0.0
address=/img80.net/0.0.0.0
address=/jczzjx.com/0.0.0.0
address=/jdlhg.com/0.0.0.0
address=/jhzl001.com/0.0.0.0
address=/jiyou2014.com/0.0.0.0
address=/jk939.com/0.0.0.0
address=/jlssbz.com/0.0.0.0
address=/jnrsjm.com/0.0.0.0
address=/johtzj.com/0.0.0.0
address=/jwqj.net/0.0.0.0
address=/jxjzny.com/0.0.0.0
address=/keyyou.net/0.0.0.0
address=/kingwam.com/0.0.0.0
address=/kmadou.com/0.0.0.0
address=/ku9377.com/0.0.0.0
address=/lajizhan.org/0.0.0.0
address=/le4le.com/0.0.0.0
address=/lishuanghao.com/0.0.0.0
address=/lzmm8.com/0.0.0.0
address=/mainbx.com/0.0.0.0
address=/mathads.com/0.0.0.0
address=/mlt01.com/0.0.0.0
address=/moodoocrv.com.cn/0.0.0.0
address=/mscimg.com/0.0.0.0
address=/nextcps.com/0.0.0.0
address=/niuxgame77.com/0.0.0.0
address=/notice.uchome.manyou.com/0.0.0.0
address=/oikxlcv.wang/0.0.0.0
address=/okm918.com/0.0.0.0
address=/p3tt.com/0.0.0.0
address=/pdsjycm.com/0.0.0.0
address=/pos.baidu.com/0.0.0.0
address=/qiqiww.com/0.0.0.0
address=/qucaigg.com/0.0.0.0
address=/re.taotaosou.com/0.0.0.0
address=/ruxianke.com/0.0.0.0
address=/rwjfs.com/0.0.0.0
address=/sgbfjs.info/0.0.0.0
address=/sharedaddomain.com/0.0.0.0
address=/show.kc.taotaosou.com/0.0.0.0
address=/si9377.com/0.0.0.0
address=/socdm.com/0.0.0.0
address=/spcode.baidu.com/0.0.0.0
address=/sstc360.com/0.0.0.0
address=/t70123.com/0.0.0.0
address=/taat00889.com/0.0.0.0
address=/tad.suning.com/0.0.0.0
address=/tc600.com/0.0.0.0
address=/tdayi.com/0.0.0.0
address=/tg.1155t.cn/0.0.0.0
address=/toourbb.com/0.0.0.0
address=/ubmcmm.baidustatic.com/0.0.0.0
address=/uoyrsd.com/0.0.0.0
address=/v707070.com/0.0.0.0
address=/victorjx.com/0.0.0.0
address=/w65p.com/0.0.0.0
address=/wdzsb.com.cn/0.0.0.0
address=/winvestern.com.cn/0.0.0.0
address=/wqsph.net/0.0.0.0
address=/ws341.com/0.0.0.0
address=/xa9t.com/0.0.0.0
address=/xabaitai.com/0.0.0.0
address=/xchgx.com/0.0.0.0
address=/xcy8.com/0.0.0.0
address=/xtxa.net/0.0.0.0
address=/xxad.cc/0.0.0.0
address=/xzyituo.com/0.0.0.0
address=/yk0712.com/0.0.0.0
address=/ymcqb.com/0.0.0.0
address=/yqw88.com/0.0.0.0
address=/yule8.net/0.0.0.0
address=/yyp17.com/0.0.0.0
address=/zgksb.com/0.0.0.0
address=/zgunion.cn/0.0.0.0
address=/zp22938576.com/0.0.0.0
address=/120.27.34.156/0.0.0.0
address=/122.228.236.165/0.0.0.0
address=/125.46.61.28/0.0.0.0
address=/192.184.10.171/0.0.0.0
address=/218.65.30.232/0.0.0.0
address=/27.255.67.120/0.0.0.0
address=/32345sf.com/0.0.0.0
address=/360safego.com/0.0.0.0
address=/3dm.huya.com/0.0.0.0
address=/5y9nfpes.52pk.com/0.0.0.0
address=/654mmm.com/0.0.0.0
address=/6d245gxt.52pk.com/0.0.0.0
address=/7mad.7m.cn/0.0.0.0
address=/801.tianyaui.com/0.0.0.0
address=/86file.megajoy.com/0.0.0.0
address=/8jkx.com/0.0.0.0
address=/96.43.97.243/0.0.0.0
address=/a-m-s.poco.cn/0.0.0.0
address=/a.baomihua.com/0.0.0.0
address=/a.xizi.com/0.0.0.0
address=/a2.b310.com/0.0.0.0
address=/a4.yeshj.com/0.0.0.0
address=/a5.yeshj.com/0.0.0.0
address=/a6.hujiang.com/0.0.0.0
address=/abc.hkepc.com/0.0.0.0
address=/acsystem.wasu.cn/0.0.0.0
address=/ad.17173.com/0.0.0.0
address=/ad.bjmama.net/0.0.0.0
address=/adadmin.house365.com/0.0.0.0
address=/add.dz19.net/0.0.0.0
address=/adf.dahe.cn/0.0.0.0
address=/adhome.1fangchan.com/0.0.0.0
address=/adk.funshion.com/0.0.0.0
address=/adm.265g.com/0.0.0.0
address=/adm.72zx.com/0.0.0.0
address=/adm.86wan.com/0.0.0.0
address=/adm.bbcss.com/0.0.0.0
address=/adm.funshion.com/0.0.0.0
address=/adm.jjj8.cn/0.0.0.0
address=/adm.qzbbs.com/0.0.0.0
address=/adm.xmfish.com/0.0.0.0
address=/adm.zbinfo.net/0.0.0.0
address=/adm.zzfish.cn/0.0.0.0
address=/admd.yam.com/0.0.0.0
address=/adnetpub.yaolan.com/0.0.0.0
address=/adp.cnool.net/0.0.0.0
address=/adpub.yaolan.com/0.0.0.0
address=/adpubs.yaolan.com/0.0.0.0
address=/adsclick.yx.js.cn/0.0.0.0
address=/adspending01.bwnet.com.tw/0.0.0.0
address=/afp.chinanews.com/0.0.0.0
address=/afp.wasu.cn/0.0.0.0
address=/afpcreative.wasu.cn/0.0.0.0
address=/ai.bioon.com/0.0.0.0
address=/aid.chinayk.com/0.0.0.0
address=/am.6park.com/0.0.0.0
address=/am.szhome.com/0.0.0.0
address=/app.acm.dzwww.com/0.0.0.0
address=/as.sinahk.net/0.0.0.0
address=/ashow.pcpop.com/0.0.0.0
address=/bb345.com/0.0.0.0
address=/besc.baidustatic.com/0.0.0.0
address=/biz.gexing.com/0.0.0.0
address=/biz.weibo.com/0.0.0.0
address=/btn.onlylady.com/0.0.0.0
address=/btn.pchome.net/0.0.0.0
address=/business.92wy.com/0.0.0.0
address=/by.7avz.com/0.0.0.0
address=/cacafly.net/0.0.0.0
address=/cachead.com/0.0.0.0
address=/cdn.wdlm.cn/0.0.0.0
address=/chidir.com/0.0.0.0
address=/cps.okbuy.com/0.0.0.0
address=/d.107788.com/0.0.0.0
address=/d.taomato.com/0.0.0.0
address=/d0.xcar.com.cn/0.0.0.0
address=/dd.xdnice.com/0.0.0.0
address=/de.as.pptv.com/0.0.0.0
address=/dfad.dfdaily.com/0.0.0.0
address=/dg.073img.com/0.0.0.0
address=/doubleclick.tv002.com/0.0.0.0
address=/dvs.china.com/0.0.0.0
address=/dvser.china.com/0.0.0.0
address=/e.yycqc.com/0.0.0.0
address=/eap.big5.enorth.com.cn/0.0.0.0
address=/eap.enorth.com.cn/0.0.0.0
address=/ebp.renren.com/0.0.0.0
address=/ecma.bdimg.com/0.0.0.0
address=/ecmb.bdimg.com/0.0.0.0
address=/fun.ynet.com/0.0.0.0
address=/g.gxorg.com/0.0.0.0
address=/g.hsw.cn/0.0.0.0
address=/g.ousns.net/0.0.0.0
address=/g1.0573ren.com/0.0.0.0
address=/g2.ousns.net/0.0.0.0
address=/ganjituiguang.ganji.com/0.0.0.0
address=/gdt.qq.com/0.0.0.0
address=/get.766.com/0.0.0.0
address=/gg.0598yu.com/0.0.0.0
address=/gg.18183.com/0.0.0.0
address=/gg.cs090.com/0.0.0.0
address=/gg.gao7.com/0.0.0.0
address=/gg.kugou.com/0.0.0.0
address=/gg.sonhoo.com/0.0.0.0
address=/gg.yxdown.com/0.0.0.0
address=/ggg.zj.com/0.0.0.0
address=/ggw.gusuwang.com/0.0.0.0
address=/ggw.watertu.com/0.0.0.0
address=/ggyq.xdkb.net/0.0.0.0
address=/go.hangzhou.com.cn/0.0.0.0
address=/goto.www.iciba.com/0.0.0.0
address=/gqgc.sz.zj.cn/0.0.0.0
address=/groupa.onlylady.com/0.0.0.0
address=/gsspcln.jp/0.0.0.0
address=/gt.yy.com/0.0.0.0
address=/guess.h.qhimg.com/0.0.0.0
address=/haxiu.miaotiao.com/0.0.0.0
address=/hdad.baike.com/0.0.0.0
address=/hiad.vmall.com/0.0.0.0
address=/hz.shouyoutv.com/0.0.0.0
address=/hzhyhm.com/0.0.0.0
address=/i.syasn.com/0.0.0.0
address=/iads.xinmin.cn/0.0.0.0
address=/idcot.com/0.0.0.0
address=/ifx.aifang.com/0.0.0.0
address=/image.6park.com/0.0.0.0
address=/image.9duw.com/0.0.0.0
address=/image.hh010.com/0.0.0.0
address=/image.lepan.cc/0.0.0.0
address=/images.chinaz.com/0.0.0.0
address=/images.gxsky.com/0.0.0.0
address=/img.3sjt.com/0.0.0.0
address=/img.9duw.com/0.0.0.0
address=/img1.126.net/0.0.0.0
address=/img2.126.net/0.0.0.0
address=/img2.www.fmdisk.com/0.0.0.0
address=/inte.sogou.com/0.0.0.0
address=/iwanad.baidu.com/0.0.0.0
address=/j.6avz.com/0.0.0.0
address=/j.7avz.com/0.0.0.0
address=/ja.gamersky.com/0.0.0.0
address=/jmsyzj.com/0.0.0.0
address=/js-1.pchome.net/0.0.0.0
address=/js.duotegame.com/0.0.0.0
address=/js.leshen.com/0.0.0.0
address=/js.pub.tom.com/0.0.0.0
address=/js.youxi369.com/0.0.0.0
address=/jxad.jx163.com/0.0.0.0
address=/knnwdyou.com/0.0.0.0
address=/leiqun.snxyf.com/0.0.0.0
address=/life.e0575.com/0.0.0.0
address=/lingdian98.com/0.0.0.0
address=/link.fobshanghai.com/0.0.0.0
address=/lxting.com/0.0.0.0
address=/m.aty.sohu.com/0.0.0.0
address=/manads.static.olcdn.com/0.0.0.0
address=/manage.wdfans.cn/0.0.0.0
address=/market.178.com/0.0.0.0
address=/market.21cn.com/0.0.0.0
address=/market.duowan.com/0.0.0.0
address=/media.cheshi-img.com/0.0.0.0
address=/money.qz828.com/0.0.0.0
address=/myad.toocle.com/0.0.0.0
address=/ok.432kkk.com/0.0.0.0
address=/p.szonline.net/0.0.0.0
address=/p.zol-img.com.cn/0.0.0.0
address=/p4p.sina.com.cn/0.0.0.0
address=/p8u.hinet.net/0.0.0.0
address=/panda.kdnet.net/0.0.0.0
address=/pcs1.app.joy.cn/0.0.0.0
address=/phpad.cqnews.net/0.0.0.0
address=/pic.0597kk.com/0.0.0.0
address=/pic.111cn.net/0.0.0.0
address=/pic.2u.com.cn/0.0.0.0
address=/pic.ea3w.com/0.0.0.0
address=/pic.fengniao.com/0.0.0.0
address=/pic.taian.com/0.0.0.0
address=/pic.xgo-img.com.cn/0.0.0.0
address=/playad.xjmg.com/0.0.0.0
address=/poster.weather.com.cn/0.0.0.0
address=/pp.7060.la/0.0.0.0
address=/pro.iweihai.cn/0.0.0.0
address=/pub.funshion.com/0.0.0.0
address=/pub.mop.com/0.0.0.0
address=/publicize.liao1.com/0.0.0.0
address=/publish.ad.youth.cn/0.0.0.0
address=/res.hunantv.com/0.0.0.0
address=/rh.qq.com/0.0.0.0
address=/same.chinadaily.com.cn/0.0.0.0
address=/same.eastmoney.com/0.0.0.0
address=/same.stockstar.com/0.0.0.0
address=/sc.tom.com/0.0.0.0
address=/sgg.southcn.com/0.0.0.0
address=/share.gzdsw.com/0.0.0.0
address=/shenleyuni.com/0.0.0.0
address=/shows.21cn.com/0.0.0.0
address=/so.6949.com/0.0.0.0
address=/sss.sege.xxx/0.0.0.0
address=/static.yujiehenaishang.com/0.0.0.0
address=/sub.powerapple.com/0.0.0.0
address=/super.cat898.com/0.0.0.0
address=/super.kdnet.net/0.0.0.0
address=/synacast.com/0.0.0.0
address=/tf.360.cn/0.0.0.0
address=/tg.delnapb.com/0.0.0.0
address=/tk.504pk.com/0.0.0.0
address=/tp.sgcn.com/0.0.0.0
address=/u.63kc.com/0.0.0.0
address=/u.cnzol.com/0.0.0.0
address=/union.china.com.cn/0.0.0.0
address=/untitled.dwstatic.com/0.0.0.0
address=/up.hiao.com/0.0.0.0
address=/v-56.com/0.0.0.0
address=/vas.funshion.com/0.0.0.0
address=/vupload.duowan.com/0.0.0.0
address=/web.900.la/0.0.0.0
address=/xc.macd.cn/0.0.0.0
address=/xs.houyi.baofeng.net/0.0.0.0
address=/yktj.yzz.cn/0.0.0.0
address=/zo66.com/0.0.0.0
address=/zt2088.com/0.0.0.0
address=/146.148.85.61/0.0.0.0
address=/hdapp1003-a.akamaihd.net/0.0.0.0
address=/hdapp1008-a.akamaihd.net/0.0.0.0
address=/hdsrc-a.akamaihd.net/0.0.0.0
address=/46.165.197.153/0.0.0.0
address=/46.165.197.231/0.0.0.0
address=/74.117.182.77/0.0.0.0
address=/78.140.131.214/0.0.0.0
address=/clkrev.com/0.0.0.0
address=/a.livesportmedia.eu/0.0.0.0
address=/a.ucoz.net/0.0.0.0
address=/a.watershed-publishing.com/0.0.0.0
address=/a04296f070c0146f314d-0dcad72565cb350972beb3666a86f246.r50.cf5.rackcdn.com/0.0.0.0
address=/ad.about.co.kr/0.0.0.0
address=/ad.accessmediaproductions.com/0.0.0.0
address=/ad.bitmedia.io/0.0.0.0
address=/ad.flux.com/0.0.0.0
address=/ad.foxnetworks.com/0.0.0.0
address=/ad.icasthq.com/0.0.0.0
address=/ad.idgtn.net/0.0.0.0
address=/ad.jamba.net/0.0.0.0
address=/ad.livere.co.kr/0.0.0.0
address=/ad.mail.ru/0.0.0.0
address=/ad.mesomorphosis.com/0.0.0.0
address=/ad.openmultimedia.biz/0.0.0.0
address=/ad.outsidehub.com/0.0.0.0
address=/ad.pickple.net/0.0.0.0
address=/ad.proxy.sh/0.0.0.0
address=/ad.r.worldssl.net/0.0.0.0
address=/ad.rambler.ru/0.0.0.0
address=/ad.reklamport.com/0.0.0.0
address=/ad.sensismediasmart.com.au/0.0.0.0
address=/ad.smartclip.net/0.0.0.0
address=/ad.spielothek.so/0.0.0.0
address=/ad.vidaroo.com/0.0.0.0
address=/ad.winningpartner.com/0.0.0.0
address=/add.bugun.com.tr/0.0.0.0
address=/adingo.jp.eimg.jp/0.0.0.0
address=/adn.ebay.com/0.0.0.0
address=/adplus.goo.mx/0.0.0.0
address=/ads.mp.mydas.mobi/0.0.0.0
address=/adscaspion.appspot.com/0.0.0.0
address=/adss.dotdo.net/0.0.0.0
address=/adz.zwee.ly/0.0.0.0
address=/aff.eteachergroup.com/0.0.0.0
address=/aff.marathonbet.com/0.0.0.0
address=/aff.svjump.com/0.0.0.0
address=/affil.mupromo.com/0.0.0.0
address=/affiliateprogram.keywordspy.com/0.0.0.0
address=/affiliates.allposters.com/0.0.0.0
address=/affiliatesmedia.sbobet.com/0.0.0.0
address=/affiliation.fotovista.com/0.0.0.0
address=/agenda.complex.com/0.0.0.0
address=/airpushmarketing.s3.amazonaws.com/0.0.0.0
address=/ais.abacast.com/0.0.0.0
address=/analytics.disneyinternational.com/0.0.0.0
address=/ard.ihookup.com/0.0.0.0
address=/award.sitekeuring.net/0.0.0.0
address=/b.babylon.com/0.0.0.0
address=/b.livesport.eu/0.0.0.0
address=/b92.putniktravel.com/0.0.0.0
address=/banner.101xp.com/0.0.0.0
address=/banner.3ddownloads.com/0.0.0.0
address=/banner.europacasino.com/0.0.0.0
address=/banner.telefragged.com/0.0.0.0
address=/banner.titancasino.com/0.0.0.0
address=/bl.wavecdn.de/0.0.0.0
address=/blamads-assets.s3.amazonaws.com/0.0.0.0
address=/bluhostedbanners.blucigs.com/0.0.0.0
address=/box.anchorfree.net/0.0.0.0
address=/btr.domywife.com/0.0.0.0
address=/c.netu.tv/0.0.0.0
address=/cas.clickability.com/0.0.0.0
address=/cash.neweramediaworks.com/0.0.0.0
address=/cerebral.typn.com/0.0.0.0
address=/cjmooter.xcache.kinxcdn.com/0.0.0.0
address=/clarity.abacast.com/0.0.0.0
address=/click.eyk.net/0.0.0.0
address=/clickstrip.6wav.es/0.0.0.0
address=/connect.summit.co.uk/0.0.0.0
address=/content.livesportmedia.eu/0.0.0.0
address=/cpm.amateurcommunity.de/0.0.0.0
address=/creatives.inmotionhosting.com/0.0.0.0
address=/creatives.summitconnect.co.uk/0.0.0.0
address=/d13czkep7ax7nj.cloudfront.net/0.0.0.0
address=/d140sbu1b1m3h0.cloudfront.net/0.0.0.0
address=/d15565yqt7pv7r.cloudfront.net/0.0.0.0
address=/d15gt9gwxw5wu0.cloudfront.net/0.0.0.0
address=/d17f2fxw547952.cloudfront.net/0.0.0.0
address=/d19972r8wdpby8.cloudfront.net/0.0.0.0
address=/d1ade4ciw4bqyc.cloudfront.net/0.0.0.0
address=/d1cl1sqtf3o420.cloudfront.net/0.0.0.0
address=/d1d95giojjkirt.cloudfront.net/0.0.0.0
address=/d1ep3cn6qx0l3z.cloudfront.net/0.0.0.0
address=/d1ey3fksimezm4.cloudfront.net/0.0.0.0
address=/d1fo96xm8fci0r.cloudfront.net/0.0.0.0
address=/d1gojtoka5qi10.cloudfront.net/0.0.0.0
address=/d1k74lgicilrr3.cloudfront.net/0.0.0.0
address=/d1noellhv8fksc.cloudfront.net/0.0.0.0
address=/d1pcttwib15k25.cloudfront.net/0.0.0.0
address=/d1pdpbxj733bb1.cloudfront.net/0.0.0.0
address=/d1spb7fplenrp4.cloudfront.net/0.0.0.0
address=/d1vbm0eveofcle.cloudfront.net/0.0.0.0
address=/d1zgderxoe1a.cloudfront.net/0.0.0.0
address=/d23guct4biwna6.cloudfront.net/0.0.0.0
address=/d23nyyb6dc29z6.cloudfront.net/0.0.0.0
address=/d25ruj6ht8bs1.cloudfront.net/0.0.0.0
address=/d25xkbr68qqtcn.cloudfront.net/0.0.0.0
address=/d26dzd2k67we08.cloudfront.net/0.0.0.0
address=/d26j9bp9bq4uhd.cloudfront.net/0.0.0.0
address=/d26wy0pxd3qqpv.cloudfront.net/0.0.0.0
address=/d27jt7xr4fq3e8.cloudfront.net/0.0.0.0
address=/d287x05ve9a63s.cloudfront.net/0.0.0.0
address=/d29r6igjpnoykg.cloudfront.net/0.0.0.0
address=/d2anfhdgjxf8s1.cloudfront.net/0.0.0.0
address=/d2b2x1ywompm1b.cloudfront.net/0.0.0.0
address=/d2b65ihpmocv7w.cloudfront.net/0.0.0.0
address=/d2bgg7rjywcwsy.cloudfront.net/0.0.0.0
address=/d2cxkkxhecdzsq.cloudfront.net/0.0.0.0
address=/d2d2lbvq8xirbs.cloudfront.net/0.0.0.0
address=/d2dxgm96wvaa5j.cloudfront.net/0.0.0.0
address=/d2gpgaupalra1d.cloudfront.net/0.0.0.0
address=/d2gtlljtkeiyzd.cloudfront.net/0.0.0.0
address=/d2gz6iop9uxobu.cloudfront.net/0.0.0.0
address=/d2hap2bsh1k9lw.cloudfront.net/0.0.0.0
address=/d2ipklohrie3lo.cloudfront.net/0.0.0.0
address=/d2mic0r0bo3i6z.cloudfront.net/0.0.0.0
address=/d2mq0uzafv8ytp.cloudfront.net/0.0.0.0
address=/d2nlytvx51ywh9.cloudfront.net/0.0.0.0
address=/d2o307dm5mqftz.cloudfront.net/0.0.0.0
address=/d2oallm7wrqvmi.cloudfront.net/0.0.0.0
address=/d2omcicc3a4zlg.cloudfront.net/0.0.0.0
address=/d2pgy8h4i30on1.cloudfront.net/0.0.0.0
address=/d2plxos94peuwp.cloudfront.net/0.0.0.0
address=/d2r359adnh3sfn.cloudfront.net/0.0.0.0
address=/d2s64zaa9ua7uv.cloudfront.net/0.0.0.0
address=/d2tgev5wuprbqq.cloudfront.net/0.0.0.0
address=/d2tnimpzlb191i.cloudfront.net/0.0.0.0
address=/d2ubicnllnnszy.cloudfront.net/0.0.0.0
address=/d2ue9k1rhsumed.cloudfront.net/0.0.0.0
address=/d2v4glj2m8yzg5.cloudfront.net/0.0.0.0
address=/d2v9ajh2eysdau.cloudfront.net/0.0.0.0
address=/d2vt6q0n0iy66w.cloudfront.net/0.0.0.0
address=/d2yhukq7vldf1u.cloudfront.net/0.0.0.0
address=/d2z1smm3i01tnr.cloudfront.net/0.0.0.0
address=/d31807xkria1x4.cloudfront.net/0.0.0.0
address=/d32pxqbknuxsuy.cloudfront.net/0.0.0.0
address=/d33f10u0pfpplc.cloudfront.net/0.0.0.0
address=/d33otidwg56k90.cloudfront.net/0.0.0.0
address=/d34obr29voew8l.cloudfront.net/0.0.0.0
address=/d34rdvn2ky3gnm.cloudfront.net/0.0.0.0
address=/d37kzqe5knnh6t.cloudfront.net/0.0.0.0
address=/d38pxm3dmrdu6d.cloudfront.net/0.0.0.0
address=/d38r21vtgndgb1.cloudfront.net/0.0.0.0
address=/d39xqloz8t5a6x.cloudfront.net/0.0.0.0
address=/d3bvcf24wln03d.cloudfront.net/0.0.0.0
address=/d3dphmosjk9rot.cloudfront.net/0.0.0.0
address=/d3f9mcik999dte.cloudfront.net/0.0.0.0
address=/d3fzrm6pcer44x.cloudfront.net/0.0.0.0
address=/d3irruagotonpp.cloudfront.net/0.0.0.0
address=/d3iwjrnl4m67rd.cloudfront.net/0.0.0.0
address=/d3lvr7yuk4uaui.cloudfront.net/0.0.0.0
address=/d3lzezfa753mqu.cloudfront.net/0.0.0.0
address=/d3m41swuqq4sv5.cloudfront.net/0.0.0.0
address=/d3nvrqlo8rj1kw.cloudfront.net/0.0.0.0
address=/d3p9ql8flgemg7.cloudfront.net/0.0.0.0
address=/d3pkae9owd2lcf.cloudfront.net/0.0.0.0
address=/d3q2dpprdsteo.cloudfront.net/0.0.0.0
address=/d3qszud4qdthr8.cloudfront.net/0.0.0.0
address=/d3t2wca0ou3lqz.cloudfront.net/0.0.0.0
address=/d3t9ip55bsuxrf.cloudfront.net/0.0.0.0
address=/d3tdefw8pwfkbk.cloudfront.net/0.0.0.0
address=/d3vc1nm9xbncz5.cloudfront.net/0.0.0.0
address=/d5pvnbpawsaav.cloudfront.net/0.0.0.0
address=/d6bdy3eto8fyu.cloudfront.net/0.0.0.0
address=/d8qy7md4cj3gz.cloudfront.net/0.0.0.0
address=/dal9hkyfi0m0n.cloudfront.net/0.0.0.0
address=/dart.clearchannel.com/0.0.0.0
address=/dasfdasfasdf.no-ip.info/0.0.0.0
address=/data.neuroxmedia.com/0.0.0.0
address=/dbam.dashbida.com/0.0.0.0
address=/ddwht76d9jvfl.cloudfront.net/0.0.0.0
address=/dew9ckzjyt2gn.cloudfront.net/0.0.0.0
address=/dff7tx5c2qbxc.cloudfront.net/0.0.0.0
address=/display.digitalriver.com/0.0.0.0
address=/disy2s34euyqm.cloudfront.net/0.0.0.0
address=/dizixdllzznrf.cloudfront.net/0.0.0.0
address=/djlf5xdlz7m8m.cloudfront.net/0.0.0.0
address=/dkd69bwkvrht1.cloudfront.net/0.0.0.0
address=/dkdwv3lcby5zi.cloudfront.net/0.0.0.0
address=/dl392qndlveq0.cloudfront.net/0.0.0.0
address=/dl5v5atodo7gn.cloudfront.net/0.0.0.0
address=/dlupv9uqtjlie.cloudfront.net/0.0.0.0
address=/dm0acvguygm9h.cloudfront.net/0.0.0.0
address=/dm8srf206hien.cloudfront.net/0.0.0.0
address=/dp51h10v6ggpa.cloudfront.net/0.0.0.0
address=/dpsq2uzakdgqz.cloudfront.net/0.0.0.0
address=/dq2tgxnc2knif.cloudfront.net/0.0.0.0
address=/dqhi3ea93ztgv.cloudfront.net/0.0.0.0
address=/dr8pk6ovub897.cloudfront.net/0.0.0.0
address=/duct5ntjian71.cloudfront.net/0.0.0.0
address=/dvf2u7vwmkr5w.cloudfront.net/0.0.0.0
address=/dvt4pepo9om3r.cloudfront.net/0.0.0.0
address=/dx5qvhwg92mjd.cloudfront.net/0.0.0.0
address=/dxq6c0tx3v6mm.cloudfront.net/0.0.0.0
address=/dxqd86uz345mg.cloudfront.net/0.0.0.0
address=/dy48bnzanqw0v.cloudfront.net/0.0.0.0
address=/dycpc40hvg4ki.cloudfront.net/0.0.0.0
address=/dyl3p6so5yozo.cloudfront.net/0.0.0.0
address=/epowernetworktrackerimages.s3.amazonaws.com/0.0.0.0
address=/euwidget.imshopping.com/0.0.0.0
address=/events.kalooga.com/0.0.0.0
address=/ext.theglobalweb.com/0.0.0.0
address=/feeds.logicbuy.com/0.0.0.0
address=/ft.pnop.com/0.0.0.0
address=/gateway.fortunelounge.com/0.0.0.0
address=/gateways.s3.amazonaws.com/0.0.0.0
address=/geo.connexionsecure.com/0.0.0.0
address=/geobanner.friendfinder.com/0.0.0.0
address=/geobanner.passion.com/0.0.0.0
address=/gfaf-banners.s3.amazonaws.com/0.0.0.0
address=/homad-global-configs.schneevonmorgen.com/0.0.0.0
address=/im.ov.yahoo.co.jp/0.0.0.0
address=/ima3vpaid.appspot.com/0.0.0.0
address=/indieclick.3janecdn.com/0.0.0.0
address=/inskin.vo.llnwd.net/0.0.0.0
address=/k2team.kyiv.ua/0.0.0.0
address=/mads.aol.com/0.0.0.0
address=/marketing.888.com/0.0.0.0
address=/mb.zam.com/0.0.0.0
address=/mozo-widgets.f2.com.au/0.0.0.0
address=/network.aufeminin.com/0.0.0.0
address=/network.business.com/0.0.0.0
address=/oclasrv.comindex-2.htmlapu.php/0.0.0.0
address=/odin.goo.mx/0.0.0.0
address=/on.maxspeedcdn.com/0.0.0.0
address=/ox-i.cordillera.tv/0.0.0.0
address=/partner.bargaindomains.com/0.0.0.0
address=/partner.catchy.com/0.0.0.0
address=/partner.premiumdomains.com/0.0.0.0
address=/partnerads.ysm.yahoo.com/0.0.0.0
address=/partnerads1.ysm.yahoo.com/0.0.0.0
address=/partners.fshealth.com/0.0.0.0
address=/partners.optiontide.com/0.0.0.0
address=/partners.rochen.com/0.0.0.0
address=/partners.sportingbet.com.au/0.0.0.0
address=/partners.vouchedfor.co.uk/0.0.0.0
address=/partners.xpertmarket.com/0.0.0.0
address=/priceinfo.comuv.com/0.0.0.0
address=/promos.fling.com/0.0.0.0
address=/promote.pair.com/0.0.0.0
address=/promotions.iasbet.com/0.0.0.0
address=/pub.betclick.com/0.0.0.0
address=/pubs.hiddennetwork.com/0.0.0.0
address=/rack.bauermedia.co.uk/0.0.0.0
address=/res3.feedsportal.com/0.0.0.0
address=/revealads.appspot.com/0.0.0.0
address=/rotabanner.kulichki.net/0.0.0.0
address=/rotator.tradetracker.net/0.0.0.0
address=/s-yoolk-banner-assets.yoolk.com/0.0.0.0
address=/s-yoolk-billboard-assets.yoolk.com/0.0.0.0
address=/secretmedia.s3.amazonaws.com/0.0.0.0
address=/servedby.keygamesnetwork.com/0.0.0.0
address=/sitescout-video-cdn.edgesuite.net/0.0.0.0
address=/slot.union.ucweb.com/0.0.0.0
address=/smart.styria-digital.com/0.0.0.0
address=/squarespace.evyy.net/0.0.0.0
address=/stats.hosting24.com/0.0.0.0
address=/stats.sitesuite.org/0.0.0.0
address=/stuff-nzwhistleout.s3.amazonaws.com/0.0.0.0
address=/survey.g.doubleclick.net/0.0.0.0
address=/syndication.jsadapi.com/0.0.0.0
address=/syndication1.viraladnetwork.net/0.0.0.0
address=/tap.more-results.net/0.0.0.0
address=/ti.tradetracker.net/0.0.0.0
address=/track.bcvcmedia.com/0.0.0.0
address=/twinplan.com/0.0.0.0
address=/vendor1.fitschigogerl.com/0.0.0.0
address=/web-jp.ad-v.jp/0.0.0.0
address=/whistleout.s3.amazonaws.com/0.0.0.0
address=/widget.crowdignite.com/0.0.0.0
address=/widget.kelkoo.com/0.0.0.0
address=/widget.raaze.com/0.0.0.0
address=/widget.searchschoolsnetwork.com/0.0.0.0
address=/widget.shopstyle.com.au/0.0.0.0
address=/widget.solarquotes.com.au/0.0.0.0
address=/widgets.realestate.com.au/0.0.0.0
address=/wtpn.twenga.co.uk/0.0.0.0
address=/wtpn.twenga.de/0.0.0.0
address=/yb.torchbrowser.com/0.0.0.0
address=/yeas.yahoo.co.jp/0.0.0.0
address=/zapads.zapak.com/0.0.0.0
address=/zeus.qj.net/0.0.0.0
address=/iadc.qwapi.com/0.0.0.0
address=/d1nmk7iw7hajjn.cloudfront.net/0.0.0.0
address=/ad.duga.jp/0.0.0.0
address=/ad.iloveinterracial.com/0.0.0.0
address=/ads.videosz.com/0.0.0.0
address=/affiliates.thrixxx.com/0.0.0.0
address=/ard.sweetdiscreet.com/0.0.0.0
address=/bannershotlink.perfectgonzo.com/0.0.0.0
address=/blaaaa12.googlecode.com/0.0.0.0
address=/br.blackfling.com/0.0.0.0
address=/br.fling.com/0.0.0.0
address=/br.realitykings.com/0.0.0.0
address=/cpm.amateurcommunity.com/0.0.0.0
address=/dailyvideo.securejoin.com/0.0.0.0
address=/desk.cmix.org/0.0.0.0
address=/feeds.videosz.com/0.0.0.0
address=/ff.nsg.org.ua/0.0.0.0
address=/freexxxvideoclip.aebn.net/0.0.0.0
address=/geo.cliphunter.com/0.0.0.0
address=/geo.frtya.com/0.0.0.0
address=/geobanner.adultfriendfinder.com/0.0.0.0
address=/geobanner.alt.com/0.0.0.0
address=/geobanner.socialflirt.com/0.0.0.0
address=/partners.pornerbros.com/0.0.0.0
address=/s1magnettvcom.maynemyltf.netdna-cdn.com/0.0.0.0
address=/surv.xbizmedia.com/0.0.0.0
address=/sweet.game-rust.ru/0.0.0.0
address=/widgets.comcontent.net/0.0.0.0
address=/widgetssec.cam-content.com/0.0.0.0
address=/a.cdngeek.net/0.0.0.0
address=/a.clipconverter.cc/0.0.0.0
address=/a.giantrealm.com/0.0.0.0
address=/a.i-sgcm.com/0.0.0.0
address=/a.kat.cr/0.0.0.0
address=/a.kickass.to/0.0.0.0
address=/a.lolwot.com/0.0.0.0
address=/ac2.msn.com/0.0.0.0
address=/access.njherald.com/0.0.0.0
address=/ad.cooks.com/0.0.0.0
address=/ad.digitimes.com.tw/0.0.0.0
address=/ad.directmirror.com/0.0.0.0
address=/ad.download.cnet.com/0.0.0.0
address=/ad.evozi.com/0.0.0.0
address=/ad.fnnews.com/0.0.0.0
address=/ad.jamster.com/0.0.0.0
address=/ad.lyricswire.com/0.0.0.0
address=/ad.mangareader.net/0.0.0.0
address=/ad.newegg.com/0.0.0.0
address=/ad.pandora.tv/0.0.0.0
address=/ad.reachlocal.com/0.0.0.0
address=/ad.search.ch/0.0.0.0
address=/ad.services.distractify.com/0.0.0.0
address=/adcitrus.com/0.0.0.0
address=/addirector.vindicosuite.com/0.0.0.0
address=/adds.weatherology.com/0.0.0.0
address=/adlink.shopsafe.co.nz/0.0.0.0
address=/admeta.vo.llnwd.net/0.0.0.0
address=/ads-rolandgarros.com/0.0.0.0
address=/ads.pof.com/0.0.0.0
address=/ads.yahoo.com/0.0.0.0
address=/ads.zynga.com/0.0.0.0
address=/adsatt.abcnews.starwave.com/0.0.0.0
address=/adsatt.espn.starwave.com/0.0.0.0
address=/adshare.freedocast.com/0.0.0.0
address=/adsor.openrunner.com/0.0.0.0
address=/adss.yahoo.com/0.0.0.0
address=/adstil.indiatimes.com/0.0.0.0
address=/adtest.theonion.com/0.0.0.0
address=/advertise.twitpic.com/0.0.0.0
address=/advice-ads-cdn.vice.com/0.0.0.0
address=/adx.kat.ph/0.0.0.0
address=/aff.lmgtfy.com/0.0.0.0
address=/ajnad.aljazeera.net/0.0.0.0
address=/amz.steamprices.com/0.0.0.0
address=/analytics.mmosite.com/0.0.0.0
address=/as.inbox.com/0.0.0.0
address=/asd.projectfreetv.so/0.0.0.0
address=/avpa.dzone.com/0.0.0.0
address=/b.localpages.com/0.0.0.0
address=/b.thefile.me/0.0.0.0
address=/ba.ccm2.net/0.0.0.0
address=/ba.kioskea.net/0.0.0.0
address=/banner.automotiveworld.com/0.0.0.0
address=/banner.itweb.co.za/0.0.0.0
address=/banners.beevpn.com/0.0.0.0
address=/banners.beted.com/0.0.0.0
address=/banners.clubworldgroup.com/0.0.0.0
address=/banners.expressindia.com/0.0.0.0
address=/banners.i-comers.com/0.0.0.0
address=/banners.itweb.co.za/0.0.0.0
address=/banners.playocio.com/0.0.0.0
address=/beap.gemini.yahoo.com/0.0.0.0
address=/bizanti.youwatch.org/0.0.0.0
address=/bnrs.ilm.ee/0.0.0.0
address=/bwp.theinsider.com.com/0.0.0.0
address=/cadvv.heraldm.com/0.0.0.0
address=/cadvv.koreaherald.com/0.0.0.0
address=/canvas.thenextweb.com/0.0.0.0
address=/click.livedoor.com/0.0.0.0
address=/clicks.superpages.com/0.0.0.0
address=/cnetwidget.creativemark.co.uk/0.0.0.0
address=/collector.viki.io/0.0.0.0
address=/creatives.livejasmin.com/0.0.0.0
address=/d.annarbor.com/0.0.0.0
address=/d.businessinsider.com/0.0.0.0
address=/d.gossipcenter.com/0.0.0.0
address=/d.thelocal.com/0.0.0.0
address=/dads.new.digg.com/0.0.0.0
address=/dailydeals.amarillo.com/0.0.0.0
address=/dailydeals.augustachronicle.com/0.0.0.0
address=/dailydeals.brainerddispatch.com/0.0.0.0
address=/dailydeals.lubbockonline.com/0.0.0.0
address=/dailydeals.onlineathens.com/0.0.0.0
address=/dailydeals.savannahnow.com/0.0.0.0
address=/dcad.watersoul.com/0.0.0.0
address=/deals.ledgertranscript.com/0.0.0.0
address=/digdug.divxnetworks.com/0.0.0.0
address=/display.superbay.net/0.0.0.0
address=/dontblockme.modaco.com/0.0.0.0
address=/ehow.com/media/ad.html/0.0.0.0
address=/eva.ucas.com/0.0.0.0
address=/fan.twitch.tv/0.0.0.0
address=/fimserve.ign.com/0.0.0.0
address=/findnsave.idahostatesman.com/0.0.0.0
address=/g.brothersoft.com/0.0.0.0
address=/gameads.digyourowngrave.com/0.0.0.0
address=/geoshopping.nzherald.co.nz/0.0.0.0
address=/get.thefile.me/0.0.0.0
address=/gfx.infomine.com/0.0.0.0
address=/green.virtual-nights.com/0.0.0.0
address=/hejban.youwatch.org/0.0.0.0
address=/ibanners.empoweredcomms.com.au/0.0.0.0
address=/iframe.travel.yahoo.com/0.0.0.0
address=/imads.rediff.com/0.0.0.0
address=/kat-ads.torrenticity.com/0.0.0.0
address=/keepthelighton.vpsboard.com/0.0.0.0
address=/kermit.macnn.com/0.0.0.0
address=/life.imagepix.org/0.0.0.0
address=/ll.a.hulu.com/0.0.0.0
address=/londonprivaterentals.standard.co.uk/0.0.0.0
address=/looky.hyves.org/0.0.0.0
address=/lw2.gamecopyworld.com/0.0.0.0
address=/mads.dailymail.co.uk/0.0.0.0
address=/marketingsolutions.yahoo.com/0.0.0.0
address=/mb.hockeybuzz.com/0.0.0.0
address=/mealsandsteals.sandiego6.com/0.0.0.0
address=/media-delivery.armorgames.com/0.0.0.0
address=/media-mgmt.armorgames.com/0.0.0.0
address=/mediamgr.ugo.com/0.0.0.0
address=/nest.youwatch.org/0.0.0.0
address=/netspidermm.indiatimes.com/0.0.0.0
address=/network.sofeminine.co.uk/0.0.0.0
address=/noram.srv.ysm.yahoo.com/0.0.0.0
address=/oas.autotrader.co.uk/0.0.0.0
address=/oas.skyscanner.net/0.0.0.0
address=/oasc07.citywire.co.uk/0.0.0.0
address=/oascentral.chron.com/0.0.0.0
address=/oascentral.hosted.ap.org/0.0.0.0
address=/oascentral.newsmax.com/0.0.0.0
address=/ox-d.rantsports.com/0.0.0.0
address=/ox-d.sbnation.com/0.0.0.0
address=/ox-d.wetransfer.com/0.0.0.0
address=/ox.furaffinity.net/0.0.0.0
address=/partners-z.com/0.0.0.0
address=/photo.net/equipment/pg-160/0.0.0.0
address=/player.1800coupon.com/0.0.0.0
address=/player.1stcreditrepairs.com/0.0.0.0
address=/player.800directories.com/0.0.0.0
address=/player.accoona.com/0.0.0.0
address=/player.alloutwedding.com/0.0.0.0
address=/player.insuranceandhealth.com/0.0.0.0
address=/pmm.people.com.cn/0.0.0.0
address=/pop-over.powered-by.justplayzone.com/0.0.0.0
address=/prerollads.ign.com/0.0.0.0
address=/promo.fileforum.com/0.0.0.0
address=/rad.microsoft.com/0.0.0.0
address=/rad.msn.com/0.0.0.0
address=/red.bayimg.net/0.0.0.0
address=/redvase.bravenet.com/0.0.0.0
address=/richmedia.yimg.com/0.0.0.0
address=/roia.com/0.0.0.0
address=/rpt.anchorfree.net/0.0.0.0
address=/searchignited.com/0.0.0.0
address=/sebar.thand.info/0.0.0.0
address=/shoppingpartners2.futurenet.com/0.0.0.0
address=/sponsors.s2ki.com/0.0.0.0
address=/sponsors.webosroundup.com/0.0.0.0
address=/srv.thespacereporter.com/0.0.0.0
address=/storewidget.pcauthority.com.au/0.0.0.0
address=/stream.heavenmedia.net/0.0.0.0
address=/tanzanite.infomine.com/0.0.0.0
address=/targetedinfo.com/0.0.0.0
address=/targetedtopic.com/0.0.0.0
address=/thejesperbay.com/0.0.0.0
address=/themis.yahoo.com/0.0.0.0
address=/tmcs.net/0.0.0.0
address=/tom.itv.com/0.0.0.0
address=/tracking.hostgator.com/0.0.0.0
address=/ua.badongo.com/0.0.0.0
address=/uimserv.net/0.0.0.0
address=/unicast.ign.com/0.0.0.0
address=/unicast.msn.com/0.0.0.0
address=/verdict.abc.go.com/0.0.0.0
address=/vice-ads-cdn.vice.com/0.0.0.0
address=/w.homes.yahoo.net/0.0.0.0
address=/webmaster.extabit.com/0.0.0.0
address=/widget.directory.dailycommercial.com/0.0.0.0
address=/x.castanet.net/0.0.0.0
address=/yea.uploadimagex.com/0.0.0.0
address=/yesbeby.whies.info/0.0.0.0
address=/yrt7dgkf.exashare.com/0.0.0.0
address=/ysm.yahoo.com/0.0.0.0
address=/zads.care2.com/0.0.0.0
address=/a.eporner.com/0.0.0.0
address=/a.heavy-r.com/0.0.0.0
address=/a.killergram-girls.com/0.0.0.0
address=/ad.eporner.com/0.0.0.0
address=/ad.slutload.com/0.0.0.0
address=/ad.thisav.com/0.0.0.0
address=/ad.userporn.com/0.0.0.0
address=/ads.xxxbunker.com/0.0.0.0
address=/affiliates.goodvibes.com/0.0.0.0
address=/banner1.pornhost.com/0.0.0.0
address=/banners.cams.com/0.0.0.0
address=/bob.crazyshit.com/0.0.0.0
address=/brcache.madthumbs.com/0.0.0.0
address=/creatives.cliphunter.com/0.0.0.0
address=/creatives.pichunter.com/0.0.0.0
address=/dot.eporner.com/0.0.0.0
address=/dot2.eporner.com/0.0.0.0
address=/exit.macandbumble.com/0.0.0.0
address=/lw1.cdmediaworld.com/0.0.0.0
address=/m2.xhamster.com/0.0.0.0
address=/partners.xhamster.com/0.0.0.0
address=/pr-static.empflix.com/0.0.0.0
address=/pr-static.tnaflix.com/0.0.0.0
address=/r.radikal.ru/0.0.0.0
address=/rev.fapdu.com/0.0.0.0
address=/site.img.4tube.com/0.0.0.0
address=/static.kinghost.com/0.0.0.0
address=/x.eroticity.net/0.0.0.0
address=/x.vipergirls.to/0.0.0.0

View File

@ -8,7 +8,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=luci-app-unblockmusic
PKG_VERSION:=2.3.1
PKG_RELEASE:=38
PKG_RELEASE:=39
PKG_CONFIG_DEPENDS := \
CONFIG_UnblockNeteaseMusic_Go \

View File

@ -45,7 +45,7 @@ ip_rule()
do
local ip=$(uci_get_by_name acl_rule ipaddr '' $i)
local mode=$(uci_get_by_name acl_rule filter_mode '' $i)
echo $i $ip $mode
case "$mode" in
http)
ipset -! add music_http $ip

View File

@ -10,7 +10,7 @@ LUCI_TITLE:=LuCI for Zerotier
LUCI_DEPENDS:=+zerotier
LUCI_PKGARCH:=all
PKG_VERSION:=1.0
PKG_RELEASE:=15
PKG_RELEASE:=17
include $(TOPDIR)/feeds/luci/luci.mk

View File

@ -83,7 +83,7 @@ start_instance() {
start_service() {
config_load 'zerotier'
config_foreach start_instance 'zerotier'
touch /tmp/zero.log && nohup /etc/zerotier.start > /tmp/zero.log 2>&1 &
touch /tmp/zero.log && /etc/zerotier.start > /tmp/zero.log 2>&1 &
}
stop_instance() {

View File

@ -13,7 +13,7 @@ fi
nat_enable=$(uci get zerotier.sample_config.nat)
zt0=$(ifconfig | grep zt | awk '{print $1}')
echo "zt interface $zt0 is started!"
echo $zt0 > /tmp/zt.nif
iptables -D FORWARD -i $zt0 -j ACCEPT 2>/dev/null
iptables -D FORWARD -o $zt0 -j ACCEPT 2>/dev/null

View File

@ -6120,3 +6120,8 @@ CONFIG_ZONE_DMA=y
# CONFIG_ZRAM_MEMORY_TRACKING is not set
# CONFIG_ZSMALLOC is not set
# CONFIG_ZX_TDM is not set
<<<<<<< HEAD
=======
# CONFIG_NET_ACT_CTINFO is not set
# CONFIG_RPI_AXIPERF is not set
>>>>>>> 252c766ae3fcf52e1610d534056f17d556ec3c99