Merge Lean's source
This commit is contained in:
commit
93f4e20f3f
@ -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)
|
||||
|
||||
@ -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,
|
||||
},
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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)
|
||||
@ -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,
|
||||
},
|
||||
|
||||
@ -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])
|
||||
@ -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)
|
||||
@ -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 = {
|
||||
@ -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;
|
||||
@ -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);
|
||||
@ -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)) {
|
||||
@ -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;
|
||||
@ -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;
|
||||
@ -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)
|
||||
|
||||
@ -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);
|
||||
@ -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:
|
||||
@ -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;
|
||||
@ -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
|
||||
@ -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);
|
||||
@ -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) {
|
||||
@ -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;
|
||||
|
||||
}
|
||||
@ -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;
|
||||
@ -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;
|
||||
@ -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");
|
||||
@ -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;
|
||||
@ -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
|
||||
@ -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;
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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
|
||||
*/
|
||||
|
||||
@ -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
|
||||
@ -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 */
|
||||
@ -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.
|
||||
*/
|
||||
@ -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);
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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))
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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/
|
||||
|
||||
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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
|
||||
@ -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 Host,filtering 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 Mode(The slowest, 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: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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -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%>
|
||||
@ -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 Host,filtering 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 Mode(The slowest, the best effects)"
|
||||
msgid "Global Mode (The slowest and the best effects)"
|
||||
msgstr "全局模式(最慢, 效果最好)"
|
||||
|
||||
msgid "Plus + Mode(Filter 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黑名单"
|
||||
|
||||
|
||||
@ -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}
|
||||
}
|
||||
|
||||
|
||||
@ -1,3 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
sleep 40 && /etc/init.d/adbyby restart
|
||||
@ -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
|
||||
|
||||
11
package/lean/luci-app-adbyby-plus/root/usr/share/adbyby/ad-update
Executable file
11
package/lean/luci-app-adbyby-plus/root/usr/share/adbyby/ad-update
Executable 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
|
||||
4
package/lean/luci-app-adbyby-plus/root/usr/share/adbyby/adbybyfirst.sh
Executable file
4
package/lean/luci-app-adbyby-plus/root/usr/share/adbyby/adbybyfirst.sh
Executable file
@ -0,0 +1,4 @@
|
||||
#!/bin/sh
|
||||
|
||||
PROG_PATH=$(pwd)
|
||||
$PROG_PATH/adbybyupdate.sh
|
||||
48
package/lean/luci-app-adbyby-plus/root/usr/share/adbyby/adbybyupdate.sh
Executable file
48
package/lean/luci-app-adbyby-plus/root/usr/share/adbyby/adbybyupdate.sh
Executable 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
|
||||
|
||||
@ -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
|
||||
@ -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 \
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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() {
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
Reference in New Issue
Block a user