2019-09-12 06:42:07

by Tony Chuang

[permalink] [raw]
Subject: [PATCH 0/2] rtw88: report RX signal strength for each antenna

From: Yan-Hsuan Chuang <[email protected]>

For some user-space programs such as tcpdump, they can parse
the radiotap headers provided by the wireless device. And the
signal strengths for each antenna are very helpful. They can
tell us if the antennas are placed or connected properly.

Tsang-Shian Lin (1):
rtw88: fix wrong rx power calculation

Yan-Hsuan Chuang (1):
rtw88: report RX power for each antenna

drivers/net/wireless/realtek/rtw88/rtw8822b.c | 1 +
drivers/net/wireless/realtek/rtw88/rtw8822c.c | 10 +++++-----
drivers/net/wireless/realtek/rtw88/rx.c | 5 +++++
3 files changed, 11 insertions(+), 5 deletions(-)

--
2.7.4


2019-09-12 06:43:43

by Tony Chuang

[permalink] [raw]
Subject: [PATCH 1/2] rtw88: fix wrong rx power calculation

From: Tsang-Shian Lin <[email protected]>

Fix the wrong RF path for CCK rx power calculation.

Fixes: e3037485c68e ("rtw88: new Realtek 802.11ac driver")
Signed-off-by: Tsang-Shian Lin <[email protected]>
Signed-off-by: Yan-Hsuan Chuang <[email protected]>
---
drivers/net/wireless/realtek/rtw88/rtw8822c.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/wireless/realtek/rtw88/rtw8822c.c b/drivers/net/wireless/realtek/rtw88/rtw8822c.c
index 207f64c..24b27bc 100644
--- a/drivers/net/wireless/realtek/rtw88/rtw8822c.c
+++ b/drivers/net/wireless/realtek/rtw88/rtw8822c.c
@@ -1620,9 +1620,9 @@ static void query_phy_status_page0(struct rtw_dev *rtwdev, u8 *phy_status,
else if (gain_a > u_bnd)
rx_power[RF_PATH_A] -= (gain_a - u_bnd) << 1;
if (gain_b < l_bnd)
- rx_power[RF_PATH_A] += (l_bnd - gain_b) << 1;
+ rx_power[RF_PATH_B] += (l_bnd - gain_b) << 1;
else if (gain_b > u_bnd)
- rx_power[RF_PATH_A] -= (gain_b - u_bnd) << 1;
+ rx_power[RF_PATH_B] -= (gain_b - u_bnd) << 1;

rx_power[RF_PATH_A] -= 110;
rx_power[RF_PATH_B] -= 110;
--
2.7.4

2019-09-12 06:43:43

by Tony Chuang

[permalink] [raw]
Subject: [PATCH 2/2] rtw88: report RX power for each antenna

From: Yan-Hsuan Chuang <[email protected]>

Report chains and chain_signal in ieee80211_rx_status.
It is useful for program such as tcpdump to see if the
antennas are well connected/placed.

8822C is able to receive CCK rates with 2 antennas, while
8822B can only use 1 antenna path to receive CCK rates.

Signed-off-by: Yan-Hsuan Chuang <[email protected]>
---
drivers/net/wireless/realtek/rtw88/rtw8822b.c | 1 +
drivers/net/wireless/realtek/rtw88/rtw8822c.c | 6 +++---
drivers/net/wireless/realtek/rtw88/rx.c | 5 +++++
3 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/drivers/net/wireless/realtek/rtw88/rtw8822b.c b/drivers/net/wireless/realtek/rtw88/rtw8822b.c
index 568033a..0861195 100644
--- a/drivers/net/wireless/realtek/rtw88/rtw8822b.c
+++ b/drivers/net/wireless/realtek/rtw88/rtw8822b.c
@@ -766,6 +766,7 @@ static void query_phy_status_page0(struct rtw_dev *rtwdev, u8 *phy_status,
s8 min_rx_power = -120;
u8 pwdb = GET_PHY_STAT_P0_PWDB(phy_status);

+ /* 8822B uses only 1 antenna to RX CCK rates */
pkt_stat->rx_power[RF_PATH_A] = pwdb - 110;
pkt_stat->rssi = rtw_phy_rf_power_2_rssi(pkt_stat->rx_power, 1);
pkt_stat->bw = RTW_CHANNEL_WIDTH_20;
diff --git a/drivers/net/wireless/realtek/rtw88/rtw8822c.c b/drivers/net/wireless/realtek/rtw88/rtw8822c.c
index 24b27bc..75c77ac 100644
--- a/drivers/net/wireless/realtek/rtw88/rtw8822c.c
+++ b/drivers/net/wireless/realtek/rtw88/rtw8822c.c
@@ -1627,9 +1627,9 @@ static void query_phy_status_page0(struct rtw_dev *rtwdev, u8 *phy_status,
rx_power[RF_PATH_A] -= 110;
rx_power[RF_PATH_B] -= 110;

- pkt_stat->rx_power[RF_PATH_A] = max3(rx_power[RF_PATH_A],
- rx_power[RF_PATH_B],
- min_rx_power);
+ pkt_stat->rx_power[RF_PATH_A] = rx_power[RF_PATH_A];
+ pkt_stat->rx_power[RF_PATH_B] = rx_power[RF_PATH_B];
+
pkt_stat->rssi = rtw_phy_rf_power_2_rssi(pkt_stat->rx_power, 1);
pkt_stat->bw = RTW_CHANNEL_WIDTH_20;
pkt_stat->signal_power = max(pkt_stat->rx_power[RF_PATH_A],
diff --git a/drivers/net/wireless/realtek/rtw88/rx.c b/drivers/net/wireless/realtek/rtw88/rx.c
index 4d837f0..48b9ed4 100644
--- a/drivers/net/wireless/realtek/rtw88/rx.c
+++ b/drivers/net/wireless/realtek/rtw88/rx.c
@@ -90,6 +90,7 @@ void rtw_rx_fill_rx_status(struct rtw_dev *rtwdev,
u8 *phy_status)
{
struct ieee80211_hw *hw = rtwdev->hw;
+ u8 path;

memset(rx_status, 0, sizeof(*rx_status));
rx_status->freq = hw->conf.chandef.chan->center_freq;
@@ -146,6 +147,10 @@ void rtw_rx_fill_rx_status(struct rtw_dev *rtwdev,
rx_status->bw = RATE_INFO_BW_20;

rx_status->signal = pkt_stat->signal_power;
+ for (path = 0; path < rtwdev->hal.rf_path_num; path++) {
+ rx_status->chains |= BIT(path);
+ rx_status->chain_signal[path] = pkt_stat->rx_power[path];
+ }

rtw_rx_addr_match(rtwdev, pkt_stat, hdr);
}
--
2.7.4

2019-09-12 07:07:04

by Chris Chiu

[permalink] [raw]
Subject: Re: [PATCH 1/2] rtw88: fix wrong rx power calculation

On Thu, Sep 12, 2019 at 2:39 PM <[email protected]> wrote:
>
> From: Tsang-Shian Lin <[email protected]>
>
> Fix the wrong RF path for CCK rx power calculation.
>
> Fixes: e3037485c68e ("rtw88: new Realtek 802.11ac driver")
> Signed-off-by: Tsang-Shian Lin <[email protected]>
> Signed-off-by: Yan-Hsuan Chuang <[email protected]>
Reviewed-by: Chris Chiu <[email protected]>
> ---
> drivers/net/wireless/realtek/rtw88/rtw8822c.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>

2019-09-12 07:24:03

by Chris Chiu

[permalink] [raw]
Subject: Re: [PATCH 2/2] rtw88: report RX power for each antenna

On Thu, Sep 12, 2019 at 2:39 PM <[email protected]> wrote:
>
> From: Yan-Hsuan Chuang <[email protected]>
>
> Report chains and chain_signal in ieee80211_rx_status.
> It is useful for program such as tcpdump to see if the
> antennas are well connected/placed.
>
> 8822C is able to receive CCK rates with 2 antennas, while
> 8822B can only use 1 antenna path to receive CCK rates.
>
> Signed-off-by: Yan-Hsuan Chuang <[email protected]>
> ---
> drivers/net/wireless/realtek/rtw88/rtw8822b.c | 1 +
> drivers/net/wireless/realtek/rtw88/rtw8822c.c | 6 +++---
> drivers/net/wireless/realtek/rtw88/rx.c | 5 +++++
> 3 files changed, 9 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/net/wireless/realtek/rtw88/rtw8822b.c b/drivers/net/wireless/realtek/rtw88/rtw8822b.c
> index 568033a..0861195 100644
> --- a/drivers/net/wireless/realtek/rtw88/rtw8822b.c
> +++ b/drivers/net/wireless/realtek/rtw88/rtw8822b.c
> @@ -766,6 +766,7 @@ static void query_phy_status_page0(struct rtw_dev *rtwdev, u8 *phy_status,
> s8 min_rx_power = -120;
> u8 pwdb = GET_PHY_STAT_P0_PWDB(phy_status);
>
> + /* 8822B uses only 1 antenna to RX CCK rates */
> pkt_stat->rx_power[RF_PATH_A] = pwdb - 110;

It only uses PATH_A for receiving CCK rates packets? The comment seems
not clear enough.

Chris

2019-09-12 07:48:06

by Tony Chuang

[permalink] [raw]
Subject: RE: [PATCH 2/2] rtw88: report RX power for each antenna

> From: Chris Chiu
>
> On Thu, Sep 12, 2019 at 2:39 PM <[email protected]> wrote:
> >
> > From: Yan-Hsuan Chuang <[email protected]>
> >
> > Report chains and chain_signal in ieee80211_rx_status.
> > It is useful for program such as tcpdump to see if the
> > antennas are well connected/placed.
> >
> > 8822C is able to receive CCK rates with 2 antennas, while
> > 8822B can only use 1 antenna path to receive CCK rates.
> >
> > Signed-off-by: Yan-Hsuan Chuang <[email protected]>
> > ---
> > drivers/net/wireless/realtek/rtw88/rtw8822b.c | 1 +
> > drivers/net/wireless/realtek/rtw88/rtw8822c.c | 6 +++---
> > drivers/net/wireless/realtek/rtw88/rx.c | 5 +++++
> > 3 files changed, 9 insertions(+), 3 deletions(-)
> >
> > diff --git a/drivers/net/wireless/realtek/rtw88/rtw8822b.c
> b/drivers/net/wireless/realtek/rtw88/rtw8822b.c
> > index 568033a..0861195 100644
> > --- a/drivers/net/wireless/realtek/rtw88/rtw8822b.c
> > +++ b/drivers/net/wireless/realtek/rtw88/rtw8822b.c
> > @@ -766,6 +766,7 @@ static void query_phy_status_page0(struct rtw_dev
> *rtwdev, u8 *phy_status,
> > s8 min_rx_power = -120;
> > u8 pwdb = GET_PHY_STAT_P0_PWDB(phy_status);
> >
> > + /* 8822B uses only 1 antenna to RX CCK rates */
> > pkt_stat->rx_power[RF_PATH_A] = pwdb - 110;
>
> It only uses PATH_A for receiving CCK rates packets? The comment seems
> not clear enough.
>

Yes, it can only use PATH_A, so we don't have PWDB_[A|B] for 8822B.

Yan-Hsuan

2019-09-12 09:13:36

by Chris Chiu

[permalink] [raw]
Subject: Re: [PATCH 2/2] rtw88: report RX power for each antenna

On Thu, Sep 12, 2019 at 3:43 PM Tony Chuang <[email protected]> wrote:

> > >
> > > From: Yan-Hsuan Chuang <[email protected]>
> > >
> > > Report chains and chain_signal in ieee80211_rx_status.
> > > It is useful for program such as tcpdump to see if the
> > > antennas are well connected/placed.
> > >
> > > 8822C is able to receive CCK rates with 2 antennas, while
> > > 8822B can only use 1 antenna path to receive CCK rates.
> > >
> > > Signed-off-by: Yan-Hsuan Chuang <[email protected]>
Reviewed-by: Chris Chiu <[email protected]>

2019-09-13 16:37:21

by Kalle Valo

[permalink] [raw]
Subject: Re: [PATCH 1/2] rtw88: fix wrong rx power calculation

<[email protected]> wrote:

> From: Tsang-Shian Lin <[email protected]>
>
> Fix the wrong RF path for CCK rx power calculation.
>
> Fixes: e3037485c68e ("rtw88: new Realtek 802.11ac driver")
> Signed-off-by: Tsang-Shian Lin <[email protected]>
> Signed-off-by: Yan-Hsuan Chuang <[email protected]>
> Reviewed-by: Chris Chiu <[email protected]>

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

e9afa2dc4090 rtw88: fix wrong rx power calculation
98ab76ef6b6d rtw88: report RX power for each antenna

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

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