All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 00/10] rtlwifi: add btcoex materials for 8822be
@ 2018-01-19  6:45 pkshih
  2018-01-19  6:45 ` [PATCH 01/10] rtlwifi: btcoex: extend get_wifi_bw to support bandwidth 80M pkshih
                   ` (9 more replies)
  0 siblings, 10 replies; 26+ messages in thread
From: pkshih @ 2018-01-19  6:45 UTC (permalink / raw)
  To: kvalo; +Cc: Larry.Finger, linux-wireless

From: Ping-Ke Shih <pkshih@realtek.com>

In order to support rtl8822be, btcoex needs more information to control
rtl8822be, and common code needs to add more materials as well.

Ping-Ke Shih (10):
  rtlwifi: btcoex: extend get_wifi_bw to support bandwidth 80M
  rtlwifi: btcoex: Add switch band notify for btc
  rtlwifi: btcoex: Add variable ant_div_cfg to support antenna diversity
  rtlwifi: btcoex: add scan_notify within ips_notify if RFON
  rtlwifi: btcoex: Add wifi_only series ops to control solo card
  rtlwifi: btcoex: add boolean variables dbg_mode
  rtlwifi: btcoex: Fix some static warnings from Sparse
  rtlwifi: 8822be has to report vht capability to mac80211
  rtlwifi: Add ratr_table for newer IC
  rtlwifi: Add spec_ver to check whether use new rate-id or not

 drivers/net/wireless/realtek/rtlwifi/base.c        | 129 ++++++++++++++++++--
 drivers/net/wireless/realtek/rtlwifi/base.h        |   2 +
 .../realtek/rtlwifi/btcoexist/halbtcoutsrc.c       | 135 ++++++++++++++-------
 .../realtek/rtlwifi/btcoexist/halbtcoutsrc.h       |  64 ++++++++++
 .../wireless/realtek/rtlwifi/btcoexist/rtl_btc.c   |  89 +++++++++++++-
 .../wireless/realtek/rtlwifi/btcoexist/rtl_btc.h   |   7 ++
 drivers/net/wireless/realtek/rtlwifi/core.c        |   6 +
 drivers/net/wireless/realtek/rtlwifi/pci.c         |   8 +-
 drivers/net/wireless/realtek/rtlwifi/wifi.h        |  32 +++++
 9 files changed, 409 insertions(+), 63 deletions(-)

-- 
2.15.1

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

* [PATCH 01/10] rtlwifi: btcoex: extend get_wifi_bw to support bandwidth 80M
  2018-01-19  6:45 [PATCH 00/10] rtlwifi: add btcoex materials for 8822be pkshih
@ 2018-01-19  6:45 ` pkshih
  2018-01-19 22:52   ` Larry Finger
  2018-01-24 15:41   ` [01/10] " Kalle Valo
  2018-01-19  6:45 ` [PATCH 02/10] rtlwifi: btcoex: Add switch band notify for btc pkshih
                   ` (8 subsequent siblings)
  9 siblings, 2 replies; 26+ messages in thread
From: pkshih @ 2018-01-19  6:45 UTC (permalink / raw)
  To: kvalo; +Cc: Larry.Finger, linux-wireless

From: Ping-Ke Shih <pkshih@realtek.com>

The rtlwifi newer ICs support 80M bandwidth in 5G band, so extend
get_wifi_bw() to know bandwidth 80M that helps btcoex to make correct
decisions.

Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
---
 .../realtek/rtlwifi/btcoexist/halbtcoutsrc.c       | 37 +++++++++-------------
 .../realtek/rtlwifi/btcoexist/halbtcoutsrc.h       |  1 +
 2 files changed, 16 insertions(+), 22 deletions(-)

diff --git a/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.c b/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.c
index af8f3778dc91..c335f06eb13b 100644
--- a/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.c
+++ b/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.c
@@ -95,21 +95,6 @@ static bool is_any_client_connect_to_ap(struct btc_coexist *btcoexist)
 		return false;
 }
 
-static bool halbtc_is_bt40(struct rtl_priv *adapter)
-{
-	struct rtl_priv *rtlpriv = adapter;
-	struct rtl_phy *rtlphy = &(rtlpriv->phy);
-	bool is_ht40 = true;
-	enum ht_channel_width bw = rtlphy->current_chan_bw;
-
-	if (bw == HT_CHANNEL_WIDTH_20)
-		is_ht40 = false;
-	else if (bw == HT_CHANNEL_WIDTH_20_40)
-		is_ht40 = true;
-
-	return is_ht40;
-}
-
 static bool halbtc_legacy(struct rtl_priv *adapter)
 {
 	struct rtl_priv *rtlpriv = adapter;
@@ -135,18 +120,26 @@ bool halbtc_is_wifi_uplink(struct rtl_priv *adapter)
 
 static u32 halbtc_get_wifi_bw(struct btc_coexist *btcoexist)
 {
-	struct rtl_priv *rtlpriv =
-		(struct rtl_priv *)btcoexist->adapter;
+	struct rtl_priv *rtlpriv = btcoexist->adapter;
+	struct rtl_phy *rtlphy = &rtlpriv->phy;
 	u32 wifi_bw = BTC_WIFI_BW_HT20;
 
-	if (halbtc_is_bt40(rtlpriv)) {
-		wifi_bw = BTC_WIFI_BW_HT40;
+	if (halbtc_legacy(rtlpriv)) {
+		wifi_bw = BTC_WIFI_BW_LEGACY;
 	} else {
-		if (halbtc_legacy(rtlpriv))
-			wifi_bw = BTC_WIFI_BW_LEGACY;
-		else
+		switch (rtlphy->current_chan_bw) {
+		case HT_CHANNEL_WIDTH_20:
 			wifi_bw = BTC_WIFI_BW_HT20;
+			break;
+		case HT_CHANNEL_WIDTH_20_40:
+			wifi_bw = BTC_WIFI_BW_HT40;
+			break;
+		case HT_CHANNEL_WIDTH_80:
+			wifi_bw = BTC_WIFI_BW_HT80;
+			break;
+		}
 	}
+
 	return wifi_bw;
 }
 
diff --git a/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.h b/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.h
index 57caaf130a46..bc854ff2ab8a 100644
--- a/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.h
+++ b/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.h
@@ -190,6 +190,7 @@ enum btc_wifi_bw_mode {
 	BTC_WIFI_BW_LEGACY = 0x0,
 	BTC_WIFI_BW_HT20 = 0x1,
 	BTC_WIFI_BW_HT40 = 0x2,
+	BTC_WIFI_BW_HT80 = 0x3,
 	BTC_WIFI_BW_MAX
 };
 
-- 
2.15.1

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

* [PATCH 02/10] rtlwifi: btcoex: Add switch band notify for btc
  2018-01-19  6:45 [PATCH 00/10] rtlwifi: add btcoex materials for 8822be pkshih
  2018-01-19  6:45 ` [PATCH 01/10] rtlwifi: btcoex: extend get_wifi_bw to support bandwidth 80M pkshih
@ 2018-01-19  6:45 ` pkshih
  2018-01-22 19:12   ` Larry Finger
  2018-01-19  6:45 ` [PATCH 03/10] rtlwifi: btcoex: Add variable ant_div_cfg to support antenna diversity pkshih
                   ` (7 subsequent siblings)
  9 siblings, 1 reply; 26+ messages in thread
From: pkshih @ 2018-01-19  6:45 UTC (permalink / raw)
  To: kvalo; +Cc: Larry.Finger, linux-wireless

From: Ping-Ke Shih <pkshih@realtek.com>

BT shares 2.4G band but not 5G band, so inform current band to btcoex to
setup antenna properly.

Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
---
 .../realtek/rtlwifi/btcoexist/halbtcoutsrc.c       | 13 +++++++++++
 .../realtek/rtlwifi/btcoexist/halbtcoutsrc.h       |  9 ++++++++
 .../wireless/realtek/rtlwifi/btcoexist/rtl_btc.c   | 27 ++++++++++++++++++++++
 .../wireless/realtek/rtlwifi/btcoexist/rtl_btc.h   |  2 ++
 drivers/net/wireless/realtek/rtlwifi/wifi.h        |  2 ++
 5 files changed, 53 insertions(+)

diff --git a/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.c b/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.c
index c335f06eb13b..b51189ae1bfd 100644
--- a/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.c
+++ b/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.c
@@ -1910,3 +1910,16 @@ void exhalbtc_display_bt_coex_info(struct btc_coexist *btcoexist,
 
 	halbtc_normal_low_power(btcoexist);
 }
+
+void exhalbtc_switch_band_notify(struct btc_coexist *btcoexist, u8 type)
+{
+	if (!halbtc_is_bt_coexist_available(btcoexist))
+		return;
+
+	if (btcoexist->manual_control)
+		return;
+
+	halbtc_leave_low_power(btcoexist);
+
+	halbtc_normal_low_power(btcoexist);
+}
diff --git a/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.h b/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.h
index bc854ff2ab8a..cd3925d34854 100644
--- a/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.h
+++ b/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.h
@@ -385,6 +385,14 @@ enum btc_notify_type_scan {
 	BTC_SCAN_MAX
 };
 
+enum btc_notify_type_switchband {
+	BTC_NOT_SWITCH = 0x0,
+	BTC_SWITCH_TO_24G = 0x1,
+	BTC_SWITCH_TO_5G = 0x2,
+	BTC_SWITCH_TO_24G_NOFORSCAN = 0x3,
+	BTC_SWITCH_MAX
+};
+
 enum btc_notify_type_associate {
 	BTC_ASSOCIATE_FINISH = 0x0,
 	BTC_ASSOCIATE_START = 0x1,
@@ -659,6 +667,7 @@ void exhalbtc_set_chip_type(struct btc_coexist *btcoexist, u8 chip_type);
 void exhalbtc_set_ant_num(struct rtl_priv *rtlpriv, u8 type, u8 ant_num);
 void exhalbtc_display_bt_coex_info(struct btc_coexist *btcoexist,
 				   struct seq_file *m);
+void exhalbtc_switch_band_notify(struct btc_coexist *btcoexist, u8 type);
 void exhalbtc_signal_compensation(struct btc_coexist *btcoexist,
 				  u8 *rssi_wifi, u8 *rssi_bt);
 void exhalbtc_lps_leave(struct btc_coexist *btcoexist);
diff --git a/drivers/net/wireless/realtek/rtlwifi/btcoexist/rtl_btc.c b/drivers/net/wireless/realtek/rtlwifi/btcoexist/rtl_btc.c
index 714c0de099e5..bbc9517260b3 100644
--- a/drivers/net/wireless/realtek/rtlwifi/btcoexist/rtl_btc.c
+++ b/drivers/net/wireless/realtek/rtlwifi/btcoexist/rtl_btc.c
@@ -48,6 +48,7 @@ static struct rtl_btc_ops rtl_btc_operation = {
 	.btc_is_disable_edca_turbo = rtl_btc_is_disable_edca_turbo,
 	.btc_is_bt_disabled = rtl_btc_is_bt_disabled,
 	.btc_special_packet_notify = rtl_btc_special_packet_notify,
+	.btc_switch_band_notify = rtl_btc_switch_band_notify,
 	.btc_record_pwr_mode = rtl_btc_record_pwr_mode,
 	.btc_get_lps_val = rtl_btc_get_lps_val,
 	.btc_get_rpwm_val = rtl_btc_get_rpwm_val,
@@ -423,6 +424,32 @@ void rtl_btc_special_packet_notify(struct rtl_priv *rtlpriv, u8 pkt_type)
 	return exhalbtc_special_packet_notify(btcoexist, pkt_type);
 }
 
+void rtl_btc_switch_band_notify(struct rtl_priv *rtlpriv, u8 band_type,
+				bool scanning)
+{
+	struct btc_coexist *btcoexist = rtl_btc_coexist(rtlpriv);
+	u8 type = BTC_NOT_SWITCH;
+
+	if (!btcoexist)
+		return;
+
+	switch (band_type) {
+	case BAND_ON_2_4G:
+		if (scanning)
+			type = BTC_SWITCH_TO_24G;
+		else
+			type = BTC_SWITCH_TO_24G_NOFORSCAN;
+		break;
+
+	case BAND_ON_5G:
+		type = BTC_SWITCH_TO_5G;
+		break;
+	}
+
+	if (type != BTC_NOT_SWITCH)
+		exhalbtc_switch_band_notify(btcoexist, type);
+}
+
 struct rtl_btc_ops *rtl_btc_get_ops_pointer(void)
 {
 	return &rtl_btc_operation;
diff --git a/drivers/net/wireless/realtek/rtlwifi/btcoexist/rtl_btc.h b/drivers/net/wireless/realtek/rtlwifi/btcoexist/rtl_btc.h
index 8c5098266039..1d98741ae874 100644
--- a/drivers/net/wireless/realtek/rtlwifi/btcoexist/rtl_btc.h
+++ b/drivers/net/wireless/realtek/rtlwifi/btcoexist/rtl_btc.h
@@ -46,6 +46,8 @@ bool rtl_btc_is_limited_dig(struct rtl_priv *rtlpriv);
 bool rtl_btc_is_disable_edca_turbo(struct rtl_priv *rtlpriv);
 bool rtl_btc_is_bt_disabled(struct rtl_priv *rtlpriv);
 void rtl_btc_special_packet_notify(struct rtl_priv *rtlpriv, u8 pkt_type);
+void rtl_btc_switch_band_notify(struct rtl_priv *rtlpriv, u8 band_type,
+				bool scanning);
 void rtl_btc_display_bt_coex_info(struct rtl_priv *rtlpriv, struct seq_file *m);
 void rtl_btc_record_pwr_mode(struct rtl_priv *rtlpriv, u8 *buf, u8 len);
 u8   rtl_btc_get_lps_val(struct rtl_priv *rtlpriv);
diff --git a/drivers/net/wireless/realtek/rtlwifi/wifi.h b/drivers/net/wireless/realtek/rtlwifi/wifi.h
index 531c86df54d4..8ed0207c6f14 100644
--- a/drivers/net/wireless/realtek/rtlwifi/wifi.h
+++ b/drivers/net/wireless/realtek/rtlwifi/wifi.h
@@ -2579,6 +2579,8 @@ struct rtl_btc_ops {
 	bool (*btc_is_bt_disabled) (struct rtl_priv *rtlpriv);
 	void (*btc_special_packet_notify)(struct rtl_priv *rtlpriv,
 					  u8 pkt_type);
+	void (*btc_switch_band_notify)(struct rtl_priv *rtlpriv, u8 type,
+				       bool scanning);
 	void (*btc_display_bt_coex_info)(struct rtl_priv *rtlpriv,
 					 struct seq_file *m);
 	void (*btc_record_pwr_mode)(struct rtl_priv *rtlpriv, u8 *buf, u8 len);
-- 
2.15.1

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

* [PATCH 03/10] rtlwifi: btcoex: Add variable ant_div_cfg to support antenna diversity
  2018-01-19  6:45 [PATCH 00/10] rtlwifi: add btcoex materials for 8822be pkshih
  2018-01-19  6:45 ` [PATCH 01/10] rtlwifi: btcoex: extend get_wifi_bw to support bandwidth 80M pkshih
  2018-01-19  6:45 ` [PATCH 02/10] rtlwifi: btcoex: Add switch band notify for btc pkshih
@ 2018-01-19  6:45 ` pkshih
  2018-01-22 18:56   ` Larry Finger
  2018-01-19  6:45 ` [PATCH 04/10] rtlwifi: btcoex: add scan_notify within ips_notify if RFON pkshih
                   ` (6 subsequent siblings)
  9 siblings, 1 reply; 26+ messages in thread
From: pkshih @ 2018-01-19  6:45 UTC (permalink / raw)
  To: kvalo; +Cc: Larry.Finger, linux-wireless

From: Ping-Ke Shih <pkshih@realtek.com>

The variable will be used by btcoex of 8822be, so we prepare this variable
in advance.

Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
---
 drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.c | 1 +
 drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.h | 1 +
 2 files changed, 2 insertions(+)

diff --git a/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.c b/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.c
index b51189ae1bfd..8dc646190e35 100644
--- a/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.c
+++ b/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.c
@@ -1310,6 +1310,7 @@ bool exhalbtc_bind_bt_coex_withadapter(void *adapter)
 			 "[BTCoex], Package Type = Non-TFBGA\n");
 
 	btcoexist->board_info.rfe_type = rtl_get_hwpg_rfe_type(rtlpriv);
+	btcoexist->board_info.ant_div_cfg = 0;
 
 	return true;
 }
diff --git a/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.h b/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.h
index cd3925d34854..e0818f6efb87 100644
--- a/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.h
+++ b/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.h
@@ -153,6 +153,7 @@ struct btc_board_info {
 	bool tfbga_package;
 
 	u8 rfe_type;
+	u8 ant_div_cfg;
 };
 
 enum btc_dbg_opcode {
-- 
2.15.1

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

* [PATCH 04/10] rtlwifi: btcoex: add scan_notify within ips_notify if RFON
  2018-01-19  6:45 [PATCH 00/10] rtlwifi: add btcoex materials for 8822be pkshih
                   ` (2 preceding siblings ...)
  2018-01-19  6:45 ` [PATCH 03/10] rtlwifi: btcoex: Add variable ant_div_cfg to support antenna diversity pkshih
@ 2018-01-19  6:45 ` pkshih
  2018-01-22 19:00   ` Larry Finger
  2018-01-19  6:45 ` [PATCH 05/10] rtlwifi: btcoex: Add wifi_only series ops to control solo card pkshih
                   ` (5 subsequent siblings)
  9 siblings, 1 reply; 26+ messages in thread
From: pkshih @ 2018-01-19  6:45 UTC (permalink / raw)
  To: kvalo; +Cc: Larry.Finger, linux-wireless

From: Ping-Ke Shih <pkshih@realtek.com>

Three steps of connection procedure are scan, enter/leave IPS, auth.
There is no scan between leaving IPS and sending auth, but btcoex use scan
as an important clue that indicates user is going to connect. So add scan
notifications in ips_notify to correct btcoex's state.

Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
---
 drivers/net/wireless/realtek/rtlwifi/btcoexist/rtl_btc.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/drivers/net/wireless/realtek/rtlwifi/btcoexist/rtl_btc.c b/drivers/net/wireless/realtek/rtlwifi/btcoexist/rtl_btc.c
index bbc9517260b3..0111ab9e7b05 100644
--- a/drivers/net/wireless/realtek/rtlwifi/btcoexist/rtl_btc.c
+++ b/drivers/net/wireless/realtek/rtlwifi/btcoexist/rtl_btc.c
@@ -212,6 +212,14 @@ void rtl_btc_ips_notify(struct rtl_priv *rtlpriv, u8 type)
 		return;
 
 	exhalbtc_ips_notify(btcoexist, type);
+
+	if (type == ERFON) {
+		/* In some situation, it doesn't scan after leaving IPS, and
+		 * this will cause btcoex in wrong state.
+		 */
+		exhalbtc_scan_notify(btcoexist, 1);
+		exhalbtc_scan_notify(btcoexist, 0);
+	}
 }
 
 void rtl_btc_lps_notify(struct rtl_priv *rtlpriv, u8 type)
-- 
2.15.1

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

* [PATCH 05/10] rtlwifi: btcoex: Add wifi_only series ops to control solo card
  2018-01-19  6:45 [PATCH 00/10] rtlwifi: add btcoex materials for 8822be pkshih
                   ` (3 preceding siblings ...)
  2018-01-19  6:45 ` [PATCH 04/10] rtlwifi: btcoex: add scan_notify within ips_notify if RFON pkshih
@ 2018-01-19  6:45 ` pkshih
  2018-01-22 19:11   ` Larry Finger
  2018-01-19  6:45 ` [PATCH 06/10] rtlwifi: btcoex: add boolean variables dbg_mode pkshih
                   ` (4 subsequent siblings)
  9 siblings, 1 reply; 26+ messages in thread
From: pkshih @ 2018-01-19  6:45 UTC (permalink / raw)
  To: kvalo; +Cc: Larry.Finger, linux-wireless

From: Ping-Ke Shih <pkshih@realtek.com>

Originally, btcoex controls the antenna of combo card, but solo card
is also needed to setup properly. The new ops are named with suffix
'_wifi_only' opposited to original btc_ops, and new structures and
definitions are also introduced. The wifi_only oly contains four ops that
are initial variable, hw config, scan notify, and switch band notify.

Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
---
 .../realtek/rtlwifi/btcoexist/halbtcoutsrc.c       | 48 +++++++++++++++++++
 .../realtek/rtlwifi/btcoexist/halbtcoutsrc.h       | 47 +++++++++++++++++++
 .../wireless/realtek/rtlwifi/btcoexist/rtl_btc.c   | 54 +++++++++++++++++++++-
 .../wireless/realtek/rtlwifi/btcoexist/rtl_btc.h   |  5 ++
 drivers/net/wireless/realtek/rtlwifi/core.c        |  6 +++
 drivers/net/wireless/realtek/rtlwifi/pci.c         |  8 +++-
 drivers/net/wireless/realtek/rtlwifi/wifi.h        |  7 +++
 7 files changed, 172 insertions(+), 3 deletions(-)

diff --git a/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.c b/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.c
index 8dc646190e35..73ef5b271f3b 100644
--- a/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.c
+++ b/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.c
@@ -1247,6 +1247,40 @@ bool exhalbtc_initlize_variables(struct rtl_priv *rtlpriv)
 	return true;
 }
 
+bool exhalbtc_initlize_variables_wifi_only(struct rtl_priv *rtlpriv)
+{
+	struct wifi_only_cfg *wifionly_cfg = rtl_btc_wifi_only(rtlpriv);
+	struct wifi_only_haldata *wifionly_haldata;
+
+	if (!wifionly_cfg)
+		return false;
+
+	wifionly_cfg->adapter = rtlpriv;
+
+	switch (rtlpriv->rtlhal.interface) {
+	case INTF_PCI:
+		wifionly_cfg->chip_interface = BTC_INTF_PCI;
+		break;
+	case INTF_USB:
+		wifionly_cfg->chip_interface = BTC_INTF_USB;
+		break;
+	default:
+		wifionly_cfg->chip_interface = BTC_INTF_UNKNOWN;
+		break;
+	}
+
+	wifionly_haldata = &wifionly_cfg->haldata_info;
+
+	wifionly_haldata->customer_id = CUSTOMER_NORMAL;
+	wifionly_haldata->efuse_pg_antnum = rtl_get_hwpg_ant_num(rtlpriv);
+	wifionly_haldata->efuse_pg_antpath =
+					rtl_get_hwpg_single_ant_path(rtlpriv);
+	wifionly_haldata->rfe_type = rtl_get_hwpg_rfe_type(rtlpriv);
+	wifionly_haldata->ant_div_cfg = 0;
+
+	return true;
+}
+
 bool exhalbtc_bind_bt_coex_withadapter(void *adapter)
 {
 	struct rtl_priv *rtlpriv = adapter;
@@ -1368,6 +1402,10 @@ void exhalbtc_init_hw_config(struct btc_coexist *btcoexist, bool wifi_only)
 	}
 }
 
+void exhalbtc_init_hw_config_wifi_only(struct wifi_only_cfg *wifionly_cfg)
+{
+}
+
 void exhalbtc_init_coex_dm(struct btc_coexist *btcoexist)
 {
 	if (!halbtc_is_bt_coexist_available(btcoexist))
@@ -1494,6 +1532,11 @@ void exhalbtc_scan_notify(struct btc_coexist *btcoexist, u8 type)
 	halbtc_normal_low_power(btcoexist);
 }
 
+void exhalbtc_scan_notify_wifi_only(struct wifi_only_cfg *wifionly_cfg,
+				    u8 is_5g)
+{
+}
+
 void exhalbtc_connect_notify(struct btc_coexist *btcoexist, u8 action)
 {
 	u8 asso_type;
@@ -1924,3 +1967,8 @@ void exhalbtc_switch_band_notify(struct btc_coexist *btcoexist, u8 type)
 
 	halbtc_normal_low_power(btcoexist);
 }
+
+void exhalbtc_switch_band_notify_wifi_only(struct wifi_only_cfg *wifionly_cfg,
+					   u8 is_5g)
+{
+}
diff --git a/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.h b/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.h
index e0818f6efb87..6c145313c615 100644
--- a/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.h
+++ b/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.h
@@ -636,15 +636,23 @@ bool halbtc_is_wifi_uplink(struct rtl_priv *adapter);
 
 #define rtl_btc_coexist(rtlpriv)				\
 	((struct btc_coexist *)((rtlpriv)->btcoexist.btc_context))
+#define rtl_btc_wifi_only(rtlpriv)				\
+	((struct wifi_only_cfg *)((rtlpriv)->btcoexist.wifi_only_context))
+
+struct wifi_only_cfg;
 
 bool exhalbtc_initlize_variables(struct rtl_priv *rtlpriv);
+bool exhalbtc_initlize_variables_wifi_only(struct rtl_priv *rtlpriv);
 bool exhalbtc_bind_bt_coex_withadapter(void *adapter);
 void exhalbtc_power_on_setting(struct btc_coexist *btcoexist);
 void exhalbtc_init_hw_config(struct btc_coexist *btcoexist, bool wifi_only);
+void exhalbtc_init_hw_config_wifi_only(struct wifi_only_cfg *wifionly_cfg);
 void exhalbtc_init_coex_dm(struct btc_coexist *btcoexist);
 void exhalbtc_ips_notify(struct btc_coexist *btcoexist, u8 type);
 void exhalbtc_lps_notify(struct btc_coexist *btcoexist, u8 type);
 void exhalbtc_scan_notify(struct btc_coexist *btcoexist, u8 type);
+void exhalbtc_scan_notify_wifi_only(struct wifi_only_cfg *wifionly_cfg,
+				    u8 is_5g);
 void exhalbtc_connect_notify(struct btc_coexist *btcoexist, u8 action);
 void exhalbtc_mediastatus_notify(struct btc_coexist *btcoexist,
 				 enum rt_media_status media_status);
@@ -669,6 +677,8 @@ void exhalbtc_set_ant_num(struct rtl_priv *rtlpriv, u8 type, u8 ant_num);
 void exhalbtc_display_bt_coex_info(struct btc_coexist *btcoexist,
 				   struct seq_file *m);
 void exhalbtc_switch_band_notify(struct btc_coexist *btcoexist, u8 type);
+void exhalbtc_switch_band_notify_wifi_only(struct wifi_only_cfg *wifionly_cfg,
+					   u8 is_5g);
 void exhalbtc_signal_compensation(struct btc_coexist *btcoexist,
 				  u8 *rssi_wifi, u8 *rssi_bt);
 void exhalbtc_lps_leave(struct btc_coexist *btcoexist);
@@ -676,4 +686,41 @@ void exhalbtc_low_wifi_traffic_notify(struct btc_coexist *btcoexist);
 void exhalbtc_set_single_ant_path(struct btc_coexist *btcoexist,
 				  u8 single_ant_path);
 
+/* The following are used by wifi_only case */
+enum wifionly_chip_interface {
+	WIFIONLY_INTF_UNKNOWN	= 0,
+	WIFIONLY_INTF_PCI		= 1,
+	WIFIONLY_INTF_USB		= 2,
+	WIFIONLY_INTF_SDIO		= 3,
+	WIFIONLY_INTF_MAX
+};
+
+enum wifionly_customer_id {
+	CUSTOMER_NORMAL			= 0,
+	CUSTOMER_HP_1			= 1,
+};
+
+struct wifi_only_haldata {
+	u16		customer_id;
+	u8		efuse_pg_antnum;
+	u8		efuse_pg_antpath;
+	u8		rfe_type;
+	u8		ant_div_cfg;
+};
+
+struct wifi_only_cfg {
+	void				*adapter;
+	struct wifi_only_haldata	haldata_info;
+	enum wifionly_chip_interface	chip_interface;
+};
+
+static inline
+void halwifionly_phy_set_bb_reg(struct wifi_only_cfg *wifi_conly_cfg,
+				u32 regaddr, u32 bitmask, u32 data)
+{
+	struct rtl_priv *rtlpriv = (struct rtl_priv *)wifi_conly_cfg->adapter;
+
+	rtl_set_bbreg(rtlpriv->hw, regaddr, bitmask, data);
+}
+
 #endif
diff --git a/drivers/net/wireless/realtek/rtlwifi/btcoexist/rtl_btc.c b/drivers/net/wireless/realtek/rtlwifi/btcoexist/rtl_btc.c
index 0111ab9e7b05..cce4a37ea408 100644
--- a/drivers/net/wireless/realtek/rtlwifi/btcoexist/rtl_btc.c
+++ b/drivers/net/wireless/realtek/rtlwifi/btcoexist/rtl_btc.c
@@ -31,13 +31,16 @@
 
 static struct rtl_btc_ops rtl_btc_operation = {
 	.btc_init_variables = rtl_btc_init_variables,
+	.btc_init_variables_wifi_only = rtl_btc_init_variables_wifi_only,
 	.btc_deinit_variables = rtl_btc_deinit_variables,
 	.btc_init_hal_vars = rtl_btc_init_hal_vars,
 	.btc_power_on_setting = rtl_btc_power_on_setting,
 	.btc_init_hw_config = rtl_btc_init_hw_config,
+	.btc_init_hw_config_wifi_only = rtl_btc_init_hw_config_wifi_only,
 	.btc_ips_notify = rtl_btc_ips_notify,
 	.btc_lps_notify = rtl_btc_lps_notify,
 	.btc_scan_notify = rtl_btc_scan_notify,
+	.btc_scan_notify_wifi_only = rtl_btc_scan_notify_wifi_only,
 	.btc_connect_notify = rtl_btc_connect_notify,
 	.btc_mediastatus_notify = rtl_btc_mediastatus_notify,
 	.btc_periodical = rtl_btc_periodical,
@@ -49,6 +52,7 @@ static struct rtl_btc_ops rtl_btc_operation = {
 	.btc_is_bt_disabled = rtl_btc_is_bt_disabled,
 	.btc_special_packet_notify = rtl_btc_special_packet_notify,
 	.btc_switch_band_notify = rtl_btc_switch_band_notify,
+	.btc_switch_band_notify_wifi_only = rtl_btc_switch_band_notify_wifionly,
 	.btc_record_pwr_mode = rtl_btc_record_pwr_mode,
 	.btc_get_lps_val = rtl_btc_get_lps_val,
 	.btc_get_rpwm_val = rtl_btc_get_rpwm_val,
@@ -147,7 +151,11 @@ void rtl_btc_get_ampdu_cfg(struct rtl_priv *rtlpriv, u8 *reject_agg,
 
 static void rtl_btc_alloc_variable(struct rtl_priv *rtlpriv, bool wifi_only)
 {
-	rtlpriv->btcoexist.btc_context =
+	if (wifi_only)
+		rtlpriv->btcoexist.wifi_only_context =
+			kzalloc(sizeof(struct wifi_only_cfg), GFP_KERNEL);
+	else
+		rtlpriv->btcoexist.btc_context =
 			kzalloc(sizeof(struct btc_coexist), GFP_KERNEL);
 }
 
@@ -155,6 +163,9 @@ static void rtl_btc_free_variable(struct rtl_priv *rtlpriv)
 {
 	kfree(rtlpriv->btcoexist.btc_context);
 	rtlpriv->btcoexist.btc_context = NULL;
+
+	kfree(rtlpriv->btcoexist.wifi_only_context);
+	rtlpriv->btcoexist.wifi_only_context = NULL;
 }
 
 void rtl_btc_init_variables(struct rtl_priv *rtlpriv)
@@ -165,6 +176,13 @@ void rtl_btc_init_variables(struct rtl_priv *rtlpriv)
 	exhalbtc_bind_bt_coex_withadapter(rtlpriv);
 }
 
+void rtl_btc_init_variables_wifi_only(struct rtl_priv *rtlpriv)
+{
+	rtl_btc_alloc_variable(rtlpriv, true);
+
+	exhalbtc_initlize_variables_wifi_only(rtlpriv);
+}
+
 void rtl_btc_deinit_variables(struct rtl_priv *rtlpriv)
 {
 	rtl_btc_free_variable(rtlpriv);
@@ -204,6 +222,16 @@ void rtl_btc_init_hw_config(struct rtl_priv *rtlpriv)
 	exhalbtc_init_coex_dm(btcoexist);
 }
 
+void rtl_btc_init_hw_config_wifi_only(struct rtl_priv *rtlpriv)
+{
+	struct wifi_only_cfg *wifionly_cfg = rtl_btc_wifi_only(rtlpriv);
+
+	if (!wifionly_cfg)
+		return;
+
+	exhalbtc_init_hw_config_wifi_only(wifionly_cfg);
+}
+
 void rtl_btc_ips_notify(struct rtl_priv *rtlpriv, u8 type)
 {
 	struct btc_coexist *btcoexist = rtl_btc_coexist(rtlpriv);
@@ -242,6 +270,18 @@ void rtl_btc_scan_notify(struct rtl_priv *rtlpriv, u8 scantype)
 	exhalbtc_scan_notify(btcoexist, scantype);
 }
 
+void rtl_btc_scan_notify_wifi_only(struct rtl_priv *rtlpriv, u8 scantype)
+{
+	struct rtl_hal *rtlhal = rtl_hal(rtlpriv);
+	struct wifi_only_cfg *wifionly_cfg = rtl_btc_wifi_only(rtlpriv);
+	u8 is_5g = (rtlhal->current_bandtype == BAND_ON_5G);
+
+	if (!wifionly_cfg)
+		return;
+
+	exhalbtc_scan_notify_wifi_only(wifionly_cfg, is_5g);
+}
+
 void rtl_btc_connect_notify(struct rtl_priv *rtlpriv, u8 action)
 {
 	struct btc_coexist *btcoexist = rtl_btc_coexist(rtlpriv);
@@ -458,6 +498,18 @@ void rtl_btc_switch_band_notify(struct rtl_priv *rtlpriv, u8 band_type,
 		exhalbtc_switch_band_notify(btcoexist, type);
 }
 
+void rtl_btc_switch_band_notify_wifionly(struct rtl_priv *rtlpriv, u8 band_type,
+					 bool scanning)
+{
+	struct wifi_only_cfg *wifionly_cfg = rtl_btc_wifi_only(rtlpriv);
+	u8 is_5g = (band_type == BAND_ON_5G);
+
+	if (!wifionly_cfg)
+		return;
+
+	exhalbtc_switch_band_notify_wifi_only(wifionly_cfg, is_5g);
+}
+
 struct rtl_btc_ops *rtl_btc_get_ops_pointer(void)
 {
 	return &rtl_btc_operation;
diff --git a/drivers/net/wireless/realtek/rtlwifi/btcoexist/rtl_btc.h b/drivers/net/wireless/realtek/rtlwifi/btcoexist/rtl_btc.h
index 1d98741ae874..8c996055de71 100644
--- a/drivers/net/wireless/realtek/rtlwifi/btcoexist/rtl_btc.h
+++ b/drivers/net/wireless/realtek/rtlwifi/btcoexist/rtl_btc.h
@@ -28,13 +28,16 @@
 #include "halbt_precomp.h"
 
 void rtl_btc_init_variables(struct rtl_priv *rtlpriv);
+void rtl_btc_init_variables_wifi_only(struct rtl_priv *rtlpriv);
 void rtl_btc_deinit_variables(struct rtl_priv *rtlpriv);
 void rtl_btc_init_hal_vars(struct rtl_priv *rtlpriv);
 void rtl_btc_power_on_setting(struct rtl_priv *rtlpriv);
 void rtl_btc_init_hw_config(struct rtl_priv *rtlpriv);
+void rtl_btc_init_hw_config_wifi_only(struct rtl_priv *rtlpriv);
 void rtl_btc_ips_notify(struct rtl_priv *rtlpriv, u8 type);
 void rtl_btc_lps_notify(struct rtl_priv *rtlpriv, u8 type);
 void rtl_btc_scan_notify(struct rtl_priv *rtlpriv, u8 scantype);
+void rtl_btc_scan_notify_wifi_only(struct rtl_priv *rtlpriv, u8 scantype);
 void rtl_btc_connect_notify(struct rtl_priv *rtlpriv, u8 action);
 void rtl_btc_mediastatus_notify(struct rtl_priv *rtlpriv,
 				enum rt_media_status mstatus);
@@ -48,6 +51,8 @@ bool rtl_btc_is_bt_disabled(struct rtl_priv *rtlpriv);
 void rtl_btc_special_packet_notify(struct rtl_priv *rtlpriv, u8 pkt_type);
 void rtl_btc_switch_band_notify(struct rtl_priv *rtlpriv, u8 band_type,
 				bool scanning);
+void rtl_btc_switch_band_notify_wifionly(struct rtl_priv *rtlpriv, u8 band_type,
+					 bool scanning);
 void rtl_btc_display_bt_coex_info(struct rtl_priv *rtlpriv, struct seq_file *m);
 void rtl_btc_record_pwr_mode(struct rtl_priv *rtlpriv, u8 *buf, u8 len);
 u8   rtl_btc_get_lps_val(struct rtl_priv *rtlpriv);
diff --git a/drivers/net/wireless/realtek/rtlwifi/core.c b/drivers/net/wireless/realtek/rtlwifi/core.c
index a16aa94273e8..cfea57efa7f4 100644
--- a/drivers/net/wireless/realtek/rtlwifi/core.c
+++ b/drivers/net/wireless/realtek/rtlwifi/core.c
@@ -1453,6 +1453,9 @@ static void rtl_op_sw_scan_start(struct ieee80211_hw *hw,
 
 	if (rtlpriv->cfg->ops->get_btc_status())
 		rtlpriv->btcoexist.btc_ops->btc_scan_notify(rtlpriv, 1);
+	else if (rtlpriv->btcoexist.btc_ops)
+		rtlpriv->btcoexist.btc_ops->btc_scan_notify_wifi_only(rtlpriv,
+								      1);
 
 	if (rtlpriv->dm.supp_phymode_switch) {
 		if (rtlpriv->cfg->ops->chk_switch_dmdp)
@@ -1508,6 +1511,9 @@ static void rtl_op_sw_scan_complete(struct ieee80211_hw *hw,
 	rtlpriv->cfg->ops->scan_operation_backup(hw, SCAN_OPT_RESTORE);
 	if (rtlpriv->cfg->ops->get_btc_status())
 		rtlpriv->btcoexist.btc_ops->btc_scan_notify(rtlpriv, 0);
+	else if (rtlpriv->btcoexist.btc_ops)
+		rtlpriv->btcoexist.btc_ops->btc_scan_notify_wifi_only(rtlpriv,
+								      0);
 }
 
 static int rtl_op_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
diff --git a/drivers/net/wireless/realtek/rtlwifi/pci.c b/drivers/net/wireless/realtek/rtlwifi/pci.c
index aa1d3ae4937f..01ccf8884831 100644
--- a/drivers/net/wireless/realtek/rtlwifi/pci.c
+++ b/drivers/net/wireless/realtek/rtlwifi/pci.c
@@ -1794,6 +1794,7 @@ static int rtl_pci_start(struct ieee80211_hw *hw)
 	struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw));
 	struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw));
 	struct rtl_mac *rtlmac = rtl_mac(rtl_priv(hw));
+	struct rtl_btc_ops *btc_ops = rtlpriv->btcoexist.btc_ops;
 
 	int err;
 
@@ -1803,9 +1804,12 @@ static int rtl_pci_start(struct ieee80211_hw *hw)
 	if (rtlpriv->cfg->ops->get_btc_status &&
 	    rtlpriv->cfg->ops->get_btc_status()) {
 		rtlpriv->btcoexist.btc_info.ap_num = 36;
-		rtlpriv->btcoexist.btc_ops->btc_init_variables(rtlpriv);
-		rtlpriv->btcoexist.btc_ops->btc_init_hal_vars(rtlpriv);
+		btc_ops->btc_init_variables(rtlpriv);
+		btc_ops->btc_init_hal_vars(rtlpriv);
+	} else if (btc_ops) {
+		btc_ops->btc_init_variables_wifi_only(rtlpriv);
 	}
+
 	err = rtlpriv->cfg->ops->hw_init(hw);
 	if (err) {
 		RT_TRACE(rtlpriv, COMP_INIT, DBG_DMESG,
diff --git a/drivers/net/wireless/realtek/rtlwifi/wifi.h b/drivers/net/wireless/realtek/rtlwifi/wifi.h
index 8ed0207c6f14..111f81b44c1b 100644
--- a/drivers/net/wireless/realtek/rtlwifi/wifi.h
+++ b/drivers/net/wireless/realtek/rtlwifi/wifi.h
@@ -2502,6 +2502,7 @@ struct bt_coexist_info {
 	struct rtl_btc_info btc_info;
 	/* btc context */
 	void *btc_context;
+	void *wifi_only_context;
 	/* EEPROM BT info. */
 	u8 eeprom_bt_coexist;
 	u8 eeprom_bt_type;
@@ -2558,13 +2559,17 @@ struct bt_coexist_info {
 
 struct rtl_btc_ops {
 	void (*btc_init_variables) (struct rtl_priv *rtlpriv);
+	void (*btc_init_variables_wifi_only)(struct rtl_priv *rtlpriv);
 	void (*btc_deinit_variables)(struct rtl_priv *rtlpriv);
 	void (*btc_init_hal_vars) (struct rtl_priv *rtlpriv);
 	void (*btc_power_on_setting)(struct rtl_priv *rtlpriv);
 	void (*btc_init_hw_config) (struct rtl_priv *rtlpriv);
+	void (*btc_init_hw_config_wifi_only)(struct rtl_priv *rtlpriv);
 	void (*btc_ips_notify) (struct rtl_priv *rtlpriv, u8 type);
 	void (*btc_lps_notify)(struct rtl_priv *rtlpriv, u8 type);
 	void (*btc_scan_notify) (struct rtl_priv *rtlpriv, u8 scantype);
+	void (*btc_scan_notify_wifi_only)(struct rtl_priv *rtlpriv,
+					  u8 scantype);
 	void (*btc_connect_notify) (struct rtl_priv *rtlpriv, u8 action);
 	void (*btc_mediastatus_notify) (struct rtl_priv *rtlpriv,
 					enum rt_media_status mstatus);
@@ -2581,6 +2586,8 @@ struct rtl_btc_ops {
 					  u8 pkt_type);
 	void (*btc_switch_band_notify)(struct rtl_priv *rtlpriv, u8 type,
 				       bool scanning);
+	void (*btc_switch_band_notify_wifi_only)(struct rtl_priv *rtlpriv,
+						 u8 type, bool scanning);
 	void (*btc_display_bt_coex_info)(struct rtl_priv *rtlpriv,
 					 struct seq_file *m);
 	void (*btc_record_pwr_mode)(struct rtl_priv *rtlpriv, u8 *buf, u8 len);
-- 
2.15.1

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

* [PATCH 06/10] rtlwifi: btcoex: add boolean variables dbg_mode
  2018-01-19  6:45 [PATCH 00/10] rtlwifi: add btcoex materials for 8822be pkshih
                   ` (4 preceding siblings ...)
  2018-01-19  6:45 ` [PATCH 05/10] rtlwifi: btcoex: Add wifi_only series ops to control solo card pkshih
@ 2018-01-19  6:45 ` pkshih
  2018-01-19 22:47   ` Larry Finger
  2018-01-19  6:45 ` [PATCH 07/10] rtlwifi: btcoex: Fix some static warnings from Sparse pkshih
                   ` (3 subsequent siblings)
  9 siblings, 1 reply; 26+ messages in thread
From: pkshih @ 2018-01-19  6:45 UTC (permalink / raw)
  To: kvalo; +Cc: Larry.Finger, linux-wireless

From: Ping-Ke Shih <pkshih@realtek.com>

In files halbtc8822b1ant.c and halbtc8822b2ant.c that I will submit later,
two undesired directives named BT_8822B_1ANT_COEX_DBG and
BT_8822B_2ANT_COEX_DBG will be replaced by boolean variables.

Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
---
 drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.h b/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.h
index 6c145313c615..1c6019be793a 100644
--- a/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.h
+++ b/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.h
@@ -583,6 +583,8 @@ struct btc_coexist {
 	 */
 	bool auto_report_1ant;
 	bool auto_report_2ant;
+	bool dbg_mode_1ant;
+	bool dbg_mode_2ant;
 	bool initilized;
 	bool stop_coex_dm;
 	bool manual_control;
-- 
2.15.1

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

* [PATCH 07/10] rtlwifi: btcoex: Fix some static warnings from Sparse
  2018-01-19  6:45 [PATCH 00/10] rtlwifi: add btcoex materials for 8822be pkshih
                   ` (5 preceding siblings ...)
  2018-01-19  6:45 ` [PATCH 06/10] rtlwifi: btcoex: add boolean variables dbg_mode pkshih
@ 2018-01-19  6:45 ` pkshih
  2018-01-19 22:46   ` Larry Finger
  2018-01-24 15:38   ` [07/10] " Kalle Valo
  2018-01-19  6:45 ` [PATCH 08/10] rtlwifi: 8822be has to report vht capability to mac80211 pkshih
                   ` (2 subsequent siblings)
  9 siblings, 2 replies; 26+ messages in thread
From: pkshih @ 2018-01-19  6:45 UTC (permalink / raw)
  To: kvalo; +Cc: Larry.Finger, linux-wireless

From: Ping-Ke Shih <pkshih@realtek.com>

Add 'static' or declaration to resolve the warnings.

Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
---
 .../realtek/rtlwifi/btcoexist/halbtcoutsrc.c       | 36 +++++++---------------
 .../realtek/rtlwifi/btcoexist/halbtcoutsrc.h       |  4 +++
 2 files changed, 15 insertions(+), 25 deletions(-)

diff --git a/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.c b/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.c
index 73ef5b271f3b..1404729441a2 100644
--- a/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.c
+++ b/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.c
@@ -29,7 +29,7 @@
  *		Debug related function
  ***************************************************/
 
-const char *const gl_btc_wifi_bw_string[] = {
+static const char *const gl_btc_wifi_bw_string[] = {
 	"11bg",
 	"HT20",
 	"HT40",
@@ -37,7 +37,7 @@ const char *const gl_btc_wifi_bw_string[] = {
 	"HT160"
 };
 
-const char *const gl_btc_wifi_freq_string[] = {
+static const char *const gl_btc_wifi_freq_string[] = {
 	"2.4G",
 	"5G"
 };
@@ -156,7 +156,7 @@ static u8 halbtc_get_wifi_central_chnl(struct btc_coexist *btcoexist)
 	return chnl;
 }
 
-u8 rtl_get_hwpg_single_ant_path(struct rtl_priv *rtlpriv)
+static u8 rtl_get_hwpg_single_ant_path(struct rtl_priv *rtlpriv)
 {
 	struct rtl_mod_params *mod_params = rtlpriv->cfg->mod_params;
 
@@ -171,12 +171,12 @@ u8 rtl_get_hwpg_single_ant_path(struct rtl_priv *rtlpriv)
 	return rtlpriv->btcoexist.btc_info.single_ant_path;
 }
 
-u8 rtl_get_hwpg_bt_type(struct rtl_priv *rtlpriv)
+static u8 rtl_get_hwpg_bt_type(struct rtl_priv *rtlpriv)
 {
 	return rtlpriv->btcoexist.btc_info.bt_type;
 }
 
-u8 rtl_get_hwpg_ant_num(struct rtl_priv *rtlpriv)
+static u8 rtl_get_hwpg_ant_num(struct rtl_priv *rtlpriv)
 {
 	struct rtl_mod_params *mod_params = rtlpriv->cfg->mod_params;
 	u8 num;
@@ -193,7 +193,7 @@ u8 rtl_get_hwpg_ant_num(struct rtl_priv *rtlpriv)
 	return num;
 }
 
-u8 rtl_get_hwpg_package_type(struct rtl_priv *rtlpriv)
+static u8 rtl_get_hwpg_package_type(struct rtl_priv *rtlpriv)
 {
 	struct rtl_hal *rtlhal = rtl_hal(rtlpriv);
 
@@ -504,7 +504,7 @@ static u32 halbtc_get_bt_forbidden_slot_val(void *btc_context)
 	return btcoexist->bt_info.bt_forb_slot_val;
 }
 
-u32 halbtc_get_wifi_link_status(struct btc_coexist *btcoexist)
+static u32 halbtc_get_wifi_link_status(struct btc_coexist *btcoexist)
 {
 	/* return value:
 	 * [31:16] => connected port number
@@ -980,7 +980,8 @@ static void halbtc_write_4byte(void *bt_context, u32 reg_addr, u32 data)
 	rtl_write_dword(rtlpriv, reg_addr, data);
 }
 
-void halbtc_write_local_reg_1byte(void *btc_context, u32 reg_addr, u8 data)
+static void halbtc_write_local_reg_1byte(void *btc_context, u32 reg_addr,
+					 u8 data)
 {
 	struct btc_coexist *btcoexist = (struct btc_coexist *)btc_context;
 	struct rtl_priv *rtlpriv = btcoexist->adapter;
@@ -993,22 +994,6 @@ void halbtc_write_local_reg_1byte(void *btc_context, u32 reg_addr, u8 data)
 		rtl_write_byte(rtlpriv, reg_addr, data);
 }
 
-void halbtc_set_macreg(void *btc_context, u32 reg_addr, u32 bit_mask, u32 data)
-{
-	struct btc_coexist *btcoexist = (struct btc_coexist *)btc_context;
-	struct rtl_priv *rtlpriv = btcoexist->adapter;
-
-	rtl_set_bbreg(rtlpriv->mac80211.hw, reg_addr, bit_mask, data);
-}
-
-u32 halbtc_get_macreg(void *btc_context, u32 reg_addr, u32 bit_mask)
-{
-	struct btc_coexist *btcoexist = (struct btc_coexist *)btc_context;
-	struct rtl_priv *rtlpriv = btcoexist->adapter;
-
-	return rtl_get_bbreg(rtlpriv->mac80211.hw, reg_addr, bit_mask);
-}
-
 static void halbtc_set_bbreg(void *bt_context, u32 reg_addr, u32 bit_mask,
 			     u32 data)
 {
@@ -1054,6 +1039,7 @@ static void halbtc_fill_h2c_cmd(void *bt_context, u8 element_id,
 					cmd_len, cmd_buf);
 }
 
+static
 void halbtc_set_bt_reg(void *btc_context, u8 reg_type, u32 offset, u32 set_val)
 {
 	struct btc_coexist *btcoexist = (struct btc_coexist *)btc_context;
@@ -1093,7 +1079,7 @@ static void halbtc_display_dbg_msg(void *bt_context, u8 disp_type,
 	}
 }
 
-bool halbtc_under_ips(struct btc_coexist *btcoexist)
+static bool halbtc_under_ips(struct btc_coexist *btcoexist)
 {
 	struct rtl_priv *rtlpriv = btcoexist->adapter;
 	struct rtl_ps_ctl *ppsc = rtl_psc(rtlpriv);
diff --git a/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.h b/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.h
index 1c6019be793a..8ed217656539 100644
--- a/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.h
+++ b/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.h
@@ -647,6 +647,7 @@ bool exhalbtc_initlize_variables(struct rtl_priv *rtlpriv);
 bool exhalbtc_initlize_variables_wifi_only(struct rtl_priv *rtlpriv);
 bool exhalbtc_bind_bt_coex_withadapter(void *adapter);
 void exhalbtc_power_on_setting(struct btc_coexist *btcoexist);
+void exhalbtc_pre_load_firmware(struct btc_coexist *btcoexist);
 void exhalbtc_init_hw_config(struct btc_coexist *btcoexist, bool wifi_only);
 void exhalbtc_init_hw_config_wifi_only(struct wifi_only_cfg *wifionly_cfg);
 void exhalbtc_init_coex_dm(struct btc_coexist *btcoexist);
@@ -661,6 +662,7 @@ void exhalbtc_mediastatus_notify(struct btc_coexist *btcoexist,
 void exhalbtc_special_packet_notify(struct btc_coexist *btcoexist, u8 pkt_type);
 void exhalbtc_bt_info_notify(struct btc_coexist *btcoexist, u8 *tmp_buf,
 			     u8 length);
+void exhalbtc_rf_status_notify(struct btc_coexist *btcoexist, u8 type);
 void exhalbtc_stack_operation_notify(struct btc_coexist *btcoexist, u8 type);
 void exhalbtc_halt_notify(struct btc_coexist *btcoexist);
 void exhalbtc_pnp_notify(struct btc_coexist *btcoexist, u8 pnp_state);
@@ -668,6 +670,8 @@ void exhalbtc_coex_dm_switch(struct btc_coexist *btcoexist);
 void exhalbtc_periodical(struct btc_coexist *btcoexist);
 void exhalbtc_dbg_control(struct btc_coexist *btcoexist, u8 code, u8 len,
 			  u8 *data);
+void exhalbtc_antenna_detection(struct btc_coexist *btcoexist, u32 cent_freq,
+				u32 offset, u32 span, u32 seconds);
 void exhalbtc_stack_update_profile_info(void);
 void exhalbtc_set_hci_version(struct btc_coexist *btcoexist, u16 hci_version);
 void exhalbtc_set_bt_patch_version(struct btc_coexist *btcoexist,
-- 
2.15.1

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

* [PATCH 08/10] rtlwifi: 8822be has to report vht capability to mac80211
  2018-01-19  6:45 [PATCH 00/10] rtlwifi: add btcoex materials for 8822be pkshih
                   ` (6 preceding siblings ...)
  2018-01-19  6:45 ` [PATCH 07/10] rtlwifi: btcoex: Fix some static warnings from Sparse pkshih
@ 2018-01-19  6:45 ` pkshih
  2018-01-19 22:41   ` Larry Finger
  2018-01-19  6:45 ` [PATCH 09/10] rtlwifi: Add ratr_table for newer IC pkshih
  2018-01-19  6:45 ` [PATCH 10/10] rtlwifi: Add spec_ver to check whether use new rate-id or not pkshih
  9 siblings, 1 reply; 26+ messages in thread
From: pkshih @ 2018-01-19  6:45 UTC (permalink / raw)
  To: kvalo; +Cc: Larry.Finger, linux-wireless

From: Ping-Ke Shih <pkshih@realtek.com>

8822be is 2x2 11ac wifi chip, so report VHT capability to mac80211.

Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
---
 drivers/net/wireless/realtek/rtlwifi/base.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/net/wireless/realtek/rtlwifi/base.c b/drivers/net/wireless/realtek/rtlwifi/base.c
index c8ebf738cb2b..7fa435e95c0e 100644
--- a/drivers/net/wireless/realtek/rtlwifi/base.c
+++ b/drivers/net/wireless/realtek/rtlwifi/base.c
@@ -244,7 +244,8 @@ static void _rtl_init_hw_vht_capab(struct ieee80211_hw *hw,
 	struct rtl_priv *rtlpriv = rtl_priv(hw);
 	struct rtl_hal *rtlhal = rtl_hal(rtlpriv);
 
-	if (rtlhal->hw_type == HARDWARE_TYPE_RTL8812AE) {
+	if (rtlhal->hw_type == HARDWARE_TYPE_RTL8812AE ||
+	    rtlhal->hw_type == HARDWARE_TYPE_RTL8822BE) {
 		u16 mcs_map;
 
 		vht_cap->vht_supported = true;
-- 
2.15.1

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

* [PATCH 09/10] rtlwifi: Add ratr_table for newer IC
  2018-01-19  6:45 [PATCH 00/10] rtlwifi: add btcoex materials for 8822be pkshih
                   ` (7 preceding siblings ...)
  2018-01-19  6:45 ` [PATCH 08/10] rtlwifi: 8822be has to report vht capability to mac80211 pkshih
@ 2018-01-19  6:45 ` pkshih
  2018-01-22 19:07   ` Larry Finger
  2018-01-19  6:45 ` [PATCH 10/10] rtlwifi: Add spec_ver to check whether use new rate-id or not pkshih
  9 siblings, 1 reply; 26+ messages in thread
From: pkshih @ 2018-01-19  6:45 UTC (permalink / raw)
  To: kvalo; +Cc: Larry.Finger, linux-wireless

From: Ping-Ke Shih <pkshih@realtek.com>

New generation ICs will support 11ac, 5G, n-NSS, etc, so we define a set of
rate ID.

Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
---
 drivers/net/wireless/realtek/rtlwifi/wifi.h | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/drivers/net/wireless/realtek/rtlwifi/wifi.h b/drivers/net/wireless/realtek/rtlwifi/wifi.h
index 111f81b44c1b..2d8e96896f49 100644
--- a/drivers/net/wireless/realtek/rtlwifi/wifi.h
+++ b/drivers/net/wireless/realtek/rtlwifi/wifi.h
@@ -873,6 +873,24 @@ enum ratr_table_mode {
 	RATR_INX_WIRELESS_AC_24N = 9,
 };
 
+enum ratr_table_mode_new {
+	RATEID_IDX_BGN_40M_2SS = 0,
+	RATEID_IDX_BGN_40M_1SS = 1,
+	RATEID_IDX_BGN_20M_2SS_BN = 2,
+	RATEID_IDX_BGN_20M_1SS_BN = 3,
+	RATEID_IDX_GN_N2SS = 4,
+	RATEID_IDX_GN_N1SS = 5,
+	RATEID_IDX_BG = 6,
+	RATEID_IDX_G = 7,
+	RATEID_IDX_B = 8,
+	RATEID_IDX_VHT_2SS = 9,
+	RATEID_IDX_VHT_1SS = 10,
+	RATEID_IDX_MIX1 = 11,
+	RATEID_IDX_MIX2 = 12,
+	RATEID_IDX_VHT_3SS = 13,
+	RATEID_IDX_BGN_3SS = 14,
+};
+
 enum rtl_link_state {
 	MAC80211_NOLINK = 0,
 	MAC80211_LINKING = 1,
-- 
2.15.1

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

* [PATCH 10/10] rtlwifi: Add spec_ver to check whether use new rate-id or not
  2018-01-19  6:45 [PATCH 00/10] rtlwifi: add btcoex materials for 8822be pkshih
                   ` (8 preceding siblings ...)
  2018-01-19  6:45 ` [PATCH 09/10] rtlwifi: Add ratr_table for newer IC pkshih
@ 2018-01-19  6:45 ` pkshih
  2018-01-22 19:10   ` Larry Finger
  9 siblings, 1 reply; 26+ messages in thread
From: pkshih @ 2018-01-19  6:45 UTC (permalink / raw)
  To: kvalo; +Cc: Larry.Finger, linux-wireless

From: Ping-Ke Shih <pkshih@realtek.com>

The field spec_ver is IC's specification mask for common code to do proper
process to specified IC. This commit add a field new rate ID for new
generation IC.

Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
---
 drivers/net/wireless/realtek/rtlwifi/base.c | 126 +++++++++++++++++++++++++---
 drivers/net/wireless/realtek/rtlwifi/base.h |   2 +
 drivers/net/wireless/realtek/rtlwifi/wifi.h |   5 ++
 3 files changed, 121 insertions(+), 12 deletions(-)

diff --git a/drivers/net/wireless/realtek/rtlwifi/base.c b/drivers/net/wireless/realtek/rtlwifi/base.c
index 7fa435e95c0e..d6c03bd5cc65 100644
--- a/drivers/net/wireless/realtek/rtlwifi/base.c
+++ b/drivers/net/wireless/realtek/rtlwifi/base.c
@@ -698,14 +698,94 @@ static void _rtl_query_protection_mode(struct ieee80211_hw *hw,
 	}
 }
 
+u8 rtl_mrate_idx_to_arfr_id(struct ieee80211_hw *hw, u8 rate_index,
+			    enum wireless_mode wirelessmode)
+{
+	struct rtl_priv *rtlpriv = rtl_priv(hw);
+	struct rtl_phy *rtlphy = &rtlpriv->phy;
+	u8 ret = 0;
+
+	switch (rate_index) {
+	case RATR_INX_WIRELESS_NGB:
+		if (rtlphy->rf_type == RF_1T1R)
+			ret = RATEID_IDX_BGN_40M_1SS;
+		else
+			ret = RATEID_IDX_BGN_40M_2SS;
+		; break;
+	case RATR_INX_WIRELESS_N:
+	case RATR_INX_WIRELESS_NG:
+		if (rtlphy->rf_type == RF_1T1R)
+			ret = RATEID_IDX_GN_N1SS;
+		else
+			ret = RATEID_IDX_GN_N2SS;
+		; break;
+	case RATR_INX_WIRELESS_NB:
+		if (rtlphy->rf_type == RF_1T1R)
+			ret = RATEID_IDX_BGN_20M_1SS_BN;
+		else
+			ret = RATEID_IDX_BGN_20M_2SS_BN;
+		; break;
+	case RATR_INX_WIRELESS_GB:
+		ret = RATEID_IDX_BG;
+		break;
+	case RATR_INX_WIRELESS_G:
+		ret = RATEID_IDX_G;
+		break;
+	case RATR_INX_WIRELESS_B:
+		ret = RATEID_IDX_B;
+		break;
+	case RATR_INX_WIRELESS_MC:
+		if (wirelessmode == WIRELESS_MODE_B ||
+		    wirelessmode == WIRELESS_MODE_G ||
+		    wirelessmode == WIRELESS_MODE_N_24G ||
+		    wirelessmode == WIRELESS_MODE_AC_24G)
+			ret = RATEID_IDX_BG;
+		else
+			ret = RATEID_IDX_G;
+		break;
+	case RATR_INX_WIRELESS_AC_5N:
+		if (rtlphy->rf_type == RF_1T1R)
+			ret = RATEID_IDX_VHT_1SS;
+		else
+			ret = RATEID_IDX_VHT_2SS;
+		break;
+	case RATR_INX_WIRELESS_AC_24N:
+		if (rtlphy->current_chan_bw == HT_CHANNEL_WIDTH_80) {
+			if (rtlphy->rf_type == RF_1T1R)
+				ret = RATEID_IDX_VHT_1SS;
+			else
+				ret = RATEID_IDX_VHT_2SS;
+		} else {
+			if (rtlphy->rf_type == RF_1T1R)
+				ret = RATEID_IDX_MIX1;
+			else
+				ret = RATEID_IDX_MIX2;
+		}
+		break;
+	default:
+		ret = RATEID_IDX_BGN_40M_2SS;
+		break;
+	}
+	return ret;
+}
+EXPORT_SYMBOL(rtl_mrate_idx_to_arfr_id);
+
 static void _rtl_txrate_selectmode(struct ieee80211_hw *hw,
 				   struct ieee80211_sta *sta,
 				   struct rtl_tcb_desc *tcb_desc)
 {
+#define SET_RATE_ID(rate_id)					\
+	({typeof(rate_id) _id = rate_id;			\
+	  ((rtlpriv->cfg->spec_ver & RTL_SPEC_NEW_RATEID) ?	\
+		rtl_mrate_idx_to_arfr_id(hw, _id,		\
+			(sta_entry ? sta_entry->wireless_mode :	\
+			 WIRELESS_MODE_G)) :			\
+		_id); })
+
 	struct rtl_priv *rtlpriv = rtl_priv(hw);
 	struct rtl_mac *mac = rtl_mac(rtl_priv(hw));
 	struct rtl_sta_info *sta_entry = NULL;
-	u8 ratr_index = 7;
+	u8 ratr_index = SET_RATE_ID(RATR_INX_WIRELESS_MC);
 
 	if (sta) {
 		sta_entry = (struct rtl_sta_info *) sta->drv_priv;
@@ -720,7 +800,8 @@ static void _rtl_txrate_selectmode(struct ieee80211_hw *hw,
 				tcb_desc->hw_rate =
 				    rtlpriv->cfg->maps[RTL_RC_CCK_RATE2M];
 				tcb_desc->use_driver_rate = 1;
-				tcb_desc->ratr_index = RATR_INX_WIRELESS_MC;
+				tcb_desc->ratr_index =
+					SET_RATE_ID(RATR_INX_WIRELESS_MC);
 			} else {
 				tcb_desc->ratr_index = ratr_index;
 			}
@@ -736,22 +817,30 @@ static void _rtl_txrate_selectmode(struct ieee80211_hw *hw,
 		    mac->opmode == NL80211_IFTYPE_MESH_POINT) {
 			tcb_desc->mac_id = 0;
 
-			if (mac->mode == WIRELESS_MODE_AC_5G)
+			if (sta &&
+			    (rtlpriv->cfg->spec_ver & RTL_SPEC_NEW_RATEID))
+				;	/* use sta_entry->ratr_index */
+			else if (mac->mode == WIRELESS_MODE_AC_5G)
 				tcb_desc->ratr_index =
-					RATR_INX_WIRELESS_AC_5N;
+					SET_RATE_ID(RATR_INX_WIRELESS_AC_5N);
 			else if (mac->mode == WIRELESS_MODE_AC_24G)
 				tcb_desc->ratr_index =
-					RATR_INX_WIRELESS_AC_24N;
+					SET_RATE_ID(RATR_INX_WIRELESS_AC_24N);
 			else if (mac->mode == WIRELESS_MODE_N_24G)
-				tcb_desc->ratr_index = RATR_INX_WIRELESS_NGB;
+				tcb_desc->ratr_index =
+					SET_RATE_ID(RATR_INX_WIRELESS_NGB);
 			else if (mac->mode == WIRELESS_MODE_N_5G)
-				tcb_desc->ratr_index = RATR_INX_WIRELESS_NG;
+				tcb_desc->ratr_index =
+					SET_RATE_ID(RATR_INX_WIRELESS_NG);
 			else if (mac->mode & WIRELESS_MODE_G)
-				tcb_desc->ratr_index = RATR_INX_WIRELESS_GB;
+				tcb_desc->ratr_index =
+					SET_RATE_ID(RATR_INX_WIRELESS_GB);
 			else if (mac->mode & WIRELESS_MODE_B)
-				tcb_desc->ratr_index = RATR_INX_WIRELESS_B;
+				tcb_desc->ratr_index =
+					SET_RATE_ID(RATR_INX_WIRELESS_B);
 			else if (mac->mode & WIRELESS_MODE_A)
-				tcb_desc->ratr_index = RATR_INX_WIRELESS_G;
+				tcb_desc->ratr_index =
+					SET_RATE_ID(RATR_INX_WIRELESS_G);
 
 		} else if (mac->opmode == NL80211_IFTYPE_AP ||
 			mac->opmode == NL80211_IFTYPE_ADHOC) {
@@ -765,6 +854,7 @@ static void _rtl_txrate_selectmode(struct ieee80211_hw *hw,
 			}
 		}
 	}
+#undef SET_RATE_ID
 }
 
 static void _rtl_query_bandwidth_mode(struct ieee80211_hw *hw,
@@ -1141,9 +1231,19 @@ void rtl_get_tcb_desc(struct ieee80211_hw *hw,
 		      struct ieee80211_sta *sta,
 		      struct sk_buff *skb, struct rtl_tcb_desc *tcb_desc)
 {
+#define SET_RATE_ID(rate_id)					\
+	({typeof(rate_id) _id = rate_id;			\
+	  ((rtlpriv->cfg->spec_ver & RTL_SPEC_NEW_RATEID) ?	\
+		rtl_mrate_idx_to_arfr_id(hw, _id,		\
+			(sta_entry ? sta_entry->wireless_mode :	\
+			 WIRELESS_MODE_G)) :			\
+		_id); })
+
 	struct rtl_priv *rtlpriv = rtl_priv(hw);
 	struct rtl_mac *rtlmac = rtl_mac(rtl_priv(hw));
 	struct ieee80211_hdr *hdr = rtl_get_hdr(skb);
+	struct rtl_sta_info *sta_entry =
+		(sta ? (struct rtl_sta_info *)sta->drv_priv : NULL);
 
 	__le16 fc = rtl_get_fc(skb);
 
@@ -1166,7 +1266,8 @@ void rtl_get_tcb_desc(struct ieee80211_hw *hw,
 		if (info->control.rates[0].idx == 0 ||
 				ieee80211_is_nullfunc(fc)) {
 			tcb_desc->use_driver_rate = true;
-			tcb_desc->ratr_index = RATR_INX_WIRELESS_MC;
+			tcb_desc->ratr_index =
+					SET_RATE_ID(RATR_INX_WIRELESS_MC);
 
 			tcb_desc->disable_ratefallback = 1;
 		} else {
@@ -1208,11 +1309,12 @@ void rtl_get_tcb_desc(struct ieee80211_hw *hw,
 		_rtl_query_protection_mode(hw, tcb_desc, info);
 	} else {
 		tcb_desc->use_driver_rate = true;
-		tcb_desc->ratr_index = RATR_INX_WIRELESS_MC;
+		tcb_desc->ratr_index = SET_RATE_ID(RATR_INX_WIRELESS_MC);
 		tcb_desc->disable_ratefallback = 1;
 		tcb_desc->mac_id = 0;
 		tcb_desc->packet_bw = false;
 	}
+#undef SET_RATE_ID
 }
 EXPORT_SYMBOL(rtl_get_tcb_desc);
 
diff --git a/drivers/net/wireless/realtek/rtlwifi/base.h b/drivers/net/wireless/realtek/rtlwifi/base.h
index 26735319b38f..acc924635818 100644
--- a/drivers/net/wireless/realtek/rtlwifi/base.h
+++ b/drivers/net/wireless/realtek/rtlwifi/base.h
@@ -162,6 +162,8 @@ void rtl_c2hcmd_wq_callback(void *data);
 void rtl_c2hcmd_launcher(struct ieee80211_hw *hw, int exec);
 void rtl_c2hcmd_enqueue(struct ieee80211_hw *hw, u8 tag, u8 len, u8 *val);
 
+u8 rtl_mrate_idx_to_arfr_id(struct ieee80211_hw *hw, u8 rate_index,
+			    enum wireless_mode wirelessmode);
 void rtl_get_tcb_desc(struct ieee80211_hw *hw,
 		      struct ieee80211_tx_info *info,
 		      struct ieee80211_sta *sta,
diff --git a/drivers/net/wireless/realtek/rtlwifi/wifi.h b/drivers/net/wireless/realtek/rtlwifi/wifi.h
index 2d8e96896f49..a7aacbc3984e 100644
--- a/drivers/net/wireless/realtek/rtlwifi/wifi.h
+++ b/drivers/net/wireless/realtek/rtlwifi/wifi.h
@@ -949,6 +949,10 @@ enum package_type {
 	PACKAGE_TFBGA79
 };
 
+enum rtl_spec_ver {
+	RTL_SPEC_NEW_RATEID = BIT(0),	/* use ratr_table_mode_new */
+};
+
 struct octet_string {
 	u8 *octet;
 	u16 length;
@@ -2333,6 +2337,7 @@ struct rtl_hal_cfg {
 	struct rtl_hal_ops *ops;
 	struct rtl_mod_params *mod_params;
 	struct rtl_hal_usbint_cfg *usb_interface_cfg;
+	enum rtl_spec_ver spec_ver;
 
 	/*this map used for some registers or vars
 	   defined int HAL but used in MAIN */
-- 
2.15.1

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

* Re: [PATCH 08/10] rtlwifi: 8822be has to report vht capability to mac80211
  2018-01-19  6:45 ` [PATCH 08/10] rtlwifi: 8822be has to report vht capability to mac80211 pkshih
@ 2018-01-19 22:41   ` Larry Finger
  0 siblings, 0 replies; 26+ messages in thread
From: Larry Finger @ 2018-01-19 22:41 UTC (permalink / raw)
  To: pkshih, kvalo; +Cc: linux-wireless

On 01/19/2018 12:45 AM, pkshih@realtek.com wrote:
> From: Ping-Ke Shih <pkshih@realtek.com>
> 
> 8822be is 2x2 11ac wifi chip, so report VHT capability to mac80211.
> 
> Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
> ---
>   drivers/net/wireless/realtek/rtlwifi/base.c | 3 ++-
>   1 file changed, 2 insertions(+), 1 deletion(-)

Acked-by: Larry Finger <Larry.Finger@lwfinger.net>


> 
> diff --git a/drivers/net/wireless/realtek/rtlwifi/base.c b/drivers/net/wireless/realtek/rtlwifi/base.c
> index c8ebf738cb2b..7fa435e95c0e 100644
> --- a/drivers/net/wireless/realtek/rtlwifi/base.c
> +++ b/drivers/net/wireless/realtek/rtlwifi/base.c
> @@ -244,7 +244,8 @@ static void _rtl_init_hw_vht_capab(struct ieee80211_hw *hw,
>   	struct rtl_priv *rtlpriv = rtl_priv(hw);
>   	struct rtl_hal *rtlhal = rtl_hal(rtlpriv);
>   
> -	if (rtlhal->hw_type == HARDWARE_TYPE_RTL8812AE) {
> +	if (rtlhal->hw_type == HARDWARE_TYPE_RTL8812AE ||
> +	    rtlhal->hw_type == HARDWARE_TYPE_RTL8822BE) {
>   		u16 mcs_map;
>   
>   		vht_cap->vht_supported = true;
> 

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

* Re: [PATCH 07/10] rtlwifi: btcoex: Fix some static warnings from Sparse
  2018-01-19  6:45 ` [PATCH 07/10] rtlwifi: btcoex: Fix some static warnings from Sparse pkshih
@ 2018-01-19 22:46   ` Larry Finger
  2018-01-22  0:53     ` Pkshih
  2018-01-24 15:38   ` [07/10] " Kalle Valo
  1 sibling, 1 reply; 26+ messages in thread
From: Larry Finger @ 2018-01-19 22:46 UTC (permalink / raw)
  To: pkshih, kvalo; +Cc: linux-wireless

On 01/19/2018 12:45 AM, pkshih@realtek.com wrote:
> From: Ping-Ke Shih <pkshih@realtek.com>
> 
> Add 'static' or declaration to resolve the warnings.
> 
> Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
> ---
>   .../realtek/rtlwifi/btcoexist/halbtcoutsrc.c       | 36 +++++++---------------
>   .../realtek/rtlwifi/btcoexist/halbtcoutsrc.h       |  4 +++
>   2 files changed, 15 insertions(+), 25 deletions(-)
> 
> diff --git a/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.c b/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.c
> index 73ef5b271f3b..1404729441a2 100644
> --- a/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.c
> +++ b/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.c
> @@ -29,7 +29,7 @@
>    *		Debug related function
>    ***************************************************/
>   
> -const char *const gl_btc_wifi_bw_string[] = {
> +static const char *const gl_btc_wifi_bw_string[] = {
>   	"11bg",
>   	"HT20",
>   	"HT40",
> @@ -37,7 +37,7 @@ const char *const gl_btc_wifi_bw_string[] = {
>   	"HT160"
>   };
>   
> -const char *const gl_btc_wifi_freq_string[] = {
> +static const char *const gl_btc_wifi_freq_string[] = {
>   	"2.4G",
>   	"5G"
>   };
> @@ -156,7 +156,7 @@ static u8 halbtc_get_wifi_central_chnl(struct btc_coexist *btcoexist)
>   	return chnl;
>   }
>   
> -u8 rtl_get_hwpg_single_ant_path(struct rtl_priv *rtlpriv)
> +static u8 rtl_get_hwpg_single_ant_path(struct rtl_priv *rtlpriv)
>   {
>   	struct rtl_mod_params *mod_params = rtlpriv->cfg->mod_params;
>   
> @@ -171,12 +171,12 @@ u8 rtl_get_hwpg_single_ant_path(struct rtl_priv *rtlpriv)
>   	return rtlpriv->btcoexist.btc_info.single_ant_path;
>   }
>   
> -u8 rtl_get_hwpg_bt_type(struct rtl_priv *rtlpriv)
> +static u8 rtl_get_hwpg_bt_type(struct rtl_priv *rtlpriv)
>   {
>   	return rtlpriv->btcoexist.btc_info.bt_type;
>   }
>   
> -u8 rtl_get_hwpg_ant_num(struct rtl_priv *rtlpriv)
> +static u8 rtl_get_hwpg_ant_num(struct rtl_priv *rtlpriv)
>   {
>   	struct rtl_mod_params *mod_params = rtlpriv->cfg->mod_params;
>   	u8 num;
> @@ -193,7 +193,7 @@ u8 rtl_get_hwpg_ant_num(struct rtl_priv *rtlpriv)
>   	return num;
>   }
>   
> -u8 rtl_get_hwpg_package_type(struct rtl_priv *rtlpriv)
> +static u8 rtl_get_hwpg_package_type(struct rtl_priv *rtlpriv)
>   {
>   	struct rtl_hal *rtlhal = rtl_hal(rtlpriv);
>   
> @@ -504,7 +504,7 @@ static u32 halbtc_get_bt_forbidden_slot_val(void *btc_context)
>   	return btcoexist->bt_info.bt_forb_slot_val;
>   }
>   
> -u32 halbtc_get_wifi_link_status(struct btc_coexist *btcoexist)
> +static u32 halbtc_get_wifi_link_status(struct btc_coexist *btcoexist)
>   {
>   	/* return value:
>   	 * [31:16] => connected port number
> @@ -980,7 +980,8 @@ static void halbtc_write_4byte(void *bt_context, u32 reg_addr, u32 data)
>   	rtl_write_dword(rtlpriv, reg_addr, data);
>   }
>   
> -void halbtc_write_local_reg_1byte(void *btc_context, u32 reg_addr, u8 data)
> +static void halbtc_write_local_reg_1byte(void *btc_context, u32 reg_addr,
> +					 u8 data)
>   {
>   	struct btc_coexist *btcoexist = (struct btc_coexist *)btc_context;
>   	struct rtl_priv *rtlpriv = btcoexist->adapter;
> @@ -993,22 +994,6 @@ void halbtc_write_local_reg_1byte(void *btc_context, u32 reg_addr, u8 data)
>   		rtl_write_byte(rtlpriv, reg_addr, data);
>   }
>   
> -void halbtc_set_macreg(void *btc_context, u32 reg_addr, u32 bit_mask, u32 data)
> -{
> -	struct btc_coexist *btcoexist = (struct btc_coexist *)btc_context;
> -	struct rtl_priv *rtlpriv = btcoexist->adapter;
> -
> -	rtl_set_bbreg(rtlpriv->mac80211.hw, reg_addr, bit_mask, data);
> -}
> -
> -u32 halbtc_get_macreg(void *btc_context, u32 reg_addr, u32 bit_mask)
> -{
> -	struct btc_coexist *btcoexist = (struct btc_coexist *)btc_context;
> -	struct rtl_priv *rtlpriv = btcoexist->adapter;
> -
> -	return rtl_get_bbreg(rtlpriv->mac80211.hw, reg_addr, bit_mask);
> -}
> -

Should we conclude that the two routines above are not used, and that fact was 
exposed when they were made static? If so, please note that they were deleted in 
the commit message.

Larry

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

* Re: [PATCH 06/10] rtlwifi: btcoex: add boolean variables dbg_mode
  2018-01-19  6:45 ` [PATCH 06/10] rtlwifi: btcoex: add boolean variables dbg_mode pkshih
@ 2018-01-19 22:47   ` Larry Finger
  0 siblings, 0 replies; 26+ messages in thread
From: Larry Finger @ 2018-01-19 22:47 UTC (permalink / raw)
  To: pkshih, kvalo; +Cc: linux-wireless

On 01/19/2018 12:45 AM, pkshih@realtek.com wrote:
> From: Ping-Ke Shih <pkshih@realtek.com>
> 
> In files halbtc8822b1ant.c and halbtc8822b2ant.c that I will submit later,
> two undesired directives named BT_8822B_1ANT_COEX_DBG and
> BT_8822B_2ANT_COEX_DBG will be replaced by boolean variables.
> 
> Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
> ---
>   drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.h | 2 ++
>   1 file changed, 2 insertions(+)
> 
> diff --git a/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.h b/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.h
> index 6c145313c615..1c6019be793a 100644
> --- a/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.h
> +++ b/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.h
> @@ -583,6 +583,8 @@ struct btc_coexist {
>   	 */
>   	bool auto_report_1ant;
>   	bool auto_report_2ant;
> +	bool dbg_mode_1ant;
> +	bool dbg_mode_2ant;
>   	bool initilized;
>   	bool stop_coex_dm;
>   	bool manual_control;

Acked-by: Larry Finger <Larry.Finger@lwfinger.net>

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

* Re: [PATCH 01/10] rtlwifi: btcoex: extend get_wifi_bw to support bandwidth 80M
  2018-01-19  6:45 ` [PATCH 01/10] rtlwifi: btcoex: extend get_wifi_bw to support bandwidth 80M pkshih
@ 2018-01-19 22:52   ` Larry Finger
  2018-01-24 15:41   ` [01/10] " Kalle Valo
  1 sibling, 0 replies; 26+ messages in thread
From: Larry Finger @ 2018-01-19 22:52 UTC (permalink / raw)
  To: pkshih, kvalo; +Cc: linux-wireless

On 01/19/2018 12:45 AM, pkshih@realtek.com wrote:
> From: Ping-Ke Shih <pkshih@realtek.com>
> 
> The rtlwifi newer ICs support 80M bandwidth in 5G band, so extend
> get_wifi_bw() to know bandwidth 80M that helps btcoex to make correct
> decisions.
> 
> Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
> ---
>   .../realtek/rtlwifi/btcoexist/halbtcoutsrc.c       | 37 +++++++++-------------
>   .../realtek/rtlwifi/btcoexist/halbtcoutsrc.h       |  1 +
>   2 files changed, 16 insertions(+), 22 deletions(-)

Acked-by: Larry Finger <Larry.Finger@lwfinger.net>

> 
> diff --git a/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.c b/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.c
> index af8f3778dc91..c335f06eb13b 100644
> --- a/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.c
> +++ b/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.c
> @@ -95,21 +95,6 @@ static bool is_any_client_connect_to_ap(struct btc_coexist *btcoexist)
>   		return false;
>   }
>   
> -static bool halbtc_is_bt40(struct rtl_priv *adapter)
> -{
> -	struct rtl_priv *rtlpriv = adapter;
> -	struct rtl_phy *rtlphy = &(rtlpriv->phy);
> -	bool is_ht40 = true;
> -	enum ht_channel_width bw = rtlphy->current_chan_bw;
> -
> -	if (bw == HT_CHANNEL_WIDTH_20)
> -		is_ht40 = false;
> -	else if (bw == HT_CHANNEL_WIDTH_20_40)
> -		is_ht40 = true;
> -
> -	return is_ht40;
> -}
> -
>   static bool halbtc_legacy(struct rtl_priv *adapter)
>   {
>   	struct rtl_priv *rtlpriv = adapter;
> @@ -135,18 +120,26 @@ bool halbtc_is_wifi_uplink(struct rtl_priv *adapter)
>   
>   static u32 halbtc_get_wifi_bw(struct btc_coexist *btcoexist)
>   {
> -	struct rtl_priv *rtlpriv =
> -		(struct rtl_priv *)btcoexist->adapter;
> +	struct rtl_priv *rtlpriv = btcoexist->adapter;
> +	struct rtl_phy *rtlphy = &rtlpriv->phy;
>   	u32 wifi_bw = BTC_WIFI_BW_HT20;
>   
> -	if (halbtc_is_bt40(rtlpriv)) {
> -		wifi_bw = BTC_WIFI_BW_HT40;
> +	if (halbtc_legacy(rtlpriv)) {
> +		wifi_bw = BTC_WIFI_BW_LEGACY;
>   	} else {
> -		if (halbtc_legacy(rtlpriv))
> -			wifi_bw = BTC_WIFI_BW_LEGACY;
> -		else
> +		switch (rtlphy->current_chan_bw) {
> +		case HT_CHANNEL_WIDTH_20:
>   			wifi_bw = BTC_WIFI_BW_HT20;
> +			break;
> +		case HT_CHANNEL_WIDTH_20_40:
> +			wifi_bw = BTC_WIFI_BW_HT40;
> +			break;
> +		case HT_CHANNEL_WIDTH_80:
> +			wifi_bw = BTC_WIFI_BW_HT80;
> +			break;
> +		}
>   	}
> +
>   	return wifi_bw;
>   }
>   
> diff --git a/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.h b/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.h
> index 57caaf130a46..bc854ff2ab8a 100644
> --- a/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.h
> +++ b/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.h
> @@ -190,6 +190,7 @@ enum btc_wifi_bw_mode {
>   	BTC_WIFI_BW_LEGACY = 0x0,
>   	BTC_WIFI_BW_HT20 = 0x1,
>   	BTC_WIFI_BW_HT40 = 0x2,
> +	BTC_WIFI_BW_HT80 = 0x3,
>   	BTC_WIFI_BW_MAX
>   };
>   
> 

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

* RE: [PATCH 07/10] rtlwifi: btcoex: Fix some static warnings from Sparse
  2018-01-19 22:46   ` Larry Finger
@ 2018-01-22  0:53     ` Pkshih
  0 siblings, 0 replies; 26+ messages in thread
From: Pkshih @ 2018-01-22  0:53 UTC (permalink / raw)
  To: Larry Finger, kvalo; +Cc: linux-wireless

DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogbGludXgtd2lyZWxlc3Mt
b3duZXJAdmdlci5rZXJuZWwub3JnIFttYWlsdG86bGludXgtd2lyZWxlc3Mtb3duZXJAdmdlci5r
ZXJuZWwub3JnXSBPbiBCZWhhbGYNCj4gT2YgTGFycnkgRmluZ2VyDQo+IFNlbnQ6IFNhdHVyZGF5
LCBKYW51YXJ5IDIwLCAyMDE4IDY6NDYgQU0NCj4gVG86IFBrc2hpaDsga3ZhbG9AY29kZWF1cm9y
YS5vcmcNCj4gQ2M6IGxpbnV4LXdpcmVsZXNzQHZnZXIua2VybmVsLm9yZw0KPiBTdWJqZWN0OiBS
ZTogW1BBVENIIDA3LzEwXSBydGx3aWZpOiBidGNvZXg6IEZpeCBzb21lIHN0YXRpYyB3YXJuaW5n
cyBmcm9tIFNwYXJzZQ0KPiANCj4gT24gMDEvMTkvMjAxOCAxMjo0NSBBTSwgcGtzaGloQHJlYWx0
ZWsuY29tIHdyb3RlOg0KPiA+IEZyb206IFBpbmctS2UgU2hpaCA8cGtzaGloQHJlYWx0ZWsuY29t
Pg0KPiA+DQo+ID4gQWRkICdzdGF0aWMnIG9yIGRlY2xhcmF0aW9uIHRvIHJlc29sdmUgdGhlIHdh
cm5pbmdzLg0KPiA+DQo+ID4gU2lnbmVkLW9mZi1ieTogUGluZy1LZSBTaGloIDxwa3NoaWhAcmVh
bHRlay5jb20+DQo+ID4gLS0tDQo+ID4gICAuLi4vcmVhbHRlay9ydGx3aWZpL2J0Y29leGlzdC9o
YWxidGNvdXRzcmMuYyAgICAgICB8IDM2ICsrKysrKystLS0tLS0tLS0tLS0tLS0NCj4gPiAgIC4u
Li9yZWFsdGVrL3J0bHdpZmkvYnRjb2V4aXN0L2hhbGJ0Y291dHNyYy5oICAgICAgIHwgIDQgKysr
DQo+ID4gICAyIGZpbGVzIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDI1IGRlbGV0aW9ucygt
KQ0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRs
d2lmaS9idGNvZXhpc3QvaGFsYnRjb3V0c3JjLmMNCj4gYi9kcml2ZXJzL25ldC93aXJlbGVzcy9y
ZWFsdGVrL3J0bHdpZmkvYnRjb2V4aXN0L2hhbGJ0Y291dHNyYy5jDQo+ID4gaW5kZXggNzNlZjVi
MjcxZjNiLi4xNDA0NzI5NDQxYTIgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxl
c3MvcmVhbHRlay9ydGx3aWZpL2J0Y29leGlzdC9oYWxidGNvdXRzcmMuYw0KPiA+ICsrKyBiL2Ry
aXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS9idGNvZXhpc3QvaGFsYnRjb3V0c3Jj
LmMNCj4gPiBAQCAtOTkzLDIyICs5OTQsNiBAQCB2b2lkIGhhbGJ0Y193cml0ZV9sb2NhbF9yZWdf
MWJ5dGUodm9pZCAqYnRjX2NvbnRleHQsIHUzMiByZWdfYWRkciwgdTggZGF0YSkNCj4gPiAgIAkJ
cnRsX3dyaXRlX2J5dGUocnRscHJpdiwgcmVnX2FkZHIsIGRhdGEpOw0KPiA+ICAgfQ0KPiA+DQo+
ID4gLXZvaWQgaGFsYnRjX3NldF9tYWNyZWcodm9pZCAqYnRjX2NvbnRleHQsIHUzMiByZWdfYWRk
ciwgdTMyIGJpdF9tYXNrLCB1MzIgZGF0YSkNCj4gPiAtew0KPiA+IC0Jc3RydWN0IGJ0Y19jb2V4
aXN0ICpidGNvZXhpc3QgPSAoc3RydWN0IGJ0Y19jb2V4aXN0ICopYnRjX2NvbnRleHQ7DQo+ID4g
LQlzdHJ1Y3QgcnRsX3ByaXYgKnJ0bHByaXYgPSBidGNvZXhpc3QtPmFkYXB0ZXI7DQo+ID4gLQ0K
PiA+IC0JcnRsX3NldF9iYnJlZyhydGxwcml2LT5tYWM4MDIxMS5odywgcmVnX2FkZHIsIGJpdF9t
YXNrLCBkYXRhKTsNCj4gPiAtfQ0KPiA+IC0NCj4gPiAtdTMyIGhhbGJ0Y19nZXRfbWFjcmVnKHZv
aWQgKmJ0Y19jb250ZXh0LCB1MzIgcmVnX2FkZHIsIHUzMiBiaXRfbWFzaykNCj4gPiAtew0KPiA+
IC0Jc3RydWN0IGJ0Y19jb2V4aXN0ICpidGNvZXhpc3QgPSAoc3RydWN0IGJ0Y19jb2V4aXN0ICop
YnRjX2NvbnRleHQ7DQo+ID4gLQlzdHJ1Y3QgcnRsX3ByaXYgKnJ0bHByaXYgPSBidGNvZXhpc3Qt
PmFkYXB0ZXI7DQo+ID4gLQ0KPiA+IC0JcmV0dXJuIHJ0bF9nZXRfYmJyZWcocnRscHJpdi0+bWFj
ODAyMTEuaHcsIHJlZ19hZGRyLCBiaXRfbWFzayk7DQo+ID4gLX0NCj4gPiAtDQo+IA0KPiBTaG91
bGQgd2UgY29uY2x1ZGUgdGhhdCB0aGUgdHdvIHJvdXRpbmVzIGFib3ZlIGFyZSBub3QgdXNlZCwg
YW5kIHRoYXQgZmFjdCB3YXMNCj4gZXhwb3NlZCB3aGVuIHRoZXkgd2VyZSBtYWRlIHN0YXRpYz8g
SWYgc28sIHBsZWFzZSBub3RlIHRoYXQgdGhleSB3ZXJlIGRlbGV0ZWQgaW4NCj4gdGhlIGNvbW1p
dCBtZXNzYWdlLg0KPiANCg0KSSdsbCBhZGQgdG8gY29tbWl0IGxvZyBpbiB2Mi4NCg0KUEsNCg0K

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

* Re: [PATCH 03/10] rtlwifi: btcoex: Add variable ant_div_cfg to support antenna diversity
  2018-01-19  6:45 ` [PATCH 03/10] rtlwifi: btcoex: Add variable ant_div_cfg to support antenna diversity pkshih
@ 2018-01-22 18:56   ` Larry Finger
  0 siblings, 0 replies; 26+ messages in thread
From: Larry Finger @ 2018-01-22 18:56 UTC (permalink / raw)
  To: pkshih, kvalo; +Cc: linux-wireless

On 01/19/2018 12:45 AM, pkshih@realtek.com wrote:
> From: Ping-Ke Shih <pkshih@realtek.com>
> 
> The variable will be used by btcoex of 8822be, so we prepare this variable
> in advance.
> 
> Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
> ---
>   drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.c | 1 +
>   drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.h | 1 +
>   2 files changed, 2 insertions(+)

Acked-by: Larry Finger <Larry.Finger@lwfinger.net>

> 
> diff --git a/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.c b/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.c
> index b51189ae1bfd..8dc646190e35 100644
> --- a/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.c
> +++ b/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.c
> @@ -1310,6 +1310,7 @@ bool exhalbtc_bind_bt_coex_withadapter(void *adapter)
>   			 "[BTCoex], Package Type = Non-TFBGA\n");
>   
>   	btcoexist->board_info.rfe_type = rtl_get_hwpg_rfe_type(rtlpriv);
> +	btcoexist->board_info.ant_div_cfg = 0;
>   
>   	return true;
>   }
> diff --git a/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.h b/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.h
> index cd3925d34854..e0818f6efb87 100644
> --- a/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.h
> +++ b/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.h
> @@ -153,6 +153,7 @@ struct btc_board_info {
>   	bool tfbga_package;
>   
>   	u8 rfe_type;
> +	u8 ant_div_cfg;
>   };
>   
>   enum btc_dbg_opcode {
> 

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

* Re: [PATCH 04/10] rtlwifi: btcoex: add scan_notify within ips_notify if RFON
  2018-01-19  6:45 ` [PATCH 04/10] rtlwifi: btcoex: add scan_notify within ips_notify if RFON pkshih
@ 2018-01-22 19:00   ` Larry Finger
  0 siblings, 0 replies; 26+ messages in thread
From: Larry Finger @ 2018-01-22 19:00 UTC (permalink / raw)
  To: pkshih, kvalo; +Cc: linux-wireless

On 01/19/2018 12:45 AM, pkshih@realtek.com wrote:
> From: Ping-Ke Shih <pkshih@realtek.com>
> 
> Three steps of connection procedure are scan, enter/leave IPS, auth.
> There is no scan between leaving IPS and sending auth, but btcoex use scan
> as an important clue that indicates user is going to connect. So add scan
> notifications in ips_notify to correct btcoex's state.
> 
> Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>

Acked-by: Larry Finger <Larry.Finger@lwfinger.net>

> ---
>   drivers/net/wireless/realtek/rtlwifi/btcoexist/rtl_btc.c | 8 ++++++++
>   1 file changed, 8 insertions(+)
> 
> diff --git a/drivers/net/wireless/realtek/rtlwifi/btcoexist/rtl_btc.c b/drivers/net/wireless/realtek/rtlwifi/btcoexist/rtl_btc.c
> index bbc9517260b3..0111ab9e7b05 100644
> --- a/drivers/net/wireless/realtek/rtlwifi/btcoexist/rtl_btc.c
> +++ b/drivers/net/wireless/realtek/rtlwifi/btcoexist/rtl_btc.c
> @@ -212,6 +212,14 @@ void rtl_btc_ips_notify(struct rtl_priv *rtlpriv, u8 type)
>   		return;
>   
>   	exhalbtc_ips_notify(btcoexist, type);
> +
> +	if (type == ERFON) {
> +		/* In some situation, it doesn't scan after leaving IPS, and
> +		 * this will cause btcoex in wrong state.
> +		 */
> +		exhalbtc_scan_notify(btcoexist, 1);
> +		exhalbtc_scan_notify(btcoexist, 0);
> +	}
>   }
>   
>   void rtl_btc_lps_notify(struct rtl_priv *rtlpriv, u8 type)
> 

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

* Re: [PATCH 09/10] rtlwifi: Add ratr_table for newer IC
  2018-01-19  6:45 ` [PATCH 09/10] rtlwifi: Add ratr_table for newer IC pkshih
@ 2018-01-22 19:07   ` Larry Finger
  0 siblings, 0 replies; 26+ messages in thread
From: Larry Finger @ 2018-01-22 19:07 UTC (permalink / raw)
  To: pkshih, kvalo; +Cc: linux-wireless

On 01/19/2018 12:45 AM, pkshih@realtek.com wrote:
> From: Ping-Ke Shih <pkshih@realtek.com>
> 
> New generation ICs will support 11ac, 5G, n-NSS, etc, so we define a set of
> rate ID.
> 
> Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
> ---
>   drivers/net/wireless/realtek/rtlwifi/wifi.h | 18 ++++++++++++++++++
>   1 file changed, 18 insertions(+)

Acked-by: Larry Finger <Larry.Finger@lwfinger.net>

> 
> diff --git a/drivers/net/wireless/realtek/rtlwifi/wifi.h b/drivers/net/wireless/realtek/rtlwifi/wifi.h
> index 111f81b44c1b..2d8e96896f49 100644
> --- a/drivers/net/wireless/realtek/rtlwifi/wifi.h
> +++ b/drivers/net/wireless/realtek/rtlwifi/wifi.h
> @@ -873,6 +873,24 @@ enum ratr_table_mode {
>   	RATR_INX_WIRELESS_AC_24N = 9,
>   };
>   
> +enum ratr_table_mode_new {
> +	RATEID_IDX_BGN_40M_2SS = 0,
> +	RATEID_IDX_BGN_40M_1SS = 1,
> +	RATEID_IDX_BGN_20M_2SS_BN = 2,
> +	RATEID_IDX_BGN_20M_1SS_BN = 3,
> +	RATEID_IDX_GN_N2SS = 4,
> +	RATEID_IDX_GN_N1SS = 5,
> +	RATEID_IDX_BG = 6,
> +	RATEID_IDX_G = 7,
> +	RATEID_IDX_B = 8,
> +	RATEID_IDX_VHT_2SS = 9,
> +	RATEID_IDX_VHT_1SS = 10,
> +	RATEID_IDX_MIX1 = 11,
> +	RATEID_IDX_MIX2 = 12,
> +	RATEID_IDX_VHT_3SS = 13,
> +	RATEID_IDX_BGN_3SS = 14,
> +};
> +
>   enum rtl_link_state {
>   	MAC80211_NOLINK = 0,
>   	MAC80211_LINKING = 1,
> 

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

* Re: [PATCH 10/10] rtlwifi: Add spec_ver to check whether use new rate-id or not
  2018-01-19  6:45 ` [PATCH 10/10] rtlwifi: Add spec_ver to check whether use new rate-id or not pkshih
@ 2018-01-22 19:10   ` Larry Finger
  2018-01-23  0:41     ` Pkshih
  0 siblings, 1 reply; 26+ messages in thread
From: Larry Finger @ 2018-01-22 19:10 UTC (permalink / raw)
  To: pkshih, kvalo; +Cc: linux-wireless

On 01/19/2018 12:45 AM, pkshih@realtek.com wrote:
> From: Ping-Ke Shih <pkshih@realtek.com>
> 
> The field spec_ver is IC's specification mask for common code to do proper
> process to specified IC. This commit add a field new rate ID for new
> generation IC.
> 
> Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>

Acked-by: Larry Finger <Larry.Finger@lwfinger.net>

> ---
>   drivers/net/wireless/realtek/rtlwifi/base.c | 126 +++++++++++++++++++++++++---
>   drivers/net/wireless/realtek/rtlwifi/base.h |   2 +
>   drivers/net/wireless/realtek/rtlwifi/wifi.h |   5 ++
>   3 files changed, 121 insertions(+), 12 deletions(-)
> 
> diff --git a/drivers/net/wireless/realtek/rtlwifi/base.c b/drivers/net/wireless/realtek/rtlwifi/base.c
> index 7fa435e95c0e..d6c03bd5cc65 100644
> --- a/drivers/net/wireless/realtek/rtlwifi/base.c
> +++ b/drivers/net/wireless/realtek/rtlwifi/base.c
> @@ -698,14 +698,94 @@ static void _rtl_query_protection_mode(struct ieee80211_hw *hw,
>   	}
>   }
>   
> +u8 rtl_mrate_idx_to_arfr_id(struct ieee80211_hw *hw, u8 rate_index,
> +			    enum wireless_mode wirelessmode)
> +{
> +	struct rtl_priv *rtlpriv = rtl_priv(hw);
> +	struct rtl_phy *rtlphy = &rtlpriv->phy;
> +	u8 ret = 0;
> +
> +	switch (rate_index) {
> +	case RATR_INX_WIRELESS_NGB:
> +		if (rtlphy->rf_type == RF_1T1R)
> +			ret = RATEID_IDX_BGN_40M_1SS;
> +		else
> +			ret = RATEID_IDX_BGN_40M_2SS;
> +		; break;
> +	case RATR_INX_WIRELESS_N:
> +	case RATR_INX_WIRELESS_NG:
> +		if (rtlphy->rf_type == RF_1T1R)
> +			ret = RATEID_IDX_GN_N1SS;
> +		else
> +			ret = RATEID_IDX_GN_N2SS;
> +		; break;
> +	case RATR_INX_WIRELESS_NB:
> +		if (rtlphy->rf_type == RF_1T1R)
> +			ret = RATEID_IDX_BGN_20M_1SS_BN;
> +		else
> +			ret = RATEID_IDX_BGN_20M_2SS_BN;
> +		; break;
> +	case RATR_INX_WIRELESS_GB:
> +		ret = RATEID_IDX_BG;
> +		break;
> +	case RATR_INX_WIRELESS_G:
> +		ret = RATEID_IDX_G;
> +		break;
> +	case RATR_INX_WIRELESS_B:
> +		ret = RATEID_IDX_B;
> +		break;
> +	case RATR_INX_WIRELESS_MC:
> +		if (wirelessmode == WIRELESS_MODE_B ||
> +		    wirelessmode == WIRELESS_MODE_G ||
> +		    wirelessmode == WIRELESS_MODE_N_24G ||
> +		    wirelessmode == WIRELESS_MODE_AC_24G)
> +			ret = RATEID_IDX_BG;
> +		else
> +			ret = RATEID_IDX_G;
> +		break;
> +	case RATR_INX_WIRELESS_AC_5N:
> +		if (rtlphy->rf_type == RF_1T1R)
> +			ret = RATEID_IDX_VHT_1SS;
> +		else
> +			ret = RATEID_IDX_VHT_2SS;
> +		break;
> +	case RATR_INX_WIRELESS_AC_24N:
> +		if (rtlphy->current_chan_bw == HT_CHANNEL_WIDTH_80) {
> +			if (rtlphy->rf_type == RF_1T1R)
> +				ret = RATEID_IDX_VHT_1SS;
> +			else
> +				ret = RATEID_IDX_VHT_2SS;
> +		} else {
> +			if (rtlphy->rf_type == RF_1T1R)
> +				ret = RATEID_IDX_MIX1;
> +			else
> +				ret = RATEID_IDX_MIX2;
> +		}
> +		break;
> +	default:
> +		ret = RATEID_IDX_BGN_40M_2SS;
> +		break;
> +	}
> +	return ret;
> +}
> +EXPORT_SYMBOL(rtl_mrate_idx_to_arfr_id);
> +
>   static void _rtl_txrate_selectmode(struct ieee80211_hw *hw,
>   				   struct ieee80211_sta *sta,
>   				   struct rtl_tcb_desc *tcb_desc)
>   {
> +#define SET_RATE_ID(rate_id)					\
> +	({typeof(rate_id) _id = rate_id;			\
> +	  ((rtlpriv->cfg->spec_ver & RTL_SPEC_NEW_RATEID) ?	\
> +		rtl_mrate_idx_to_arfr_id(hw, _id,		\
> +			(sta_entry ? sta_entry->wireless_mode :	\
> +			 WIRELESS_MODE_G)) :			\
> +		_id); })
> +
>   	struct rtl_priv *rtlpriv = rtl_priv(hw);
>   	struct rtl_mac *mac = rtl_mac(rtl_priv(hw));
>   	struct rtl_sta_info *sta_entry = NULL;
> -	u8 ratr_index = 7;
> +	u8 ratr_index = SET_RATE_ID(RATR_INX_WIRELESS_MC);
>   
>   	if (sta) {
>   		sta_entry = (struct rtl_sta_info *) sta->drv_priv;
> @@ -720,7 +800,8 @@ static void _rtl_txrate_selectmode(struct ieee80211_hw *hw,
>   				tcb_desc->hw_rate =
>   				    rtlpriv->cfg->maps[RTL_RC_CCK_RATE2M];
>   				tcb_desc->use_driver_rate = 1;
> -				tcb_desc->ratr_index = RATR_INX_WIRELESS_MC;
> +				tcb_desc->ratr_index =
> +					SET_RATE_ID(RATR_INX_WIRELESS_MC);
>   			} else {
>   				tcb_desc->ratr_index = ratr_index;
>   			}
> @@ -736,22 +817,30 @@ static void _rtl_txrate_selectmode(struct ieee80211_hw *hw,
>   		    mac->opmode == NL80211_IFTYPE_MESH_POINT) {
>   			tcb_desc->mac_id = 0;
>   
> -			if (mac->mode == WIRELESS_MODE_AC_5G)
> +			if (sta &&
> +			    (rtlpriv->cfg->spec_ver & RTL_SPEC_NEW_RATEID))
> +				;	/* use sta_entry->ratr_index */
> +			else if (mac->mode == WIRELESS_MODE_AC_5G)
>   				tcb_desc->ratr_index =
> -					RATR_INX_WIRELESS_AC_5N;
> +					SET_RATE_ID(RATR_INX_WIRELESS_AC_5N);
>   			else if (mac->mode == WIRELESS_MODE_AC_24G)
>   				tcb_desc->ratr_index =
> -					RATR_INX_WIRELESS_AC_24N;
> +					SET_RATE_ID(RATR_INX_WIRELESS_AC_24N);
>   			else if (mac->mode == WIRELESS_MODE_N_24G)
> -				tcb_desc->ratr_index = RATR_INX_WIRELESS_NGB;
> +				tcb_desc->ratr_index =
> +					SET_RATE_ID(RATR_INX_WIRELESS_NGB);
>   			else if (mac->mode == WIRELESS_MODE_N_5G)
> -				tcb_desc->ratr_index = RATR_INX_WIRELESS_NG;
> +				tcb_desc->ratr_index =
> +					SET_RATE_ID(RATR_INX_WIRELESS_NG);
>   			else if (mac->mode & WIRELESS_MODE_G)
> -				tcb_desc->ratr_index = RATR_INX_WIRELESS_GB;
> +				tcb_desc->ratr_index =
> +					SET_RATE_ID(RATR_INX_WIRELESS_GB);
>   			else if (mac->mode & WIRELESS_MODE_B)
> -				tcb_desc->ratr_index = RATR_INX_WIRELESS_B;
> +				tcb_desc->ratr_index =
> +					SET_RATE_ID(RATR_INX_WIRELESS_B);
>   			else if (mac->mode & WIRELESS_MODE_A)
> -				tcb_desc->ratr_index = RATR_INX_WIRELESS_G;
> +				tcb_desc->ratr_index =
> +					SET_RATE_ID(RATR_INX_WIRELESS_G);
>   
>   		} else if (mac->opmode == NL80211_IFTYPE_AP ||
>   			mac->opmode == NL80211_IFTYPE_ADHOC) {
> @@ -765,6 +854,7 @@ static void _rtl_txrate_selectmode(struct ieee80211_hw *hw,
>   			}
>   		}
>   	}
> +#undef SET_RATE_ID
>   }
>   
>   static void _rtl_query_bandwidth_mode(struct ieee80211_hw *hw,
> @@ -1141,9 +1231,19 @@ void rtl_get_tcb_desc(struct ieee80211_hw *hw,
>   		      struct ieee80211_sta *sta,
>   		      struct sk_buff *skb, struct rtl_tcb_desc *tcb_desc)
>   {
> +#define SET_RATE_ID(rate_id)					\
> +	({typeof(rate_id) _id = rate_id;			\
> +	  ((rtlpriv->cfg->spec_ver & RTL_SPEC_NEW_RATEID) ?	\
> +		rtl_mrate_idx_to_arfr_id(hw, _id,		\
> +			(sta_entry ? sta_entry->wireless_mode :	\
> +			 WIRELESS_MODE_G)) :			\
> +		_id); })
> +
>   	struct rtl_priv *rtlpriv = rtl_priv(hw);
>   	struct rtl_mac *rtlmac = rtl_mac(rtl_priv(hw));
>   	struct ieee80211_hdr *hdr = rtl_get_hdr(skb);
> +	struct rtl_sta_info *sta_entry =
> +		(sta ? (struct rtl_sta_info *)sta->drv_priv : NULL);
>   
>   	__le16 fc = rtl_get_fc(skb);
>   
> @@ -1166,7 +1266,8 @@ void rtl_get_tcb_desc(struct ieee80211_hw *hw,
>   		if (info->control.rates[0].idx == 0 ||
>   				ieee80211_is_nullfunc(fc)) {
>   			tcb_desc->use_driver_rate = true;
> -			tcb_desc->ratr_index = RATR_INX_WIRELESS_MC;
> +			tcb_desc->ratr_index =
> +					SET_RATE_ID(RATR_INX_WIRELESS_MC);
>   
>   			tcb_desc->disable_ratefallback = 1;
>   		} else {
> @@ -1208,11 +1309,12 @@ void rtl_get_tcb_desc(struct ieee80211_hw *hw,
>   		_rtl_query_protection_mode(hw, tcb_desc, info);
>   	} else {
>   		tcb_desc->use_driver_rate = true;
> -		tcb_desc->ratr_index = RATR_INX_WIRELESS_MC;
> +		tcb_desc->ratr_index = SET_RATE_ID(RATR_INX_WIRELESS_MC);
>   		tcb_desc->disable_ratefallback = 1;
>   		tcb_desc->mac_id = 0;
>   		tcb_desc->packet_bw = false;
>   	}
> +#undef SET_RATE_ID
>   }
>   EXPORT_SYMBOL(rtl_get_tcb_desc);
>   
> diff --git a/drivers/net/wireless/realtek/rtlwifi/base.h b/drivers/net/wireless/realtek/rtlwifi/base.h
> index 26735319b38f..acc924635818 100644
> --- a/drivers/net/wireless/realtek/rtlwifi/base.h
> +++ b/drivers/net/wireless/realtek/rtlwifi/base.h
> @@ -162,6 +162,8 @@ void rtl_c2hcmd_wq_callback(void *data);
>   void rtl_c2hcmd_launcher(struct ieee80211_hw *hw, int exec);
>   void rtl_c2hcmd_enqueue(struct ieee80211_hw *hw, u8 tag, u8 len, u8 *val);
>   
> +u8 rtl_mrate_idx_to_arfr_id(struct ieee80211_hw *hw, u8 rate_index,
> +			    enum wireless_mode wirelessmode);
>   void rtl_get_tcb_desc(struct ieee80211_hw *hw,
>   		      struct ieee80211_tx_info *info,
>   		      struct ieee80211_sta *sta,
> diff --git a/drivers/net/wireless/realtek/rtlwifi/wifi.h b/drivers/net/wireless/realtek/rtlwifi/wifi.h
> index 2d8e96896f49..a7aacbc3984e 100644
> --- a/drivers/net/wireless/realtek/rtlwifi/wifi.h
> +++ b/drivers/net/wireless/realtek/rtlwifi/wifi.h
> @@ -949,6 +949,10 @@ enum package_type {
>   	PACKAGE_TFBGA79
>   };
>   
> +enum rtl_spec_ver {
> +	RTL_SPEC_NEW_RATEID = BIT(0),	/* use ratr_table_mode_new */
> +};
> +
>   struct octet_string {
>   	u8 *octet;
>   	u16 length;
> @@ -2333,6 +2337,7 @@ struct rtl_hal_cfg {
>   	struct rtl_hal_ops *ops;
>   	struct rtl_mod_params *mod_params;
>   	struct rtl_hal_usbint_cfg *usb_interface_cfg;
> +	enum rtl_spec_ver spec_ver;
>   
>   	/*this map used for some registers or vars
>   	   defined int HAL but used in MAIN */
> 

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

* Re: [PATCH 05/10] rtlwifi: btcoex: Add wifi_only series ops to control solo card
  2018-01-19  6:45 ` [PATCH 05/10] rtlwifi: btcoex: Add wifi_only series ops to control solo card pkshih
@ 2018-01-22 19:11   ` Larry Finger
  0 siblings, 0 replies; 26+ messages in thread
From: Larry Finger @ 2018-01-22 19:11 UTC (permalink / raw)
  To: pkshih, kvalo; +Cc: linux-wireless

On 01/19/2018 12:45 AM, pkshih@realtek.com wrote:
> From: Ping-Ke Shih <pkshih@realtek.com>
> 
> Originally, btcoex controls the antenna of combo card, but solo card
> is also needed to setup properly. The new ops are named with suffix
> '_wifi_only' opposited to original btc_ops, and new structures and
> definitions are also introduced. The wifi_only oly contains four ops that
> are initial variable, hw config, scan notify, and switch band notify.
> 
> Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
> ---
>   .../realtek/rtlwifi/btcoexist/halbtcoutsrc.c       | 48 +++++++++++++++++++
>   .../realtek/rtlwifi/btcoexist/halbtcoutsrc.h       | 47 +++++++++++++++++++
>   .../wireless/realtek/rtlwifi/btcoexist/rtl_btc.c   | 54 +++++++++++++++++++++-
>   .../wireless/realtek/rtlwifi/btcoexist/rtl_btc.h   |  5 ++
>   drivers/net/wireless/realtek/rtlwifi/core.c        |  6 +++
>   drivers/net/wireless/realtek/rtlwifi/pci.c         |  8 +++-
>   drivers/net/wireless/realtek/rtlwifi/wifi.h        |  7 +++
>   7 files changed, 172 insertions(+), 3 deletions(-)

Acked-by: Larry Finger <Larry.Finger@lwfinger.net>

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

* Re: [PATCH 02/10] rtlwifi: btcoex: Add switch band notify for btc
  2018-01-19  6:45 ` [PATCH 02/10] rtlwifi: btcoex: Add switch band notify for btc pkshih
@ 2018-01-22 19:12   ` Larry Finger
  0 siblings, 0 replies; 26+ messages in thread
From: Larry Finger @ 2018-01-22 19:12 UTC (permalink / raw)
  To: pkshih, kvalo; +Cc: linux-wireless

On 01/19/2018 12:45 AM, pkshih@realtek.com wrote:
> From: Ping-Ke Shih <pkshih@realtek.com>
> 
> BT shares 2.4G band but not 5G band, so inform current band to btcoex to
> setup antenna properly.
> 
> Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>

Acked-by: Larry Finger <Larry.Finger@lwfinger.net>

> ---
>   .../realtek/rtlwifi/btcoexist/halbtcoutsrc.c       | 13 +++++++++++
>   .../realtek/rtlwifi/btcoexist/halbtcoutsrc.h       |  9 ++++++++
>   .../wireless/realtek/rtlwifi/btcoexist/rtl_btc.c   | 27 ++++++++++++++++++++++
>   .../wireless/realtek/rtlwifi/btcoexist/rtl_btc.h   |  2 ++
>   drivers/net/wireless/realtek/rtlwifi/wifi.h        |  2 ++
>   5 files changed, 53 insertions(+)
> 
> diff --git a/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.c b/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.c
> index c335f06eb13b..b51189ae1bfd 100644
> --- a/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.c
> +++ b/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.c
> @@ -1910,3 +1910,16 @@ void exhalbtc_display_bt_coex_info(struct btc_coexist *btcoexist,
>   
>   	halbtc_normal_low_power(btcoexist);
>   }
> +
> +void exhalbtc_switch_band_notify(struct btc_coexist *btcoexist, u8 type)
> +{
> +	if (!halbtc_is_bt_coexist_available(btcoexist))
> +		return;
> +
> +	if (btcoexist->manual_control)
> +		return;
> +
> +	halbtc_leave_low_power(btcoexist);
> +
> +	halbtc_normal_low_power(btcoexist);
> +}
> diff --git a/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.h b/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.h
> index bc854ff2ab8a..cd3925d34854 100644
> --- a/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.h
> +++ b/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.h
> @@ -385,6 +385,14 @@ enum btc_notify_type_scan {
>   	BTC_SCAN_MAX
>   };
>   
> +enum btc_notify_type_switchband {
> +	BTC_NOT_SWITCH = 0x0,
> +	BTC_SWITCH_TO_24G = 0x1,
> +	BTC_SWITCH_TO_5G = 0x2,
> +	BTC_SWITCH_TO_24G_NOFORSCAN = 0x3,
> +	BTC_SWITCH_MAX
> +};
> +
>   enum btc_notify_type_associate {
>   	BTC_ASSOCIATE_FINISH = 0x0,
>   	BTC_ASSOCIATE_START = 0x1,
> @@ -659,6 +667,7 @@ void exhalbtc_set_chip_type(struct btc_coexist *btcoexist, u8 chip_type);
>   void exhalbtc_set_ant_num(struct rtl_priv *rtlpriv, u8 type, u8 ant_num);
>   void exhalbtc_display_bt_coex_info(struct btc_coexist *btcoexist,
>   				   struct seq_file *m);
> +void exhalbtc_switch_band_notify(struct btc_coexist *btcoexist, u8 type);
>   void exhalbtc_signal_compensation(struct btc_coexist *btcoexist,
>   				  u8 *rssi_wifi, u8 *rssi_bt);
>   void exhalbtc_lps_leave(struct btc_coexist *btcoexist);
> diff --git a/drivers/net/wireless/realtek/rtlwifi/btcoexist/rtl_btc.c b/drivers/net/wireless/realtek/rtlwifi/btcoexist/rtl_btc.c
> index 714c0de099e5..bbc9517260b3 100644
> --- a/drivers/net/wireless/realtek/rtlwifi/btcoexist/rtl_btc.c
> +++ b/drivers/net/wireless/realtek/rtlwifi/btcoexist/rtl_btc.c
> @@ -48,6 +48,7 @@ static struct rtl_btc_ops rtl_btc_operation = {
>   	.btc_is_disable_edca_turbo = rtl_btc_is_disable_edca_turbo,
>   	.btc_is_bt_disabled = rtl_btc_is_bt_disabled,
>   	.btc_special_packet_notify = rtl_btc_special_packet_notify,
> +	.btc_switch_band_notify = rtl_btc_switch_band_notify,
>   	.btc_record_pwr_mode = rtl_btc_record_pwr_mode,
>   	.btc_get_lps_val = rtl_btc_get_lps_val,
>   	.btc_get_rpwm_val = rtl_btc_get_rpwm_val,
> @@ -423,6 +424,32 @@ void rtl_btc_special_packet_notify(struct rtl_priv *rtlpriv, u8 pkt_type)
>   	return exhalbtc_special_packet_notify(btcoexist, pkt_type);
>   }
>   
> +void rtl_btc_switch_band_notify(struct rtl_priv *rtlpriv, u8 band_type,
> +				bool scanning)
> +{
> +	struct btc_coexist *btcoexist = rtl_btc_coexist(rtlpriv);
> +	u8 type = BTC_NOT_SWITCH;
> +
> +	if (!btcoexist)
> +		return;
> +
> +	switch (band_type) {
> +	case BAND_ON_2_4G:
> +		if (scanning)
> +			type = BTC_SWITCH_TO_24G;
> +		else
> +			type = BTC_SWITCH_TO_24G_NOFORSCAN;
> +		break;
> +
> +	case BAND_ON_5G:
> +		type = BTC_SWITCH_TO_5G;
> +		break;
> +	}
> +
> +	if (type != BTC_NOT_SWITCH)
> +		exhalbtc_switch_band_notify(btcoexist, type);
> +}
> +
>   struct rtl_btc_ops *rtl_btc_get_ops_pointer(void)
>   {
>   	return &rtl_btc_operation;
> diff --git a/drivers/net/wireless/realtek/rtlwifi/btcoexist/rtl_btc.h b/drivers/net/wireless/realtek/rtlwifi/btcoexist/rtl_btc.h
> index 8c5098266039..1d98741ae874 100644
> --- a/drivers/net/wireless/realtek/rtlwifi/btcoexist/rtl_btc.h
> +++ b/drivers/net/wireless/realtek/rtlwifi/btcoexist/rtl_btc.h
> @@ -46,6 +46,8 @@ bool rtl_btc_is_limited_dig(struct rtl_priv *rtlpriv);
>   bool rtl_btc_is_disable_edca_turbo(struct rtl_priv *rtlpriv);
>   bool rtl_btc_is_bt_disabled(struct rtl_priv *rtlpriv);
>   void rtl_btc_special_packet_notify(struct rtl_priv *rtlpriv, u8 pkt_type);
> +void rtl_btc_switch_band_notify(struct rtl_priv *rtlpriv, u8 band_type,
> +				bool scanning);
>   void rtl_btc_display_bt_coex_info(struct rtl_priv *rtlpriv, struct seq_file *m);
>   void rtl_btc_record_pwr_mode(struct rtl_priv *rtlpriv, u8 *buf, u8 len);
>   u8   rtl_btc_get_lps_val(struct rtl_priv *rtlpriv);
> diff --git a/drivers/net/wireless/realtek/rtlwifi/wifi.h b/drivers/net/wireless/realtek/rtlwifi/wifi.h
> index 531c86df54d4..8ed0207c6f14 100644
> --- a/drivers/net/wireless/realtek/rtlwifi/wifi.h
> +++ b/drivers/net/wireless/realtek/rtlwifi/wifi.h
> @@ -2579,6 +2579,8 @@ struct rtl_btc_ops {
>   	bool (*btc_is_bt_disabled) (struct rtl_priv *rtlpriv);
>   	void (*btc_special_packet_notify)(struct rtl_priv *rtlpriv,
>   					  u8 pkt_type);
> +	void (*btc_switch_band_notify)(struct rtl_priv *rtlpriv, u8 type,
> +				       bool scanning);
>   	void (*btc_display_bt_coex_info)(struct rtl_priv *rtlpriv,
>   					 struct seq_file *m);
>   	void (*btc_record_pwr_mode)(struct rtl_priv *rtlpriv, u8 *buf, u8 len);
> 

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

* Re: [PATCH 10/10] rtlwifi: Add spec_ver to check whether use new rate-id or not
  2018-01-22 19:10   ` Larry Finger
@ 2018-01-23  0:41     ` Pkshih
  2018-01-24 15:44       ` Kalle Valo
  0 siblings, 1 reply; 26+ messages in thread
From: Pkshih @ 2018-01-23  0:41 UTC (permalink / raw)
  To: kvalo, Larry.Finger; +Cc: linux-wireless

T24gTW9uLCAyMDE4LTAxLTIyIGF0IDEzOjEwIC0wNjAwLCBMYXJyeSBGaW5nZXIgd3JvdGU6DQo+
IE9uIDAxLzE5LzIwMTggMTI6NDUgQU0sIHBrc2hpaEByZWFsdGVrLmNvbSB3cm90ZToNCj4gPsKg
DQo+ID4gRnJvbTogUGluZy1LZSBTaGloIDxwa3NoaWhAcmVhbHRlay5jb20+DQo+ID7CoA0KPiA+
IFRoZSBmaWVsZCBzcGVjX3ZlciBpcyBJQydzIHNwZWNpZmljYXRpb24gbWFzayBmb3IgY29tbW9u
IGNvZGUgdG8gZG8gcHJvcGVyDQo+ID4gcHJvY2VzcyB0byBzcGVjaWZpZWQgSUMuIFRoaXMgY29t
bWl0IGFkZCBhIGZpZWxkIG5ldyByYXRlIElEIGZvciBuZXcNCj4gPiBnZW5lcmF0aW9uIElDLg0K
PiA+wqANCj4gPiBTaWduZWQtb2ZmLWJ5OiBQaW5nLUtlIFNoaWggPHBrc2hpaEByZWFsdGVrLmNv
bT4NCj4gQWNrZWQtYnk6IExhcnJ5IEZpbmdlciA8TGFycnkuRmluZ2VyQGx3ZmluZ2VyLm5ldD4N
Cj7CoA0KDQpTaGFsbCBJIGFwcGVuZCAiQWNrZWQtYnkiIGluIHYyPw0KDQo=

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

* Re: [07/10] rtlwifi: btcoex: Fix some static warnings from Sparse
  2018-01-19  6:45 ` [PATCH 07/10] rtlwifi: btcoex: Fix some static warnings from Sparse pkshih
  2018-01-19 22:46   ` Larry Finger
@ 2018-01-24 15:38   ` Kalle Valo
  1 sibling, 0 replies; 26+ messages in thread
From: Kalle Valo @ 2018-01-24 15:38 UTC (permalink / raw)
  To: Ping-Ke Shih; +Cc: Larry.Finger, linux-wireless

Ping-Ke Shih <pkshih@realtek.com> wrote:

> From: Ping-Ke Shih <pkshih@realtek.com>
> 
> Add 'static' or declaration to resolve the warnings.
> 
> Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>

Dropping this patch 7 per comments, but I'll try to take the rest (if
they apply).

Patch set to Changes Requested.

-- 
https://patchwork.kernel.org/patch/10174655/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches

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

* Re: [01/10] rtlwifi: btcoex: extend get_wifi_bw to support bandwidth 80M
  2018-01-19  6:45 ` [PATCH 01/10] rtlwifi: btcoex: extend get_wifi_bw to support bandwidth 80M pkshih
  2018-01-19 22:52   ` Larry Finger
@ 2018-01-24 15:41   ` Kalle Valo
  1 sibling, 0 replies; 26+ messages in thread
From: Kalle Valo @ 2018-01-24 15:41 UTC (permalink / raw)
  To: Ping-Ke Shih; +Cc: Larry.Finger, linux-wireless

Ping-Ke Shih <pkshih@realtek.com> wrote:

> From: Ping-Ke Shih <pkshih@realtek.com>
> 
> The rtlwifi newer ICs support 80M bandwidth in 5G band, so extend
> get_wifi_bw() to know bandwidth 80M that helps btcoex to make correct
> decisions.
> 
> Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
> Acked-by: Larry Finger <Larry.Finger@lwfinger.net>

9 patches applied to wireless-drivers-next.git, thanks.

66d0f9deba36 rtlwifi: btcoex: extend get_wifi_bw to support bandwidth 80M
17bf85101181 rtlwifi: btcoex: Add switch band notify for btc
f243bca13893 rtlwifi: btcoex: Add variable ant_div_cfg to support antenna diversity
ee373844849c rtlwifi: btcoex: add scan_notify within ips_notify if RFON
9177c3363994 rtlwifi: btcoex: Add wifi_only series ops to control solo card
8d73e53e8a87 rtlwifi: btcoex: add boolean variables dbg_mode
ba3cca4d0c3e rtlwifi: 8822be has to report vht capability to mac80211
be98db155646 rtlwifi: Add ratr_table for newer IC
a75f3eebfa3d rtlwifi: Add spec_ver to check whether use new rate-id or not

-- 
https://patchwork.kernel.org/patch/10174643/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches

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

* Re: [PATCH 10/10] rtlwifi: Add spec_ver to check whether use new rate-id or not
  2018-01-23  0:41     ` Pkshih
@ 2018-01-24 15:44       ` Kalle Valo
  0 siblings, 0 replies; 26+ messages in thread
From: Kalle Valo @ 2018-01-24 15:44 UTC (permalink / raw)
  To: Pkshih; +Cc: Larry.Finger, linux-wireless

Pkshih <pkshih@realtek.com> writes:

> On Mon, 2018-01-22 at 13:10 -0600, Larry Finger wrote:
>> On 01/19/2018 12:45 AM, pkshih@realtek.com wrote:
>> >=C2=A0
>> > From: Ping-Ke Shih <pkshih@realtek.com>
>> >=C2=A0
>> > The field spec_ver is IC's specification mask for common code to do pr=
oper
>> > process to specified IC. This commit add a field new rate ID for new
>> > generation IC.
>> >=C2=A0
>> > Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
>> Acked-by: Larry Finger <Larry.Finger@lwfinger.net>
>>=C2=A0
>
> Shall I append "Acked-by" in v2?

Yes, you can add Acked-by in the next version (if the patch in question
is not modified after the ack).

But do note that patchwork can automatically take Acked-by from the
mailing list, for example that happened in the 9 patches I just applied
from this series. So you no need to resend the rtlwifi patches for just
to add the Acked-by line.

--=20
Kalle Valo

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

end of thread, other threads:[~2018-01-24 15:44 UTC | newest]

Thread overview: 26+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-01-19  6:45 [PATCH 00/10] rtlwifi: add btcoex materials for 8822be pkshih
2018-01-19  6:45 ` [PATCH 01/10] rtlwifi: btcoex: extend get_wifi_bw to support bandwidth 80M pkshih
2018-01-19 22:52   ` Larry Finger
2018-01-24 15:41   ` [01/10] " Kalle Valo
2018-01-19  6:45 ` [PATCH 02/10] rtlwifi: btcoex: Add switch band notify for btc pkshih
2018-01-22 19:12   ` Larry Finger
2018-01-19  6:45 ` [PATCH 03/10] rtlwifi: btcoex: Add variable ant_div_cfg to support antenna diversity pkshih
2018-01-22 18:56   ` Larry Finger
2018-01-19  6:45 ` [PATCH 04/10] rtlwifi: btcoex: add scan_notify within ips_notify if RFON pkshih
2018-01-22 19:00   ` Larry Finger
2018-01-19  6:45 ` [PATCH 05/10] rtlwifi: btcoex: Add wifi_only series ops to control solo card pkshih
2018-01-22 19:11   ` Larry Finger
2018-01-19  6:45 ` [PATCH 06/10] rtlwifi: btcoex: add boolean variables dbg_mode pkshih
2018-01-19 22:47   ` Larry Finger
2018-01-19  6:45 ` [PATCH 07/10] rtlwifi: btcoex: Fix some static warnings from Sparse pkshih
2018-01-19 22:46   ` Larry Finger
2018-01-22  0:53     ` Pkshih
2018-01-24 15:38   ` [07/10] " Kalle Valo
2018-01-19  6:45 ` [PATCH 08/10] rtlwifi: 8822be has to report vht capability to mac80211 pkshih
2018-01-19 22:41   ` Larry Finger
2018-01-19  6:45 ` [PATCH 09/10] rtlwifi: Add ratr_table for newer IC pkshih
2018-01-22 19:07   ` Larry Finger
2018-01-19  6:45 ` [PATCH 10/10] rtlwifi: Add spec_ver to check whether use new rate-id or not pkshih
2018-01-22 19:10   ` Larry Finger
2018-01-23  0:41     ` Pkshih
2018-01-24 15:44       ` Kalle Valo

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.