mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2024-11-30 21:15:19 +02:00
[mac80211] Update to compat-wireless-2009-06-02
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@16300 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
parent
179d9f7f00
commit
6605084cf1
@ -17,12 +17,12 @@ ifneq ($(CONFIG_LINUX_2_6_21)$(CONFIG_LINUX_2_6_23)$(CONFIG_LINUX_2_6_24)$(CONFI
|
|||||||
PKG_MD5SUM:=9563ceeed86bca0859ad5f010623277c
|
PKG_MD5SUM:=9563ceeed86bca0859ad5f010623277c
|
||||||
PATCH_DIR:=./patches-old
|
PATCH_DIR:=./patches-old
|
||||||
else
|
else
|
||||||
PKG_VERSION:=2009-05-21
|
PKG_VERSION:=2009-06-02
|
||||||
PKG_RELEASE:=1
|
PKG_RELEASE:=1
|
||||||
PKG_SOURCE_URL:= \
|
PKG_SOURCE_URL:= \
|
||||||
http://www.orbit-lab.org/kernel/compat-wireless-2.6/2009/05 \
|
http://www.orbit-lab.org/kernel/compat-wireless-2.6/2009/06 \
|
||||||
http://wireless.kernel.org/download/compat-wireless-2.6
|
http://wireless.kernel.org/download/compat-wireless-2.6
|
||||||
PKG_MD5SUM:=9d15b1d02c7ab48e96ec2f3f9b336e66
|
PKG_MD5SUM:=2209c48613e69c08436cfd7dd3b10893
|
||||||
endif
|
endif
|
||||||
|
|
||||||
PKG_SOURCE:=compat-wireless-$(PKG_VERSION).tar.bz2
|
PKG_SOURCE:=compat-wireless-$(PKG_VERSION).tar.bz2
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
From ff22aa7443c57f49f9fdaf703aa7035c1b13d7f4 Mon Sep 17 00:00:00 2001
|
From ef5c58e9a39ba9a264fec2c2bfddbae51fe85da1 Mon Sep 17 00:00:00 2001
|
||||||
From: Ivo van Doorn <IvDoorn@gmail.com>
|
From: Ivo van Doorn <IvDoorn@gmail.com>
|
||||||
Date: Sun, 26 Apr 2009 15:49:55 +0200
|
Date: Thu, 21 May 2009 19:17:53 +0200
|
||||||
Subject: [PATCH 1/4] rt2x00: Add rt2x00soc bus module
|
Subject: [PATCH 1/2] rt2x00: Add rt2x00soc bus module
|
||||||
|
|
||||||
Add new library module for SoC drivers.
|
Add new library module for SoC drivers.
|
||||||
This is needed to fully support the platform
|
This is needed to fully support the platform
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
From 67432230daedc23f808b79173703e27675fd0659 Mon Sep 17 00:00:00 2001
|
From c5d3ab153ef4b68c9c6fab32f6f292c4394b72d3 Mon Sep 17 00:00:00 2001
|
||||||
From: Ivo van Doorn <IvDoorn@gmail.com>
|
From: Ivo van Doorn <IvDoorn@gmail.com>
|
||||||
Date: Sun, 26 Apr 2009 15:54:03 +0200
|
Date: Thu, 21 May 2009 19:21:31 +0200
|
||||||
Subject: [PATCH 2/4] rt2x00: Implement support for rt2800pci
|
Subject: [PATCH 2/2] rt2x00: Implement support for rt2800pci
|
||||||
|
|
||||||
Add support for the rt2800pci chipset.
|
Add support for the rt2800pci chipset.
|
||||||
|
|
||||||
@ -15,10 +15,10 @@ Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
|
|||||||
---
|
---
|
||||||
drivers/net/wireless/rt2x00/Kconfig | 26 +
|
drivers/net/wireless/rt2x00/Kconfig | 26 +
|
||||||
drivers/net/wireless/rt2x00/Makefile | 1 +
|
drivers/net/wireless/rt2x00/Makefile | 1 +
|
||||||
drivers/net/wireless/rt2x00/rt2800pci.c | 3245 +++++++++++++++++++++++++++++++
|
drivers/net/wireless/rt2x00/rt2800pci.c | 3241 +++++++++++++++++++++++++++++++
|
||||||
drivers/net/wireless/rt2x00/rt2800pci.h | 1927 ++++++++++++++++++
|
drivers/net/wireless/rt2x00/rt2800pci.h | 1929 ++++++++++++++++++
|
||||||
drivers/net/wireless/rt2x00/rt2x00.h | 6 +
|
drivers/net/wireless/rt2x00/rt2x00.h | 6 +
|
||||||
5 files changed, 5205 insertions(+), 0 deletions(-)
|
5 files changed, 5203 insertions(+), 0 deletions(-)
|
||||||
create mode 100644 drivers/net/wireless/rt2x00/rt2800pci.c
|
create mode 100644 drivers/net/wireless/rt2x00/rt2800pci.c
|
||||||
create mode 100644 drivers/net/wireless/rt2x00/rt2800pci.h
|
create mode 100644 drivers/net/wireless/rt2x00/rt2800pci.h
|
||||||
|
|
||||||
@ -34,7 +34,7 @@ Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
|
|||||||
obj-$(CONFIG_RT2800USB) += rt2800usb.o
|
obj-$(CONFIG_RT2800USB) += rt2800usb.o
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/drivers/net/wireless/rt2x00/rt2800pci.c
|
+++ b/drivers/net/wireless/rt2x00/rt2800pci.c
|
||||||
@@ -0,0 +1,3245 @@
|
@@ -0,0 +1,3241 @@
|
||||||
+/*
|
+/*
|
||||||
+ Copyright (C) 2004 - 2009 rt2x00 SourceForge Project
|
+ Copyright (C) 2004 - 2009 rt2x00 SourceForge Project
|
||||||
+ <http://rt2x00.serialmonkey.com>
|
+ <http://rt2x00.serialmonkey.com>
|
||||||
@ -755,6 +755,11 @@ Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
|
|||||||
+ rt2x00_set_field32(®, XIFS_TIME_CFG_EIFS, erp->eifs);
|
+ rt2x00_set_field32(®, XIFS_TIME_CFG_EIFS, erp->eifs);
|
||||||
+ rt2x00_set_field32(®, XIFS_TIME_CFG_BB_RXEND_ENABLE, 1);
|
+ rt2x00_set_field32(®, XIFS_TIME_CFG_BB_RXEND_ENABLE, 1);
|
||||||
+ rt2x00pci_register_write(rt2x00dev, XIFS_TIME_CFG, reg);
|
+ rt2x00pci_register_write(rt2x00dev, XIFS_TIME_CFG, reg);
|
||||||
|
+
|
||||||
|
+ rt2x00pci_register_read(rt2x00dev, BCN_TIME_CFG, ®);
|
||||||
|
+ rt2x00_set_field32(®, BCN_TIME_CFG_BEACON_INTERVAL,
|
||||||
|
+ erp->beacon_int * 16);
|
||||||
|
+ rt2x00pci_register_write(rt2x00dev, BCN_TIME_CFG, reg);
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
+static void rt2800pci_config_ant(struct rt2x00_dev *rt2x00dev,
|
+static void rt2800pci_config_ant(struct rt2x00_dev *rt2x00dev,
|
||||||
@ -1095,17 +1100,6 @@ Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
|
|||||||
+ rt2x00pci_register_write(rt2x00dev, TX_RTY_CFG, reg);
|
+ rt2x00pci_register_write(rt2x00dev, TX_RTY_CFG, reg);
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
+static void rt2800pci_config_duration(struct rt2x00_dev *rt2x00dev,
|
|
||||||
+ struct rt2x00lib_conf *libconf)
|
|
||||||
+{
|
|
||||||
+ u32 reg;
|
|
||||||
+
|
|
||||||
+ rt2x00pci_register_read(rt2x00dev, BCN_TIME_CFG, ®);
|
|
||||||
+ rt2x00_set_field32(®, BCN_TIME_CFG_BEACON_INTERVAL,
|
|
||||||
+ libconf->conf->beacon_int * 16);
|
|
||||||
+ rt2x00pci_register_write(rt2x00dev, BCN_TIME_CFG, reg);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static void rt2800pci_config_ps(struct rt2x00_dev *rt2x00dev,
|
+static void rt2800pci_config_ps(struct rt2x00_dev *rt2x00dev,
|
||||||
+ struct rt2x00lib_conf *libconf)
|
+ struct rt2x00lib_conf *libconf)
|
||||||
+{
|
+{
|
||||||
@ -1150,8 +1144,6 @@ Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
|
|||||||
+ rt2800pci_config_txpower(rt2x00dev, libconf->conf->power_level);
|
+ rt2800pci_config_txpower(rt2x00dev, libconf->conf->power_level);
|
||||||
+ if (flags & IEEE80211_CONF_CHANGE_RETRY_LIMITS)
|
+ if (flags & IEEE80211_CONF_CHANGE_RETRY_LIMITS)
|
||||||
+ rt2800pci_config_retry_limit(rt2x00dev, libconf);
|
+ rt2800pci_config_retry_limit(rt2x00dev, libconf);
|
||||||
+ if (flags & IEEE80211_CONF_CHANGE_BEACON_INTERVAL)
|
|
||||||
+ rt2800pci_config_duration(rt2x00dev, libconf);
|
|
||||||
+ if (flags & IEEE80211_CONF_CHANGE_PS)
|
+ if (flags & IEEE80211_CONF_CHANGE_PS)
|
||||||
+ rt2800pci_config_ps(rt2x00dev, libconf);
|
+ rt2800pci_config_ps(rt2x00dev, libconf);
|
||||||
+}
|
+}
|
||||||
@ -2085,13 +2077,17 @@ Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
|
|||||||
+static int rt2800pci_set_state(struct rt2x00_dev *rt2x00dev,
|
+static int rt2800pci_set_state(struct rt2x00_dev *rt2x00dev,
|
||||||
+ enum dev_state state)
|
+ enum dev_state state)
|
||||||
+{
|
+{
|
||||||
+ rt2x00pci_register_write(rt2x00dev, AUTOWAKEUP_CFG, 0);
|
+ /*
|
||||||
|
+ * Always put the device to sleep (even when we intend to wakup!)
|
||||||
|
+ * if the device is booting and wasn't asleep it will return
|
||||||
|
+ * failure when attempting to wakup.
|
||||||
|
+ */
|
||||||
|
+ rt2800pci_mcu_request(rt2x00dev, MCU_SLEEP, 0xff, 0, 2);
|
||||||
+
|
+
|
||||||
+ if (state == STATE_AWAKE) {
|
+ if (state == STATE_AWAKE) {
|
||||||
+ rt2800pci_mcu_request(rt2x00dev, MCU_WAKEUP, TOKEN_WAKUP, 0, 0);
|
+ rt2800pci_mcu_request(rt2x00dev, MCU_WAKEUP, TOKEN_WAKUP, 0, 0);
|
||||||
+ rt2800pci_mcu_status(rt2x00dev, TOKEN_WAKUP);
|
+ rt2800pci_mcu_status(rt2x00dev, TOKEN_WAKUP);
|
||||||
+ } else
|
+ }
|
||||||
+ rt2800pci_mcu_request(rt2x00dev, MCU_SLEEP, 0xff, 0, 2);
|
|
||||||
+
|
+
|
||||||
+ return 0;
|
+ return 0;
|
||||||
+}
|
+}
|
||||||
@ -2943,6 +2939,7 @@ Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
|
|||||||
+ if (!rt2x00_rt(&rt2x00dev->chip, RT2880) &&
|
+ if (!rt2x00_rt(&rt2x00dev->chip, RT2880) &&
|
||||||
+ !rt2x00_rt(&rt2x00dev->chip, RT3052))
|
+ !rt2x00_rt(&rt2x00dev->chip, RT3052))
|
||||||
+ __set_bit(DRIVER_REQUIRE_FIRMWARE, &rt2x00dev->flags);
|
+ __set_bit(DRIVER_REQUIRE_FIRMWARE, &rt2x00dev->flags);
|
||||||
|
+ __set_bit(DRIVER_REQUIRE_DMA, &rt2x00dev->flags);
|
||||||
+ __set_bit(DRIVER_REQUIRE_L2PAD, &rt2x00dev->flags);
|
+ __set_bit(DRIVER_REQUIRE_L2PAD, &rt2x00dev->flags);
|
||||||
+ if (!modparam_nohwcrypt)
|
+ if (!modparam_nohwcrypt)
|
||||||
+ __set_bit(CONFIG_SUPPORT_HW_CRYPTO, &rt2x00dev->flags);
|
+ __set_bit(CONFIG_SUPPORT_HW_CRYPTO, &rt2x00dev->flags);
|
||||||
@ -3098,7 +3095,6 @@ Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
|
|||||||
+ .add_interface = rt2x00mac_add_interface,
|
+ .add_interface = rt2x00mac_add_interface,
|
||||||
+ .remove_interface = rt2x00mac_remove_interface,
|
+ .remove_interface = rt2x00mac_remove_interface,
|
||||||
+ .config = rt2x00mac_config,
|
+ .config = rt2x00mac_config,
|
||||||
+ .config_interface = rt2x00mac_config_interface,
|
|
||||||
+ .configure_filter = rt2x00mac_configure_filter,
|
+ .configure_filter = rt2x00mac_configure_filter,
|
||||||
+ .set_key = rt2x00mac_set_key,
|
+ .set_key = rt2x00mac_set_key,
|
||||||
+ .get_stats = rt2x00mac_get_stats,
|
+ .get_stats = rt2x00mac_get_stats,
|
||||||
@ -3282,7 +3278,7 @@ Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
|
|||||||
+module_exit(rt2800pci_exit);
|
+module_exit(rt2800pci_exit);
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/drivers/net/wireless/rt2x00/rt2800pci.h
|
+++ b/drivers/net/wireless/rt2x00/rt2800pci.h
|
||||||
@@ -0,0 +1,1927 @@
|
@@ -0,0 +1,1929 @@
|
||||||
+/*
|
+/*
|
||||||
+ Copyright (C) 2004 - 2009 rt2x00 SourceForge Project
|
+ Copyright (C) 2004 - 2009 rt2x00 SourceForge Project
|
||||||
+ <http://rt2x00.serialmonkey.com>
|
+ <http://rt2x00.serialmonkey.com>
|
||||||
@ -4999,6 +4995,7 @@ Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
|
|||||||
+#define MCU_SLEEP 0x30
|
+#define MCU_SLEEP 0x30
|
||||||
+#define MCU_WAKEUP 0x31
|
+#define MCU_WAKEUP 0x31
|
||||||
+#define MCU_RADIO_OFF 0x35
|
+#define MCU_RADIO_OFF 0x35
|
||||||
|
+#define MCU_CURRENT 0x36
|
||||||
+#define MCU_LED 0x50
|
+#define MCU_LED 0x50
|
||||||
+#define MCU_LED_STRENGTH 0x51
|
+#define MCU_LED_STRENGTH 0x51
|
||||||
+#define MCU_LED_1 0x52
|
+#define MCU_LED_1 0x52
|
||||||
@ -5007,6 +5004,7 @@ Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
|
|||||||
+#define MCU_RADAR 0x60
|
+#define MCU_RADAR 0x60
|
||||||
+#define MCU_BOOT_SIGNAL 0x72
|
+#define MCU_BOOT_SIGNAL 0x72
|
||||||
+#define MCU_BBP_SIGNAL 0x80
|
+#define MCU_BBP_SIGNAL 0x80
|
||||||
|
+#define MCU_POWER_SAVE 0x83
|
||||||
+
|
+
|
||||||
+/*
|
+/*
|
||||||
+ * MCU mailbox tokens
|
+ * MCU mailbox tokens
|
||||||
|
@ -1,21 +0,0 @@
|
|||||||
From ff3453072abf45ccf05e83f69c69951f3d7f7160 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Ivo van Doorn <IvDoorn@gmail.com>
|
|
||||||
Date: Sun, 26 Apr 2009 17:35:38 +0200
|
|
||||||
Subject: [PATCH 3/4] rt2x00: Allocate DMA (rt2800pci)
|
|
||||||
|
|
||||||
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
|
||||||
Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
|
|
||||||
---
|
|
||||||
drivers/net/wireless/rt2x00/rt2800pci.c | 1 +
|
|
||||||
1 files changed, 1 insertions(+), 0 deletions(-)
|
|
||||||
|
|
||||||
--- a/drivers/net/wireless/rt2x00/rt2800pci.c
|
|
||||||
+++ b/drivers/net/wireless/rt2x00/rt2800pci.c
|
|
||||||
@@ -2906,6 +2906,7 @@ static int rt2800pci_probe_hw(struct rt2
|
|
||||||
if (!rt2x00_rt(&rt2x00dev->chip, RT2880) &&
|
|
||||||
!rt2x00_rt(&rt2x00dev->chip, RT3052))
|
|
||||||
__set_bit(DRIVER_REQUIRE_FIRMWARE, &rt2x00dev->flags);
|
|
||||||
+ __set_bit(DRIVER_REQUIRE_DMA, &rt2x00dev->flags);
|
|
||||||
__set_bit(DRIVER_REQUIRE_L2PAD, &rt2x00dev->flags);
|
|
||||||
if (!modparam_nohwcrypt)
|
|
||||||
__set_bit(CONFIG_SUPPORT_HW_CRYPTO, &rt2x00dev->flags);
|
|
@ -1,52 +0,0 @@
|
|||||||
From 690559385626e98e2a91c280a8bca195f071756c Mon Sep 17 00:00:00 2001
|
|
||||||
From: Ivo van Doorn <IvDoorn@gmail.com>
|
|
||||||
Date: Tue, 28 Apr 2009 20:12:43 +0200
|
|
||||||
Subject: [PATCH 4/4] rt2x00: Update from rt2860 driver (rt2800pci)
|
|
||||||
|
|
||||||
Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
|
|
||||||
---
|
|
||||||
drivers/net/wireless/rt2x00/rt2800pci.c | 10 +++++++---
|
|
||||||
drivers/net/wireless/rt2x00/rt2800pci.h | 2 ++
|
|
||||||
2 files changed, 9 insertions(+), 3 deletions(-)
|
|
||||||
|
|
||||||
--- a/drivers/net/wireless/rt2x00/rt2800pci.c
|
|
||||||
+++ b/drivers/net/wireless/rt2x00/rt2800pci.c
|
|
||||||
@@ -2048,13 +2048,17 @@ static void rt2800pci_disable_radio(stru
|
|
||||||
static int rt2800pci_set_state(struct rt2x00_dev *rt2x00dev,
|
|
||||||
enum dev_state state)
|
|
||||||
{
|
|
||||||
- rt2x00pci_register_write(rt2x00dev, AUTOWAKEUP_CFG, 0);
|
|
||||||
+ /*
|
|
||||||
+ * Always put the device to sleep (even when we intend to wakup!)
|
|
||||||
+ * if the device is booting and wasn't asleep it will return
|
|
||||||
+ * failure when attempting to wakup.
|
|
||||||
+ */
|
|
||||||
+ rt2800pci_mcu_request(rt2x00dev, MCU_SLEEP, 0xff, 0, 2);
|
|
||||||
|
|
||||||
if (state == STATE_AWAKE) {
|
|
||||||
rt2800pci_mcu_request(rt2x00dev, MCU_WAKEUP, TOKEN_WAKUP, 0, 0);
|
|
||||||
rt2800pci_mcu_status(rt2x00dev, TOKEN_WAKUP);
|
|
||||||
- } else
|
|
||||||
- rt2800pci_mcu_request(rt2x00dev, MCU_SLEEP, 0xff, 0, 2);
|
|
||||||
+ }
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
--- a/drivers/net/wireless/rt2x00/rt2800pci.h
|
|
||||||
+++ b/drivers/net/wireless/rt2x00/rt2800pci.h
|
|
||||||
@@ -1714,6 +1714,7 @@ struct mac_iveiv_entry {
|
|
||||||
#define MCU_SLEEP 0x30
|
|
||||||
#define MCU_WAKEUP 0x31
|
|
||||||
#define MCU_RADIO_OFF 0x35
|
|
||||||
+#define MCU_CURRENT 0x36
|
|
||||||
#define MCU_LED 0x50
|
|
||||||
#define MCU_LED_STRENGTH 0x51
|
|
||||||
#define MCU_LED_1 0x52
|
|
||||||
@@ -1722,6 +1723,7 @@ struct mac_iveiv_entry {
|
|
||||||
#define MCU_RADAR 0x60
|
|
||||||
#define MCU_BOOT_SIGNAL 0x72
|
|
||||||
#define MCU_BBP_SIGNAL 0x80
|
|
||||||
+#define MCU_POWER_SAVE 0x83
|
|
||||||
|
|
||||||
/*
|
|
||||||
* MCU mailbox tokens
|
|
@ -1,10 +0,0 @@
|
|||||||
--- a/drivers/net/wireless/rt2x00/rt2800pci.c
|
|
||||||
+++ b/drivers/net/wireless/rt2x00/rt2800pci.c
|
|
||||||
@@ -3066,7 +3066,6 @@ static const struct ieee80211_ops rt2800
|
|
||||||
.add_interface = rt2x00mac_add_interface,
|
|
||||||
.remove_interface = rt2x00mac_remove_interface,
|
|
||||||
.config = rt2x00mac_config,
|
|
||||||
- .config_interface = rt2x00mac_config_interface,
|
|
||||||
.configure_filter = rt2x00mac_configure_filter,
|
|
||||||
.set_key = rt2x00mac_set_key,
|
|
||||||
.get_stats = rt2x00mac_get_stats,
|
|
@ -1,6 +1,6 @@
|
|||||||
--- a/drivers/net/wireless/ath/ath9k/main.c
|
--- a/drivers/net/wireless/ath/ath9k/main.c
|
||||||
+++ b/drivers/net/wireless/ath/ath9k/main.c
|
+++ b/drivers/net/wireless/ath/ath9k/main.c
|
||||||
@@ -1034,6 +1034,9 @@ static void ath_unregister_led(struct at
|
@@ -1041,6 +1041,9 @@ static void ath_unregister_led(struct at
|
||||||
|
|
||||||
static void ath_deinit_leds(struct ath_softc *sc)
|
static void ath_deinit_leds(struct ath_softc *sc)
|
||||||
{
|
{
|
||||||
@ -10,7 +10,7 @@
|
|||||||
cancel_delayed_work_sync(&sc->ath_led_blink_work);
|
cancel_delayed_work_sync(&sc->ath_led_blink_work);
|
||||||
ath_unregister_led(&sc->assoc_led);
|
ath_unregister_led(&sc->assoc_led);
|
||||||
sc->sc_flags &= ~SC_OP_LED_ASSOCIATED;
|
sc->sc_flags &= ~SC_OP_LED_ASSOCIATED;
|
||||||
@@ -1048,6 +1051,9 @@ static void ath_init_leds(struct ath_sof
|
@@ -1055,6 +1058,9 @@ static void ath_init_leds(struct ath_sof
|
||||||
char *trigger;
|
char *trigger;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user