linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 00/28] rtl8xxxu updates and fixes
@ 2016-02-03 18:39 Jes.Sorensen
  2016-02-03 18:39 ` [PATCH 01/28] rtl8xxxu: Minor cleanup to rtl8xxxu_download_firmware() Jes.Sorensen
                   ` (27 more replies)
  0 siblings, 28 replies; 32+ messages in thread
From: Jes.Sorensen @ 2016-02-03 18:39 UTC (permalink / raw)
  To: linux-wireless; +Cc: kvalo, Jes Sorensen

From: Jes Sorensen <Jes.Sorensen@redhat.com>

Hi,

Please find included a smaller patchset for the rtl8xxxu driver. It
includes fixes from Bruno Randolf for monitor mode support, Jakub
Sitnicki (I have a few more patches pending from Jakub), and Tobias
Klauser. It also includes a few fixes and some preparatory patches for
the next patchset which will include rtl8723bu and rtl8192eu support.

This is all I was able to split out, without breaking my follow-on
patches.

I have another stack that goes on top of this, that I will try to post
as soon as I see these hit the tree.

Thanks,
Jes


Bruno Randolf (3):
  rtl8xxxu: Enable monitor mode by handling filters
  rtl8xxxu: Document REG_RXFLTMAP registers
  rtl8xxxu: Enable data frame reception in rtl8xxxu_start

Jakub Sitnicki (1):
  rtl8xxxu: Use REG_EFUSE_TEST register only on multifunctional devices

Jes Sorensen (22):
  rtl8xxxu: Minor cleanup to rtl8xxxu_download_firmware()
  rtl8xxxu: rtl8xxxu_download_firmware(): Cosmetic cleanups
  rtl8xxxu: If fw running in RAM, reset the 8051 before trying to
    download a new one
  rtl8xxxu: Add RQPN_[NE]PQ_SHIFT values
  rtl8xxxu: Define SYS_CFG_SW_OFFLOAD_EN
  rtl8xxxu: Add REG_TX_REPORT_* defines
  rtl8xxxu: Add more RCR bits
  rtl8xxxu: Implement rtl8xxxu_reset_8051()
  rtl8xxxu: Add definitions for antenna selection registers for 8723BU
  rtl8xxxu: Add mbox extension register definitions for 8723B
  rtl8xxxu: Add REG_OFDM0_RX_D_SYNC_PATH definitions
  rtl8xxxu: Remove unused clutter for handling recursive calls to
    rtl8xxxu_init_device()
  rtl8xxxu: Fix cosmetics to quiet down checkpatch police
  rtl8xxxu: Remove duplicate USB ID
  rtl8xxxu: Fix 80 character per line issue
  rtl8xxxu: rtl8xxxu_set_linktype(): Be consistent aboutregister size
    REG_MSR
  rtl8xxxu: Set correct bit to reset MCU IO wrapper
  rtl8xxxu: Remove unused mgmt variable from rtl8xxxu_rx_complete()
  rtl8xxxu: Remove unused len/cnt variables from rtl8xxxu_rx_complete()
  rtl8xxxu: Do not mask RF registers to 6 bits
  rtl8xxxu: Make device_init kludge 8723au only
  rtl8xxxu: Add missing bit define for REG_APS_FSMCO

Tobias Klauser (2):
  rtl8xxxu: Fix typo in Kconfig help text
  rtl8xxxu: Check return value of kmemdup()

 drivers/net/wireless/realtek/rtl8xxxu/Kconfig      |   2 +-
 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c   | 183 ++++++++++++++-------
 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.h   |   2 +-
 .../net/wireless/realtek/rtl8xxxu/rtl8xxxu_regs.h  |  55 ++++++-
 4 files changed, 169 insertions(+), 73 deletions(-)

-- 
2.5.0


^ permalink raw reply	[flat|nested] 32+ messages in thread

* [PATCH 01/28] rtl8xxxu: Minor cleanup to rtl8xxxu_download_firmware()
  2016-02-03 18:39 [PATCH 00/28] rtl8xxxu updates and fixes Jes.Sorensen
@ 2016-02-03 18:39 ` Jes.Sorensen
  2016-02-25  9:57   ` [01/28] " Kalle Valo
  2016-02-03 18:39 ` [PATCH 02/28] rtl8xxxu: rtl8xxxu_download_firmware(): Cosmetic cleanups Jes.Sorensen
                   ` (26 subsequent siblings)
  27 siblings, 1 reply; 32+ messages in thread
From: Jes.Sorensen @ 2016-02-03 18:39 UTC (permalink / raw)
  To: linux-wireless; +Cc: kvalo, Jes Sorensen

From: Jes Sorensen <Jes.Sorensen@redhat.com>

Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
---
 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
index 6aed923..6b39e4d 100644
--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
+++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
@@ -2100,7 +2100,8 @@ static int rtl8xxxu_download_firmware(struct rtl8xxxu_priv *priv)
 
 	/* 8051 enable */
 	val16 = rtl8xxxu_read16(priv, REG_SYS_FUNC);
-	rtl8xxxu_write16(priv, REG_SYS_FUNC, val16 | SYS_FUNC_CPU_ENABLE);
+	val16 |= SYS_FUNC_CPU_ENABLE;
+	rtl8xxxu_write16(priv, REG_SYS_FUNC, val16);
 
 	/* MCU firmware download enable */
 	val8 = rtl8xxxu_read8(priv, REG_MCU_FW_DL);
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [PATCH 02/28] rtl8xxxu: rtl8xxxu_download_firmware(): Cosmetic cleanups
  2016-02-03 18:39 [PATCH 00/28] rtl8xxxu updates and fixes Jes.Sorensen
  2016-02-03 18:39 ` [PATCH 01/28] rtl8xxxu: Minor cleanup to rtl8xxxu_download_firmware() Jes.Sorensen
@ 2016-02-03 18:39 ` Jes.Sorensen
  2016-02-03 18:39 ` [PATCH 03/28] rtl8xxxu: If fw running in RAM, reset the 8051 before trying to download a new one Jes.Sorensen
                   ` (25 subsequent siblings)
  27 siblings, 0 replies; 32+ messages in thread
From: Jes.Sorensen @ 2016-02-03 18:39 UTC (permalink / raw)
  To: linux-wireless; +Cc: kvalo, Jes Sorensen

From: Jes Sorensen <Jes.Sorensen@redhat.com>

Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
---
 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c | 19 ++++++++++++-------
 1 file changed, 12 insertions(+), 7 deletions(-)

diff --git a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
index 6b39e4d..b6a264b 100644
--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
+++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
@@ -2105,15 +2105,18 @@ static int rtl8xxxu_download_firmware(struct rtl8xxxu_priv *priv)
 
 	/* MCU firmware download enable */
 	val8 = rtl8xxxu_read8(priv, REG_MCU_FW_DL);
-	rtl8xxxu_write8(priv, REG_MCU_FW_DL, val8 | MCU_FW_DL_ENABLE);
+	val8 |= MCU_FW_DL_ENABLE;
+	rtl8xxxu_write8(priv, REG_MCU_FW_DL, val8);
 
 	/* 8051 reset */
 	val32 = rtl8xxxu_read32(priv, REG_MCU_FW_DL);
-	rtl8xxxu_write32(priv, REG_MCU_FW_DL, val32 & ~BIT(19));
+	val32 &= ~BIT(19);
+	rtl8xxxu_write32(priv, REG_MCU_FW_DL, val32);
 
 	/* Reset firmware download checksum */
 	val8 = rtl8xxxu_read8(priv, REG_MCU_FW_DL);
-	rtl8xxxu_write8(priv, REG_MCU_FW_DL, val8 | MCU_FW_DL_CSUM_REPORT);
+	val8 |= MCU_FW_DL_CSUM_REPORT;
+	rtl8xxxu_write8(priv, REG_MCU_FW_DL, val8);
 
 	pages = priv->fw_size / RTL_FW_PAGE_SIZE;
 	remainder = priv->fw_size % RTL_FW_PAGE_SIZE;
@@ -2122,7 +2125,8 @@ static int rtl8xxxu_download_firmware(struct rtl8xxxu_priv *priv)
 
 	for (i = 0; i < pages; i++) {
 		val8 = rtl8xxxu_read8(priv, REG_MCU_FW_DL + 2) & 0xF8;
-		rtl8xxxu_write8(priv, REG_MCU_FW_DL + 2, val8 | i);
+		val8 |= i;
+		rtl8xxxu_write8(priv, REG_MCU_FW_DL + 2, val8);
 
 		ret = rtl8xxxu_writeN(priv, REG_FW_START_ADDRESS,
 				      fwptr, RTL_FW_PAGE_SIZE);
@@ -2136,7 +2140,8 @@ static int rtl8xxxu_download_firmware(struct rtl8xxxu_priv *priv)
 
 	if (remainder) {
 		val8 = rtl8xxxu_read8(priv, REG_MCU_FW_DL + 2) & 0xF8;
-		rtl8xxxu_write8(priv, REG_MCU_FW_DL + 2, val8 | i);
+		val8 |= i;
+		rtl8xxxu_write8(priv, REG_MCU_FW_DL + 2, val8);
 		ret = rtl8xxxu_writeN(priv, REG_FW_START_ADDRESS,
 				      fwptr, remainder);
 		if (ret != remainder) {
@@ -2149,8 +2154,8 @@ static int rtl8xxxu_download_firmware(struct rtl8xxxu_priv *priv)
 fw_abort:
 	/* MCU firmware download disable */
 	val16 = rtl8xxxu_read16(priv, REG_MCU_FW_DL);
-	rtl8xxxu_write16(priv, REG_MCU_FW_DL,
-			 val16 & (~MCU_FW_DL_ENABLE & 0xff));
+	val16 &= ~MCU_FW_DL_ENABLE;
+	rtl8xxxu_write16(priv, REG_MCU_FW_DL, val16);
 
 	return ret;
 }
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [PATCH 03/28] rtl8xxxu: If fw running in RAM, reset the 8051 before trying to download a new one
  2016-02-03 18:39 [PATCH 00/28] rtl8xxxu updates and fixes Jes.Sorensen
  2016-02-03 18:39 ` [PATCH 01/28] rtl8xxxu: Minor cleanup to rtl8xxxu_download_firmware() Jes.Sorensen
  2016-02-03 18:39 ` [PATCH 02/28] rtl8xxxu: rtl8xxxu_download_firmware(): Cosmetic cleanups Jes.Sorensen
@ 2016-02-03 18:39 ` Jes.Sorensen
  2016-02-25  9:36   ` Kalle Valo
  2016-02-03 18:39 ` [PATCH 04/28] rtl8xxxu: Add RQPN_[NE]PQ_SHIFT values Jes.Sorensen
                   ` (24 subsequent siblings)
  27 siblings, 1 reply; 32+ messages in thread
From: Jes.Sorensen @ 2016-02-03 18:39 UTC (permalink / raw)
  To: linux-wireless; +Cc: kvalo, Jes Sorensen

From: Jes Sorensen <Jes.Sorensen@redhat.com>

Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
---
 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
index b6a264b..e98e053 100644
--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
+++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
@@ -2089,7 +2089,7 @@ exit:
 static int rtl8xxxu_download_firmware(struct rtl8xxxu_priv *priv)
 {
 	int pages, remainder, i, ret;
-	u8 val8;
+	u8 val8, sys_func;
 	u16 val16;
 	u32 val32;
 	u8 *fwptr;
@@ -2103,6 +2103,23 @@ static int rtl8xxxu_download_firmware(struct rtl8xxxu_priv *priv)
 	val16 |= SYS_FUNC_CPU_ENABLE;
 	rtl8xxxu_write16(priv, REG_SYS_FUNC, val16);
 
+	val8 = rtl8xxxu_read8(priv, REG_MCU_FW_DL);
+	if (val8 & MCU_FW_RAM_SEL) {
+		pr_info("do the RAM reset\n");
+		rtl8xxxu_write8(priv, REG_MCU_FW_DL, 0x00);
+		val8 = rtl8xxxu_read8(priv, REG_RSV_CTRL + 1);
+		val8 &= ~BIT(3);
+		rtl8xxxu_write8(priv, REG_RSV_CTRL + 1, val8);
+		sys_func = rtl8xxxu_read8(priv, REG_SYS_FUNC + 1);
+		sys_func &= ~BIT(2);
+		rtl8xxxu_write8(priv, REG_SYS_FUNC + 1, sys_func);
+		val8 = rtl8xxxu_read8(priv, REG_RSV_CTRL + 1);
+		val8 |= BIT(3);
+		rtl8xxxu_write8(priv, REG_RSV_CTRL + 1, val8);
+		sys_func |= BIT(2);
+		rtl8xxxu_write8(priv, REG_SYS_FUNC + 1, sys_func);
+	}
+
 	/* MCU firmware download enable */
 	val8 = rtl8xxxu_read8(priv, REG_MCU_FW_DL);
 	val8 |= MCU_FW_DL_ENABLE;
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [PATCH 04/28] rtl8xxxu: Add RQPN_[NE]PQ_SHIFT values
  2016-02-03 18:39 [PATCH 00/28] rtl8xxxu updates and fixes Jes.Sorensen
                   ` (2 preceding siblings ...)
  2016-02-03 18:39 ` [PATCH 03/28] rtl8xxxu: If fw running in RAM, reset the 8051 before trying to download a new one Jes.Sorensen
@ 2016-02-03 18:39 ` Jes.Sorensen
  2016-02-03 18:39 ` [PATCH 05/28] rtl8xxxu: Define SYS_CFG_SW_OFFLOAD_EN Jes.Sorensen
                   ` (23 subsequent siblings)
  27 siblings, 0 replies; 32+ messages in thread
From: Jes.Sorensen @ 2016-02-03 18:39 UTC (permalink / raw)
  To: linux-wireless; +Cc: kvalo, Jes Sorensen

From: Jes Sorensen <Jes.Sorensen@redhat.com>

Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
---
 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_regs.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_regs.h b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_regs.h
index 23208f7..8b27a1c 100644
--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_regs.h
+++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_regs.h
@@ -352,6 +352,8 @@
 #define REG_TXDMA_OFFSET_CHK		0x020c
 #define REG_TXDMA_STATUS		0x0210
 #define REG_RQPN_NPQ			0x0214
+#define  RQPN_NPQ_SHIFT			0
+#define  RQPN_EPQ_SHIFT			16
 
 /* 0x0280 ~ 0x02FF	RXDMA Configuration */
 #define REG_RXDMA_AGG_PG_TH		0x0280
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [PATCH 05/28] rtl8xxxu: Define SYS_CFG_SW_OFFLOAD_EN
  2016-02-03 18:39 [PATCH 00/28] rtl8xxxu updates and fixes Jes.Sorensen
                   ` (3 preceding siblings ...)
  2016-02-03 18:39 ` [PATCH 04/28] rtl8xxxu: Add RQPN_[NE]PQ_SHIFT values Jes.Sorensen
@ 2016-02-03 18:39 ` Jes.Sorensen
  2016-02-03 18:39 ` [PATCH 06/28] rtl8xxxu: Add REG_TX_REPORT_* defines Jes.Sorensen
                   ` (22 subsequent siblings)
  27 siblings, 0 replies; 32+ messages in thread
From: Jes.Sorensen @ 2016-02-03 18:39 UTC (permalink / raw)
  To: linux-wireless; +Cc: kvalo, Jes Sorensen

From: Jes Sorensen <Jes.Sorensen@redhat.com>

This is needed for chips with IOL support.

Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
---
 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_regs.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_regs.h b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_regs.h
index 8b27a1c..7c795ce 100644
--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_regs.h
+++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_regs.h
@@ -213,6 +213,7 @@
 #define  SYS_CFG_PCIRSTB		BIT(4)
 #define  SYS_CFG_V15_VLD		BIT(5)
 #define  SYS_CFG_TRP_B15V_EN		BIT(7)
+#define  SYS_CFG_SW_OFFLOAD_EN		BIT(7)	/* For chips with IOL support */
 #define  SYS_CFG_SIC_IDLE		BIT(8)
 #define  SYS_CFG_BD_MAC2		BIT(9)
 #define  SYS_CFG_BD_MAC1		BIT(10)
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [PATCH 06/28] rtl8xxxu: Add REG_TX_REPORT_* defines
  2016-02-03 18:39 [PATCH 00/28] rtl8xxxu updates and fixes Jes.Sorensen
                   ` (4 preceding siblings ...)
  2016-02-03 18:39 ` [PATCH 05/28] rtl8xxxu: Define SYS_CFG_SW_OFFLOAD_EN Jes.Sorensen
@ 2016-02-03 18:39 ` Jes.Sorensen
  2016-02-03 18:39 ` [PATCH 07/28] rtl8xxxu: Add more RCR bits Jes.Sorensen
                   ` (21 subsequent siblings)
  27 siblings, 0 replies; 32+ messages in thread
From: Jes.Sorensen @ 2016-02-03 18:39 UTC (permalink / raw)
  To: linux-wireless; +Cc: kvalo, Jes Sorensen

From: Jes Sorensen <Jes.Sorensen@redhat.com>

Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
---
 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_regs.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_regs.h b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_regs.h
index 7c795ce..89547b6 100644
--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_regs.h
+++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_regs.h
@@ -456,6 +456,8 @@
 #define REG_NEED_CPU_HANDLE		0x04e0
 #define REG_PKT_LOSE_RPT		0x04e1
 #define REG_PTCL_ERR_STATUS		0x04e2
+#define REG_TX_REPORT_CTRL		0x04ec
+#define REG_TX_REPORT_TIME		0x04f0
 #define REG_DUMMY			0x04fc
 
 /* 0x0500 ~ 0x05FF	EDCA Configuration */
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [PATCH 07/28] rtl8xxxu: Add more RCR bits
  2016-02-03 18:39 [PATCH 00/28] rtl8xxxu updates and fixes Jes.Sorensen
                   ` (5 preceding siblings ...)
  2016-02-03 18:39 ` [PATCH 06/28] rtl8xxxu: Add REG_TX_REPORT_* defines Jes.Sorensen
@ 2016-02-03 18:39 ` Jes.Sorensen
  2016-02-03 18:39 ` [PATCH 08/28] rtl8xxxu: Fix typo in Kconfig help text Jes.Sorensen
                   ` (20 subsequent siblings)
  27 siblings, 0 replies; 32+ messages in thread
From: Jes.Sorensen @ 2016-02-03 18:39 UTC (permalink / raw)
  To: linux-wireless; +Cc: kvalo, Jes Sorensen

From: Jes Sorensen <Jes.Sorensen@redhat.com>

Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
---
 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_regs.h | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_regs.h b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_regs.h
index 89547b6..f752602 100644
--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_regs.h
+++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_regs.h
@@ -568,9 +568,18 @@
 #define  RCR_ACCEPT_CTRL_FRAME		BIT(12)
 #define  RCR_ACCEPT_MGMT_FRAME		BIT(13)
 #define  RCR_HTC_LOC_CTRL		BIT(14) /* MFC<--HTC=1 MFC-->HTC=0 */
+#define  RCR_UC_DATA_PKT_INT_ENABLE	BIT(16) /* Enable unicast data packet
+						   interrupt */
+#define  RCR_BM_DATA_PKT_INT_ENABLE	BIT(17) /* Enable broadcast data packet
+						   interrupt */
+#define  RCR_TIM_PARSER_ENABLE		BIT(18) /* Enable RX beacon TIM parser*/
 #define  RCR_MFBEN			BIT(22)
-#define  RCR_LSIGEN			BIT(23)
+#define  RCR_LSIG_ENABLE		BIT(23) /* Enable LSIG TXOP Protection
+						   function. Search KEYCAM for
+						   each rx packet to check if
+						   LSIGEN bit is set. */
 #define  RCR_MULTI_BSSID_ENABLE		BIT(24) /* Enable Multiple BssId */
+#define  RCR_FORCE_ACK			BIT(26)
 #define  RCR_ACCEPT_BA_SSN		BIT(27) /* Accept BA SSN */
 #define  RCR_APPEND_PHYSTAT		BIT(28)
 #define  RCR_APPEND_ICV			BIT(29)
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [PATCH 08/28] rtl8xxxu: Fix typo in Kconfig help text
  2016-02-03 18:39 [PATCH 00/28] rtl8xxxu updates and fixes Jes.Sorensen
                   ` (6 preceding siblings ...)
  2016-02-03 18:39 ` [PATCH 07/28] rtl8xxxu: Add more RCR bits Jes.Sorensen
@ 2016-02-03 18:39 ` Jes.Sorensen
  2016-02-03 18:39 ` [PATCH 09/28] rtl8xxxu: Check return value of kmemdup() Jes.Sorensen
                   ` (19 subsequent siblings)
  27 siblings, 0 replies; 32+ messages in thread
From: Jes.Sorensen @ 2016-02-03 18:39 UTC (permalink / raw)
  To: linux-wireless; +Cc: kvalo, Tobias Klauser, Jes Sorensen

From: Tobias Klauser <tklauser@distanz.ch>

Fix spelling of "benefits".

Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
---
 drivers/net/wireless/realtek/rtl8xxxu/Kconfig | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/wireless/realtek/rtl8xxxu/Kconfig b/drivers/net/wireless/realtek/rtl8xxxu/Kconfig
index dd4d626..8f053c3 100644
--- a/drivers/net/wireless/realtek/rtl8xxxu/Kconfig
+++ b/drivers/net/wireless/realtek/rtl8xxxu/Kconfig
@@ -13,7 +13,7 @@ config RTL8XXXU
 	  This driver is under development and has a limited feature
 	  set. In particular it does not yet support 40MHz channels
 	  and power management. However it should have a smaller
-	  memory footprint than the vendor drivers and benetifs
+	  memory footprint than the vendor drivers and benefits
 	  from the in kernel mac80211 stack.
 
 	  It can coexist with drivers from drivers/staging/rtl8723au,
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [PATCH 09/28] rtl8xxxu: Check return value of kmemdup()
  2016-02-03 18:39 [PATCH 00/28] rtl8xxxu updates and fixes Jes.Sorensen
                   ` (7 preceding siblings ...)
  2016-02-03 18:39 ` [PATCH 08/28] rtl8xxxu: Fix typo in Kconfig help text Jes.Sorensen
@ 2016-02-03 18:39 ` Jes.Sorensen
  2016-02-03 18:39 ` [PATCH 10/28] rtl8xxxu: Implement rtl8xxxu_reset_8051() Jes.Sorensen
                   ` (18 subsequent siblings)
  27 siblings, 0 replies; 32+ messages in thread
From: Jes.Sorensen @ 2016-02-03 18:39 UTC (permalink / raw)
  To: linux-wireless; +Cc: kvalo, Tobias Klauser, Jes Sorensen

From: Tobias Klauser <tklauser@distanz.ch>

In rtl8xxxu_load_firmware() check the return value of kmemdup() and
error out with -ENOMEM in case of NULL to prevent a NULL pointer
dereference.

Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
---
 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
index e98e053..08d8e1f 100644
--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
+++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
@@ -2197,6 +2197,10 @@ static int rtl8xxxu_load_firmware(struct rtl8xxxu_priv *priv, char *fw_name)
 	}
 
 	priv->fw_data = kmemdup(fw->data, fw->size, GFP_KERNEL);
+	if (!priv->fw_data) {
+		ret = -ENOMEM;
+		goto exit;
+	}
 	priv->fw_size = fw->size - sizeof(struct rtl8xxxu_firmware_header);
 
 	signature = le16_to_cpu(priv->fw_data->signature);
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [PATCH 10/28] rtl8xxxu: Implement rtl8xxxu_reset_8051()
  2016-02-03 18:39 [PATCH 00/28] rtl8xxxu updates and fixes Jes.Sorensen
                   ` (8 preceding siblings ...)
  2016-02-03 18:39 ` [PATCH 09/28] rtl8xxxu: Check return value of kmemdup() Jes.Sorensen
@ 2016-02-03 18:39 ` Jes.Sorensen
  2016-02-03 18:39 ` [PATCH 11/28] rtl8xxxu: Add definitions for antenna selection registers for 8723BU Jes.Sorensen
                   ` (17 subsequent siblings)
  27 siblings, 0 replies; 32+ messages in thread
From: Jes.Sorensen @ 2016-02-03 18:39 UTC (permalink / raw)
  To: linux-wireless; +Cc: kvalo, Jes Sorensen

From: Jes Sorensen <Jes.Sorensen@redhat.com>

We need to reset the 8051 in order for it to launch the fw on the
rtl8192eu.

Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
---
 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c | 38 ++++++++++++++++--------
 1 file changed, 26 insertions(+), 12 deletions(-)

diff --git a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
index 08d8e1f..7a571ef 100644
--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
+++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
@@ -2043,6 +2043,24 @@ exit:
 	return ret;
 }
 
+static void rtl8xxxu_reset_8051(struct rtl8xxxu_priv *priv)
+{
+	u8 val8;
+	u16 sys_func;
+
+	val8 = rtl8xxxu_read8(priv, REG_RSV_CTRL + 1);
+	val8 &= ~BIT(3);
+	rtl8xxxu_write8(priv, REG_RSV_CTRL + 1, val8);
+	sys_func = rtl8xxxu_read16(priv, REG_SYS_FUNC);
+	sys_func &= ~SYS_FUNC_CPU_ENABLE;
+	rtl8xxxu_write16(priv, REG_SYS_FUNC, sys_func);
+	val8 = rtl8xxxu_read8(priv, REG_RSV_CTRL + 1);
+	val8 |= BIT(3);
+	rtl8xxxu_write8(priv, REG_RSV_CTRL + 1, val8);
+	sys_func |= SYS_FUNC_CPU_ENABLE;
+	rtl8xxxu_write16(priv, REG_SYS_FUNC, sys_func);
+}
+
 static int rtl8xxxu_start_firmware(struct rtl8xxxu_priv *priv)
 {
 	struct device *dev = &priv->udev->dev;
@@ -2067,6 +2085,12 @@ static int rtl8xxxu_start_firmware(struct rtl8xxxu_priv *priv)
 	val32 &= ~MCU_WINT_INIT_READY;
 	rtl8xxxu_write32(priv, REG_MCU_FW_DL, val32);
 
+	/*
+	 * Reset the 8051 in order for the firmware to start running,
+	 * otherwise it won't come up on the 8192eu
+	 */
+	rtl8xxxu_reset_8051(priv);
+
 	/* Wait for firmware to become ready */
 	for (i = 0; i < RTL8XXXU_FIRMWARE_POLL_MAX; i++) {
 		val32 = rtl8xxxu_read32(priv, REG_MCU_FW_DL);
@@ -2089,7 +2113,7 @@ exit:
 static int rtl8xxxu_download_firmware(struct rtl8xxxu_priv *priv)
 {
 	int pages, remainder, i, ret;
-	u8 val8, sys_func;
+	u8 val8;
 	u16 val16;
 	u32 val32;
 	u8 *fwptr;
@@ -2107,17 +2131,7 @@ static int rtl8xxxu_download_firmware(struct rtl8xxxu_priv *priv)
 	if (val8 & MCU_FW_RAM_SEL) {
 		pr_info("do the RAM reset\n");
 		rtl8xxxu_write8(priv, REG_MCU_FW_DL, 0x00);
-		val8 = rtl8xxxu_read8(priv, REG_RSV_CTRL + 1);
-		val8 &= ~BIT(3);
-		rtl8xxxu_write8(priv, REG_RSV_CTRL + 1, val8);
-		sys_func = rtl8xxxu_read8(priv, REG_SYS_FUNC + 1);
-		sys_func &= ~BIT(2);
-		rtl8xxxu_write8(priv, REG_SYS_FUNC + 1, sys_func);
-		val8 = rtl8xxxu_read8(priv, REG_RSV_CTRL + 1);
-		val8 |= BIT(3);
-		rtl8xxxu_write8(priv, REG_RSV_CTRL + 1, val8);
-		sys_func |= BIT(2);
-		rtl8xxxu_write8(priv, REG_SYS_FUNC + 1, sys_func);
+		rtl8xxxu_reset_8051(priv);
 	}
 
 	/* MCU firmware download enable */
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [PATCH 11/28] rtl8xxxu: Add definitions for antenna selection registers for 8723BU
  2016-02-03 18:39 [PATCH 00/28] rtl8xxxu updates and fixes Jes.Sorensen
                   ` (9 preceding siblings ...)
  2016-02-03 18:39 ` [PATCH 10/28] rtl8xxxu: Implement rtl8xxxu_reset_8051() Jes.Sorensen
@ 2016-02-03 18:39 ` Jes.Sorensen
  2016-02-03 18:39 ` [PATCH 12/28] rtl8xxxu: Add mbox extension register definitions for 8723B Jes.Sorensen
                   ` (16 subsequent siblings)
  27 siblings, 0 replies; 32+ messages in thread
From: Jes.Sorensen @ 2016-02-03 18:39 UTC (permalink / raw)
  To: linux-wireless; +Cc: kvalo, Jes Sorensen

From: Jes Sorensen <Jes.Sorensen@redhat.com>

Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
---
 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_regs.h | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_regs.h b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_regs.h
index f752602..997a857 100644
--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_regs.h
+++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_regs.h
@@ -756,6 +756,10 @@
 #define REG_FPGA1_RF_MODE		0x0900
 
 #define REG_FPGA1_TX_INFO		0x090c
+#define REG_DPDT_CTRL			0x092c	/* 8723BU */
+#define REG_RFE_CTRL_ANTA_SRC		0x0930	/* 8723BU */
+#define REG_RFE_PATH_SELECT		0x0940	/* 8723BU */
+#define REG_RFE_BUFFER			0x0944	/* 8723BU */
 
 #define REG_CCK0_SYSTEM			0x0a00
 #define  CCK0_SIDEBAND			BIT(4)
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [PATCH 12/28] rtl8xxxu: Add mbox extension register definitions for 8723B
  2016-02-03 18:39 [PATCH 00/28] rtl8xxxu updates and fixes Jes.Sorensen
                   ` (10 preceding siblings ...)
  2016-02-03 18:39 ` [PATCH 11/28] rtl8xxxu: Add definitions for antenna selection registers for 8723BU Jes.Sorensen
@ 2016-02-03 18:39 ` Jes.Sorensen
  2016-02-03 18:39 ` [PATCH 13/28] rtl8xxxu: Add REG_OFDM0_RX_D_SYNC_PATH definitions Jes.Sorensen
                   ` (15 subsequent siblings)
  27 siblings, 0 replies; 32+ messages in thread
From: Jes.Sorensen @ 2016-02-03 18:39 UTC (permalink / raw)
  To: linux-wireless; +Cc: kvalo, Jes Sorensen

From: Jes Sorensen <Jes.Sorensen@redhat.com>

Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
---
 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_regs.h | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_regs.h b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_regs.h
index 997a857..991b366 100644
--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_regs.h
+++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_regs.h
@@ -341,6 +341,11 @@
 #define REG_BB_ACCEESS_CTRL		0x01e8
 #define REG_BB_ACCESS_DATA		0x01ec
 
+#define REG_HMBOX_EXT0_8723B		0x01f0
+#define REG_HMBOX_EXT1_8723B		0x01f4
+#define REG_HMBOX_EXT2_8723B		0x01f8
+#define REG_HMBOX_EXT3_8723B		0x01fc
+
 /* 0x0200 ~ 0x027F	TXDMA Configuration */
 #define REG_RQPN			0x0200
 #define  RQPN_HI_PQ_SHIFT		0
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [PATCH 13/28] rtl8xxxu: Add REG_OFDM0_RX_D_SYNC_PATH definitions
  2016-02-03 18:39 [PATCH 00/28] rtl8xxxu updates and fixes Jes.Sorensen
                   ` (11 preceding siblings ...)
  2016-02-03 18:39 ` [PATCH 12/28] rtl8xxxu: Add mbox extension register definitions for 8723B Jes.Sorensen
@ 2016-02-03 18:39 ` Jes.Sorensen
  2016-02-03 18:39 ` [PATCH 14/28] rtl8xxxu: Remove unused clutter for handling recursive calls to rtl8xxxu_init_device() Jes.Sorensen
                   ` (14 subsequent siblings)
  27 siblings, 0 replies; 32+ messages in thread
From: Jes.Sorensen @ 2016-02-03 18:39 UTC (permalink / raw)
  To: linux-wireless; +Cc: kvalo, Jes Sorensen

From: Jes Sorensen <Jes.Sorensen@redhat.com>

Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
---
 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_regs.h | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_regs.h b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_regs.h
index 991b366..d2995f8a3 100644
--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_regs.h
+++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_regs.h
@@ -793,6 +793,9 @@
 
 #define REG_OFDM0_ENERGY_CCA_THRES	0x0c4c
 
+#define REG_OFDM0_RX_D_SYNC_PATH	0x0c40
+#define  OFDM0_SYNC_PATH_NOTCH_FILTER	BIT(1)
+
 #define REG_OFDM0_XA_AGC_CORE1		0x0c50
 #define REG_OFDM0_XA_AGC_CORE2		0x0c54
 #define REG_OFDM0_XB_AGC_CORE1		0x0c58
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [PATCH 14/28] rtl8xxxu: Remove unused clutter for handling recursive calls to rtl8xxxu_init_device()
  2016-02-03 18:39 [PATCH 00/28] rtl8xxxu updates and fixes Jes.Sorensen
                   ` (12 preceding siblings ...)
  2016-02-03 18:39 ` [PATCH 13/28] rtl8xxxu: Add REG_OFDM0_RX_D_SYNC_PATH definitions Jes.Sorensen
@ 2016-02-03 18:39 ` Jes.Sorensen
  2016-02-03 18:39 ` [PATCH 15/28] rtl8xxxu: Use REG_EFUSE_TEST register only on multifunctional devices Jes.Sorensen
                   ` (13 subsequent siblings)
  27 siblings, 0 replies; 32+ messages in thread
From: Jes.Sorensen @ 2016-02-03 18:39 UTC (permalink / raw)
  To: linux-wireless; +Cc: kvalo, Jes Sorensen

From: Jes Sorensen <Jes.Sorensen@redhat.com>

This was a leftover from the vendor driver that was never utilized.

Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
---
 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c | 12 +-----------
 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.h |  1 -
 2 files changed, 1 insertion(+), 12 deletions(-)

diff --git a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
index 7a571ef..4a6939f 100644
--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
+++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
@@ -4289,17 +4289,7 @@ static int rtl8xxxu_init_device(struct ieee80211_hw *hw)
 
 	rtl8xxxu_write16(priv, REG_FAST_EDCA_CTRL, 0);
 
-	/*
-	 * Not sure if we should get into this at all
-	 */
-	if (priv->iqk_initialized) {
-		rtl8xxxu_restore_regs(priv, rtl8723au_iqk_phy_iq_bb_reg,
-				      priv->bb_recovery_backup,
-				      RTL8XXXU_BB_REGS);
-	} else {
-		rtl8723a_phy_iq_calibrate(priv);
-		priv->iqk_initialized = true;
-	}
+	rtl8723a_phy_iq_calibrate(priv);
 
 	/*
 	 * This should enable thermal meter
diff --git a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.h b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.h
index f2a1bac..f71fb8d 100644
--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.h
+++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.h
@@ -652,7 +652,6 @@ struct rtl8xxxu_priv {
 	u32 bb_recovery_backup[RTL8XXXU_BB_REGS];
 	u32 rtlchip;
 	u8 pi_enabled:1;
-	u8 iqk_initialized:1;
 	u8 int_buf[USB_INTR_CONTENT_LENGTH];
 };
 
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [PATCH 15/28] rtl8xxxu: Use REG_EFUSE_TEST register only on multifunctional devices
  2016-02-03 18:39 [PATCH 00/28] rtl8xxxu updates and fixes Jes.Sorensen
                   ` (13 preceding siblings ...)
  2016-02-03 18:39 ` [PATCH 14/28] rtl8xxxu: Remove unused clutter for handling recursive calls to rtl8xxxu_init_device() Jes.Sorensen
@ 2016-02-03 18:39 ` Jes.Sorensen
  2016-02-03 18:39 ` [PATCH 16/28] rtl8xxxu: Fix cosmetics to quiet down checkpatch police Jes.Sorensen
                   ` (12 subsequent siblings)
  27 siblings, 0 replies; 32+ messages in thread
From: Jes.Sorensen @ 2016-02-03 18:39 UTC (permalink / raw)
  To: linux-wireless; +Cc: kvalo, Jakub Sitnicki, Jes Sorensen

From: Jakub Sitnicki <jsitnicki@gmail.com>

rtl8192cu driver doesn't read/write the REG_EFUSE_TEST register.
Neither does the rtl8188eu driver.  Do it only for multifunc devices
RTL8723AU/RTL8723BU.

Signed-off-by: Jakub Sitnicki <jsitnicki@gmail.com>
Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
---
 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c | 9 ++++++---
 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.h | 1 +
 2 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
index 4a6939f..94d3d84 100644
--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
+++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
@@ -1704,6 +1704,7 @@ static int rtl8xxxu_identify_chip(struct rtl8xxxu_priv *priv)
 			priv->has_bluetooth = 1;
 		if (val32 & MULTI_GPS_FUNC_EN)
 			priv->has_gps = 1;
+		priv->is_multi_func = 1;
 	} else if (val32 & SYS_CFG_TYPE_ID) {
 		bonding = rtl8xxxu_read32(priv, REG_HPON_FSM);
 		bonding &= HPON_FSM_BONDING_MASK;
@@ -1938,9 +1939,11 @@ static int rtl8xxxu_read_efuse(struct rtl8xxxu_priv *priv)
 	if (val16 & EEPROM_BOOT)
 		priv->boot_eeprom = 1;
 
-	val32 = rtl8xxxu_read32(priv, REG_EFUSE_TEST);
-	val32 = (val32 & ~EFUSE_SELECT_MASK) | EFUSE_WIFI_SELECT;
-	rtl8xxxu_write32(priv, REG_EFUSE_TEST, val32);
+	if (priv->is_multi_func) {
+		val32 = rtl8xxxu_read32(priv, REG_EFUSE_TEST);
+		val32 = (val32 & ~EFUSE_SELECT_MASK) | EFUSE_WIFI_SELECT;
+		rtl8xxxu_write32(priv, REG_EFUSE_TEST, val32);
+	}
 
 	dev_dbg(dev, "Booting from %s\n",
 		priv->boot_eeprom ? "EEPROM" : "EFUSE");
diff --git a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.h b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.h
index f71fb8d..bbd0f6b 100644
--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.h
+++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.h
@@ -597,6 +597,7 @@ struct rtl8xxxu_priv {
 	struct rtl8723au_idx ht20_max_power_offset[3];
 	u32 chip_cut:4;
 	u32 rom_rev:4;
+	u32 is_multi_func:1;
 	u32 has_wifi:1;
 	u32 has_bluetooth:1;
 	u32 enable_bluetooth:1;
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [PATCH 16/28] rtl8xxxu: Fix cosmetics to quiet down checkpatch police
  2016-02-03 18:39 [PATCH 00/28] rtl8xxxu updates and fixes Jes.Sorensen
                   ` (14 preceding siblings ...)
  2016-02-03 18:39 ` [PATCH 15/28] rtl8xxxu: Use REG_EFUSE_TEST register only on multifunctional devices Jes.Sorensen
@ 2016-02-03 18:39 ` Jes.Sorensen
  2016-02-03 18:39 ` [PATCH 17/28] rtl8xxxu: Enable monitor mode by handling filters Jes.Sorensen
                   ` (11 subsequent siblings)
  27 siblings, 0 replies; 32+ messages in thread
From: Jes.Sorensen @ 2016-02-03 18:39 UTC (permalink / raw)
  To: linux-wireless; +Cc: kvalo, Jes Sorensen

From: Jes Sorensen <Jes.Sorensen@redhat.com>

Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
---
 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
index 94d3d84..ac4c211 100644
--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
+++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
@@ -4415,7 +4415,7 @@ static void rtl8xxxu_cam_write(struct rtl8xxxu_priv *priv,
 }
 
 static void rtl8xxxu_sw_scan_start(struct ieee80211_hw *hw,
-				   struct ieee80211_vif *vif, const u8* mac)
+				   struct ieee80211_vif *vif, const u8 *mac)
 {
 	struct rtl8xxxu_priv *priv = hw->priv;
 	u8 val8;
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [PATCH 17/28] rtl8xxxu: Enable monitor mode by handling filters
  2016-02-03 18:39 [PATCH 00/28] rtl8xxxu updates and fixes Jes.Sorensen
                   ` (15 preceding siblings ...)
  2016-02-03 18:39 ` [PATCH 16/28] rtl8xxxu: Fix cosmetics to quiet down checkpatch police Jes.Sorensen
@ 2016-02-03 18:39 ` Jes.Sorensen
  2016-02-03 18:39 ` [PATCH 18/28] rtl8xxxu: Document REG_RXFLTMAP registers Jes.Sorensen
                   ` (10 subsequent siblings)
  27 siblings, 0 replies; 32+ messages in thread
From: Jes.Sorensen @ 2016-02-03 18:39 UTC (permalink / raw)
  To: linux-wireless; +Cc: kvalo, Bruno Randolf, Jes Sorensen

From: Bruno Randolf <br1@einfach.org>

Monitor mode is enabled by handling the filter flags we get from mac80211 in
rtl8xxxu_configure_filter() and writing them to the RCR register.

By handling the filters, we can also stop setting the BSSID filters in the
association event.

Signed-off-by: Bruno Randolf <br1@einfach.org>
Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
---
 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c | 56 +++++++++++++++++++-----
 1 file changed, 45 insertions(+), 11 deletions(-)

diff --git a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
index ac4c211..b58a60f 100644
--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
+++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
@@ -4199,7 +4199,6 @@ static int rtl8xxxu_init_device(struct ieee80211_hw *hw)
 	 * Configure initial WMAC settings
 	 */
 	val32 = RCR_ACCEPT_PHYS_MATCH | RCR_ACCEPT_MCAST | RCR_ACCEPT_BCAST |
-		/* RCR_CHECK_BSSID_MATCH | RCR_CHECK_BSSID_BEACON | */
 		RCR_ACCEPT_MGMT_FRAME | RCR_HTC_LOC_CTRL |
 		RCR_APPEND_PHYSTAT | RCR_APPEND_ICV | RCR_APPEND_MIC;
 	rtl8xxxu_write32(priv, REG_RCR, val32);
@@ -4522,10 +4521,6 @@ rtl8xxxu_bss_info_changed(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
 
 			rtl8xxxu_update_rate_mask(priv, ramask, sgi);
 
-			val32 = rtl8xxxu_read32(priv, REG_RCR);
-			val32 |= RCR_CHECK_BSSID_MATCH | RCR_CHECK_BSSID_BEACON;
-			rtl8xxxu_write32(priv, REG_RCR, val32);
-
 			/* Enable RX of data frames */
 			rtl8xxxu_write16(priv, REG_RXFLTMAP2, 0xffff);
 
@@ -4539,11 +4534,6 @@ rtl8xxxu_bss_info_changed(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
 
 			h2c.joinbss.data = H2C_JOIN_BSS_CONNECT;
 		} else {
-			val32 = rtl8xxxu_read32(priv, REG_RCR);
-			val32 &= ~(RCR_CHECK_BSSID_MATCH |
-				   RCR_CHECK_BSSID_BEACON);
-			rtl8xxxu_write32(priv, REG_RCR, val32);
-
 			val8 = rtl8xxxu_read8(priv, REG_BEACON_CTRL);
 			val8 |= BEACON_DISABLE_TSF_UPDATE;
 			rtl8xxxu_write8(priv, REG_BEACON_CTRL, val8);
@@ -5318,11 +5308,55 @@ static void rtl8xxxu_configure_filter(struct ieee80211_hw *hw,
 				      unsigned int *total_flags, u64 multicast)
 {
 	struct rtl8xxxu_priv *priv = hw->priv;
+	u32 rcr = rtl8xxxu_read32(priv, REG_RCR);
 
 	dev_dbg(&priv->udev->dev, "%s: changed_flags %08x, total_flags %08x\n",
 		__func__, changed_flags, *total_flags);
 
-	*total_flags &= (FIF_ALLMULTI | FIF_CONTROL | FIF_BCN_PRBRESP_PROMISC);
+	/*
+	 * FIF_ALLMULTI ignored as all multicast frames are accepted (REG_MAR)
+	 */
+
+	if (*total_flags & FIF_FCSFAIL)
+		rcr |= RCR_ACCEPT_CRC32;
+	else
+		rcr &= ~RCR_ACCEPT_CRC32;
+
+	/*
+	 * FIF_PLCPFAIL not supported?
+	 */
+
+	if (*total_flags & FIF_BCN_PRBRESP_PROMISC)
+		rcr &= ~RCR_CHECK_BSSID_BEACON;
+	else
+		rcr |= RCR_CHECK_BSSID_BEACON;
+
+	if (*total_flags & FIF_CONTROL)
+		rcr |= RCR_ACCEPT_CTRL_FRAME;
+	else
+		rcr &= ~RCR_ACCEPT_CTRL_FRAME;
+
+	if (*total_flags & FIF_OTHER_BSS) {
+		rcr |= RCR_ACCEPT_AP;
+		rcr &= ~RCR_CHECK_BSSID_MATCH;
+	} else {
+		rcr &= ~RCR_ACCEPT_AP;
+		rcr |= RCR_CHECK_BSSID_MATCH;
+	}
+
+	if (*total_flags & FIF_PSPOLL)
+		rcr |= RCR_ACCEPT_PM;
+	else
+		rcr &= ~RCR_ACCEPT_PM;
+
+	/*
+	 * FIF_PROBE_REQ ignored as probe requests always seem to be accepted
+	 */
+
+	rtl8xxxu_write32(priv, REG_RCR, rcr);
+
+	*total_flags &= (FIF_ALLMULTI | FIF_FCSFAIL | FIF_BCN_PRBRESP_PROMISC | \
+			 FIF_CONTROL | FIF_OTHER_BSS | FIF_PSPOLL | FIF_PROBE_REQ);
 }
 
 static int rtl8xxxu_set_rts_threshold(struct ieee80211_hw *hw, u32 rts)
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [PATCH 18/28] rtl8xxxu: Document REG_RXFLTMAP registers
  2016-02-03 18:39 [PATCH 00/28] rtl8xxxu updates and fixes Jes.Sorensen
                   ` (16 preceding siblings ...)
  2016-02-03 18:39 ` [PATCH 17/28] rtl8xxxu: Enable monitor mode by handling filters Jes.Sorensen
@ 2016-02-03 18:39 ` Jes.Sorensen
  2016-02-03 18:39 ` [PATCH 19/28] rtl8xxxu: Remove duplicate USB ID Jes.Sorensen
                   ` (9 subsequent siblings)
  27 siblings, 0 replies; 32+ messages in thread
From: Jes.Sorensen @ 2016-02-03 18:39 UTC (permalink / raw)
  To: linux-wireless; +Cc: kvalo, Bruno Randolf, Jes Sorensen

From: Bruno Randolf <br1@einfach.org>

Add comments describing how REG_RXFLTMAP0, REG_RXFLTMAP1 and REG_RXFLTMAP2
work.

Signed-off-by: Bruno Randolf <br1@einfach.org>
Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
---
 .../net/wireless/realtek/rtl8xxxu/rtl8xxxu_regs.h  | 26 +++++++++++++++++-----
 1 file changed, 20 insertions(+), 6 deletions(-)

diff --git a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_regs.h b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_regs.h
index d2995f8a3..d089edd 100644
--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_regs.h
+++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_regs.h
@@ -569,9 +569,12 @@
 						 (Rx beacon, probe rsp) */
 #define  RCR_ACCEPT_CRC32		BIT(8)  /* Accept CRC32 error packet */
 #define  RCR_ACCEPT_ICV			BIT(9)  /* Accept ICV error packet */
-#define  RCR_ACCEPT_DATA_FRAME		BIT(11)
-#define  RCR_ACCEPT_CTRL_FRAME		BIT(12)
-#define  RCR_ACCEPT_MGMT_FRAME		BIT(13)
+#define  RCR_ACCEPT_DATA_FRAME		BIT(11) /* Accept all data pkt or use
+						   REG_RXFLTMAP2 */
+#define  RCR_ACCEPT_CTRL_FRAME		BIT(12) /* Accept all control pkt or use
+						   REG_RXFLTMAP1 */
+#define  RCR_ACCEPT_MGMT_FRAME		BIT(13) /* Accept all mgmt pkt or use
+						   REG_RXFLTMAP0 */
 #define  RCR_HTC_LOC_CTRL		BIT(14) /* MFC<--HTC=1 MFC-->HTC=0 */
 #define  RCR_UC_DATA_PKT_INT_ENABLE	BIT(16) /* Enable unicast data packet
 						   interrupt */
@@ -651,9 +654,20 @@
 #define REG_LPNAV_CTRL			0x0694
 #define REG_WKFMCAM_CMD			0x0698
 #define REG_WKFMCAM_RWD			0x069c
-#define REG_RXFLTMAP0			0x06a0
-#define REG_RXFLTMAP1			0x06a2
-#define REG_RXFLTMAP2			0x06a4
+
+/*
+ * RX Filters: each bit corresponds to the numerical value of the subtype.
+ * If it is set the subtype frame type is passed. The filter is only used when
+ * the RCR_ACCEPT_DATA_FRAME, RCR_ACCEPT_CTRL_FRAME, RCR_ACCEPT_MGMT_FRAME bit
+ * in the RCR are low.
+ *
+ * Example: Beacon subtype is binary 1000 which is decimal 8 so we have to set
+ * bit 8 (0x100) in REG_RXFLTMAP0 to enable reception.
+ */
+#define REG_RXFLTMAP0			0x06a0	/* Management frames */
+#define REG_RXFLTMAP1			0x06a2	/* Control frames */
+#define REG_RXFLTMAP2			0x06a4	/* Data frames */
+
 #define REG_BCN_PSR_RPT			0x06a8
 #define REG_CALB32K_CTRL		0x06ac
 #define REG_PKT_MON_CTRL		0x06b4
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [PATCH 19/28] rtl8xxxu: Remove duplicate USB ID
  2016-02-03 18:39 [PATCH 00/28] rtl8xxxu updates and fixes Jes.Sorensen
                   ` (17 preceding siblings ...)
  2016-02-03 18:39 ` [PATCH 18/28] rtl8xxxu: Document REG_RXFLTMAP registers Jes.Sorensen
@ 2016-02-03 18:39 ` Jes.Sorensen
  2016-02-03 18:39 ` [PATCH 20/28] rtl8xxxu: Fix 80 character per line issue Jes.Sorensen
                   ` (8 subsequent siblings)
  27 siblings, 0 replies; 32+ messages in thread
From: Jes.Sorensen @ 2016-02-03 18:39 UTC (permalink / raw)
  To: linux-wireless; +Cc: kvalo, Jes Sorensen

From: Jes Sorensen <Jes.Sorensen@redhat.com>

Reported-by: Xose Vazquez Perez <xose.vazquez@gmail.com>
Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
---
 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
index b58a60f..78683b5 100644
--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
+++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
@@ -5959,8 +5959,6 @@ static struct usb_device_id dev_table[] = {
 	.driver_info = (unsigned long)&rtl8192cu_fops},
 {USB_DEVICE_AND_INTERFACE_INFO(0xcdab, 0x8010, 0xff, 0xff, 0xff),
 	.driver_info = (unsigned long)&rtl8192cu_fops},
-{USB_DEVICE_AND_INTERFACE_INFO(USB_VENDOR_ID_REALTEK, 0x317f, 0xff, 0xff, 0xff),
-	.driver_info = (unsigned long)&rtl8192cu_fops}, /* Netcore 8188RU */
 {USB_DEVICE_AND_INTERFACE_INFO(0x04f2, 0xaff7, 0xff, 0xff, 0xff),
 	.driver_info = (unsigned long)&rtl8192cu_fops},
 {USB_DEVICE_AND_INTERFACE_INFO(0x04f2, 0xaff9, 0xff, 0xff, 0xff),
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [PATCH 20/28] rtl8xxxu: Fix 80 character per line issue
  2016-02-03 18:39 [PATCH 00/28] rtl8xxxu updates and fixes Jes.Sorensen
                   ` (18 preceding siblings ...)
  2016-02-03 18:39 ` [PATCH 19/28] rtl8xxxu: Remove duplicate USB ID Jes.Sorensen
@ 2016-02-03 18:39 ` Jes.Sorensen
  2016-02-03 18:39 ` [PATCH 21/28] rtl8xxxu: Enable data frame reception in rtl8xxxu_start Jes.Sorensen
                   ` (7 subsequent siblings)
  27 siblings, 0 replies; 32+ messages in thread
From: Jes.Sorensen @ 2016-02-03 18:39 UTC (permalink / raw)
  To: linux-wireless; +Cc: kvalo, Jes Sorensen

From: Jes Sorensen <Jes.Sorensen@redhat.com>

Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
---
 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
index 78683b5..9f89f62 100644
--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
+++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
@@ -5355,8 +5355,9 @@ static void rtl8xxxu_configure_filter(struct ieee80211_hw *hw,
 
 	rtl8xxxu_write32(priv, REG_RCR, rcr);
 
-	*total_flags &= (FIF_ALLMULTI | FIF_FCSFAIL | FIF_BCN_PRBRESP_PROMISC | \
-			 FIF_CONTROL | FIF_OTHER_BSS | FIF_PSPOLL | FIF_PROBE_REQ);
+	*total_flags &= (FIF_ALLMULTI | FIF_FCSFAIL | FIF_BCN_PRBRESP_PROMISC |
+			 FIF_CONTROL | FIF_OTHER_BSS | FIF_PSPOLL |
+			 FIF_PROBE_REQ);
 }
 
 static int rtl8xxxu_set_rts_threshold(struct ieee80211_hw *hw, u32 rts)
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [PATCH 21/28] rtl8xxxu: Enable data frame reception in rtl8xxxu_start
  2016-02-03 18:39 [PATCH 00/28] rtl8xxxu updates and fixes Jes.Sorensen
                   ` (19 preceding siblings ...)
  2016-02-03 18:39 ` [PATCH 20/28] rtl8xxxu: Fix 80 character per line issue Jes.Sorensen
@ 2016-02-03 18:39 ` Jes.Sorensen
  2016-02-03 18:39 ` [PATCH 22/28] rtl8xxxu: rtl8xxxu_set_linktype(): Be consistent aboutregister size REG_MSR Jes.Sorensen
                   ` (6 subsequent siblings)
  27 siblings, 0 replies; 32+ messages in thread
From: Jes.Sorensen @ 2016-02-03 18:39 UTC (permalink / raw)
  To: linux-wireless; +Cc: kvalo, Bruno Randolf, Jes Sorensen

From: Bruno Randolf <br1@einfach.org>

mac80211 documentation says, the ieee80211_ops.start callback "must turn on
frame reception (for possibly enabled monitor interfaces.)". If not a single
monitor interface does not receive data frames.

Similarly we should not change the data reception based on the association
state.

Signed-off-by: Bruno Randolf <br1@einfach.org>
Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
---
 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c | 12 ++----------
 1 file changed, 2 insertions(+), 10 deletions(-)

diff --git a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
index 9f89f62..1b7ff74 100644
--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
+++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
@@ -4521,9 +4521,6 @@ rtl8xxxu_bss_info_changed(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
 
 			rtl8xxxu_update_rate_mask(priv, ramask, sgi);
 
-			/* Enable RX of data frames */
-			rtl8xxxu_write16(priv, REG_RXFLTMAP2, 0xffff);
-
 			rtl8xxxu_write8(priv, REG_BCN_MAX_ERR, 0xff);
 
 			rtl8723a_stop_tx_beacon(priv);
@@ -4538,8 +4535,6 @@ rtl8xxxu_bss_info_changed(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
 			val8 |= BEACON_DISABLE_TSF_UPDATE;
 			rtl8xxxu_write8(priv, REG_BEACON_CTRL, val8);
 
-			/* Disable RX of data frames */
-			rtl8xxxu_write16(priv, REG_RXFLTMAP2, 0x0000);
 			h2c.joinbss.data = H2C_JOIN_BSS_DISCONNECT;
 		}
 		h2c.joinbss.cmd = H2C_JOIN_BSS_REPORT;
@@ -5542,12 +5537,9 @@ static int rtl8xxxu_start(struct ieee80211_hw *hw)
 	}
 exit:
 	/*
-	 * Disable all data frames
-	 */
-	rtl8xxxu_write16(priv, REG_RXFLTMAP2, 0x0000);
-	/*
-	 * Accept all mgmt frames
+	 * Accept all data and mgmt frames
 	 */
+	rtl8xxxu_write16(priv, REG_RXFLTMAP2, 0xffff);
 	rtl8xxxu_write16(priv, REG_RXFLTMAP0, 0xffff);
 
 	rtl8xxxu_write32(priv, REG_OFDM0_XA_AGC_CORE1, 0x6954341e);
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [PATCH 22/28] rtl8xxxu: rtl8xxxu_set_linktype(): Be consistent aboutregister size REG_MSR
  2016-02-03 18:39 [PATCH 00/28] rtl8xxxu updates and fixes Jes.Sorensen
                   ` (20 preceding siblings ...)
  2016-02-03 18:39 ` [PATCH 21/28] rtl8xxxu: Enable data frame reception in rtl8xxxu_start Jes.Sorensen
@ 2016-02-03 18:39 ` Jes.Sorensen
  2016-02-03 18:39 ` [PATCH 23/28] rtl8xxxu: Set correct bit to reset MCU IO wrapper Jes.Sorensen
                   ` (5 subsequent siblings)
  27 siblings, 0 replies; 32+ messages in thread
From: Jes.Sorensen @ 2016-02-03 18:39 UTC (permalink / raw)
  To: linux-wireless; +Cc: kvalo, Jes Sorensen

From: Jes Sorensen <Jes.Sorensen@redhat.com>

Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
---
 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
index 1b7ff74..c8ba698 100644
--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
+++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
@@ -1599,9 +1599,9 @@ rtl8723a_set_tx_power(struct rtl8xxxu_priv *priv, int channel, bool ht40)
 static void rtl8xxxu_set_linktype(struct rtl8xxxu_priv *priv,
 				  enum nl80211_iftype linktype)
 {
-	u16 val8;
+	u8 val8;
 
-	val8 = rtl8xxxu_read16(priv, REG_MSR);
+	val8 = rtl8xxxu_read8(priv, REG_MSR);
 	val8 &= ~MSR_LINKTYPE_MASK;
 
 	switch (linktype) {
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [PATCH 23/28] rtl8xxxu: Set correct bit to reset MCU IO wrapper
  2016-02-03 18:39 [PATCH 00/28] rtl8xxxu updates and fixes Jes.Sorensen
                   ` (21 preceding siblings ...)
  2016-02-03 18:39 ` [PATCH 22/28] rtl8xxxu: rtl8xxxu_set_linktype(): Be consistent aboutregister size REG_MSR Jes.Sorensen
@ 2016-02-03 18:39 ` Jes.Sorensen
  2016-02-03 18:39 ` [PATCH 24/28] rtl8xxxu: Remove unused mgmt variable from rtl8xxxu_rx_complete() Jes.Sorensen
                   ` (4 subsequent siblings)
  27 siblings, 0 replies; 32+ messages in thread
From: Jes.Sorensen @ 2016-02-03 18:39 UTC (permalink / raw)
  To: linux-wireless; +Cc: kvalo, Jes Sorensen

From: Jes Sorensen <Jes.Sorensen@redhat.com>

All chips, except for 8812 require BIT(0) for resetting the MCU IO
wrapper. 8723b requires a more complicated reset sequence, so it will
need a custom reset function.

Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
---
 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
index c8ba698..460145c 100644
--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
+++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
@@ -2052,13 +2052,13 @@ static void rtl8xxxu_reset_8051(struct rtl8xxxu_priv *priv)
 	u16 sys_func;
 
 	val8 = rtl8xxxu_read8(priv, REG_RSV_CTRL + 1);
-	val8 &= ~BIT(3);
+	val8 &= ~BIT(0);
 	rtl8xxxu_write8(priv, REG_RSV_CTRL + 1, val8);
 	sys_func = rtl8xxxu_read16(priv, REG_SYS_FUNC);
 	sys_func &= ~SYS_FUNC_CPU_ENABLE;
 	rtl8xxxu_write16(priv, REG_SYS_FUNC, sys_func);
 	val8 = rtl8xxxu_read8(priv, REG_RSV_CTRL + 1);
-	val8 |= BIT(3);
+	val8 |= BIT(0);
 	rtl8xxxu_write8(priv, REG_RSV_CTRL + 1, val8);
 	sys_func |= SYS_FUNC_CPU_ENABLE;
 	rtl8xxxu_write16(priv, REG_SYS_FUNC, sys_func);
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [PATCH 24/28] rtl8xxxu: Remove unused mgmt variable from rtl8xxxu_rx_complete()
  2016-02-03 18:39 [PATCH 00/28] rtl8xxxu updates and fixes Jes.Sorensen
                   ` (22 preceding siblings ...)
  2016-02-03 18:39 ` [PATCH 23/28] rtl8xxxu: Set correct bit to reset MCU IO wrapper Jes.Sorensen
@ 2016-02-03 18:39 ` Jes.Sorensen
  2016-02-03 18:39 ` [PATCH 25/28] rtl8xxxu: Remove unused len/cnt variables " Jes.Sorensen
                   ` (3 subsequent siblings)
  27 siblings, 0 replies; 32+ messages in thread
From: Jes.Sorensen @ 2016-02-03 18:39 UTC (permalink / raw)
  To: linux-wireless; +Cc: kvalo, Jes Sorensen

From: Jes Sorensen <Jes.Sorensen@redhat.com>

Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
---
 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
index 460145c..1201836 100644
--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
+++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
@@ -5031,7 +5031,6 @@ static void rtl8xxxu_rx_complete(struct urb *urb)
 	struct rtl8xxxu_rx_desc *rx_desc = (struct rtl8xxxu_rx_desc *)skb->data;
 	struct rtl8723au_phy_stats *phy_stats;
 	struct ieee80211_rx_status *rx_status = IEEE80211_SKB_RXCB(skb);
-	struct ieee80211_mgmt *mgmt;
 	struct device *dev = &priv->udev->dev;
 	__le32 *_rx_desc_le = (__le32 *)skb->data;
 	u32 *_rx_desc = (u32 *)skb->data;
@@ -5052,8 +5051,6 @@ static void rtl8xxxu_rx_complete(struct urb *urb)
 
 		skb_pull(skb, drvinfo_sz + desc_shift);
 
-		mgmt = (struct ieee80211_mgmt *)skb->data;
-
 		memset(rx_status, 0, sizeof(struct ieee80211_rx_status));
 
 		if (rx_desc->phy_stats)
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [PATCH 25/28] rtl8xxxu: Remove unused len/cnt variables from rtl8xxxu_rx_complete()
  2016-02-03 18:39 [PATCH 00/28] rtl8xxxu updates and fixes Jes.Sorensen
                   ` (23 preceding siblings ...)
  2016-02-03 18:39 ` [PATCH 24/28] rtl8xxxu: Remove unused mgmt variable from rtl8xxxu_rx_complete() Jes.Sorensen
@ 2016-02-03 18:39 ` Jes.Sorensen
  2016-02-03 18:40 ` [PATCH 26/28] rtl8xxxu: Do not mask RF registers to 6 bits Jes.Sorensen
                   ` (2 subsequent siblings)
  27 siblings, 0 replies; 32+ messages in thread
From: Jes.Sorensen @ 2016-02-03 18:39 UTC (permalink / raw)
  To: linux-wireless; +Cc: kvalo, Jes Sorensen

From: Jes Sorensen <Jes.Sorensen@redhat.com>

Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
---
 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
index 1201836..a6c8dab 100644
--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
+++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
@@ -5034,13 +5034,11 @@ static void rtl8xxxu_rx_complete(struct urb *urb)
 	struct device *dev = &priv->udev->dev;
 	__le32 *_rx_desc_le = (__le32 *)skb->data;
 	u32 *_rx_desc = (u32 *)skb->data;
-	int cnt, len, drvinfo_sz, desc_shift, i;
+	int drvinfo_sz, desc_shift, i;
 
 	for (i = 0; i < (sizeof(struct rtl8xxxu_rx_desc) / sizeof(u32)); i++)
 		_rx_desc[i] = le32_to_cpu(_rx_desc_le[i]);
 
-	cnt = rx_desc->frag;
-	len = rx_desc->pktlen;
 	drvinfo_sz = rx_desc->drvinfo_sz * 8;
 	desc_shift = rx_desc->shift;
 	skb_put(skb, urb->actual_length);
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [PATCH 26/28] rtl8xxxu: Do not mask RF registers to 6 bits
  2016-02-03 18:39 [PATCH 00/28] rtl8xxxu updates and fixes Jes.Sorensen
                   ` (24 preceding siblings ...)
  2016-02-03 18:39 ` [PATCH 25/28] rtl8xxxu: Remove unused len/cnt variables " Jes.Sorensen
@ 2016-02-03 18:40 ` Jes.Sorensen
  2016-02-03 18:40 ` [PATCH 27/28] rtl8xxxu: Make device_init kludge 8723au only Jes.Sorensen
  2016-02-03 18:40 ` [PATCH 28/28] rtl8xxxu: Add missing bit define for REG_APS_FSMCO Jes.Sorensen
  27 siblings, 0 replies; 32+ messages in thread
From: Jes.Sorensen @ 2016-02-03 18:40 UTC (permalink / raw)
  To: linux-wireless; +Cc: kvalo, Jes Sorensen

From: Jes Sorensen <Jes.Sorensen@redhat.com>

Newer chips have RF registers beyond the original 0x3f address.

Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
---
 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
index a6c8dab..af17ae7 100644
--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
+++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
@@ -2536,8 +2536,6 @@ static int rtl8xxxu_init_rf_regs(struct rtl8xxxu_priv *priv,
 			continue;
 		}
 
-		reg &= 0x3f;
-
 		ret = rtl8xxxu_write_rfreg(priv, path, reg, val);
 		if (ret) {
 			dev_warn(&priv->udev->dev,
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [PATCH 27/28] rtl8xxxu: Make device_init kludge 8723au only
  2016-02-03 18:39 [PATCH 00/28] rtl8xxxu updates and fixes Jes.Sorensen
                   ` (25 preceding siblings ...)
  2016-02-03 18:40 ` [PATCH 26/28] rtl8xxxu: Do not mask RF registers to 6 bits Jes.Sorensen
@ 2016-02-03 18:40 ` Jes.Sorensen
  2016-02-03 18:40 ` [PATCH 28/28] rtl8xxxu: Add missing bit define for REG_APS_FSMCO Jes.Sorensen
  27 siblings, 0 replies; 32+ messages in thread
From: Jes.Sorensen @ 2016-02-03 18:40 UTC (permalink / raw)
  To: linux-wireless; +Cc: kvalo, Jes Sorensen

From: Jes Sorensen <Jes.Sorensen@redhat.com>

Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
---
 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c | 19 +++++++++++--------
 1 file changed, 11 insertions(+), 8 deletions(-)

diff --git a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
index af17ae7..fdeae3b 100644
--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
+++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c
@@ -4343,14 +4343,17 @@ static int rtl8xxxu_init_device(struct ieee80211_hw *hw)
 	val8 = ((30000 + NAV_UPPER_UNIT - 1) / NAV_UPPER_UNIT);
 	rtl8xxxu_write8(priv, REG_NAV_UPPER, val8);
 
-	/*
-	 * 2011/03/09 MH debug only, UMC-B cut pass 2500 S5 test,
-	 * but we need to fin root cause.
-	 */
-	val32 = rtl8xxxu_read32(priv, REG_FPGA0_RF_MODE);
-	if ((val32 & 0xff000000) != 0x83000000) {
-		val32 |= FPGA_RF_MODE_CCK;
-		rtl8xxxu_write32(priv, REG_FPGA0_RF_MODE, val32);
+	if (priv->rtlchip == 0x8723a) {
+		/*
+		 * 2011/03/09 MH debug only, UMC-B cut pass 2500 S5 test,
+		 * but we need to find root cause.
+		 * This is 8723au only.
+		 */
+		val32 = rtl8xxxu_read32(priv, REG_FPGA0_RF_MODE);
+		if ((val32 & 0xff000000) != 0x83000000) {
+			val32 |= FPGA_RF_MODE_CCK;
+			rtl8xxxu_write32(priv, REG_FPGA0_RF_MODE, val32);
+		}
 	}
 
 	val32 = rtl8xxxu_read32(priv, REG_FWHW_TXQ_CTRL);
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [PATCH 28/28] rtl8xxxu: Add missing bit define for REG_APS_FSMCO
  2016-02-03 18:39 [PATCH 00/28] rtl8xxxu updates and fixes Jes.Sorensen
                   ` (26 preceding siblings ...)
  2016-02-03 18:40 ` [PATCH 27/28] rtl8xxxu: Make device_init kludge 8723au only Jes.Sorensen
@ 2016-02-03 18:40 ` Jes.Sorensen
  27 siblings, 0 replies; 32+ messages in thread
From: Jes.Sorensen @ 2016-02-03 18:40 UTC (permalink / raw)
  To: linux-wireless; +Cc: kvalo, Jes Sorensen

From: Jes Sorensen <Jes.Sorensen@redhat.com>

Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
---
 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_regs.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_regs.h b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_regs.h
index d089edd..8f6c9c6 100644
--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_regs.h
+++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_regs.h
@@ -45,6 +45,7 @@
 #define  APS_FSMCO_ENABLE_POWERDOWN	BIT(4)
 #define  APS_FSMCO_MAC_ENABLE		BIT(8)
 #define  APS_FSMCO_MAC_OFF		BIT(9)
+#define  APS_FSMCO_SW_LPS		BIT(10)
 #define  APS_FSMCO_HW_SUSPEND		BIT(11)
 #define  APS_FSMCO_PCIE			BIT(12)
 #define  APS_FSMCO_HW_POWERDOWN		BIT(15)
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 32+ messages in thread

* Re: [PATCH 03/28] rtl8xxxu: If fw running in RAM, reset the 8051 before trying to download a new one
  2016-02-03 18:39 ` [PATCH 03/28] rtl8xxxu: If fw running in RAM, reset the 8051 before trying to download a new one Jes.Sorensen
@ 2016-02-25  9:36   ` Kalle Valo
  2016-02-25 15:02     ` Jes Sorensen
  0 siblings, 1 reply; 32+ messages in thread
From: Kalle Valo @ 2016-02-25  9:36 UTC (permalink / raw)
  To: Jes.Sorensen; +Cc: linux-wireless

Jes.Sorensen@redhat.com writes:

> From: Jes Sorensen <Jes.Sorensen@redhat.com>
>
> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>

No empty commit logs, please. And this patch even has a too long title
which really should be the actual commit log.

I can take this now but in the future please write one.

-- 
Kalle Valo

^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [01/28] rtl8xxxu: Minor cleanup to rtl8xxxu_download_firmware()
  2016-02-03 18:39 ` [PATCH 01/28] rtl8xxxu: Minor cleanup to rtl8xxxu_download_firmware() Jes.Sorensen
@ 2016-02-25  9:57   ` Kalle Valo
  0 siblings, 0 replies; 32+ messages in thread
From: Kalle Valo @ 2016-02-25  9:57 UTC (permalink / raw)
  To: Jes Sorensen; +Cc: linux-wireless, Jes Sorensen


> From: Jes Sorensen <Jes.Sorensen@redhat.com>
> 
> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>

Thanks, 28 patches applied to wireless-drivers-next.git:

43154f6fd46b rtl8xxxu: Minor cleanup to rtl8xxxu_download_firmware()
ef1c0499316b rtl8xxxu: rtl8xxxu_download_firmware(): Cosmetic cleanups
216202ae20ea rtl8xxxu: If fw running in RAM, reset the 8051 before trying to download a new one
0635f8cede15 rtl8xxxu: Add RQPN_[NE]PQ_SHIFT values
f076977537d9 rtl8xxxu: Define SYS_CFG_SW_OFFLOAD_EN
cecfd3cb29f8 rtl8xxxu: Add REG_TX_REPORT_* defines
22229fcb487a rtl8xxxu: Add more RCR bits
c1edece3c22b rtl8xxxu: Fix typo in Kconfig help text
98e27cbd9453 rtl8xxxu: Check return value of kmemdup()
d48fe60e06f4 rtl8xxxu: Implement rtl8xxxu_reset_8051()
af9e4d6d9d07 rtl8xxxu: Add definitions for antenna selection registers for 8723BU
29c2139cd04a rtl8xxxu: Add mbox extension register definitions for 8723B
ce6f2e366954 rtl8xxxu: Add REG_OFDM0_RX_D_SYNC_PATH definitions
e5c447ccf8e5 rtl8xxxu: Remove unused clutter for handling recursive calls to rtl8xxxu_init_device()
38451998fb8a rtl8xxxu: Use REG_EFUSE_TEST register only on multifunctional devices
56e4374a5e08 rtl8xxxu: Fix cosmetics to quiet down checkpatch police
3bed4bfa51f2 rtl8xxxu: Enable monitor mode by handling filters
b40027ba8db1 rtl8xxxu: Document REG_RXFLTMAP registers
124bc63c995d rtl8xxxu: Remove duplicate USB ID
755bda116e8a rtl8xxxu: Fix 80 character per line issue
c85ea1156d78 rtl8xxxu: Enable data frame reception in rtl8xxxu_start
a26703f39d2f rtl8xxxu: rtl8xxxu_set_linktype(): Be consistent aboutregister size REG_MSR
53b381c4d72a rtl8xxxu: Set correct bit to reset MCU IO wrapper
796c554257b1 rtl8xxxu: Remove unused mgmt variable from rtl8xxxu_rx_complete()
a9ffa615aa4c rtl8xxxu: Remove unused len/cnt variables from rtl8xxxu_rx_complete()
dc254ca41134 rtl8xxxu: Do not mask RF registers to 6 bits
4042e61735ce rtl8xxxu: Make device_init kludge 8723au only
5b22a111aa15 rtl8xxxu: Add missing bit define for REG_APS_FSMCO

Kalle Valo

^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [PATCH 03/28] rtl8xxxu: If fw running in RAM, reset the 8051 before trying to download a new one
  2016-02-25  9:36   ` Kalle Valo
@ 2016-02-25 15:02     ` Jes Sorensen
  0 siblings, 0 replies; 32+ messages in thread
From: Jes Sorensen @ 2016-02-25 15:02 UTC (permalink / raw)
  To: Kalle Valo; +Cc: linux-wireless

Kalle Valo <kvalo@codeaurora.org> writes:
> Jes.Sorensen@redhat.com writes:
>
>> From: Jes Sorensen <Jes.Sorensen@redhat.com>
>>
>> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
>
> No empty commit logs, please. And this patch even has a too long title
> which really should be the actual commit log.
>
> I can take this now but in the future please write one.

It does, the $Subject is the commit log. But I'll try and break it down
on more lines if there is something to add.

Jes

^ permalink raw reply	[flat|nested] 32+ messages in thread

end of thread, other threads:[~2016-02-25 15:03 UTC | newest]

Thread overview: 32+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-02-03 18:39 [PATCH 00/28] rtl8xxxu updates and fixes Jes.Sorensen
2016-02-03 18:39 ` [PATCH 01/28] rtl8xxxu: Minor cleanup to rtl8xxxu_download_firmware() Jes.Sorensen
2016-02-25  9:57   ` [01/28] " Kalle Valo
2016-02-03 18:39 ` [PATCH 02/28] rtl8xxxu: rtl8xxxu_download_firmware(): Cosmetic cleanups Jes.Sorensen
2016-02-03 18:39 ` [PATCH 03/28] rtl8xxxu: If fw running in RAM, reset the 8051 before trying to download a new one Jes.Sorensen
2016-02-25  9:36   ` Kalle Valo
2016-02-25 15:02     ` Jes Sorensen
2016-02-03 18:39 ` [PATCH 04/28] rtl8xxxu: Add RQPN_[NE]PQ_SHIFT values Jes.Sorensen
2016-02-03 18:39 ` [PATCH 05/28] rtl8xxxu: Define SYS_CFG_SW_OFFLOAD_EN Jes.Sorensen
2016-02-03 18:39 ` [PATCH 06/28] rtl8xxxu: Add REG_TX_REPORT_* defines Jes.Sorensen
2016-02-03 18:39 ` [PATCH 07/28] rtl8xxxu: Add more RCR bits Jes.Sorensen
2016-02-03 18:39 ` [PATCH 08/28] rtl8xxxu: Fix typo in Kconfig help text Jes.Sorensen
2016-02-03 18:39 ` [PATCH 09/28] rtl8xxxu: Check return value of kmemdup() Jes.Sorensen
2016-02-03 18:39 ` [PATCH 10/28] rtl8xxxu: Implement rtl8xxxu_reset_8051() Jes.Sorensen
2016-02-03 18:39 ` [PATCH 11/28] rtl8xxxu: Add definitions for antenna selection registers for 8723BU Jes.Sorensen
2016-02-03 18:39 ` [PATCH 12/28] rtl8xxxu: Add mbox extension register definitions for 8723B Jes.Sorensen
2016-02-03 18:39 ` [PATCH 13/28] rtl8xxxu: Add REG_OFDM0_RX_D_SYNC_PATH definitions Jes.Sorensen
2016-02-03 18:39 ` [PATCH 14/28] rtl8xxxu: Remove unused clutter for handling recursive calls to rtl8xxxu_init_device() Jes.Sorensen
2016-02-03 18:39 ` [PATCH 15/28] rtl8xxxu: Use REG_EFUSE_TEST register only on multifunctional devices Jes.Sorensen
2016-02-03 18:39 ` [PATCH 16/28] rtl8xxxu: Fix cosmetics to quiet down checkpatch police Jes.Sorensen
2016-02-03 18:39 ` [PATCH 17/28] rtl8xxxu: Enable monitor mode by handling filters Jes.Sorensen
2016-02-03 18:39 ` [PATCH 18/28] rtl8xxxu: Document REG_RXFLTMAP registers Jes.Sorensen
2016-02-03 18:39 ` [PATCH 19/28] rtl8xxxu: Remove duplicate USB ID Jes.Sorensen
2016-02-03 18:39 ` [PATCH 20/28] rtl8xxxu: Fix 80 character per line issue Jes.Sorensen
2016-02-03 18:39 ` [PATCH 21/28] rtl8xxxu: Enable data frame reception in rtl8xxxu_start Jes.Sorensen
2016-02-03 18:39 ` [PATCH 22/28] rtl8xxxu: rtl8xxxu_set_linktype(): Be consistent aboutregister size REG_MSR Jes.Sorensen
2016-02-03 18:39 ` [PATCH 23/28] rtl8xxxu: Set correct bit to reset MCU IO wrapper Jes.Sorensen
2016-02-03 18:39 ` [PATCH 24/28] rtl8xxxu: Remove unused mgmt variable from rtl8xxxu_rx_complete() Jes.Sorensen
2016-02-03 18:39 ` [PATCH 25/28] rtl8xxxu: Remove unused len/cnt variables " Jes.Sorensen
2016-02-03 18:40 ` [PATCH 26/28] rtl8xxxu: Do not mask RF registers to 6 bits Jes.Sorensen
2016-02-03 18:40 ` [PATCH 27/28] rtl8xxxu: Make device_init kludge 8723au only Jes.Sorensen
2016-02-03 18:40 ` [PATCH 28/28] rtl8xxxu: Add missing bit define for REG_APS_FSMCO Jes.Sorensen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).